Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 89903
b: refs/heads/master
c: 3330d7b
h: refs/heads/master
i:
  89901: f773bdc
  89899: 4441e1e
  89895: b43fd46
  89887: a7ded5e
v: v3
  • Loading branch information
Johannes Berg authored and John W. Linville committed Feb 29, 2008
1 parent 32a4fd7 commit 3cb3961
Show file tree
Hide file tree
Showing 6 changed files with 28 additions and 22 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: bb1eeff12d4cd6c706ef9fae340a9c93bb41ad05
refs/heads/master: 3330d7be7008fa8e213648750fc13613eecc54bb
2 changes: 1 addition & 1 deletion trunk/drivers/net/wireless/iwlwifi/iwl3945-base.c
Original file line number Diff line number Diff line change
Expand Up @@ -7442,7 +7442,7 @@ static int iwl3945_mac_conf_tx(struct ieee80211_hw *hw, int queue,
priv->qos_data.def_qos_parm.ac[q].cw_max = cpu_to_le16(params->cw_max);
priv->qos_data.def_qos_parm.ac[q].aifsn = params->aifs;
priv->qos_data.def_qos_parm.ac[q].edca_txop =
cpu_to_le16((params->burst_time * 100));
cpu_to_le16((params->txop * 32));

priv->qos_data.def_qos_parm.ac[q].reserved1 = 0;
priv->qos_data.qos_active = 1;
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/net/wireless/iwlwifi/iwl4965-base.c
Original file line number Diff line number Diff line change
Expand Up @@ -7916,7 +7916,7 @@ static int iwl4965_mac_conf_tx(struct ieee80211_hw *hw, int queue,
priv->qos_data.def_qos_parm.ac[q].cw_max = cpu_to_le16(params->cw_max);
priv->qos_data.def_qos_parm.ac[q].aifsn = params->aifs;
priv->qos_data.def_qos_parm.ac[q].edca_txop =
cpu_to_le16((params->burst_time * 100));
cpu_to_le16((params->txop * 32));

priv->qos_data.def_qos_parm.ac[q].reserved1 = 0;
priv->qos_data.qos_active = 1;
Expand Down
21 changes: 13 additions & 8 deletions trunk/drivers/net/wireless/p54common.c
Original file line number Diff line number Diff line change
Expand Up @@ -759,13 +759,12 @@ static int p54_set_leds(struct ieee80211_hw *dev, int mode, int link, int act)
return 0;
}

#define P54_SET_QUEUE(queue, ai_fs, cw_min, cw_max, burst) \
#define P54_SET_QUEUE(queue, ai_fs, cw_min, cw_max, _txop) \
do { \
queue.aifs = cpu_to_le16(ai_fs); \
queue.cwmin = cpu_to_le16(cw_min); \
queue.cwmax = cpu_to_le16(cw_max); \
queue.txop = (burst == 0) ? \
0 : cpu_to_le16((burst * 100) / 32 + 1); \
queue.txop = cpu_to_le16(_txop); \
} while(0)

static void p54_init_vdcf(struct ieee80211_hw *dev)
Expand All @@ -783,10 +782,16 @@ static void p54_init_vdcf(struct ieee80211_hw *dev)

vdcf = (struct p54_tx_control_vdcf *) hdr->data;

P54_SET_QUEUE(vdcf->queue[0], 0x0002, 0x0003, 0x0007, 0x000f);
P54_SET_QUEUE(vdcf->queue[1], 0x0002, 0x0007, 0x000f, 0x001e);
P54_SET_QUEUE(vdcf->queue[2], 0x0002, 0x000f, 0x03ff, 0x0014);
P54_SET_QUEUE(vdcf->queue[3], 0x0007, 0x000f, 0x03ff, 0x0000);
/*
* FIXME: The default values in the spec (IEEE 802.11
* 7.3.2.19 Table 37) are 47, 94, 0, 0, why use
* 47, 94, 63, 0 here? Also, the default AIFS
* values (second parameter) are 2, 2, 3, 7...
*/
P54_SET_QUEUE(vdcf->queue[0], 0x0002, 0x0003, 0x0007, 47);
P54_SET_QUEUE(vdcf->queue[1], 0x0002, 0x0007, 0x000f, 94);
P54_SET_QUEUE(vdcf->queue[2], 0x0002, 0x000f, 0x03ff, 63);
P54_SET_QUEUE(vdcf->queue[3], 0x0007, 0x000f, 0x03ff, 0);
}

static void p54_set_vdcf(struct ieee80211_hw *dev)
Expand Down Expand Up @@ -939,7 +944,7 @@ static int p54_conf_tx(struct ieee80211_hw *dev, int queue,

if ((params) && !((queue < 0) || (queue > 4))) {
P54_SET_QUEUE(vdcf->queue[queue], params->aifs,
params->cw_min, params->cw_max, params->burst_time);
params->cw_min, params->cw_max, params->txop);
} else
return -EINVAL;

Expand Down
12 changes: 6 additions & 6 deletions trunk/include/net/mac80211.h
Original file line number Diff line number Diff line change
Expand Up @@ -89,19 +89,19 @@ struct ieee80211_ht_bss_info {
* struct ieee80211_tx_queue_params - transmit queue configuration
*
* The information provided in this structure is required for QoS
* transmit queue configuration.
* transmit queue configuration. Cf. IEEE 802.11 7.3.2.29.
*
* @aifs: arbitration interface space [0..255, -1: use default]
* @cw_min: minimum contention window [will be a value of the form
* 2^n-1 in the range 1..1023; 0: use default]
* @cw_max: maximum contention window [like @cw_min]
* @burst_time: maximum burst time in units of 0.1ms, 0 meaning disabled
* @txop: maximum burst time in units of 32 usecs, 0 meaning disabled
*/
struct ieee80211_tx_queue_params {
int aifs;
int cw_min;
int cw_max;
int burst_time;
s16 aifs;
u16 cw_min;
u16 cw_max;
u16 txop;
};

/**
Expand Down
11 changes: 6 additions & 5 deletions trunk/net/mac80211/ieee80211_sta.c
Original file line number Diff line number Diff line change
Expand Up @@ -297,12 +297,13 @@ static void ieee80211_sta_wmm_params(struct net_device *dev,
params.aifs = pos[0] & 0x0f;
params.cw_max = ecw2cw((pos[1] & 0xf0) >> 4);
params.cw_min = ecw2cw(pos[1] & 0x0f);
/* TXOP is in units of 32 usec; burst_time in 0.1 ms */
params.burst_time = (pos[2] | (pos[3] << 8)) * 32 / 100;
params.txop = pos[2] | (pos[3] << 8);
#ifdef CONFIG_MAC80211_DEBUG
printk(KERN_DEBUG "%s: WMM queue=%d aci=%d acm=%d aifs=%d "
"cWmin=%d cWmax=%d burst=%d\n",
"cWmin=%d cWmax=%d txop=%d\n",
dev->name, queue, aci, acm, params.aifs, params.cw_min,
params.cw_max, params.burst_time);
params.cw_max, params.txop);
#endif
/* TODO: handle ACM (block TX, fallback to next lowest allowed
* AC for now) */
if (local->ops->conf_tx(local_to_hw(local), queue, &params)) {
Expand Down Expand Up @@ -3230,7 +3231,7 @@ int ieee80211_sta_set_ssid(struct net_device *dev, char *ssid, size_t len)
qparam.cw_min = 15;

qparam.cw_max = 1023;
qparam.burst_time = 0;
qparam.txop = 0;

for (i = IEEE80211_TX_QUEUE_DATA0; i < NUM_TX_DATA_QUEUES; i++)
local->ops->conf_tx(local_to_hw(local),
Expand Down

0 comments on commit 3cb3961

Please sign in to comment.