Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 266391
b: refs/heads/master
c: f6f3def
h: refs/heads/master
i:
  266389: 758378e
  266387: 2f8e20b
  266383: 91edbb6
v: v3
  • Loading branch information
Eliad Peller authored and John W. Linville committed Sep 27, 2011
1 parent b95ab4d commit 9be7893
Show file tree
Hide file tree
Showing 7 changed files with 32 additions and 16 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: f70f01c2ebbe31fbd8a96be3b45c5620dac45b96
refs/heads/master: f6f3def323e5d60cc2a5659533dce547c0aac5fc
5 changes: 3 additions & 2 deletions trunk/net/mac80211/cfg.c
Original file line number Diff line number Diff line change
Expand Up @@ -1275,6 +1275,7 @@ static int ieee80211_set_txq_params(struct wiphy *wiphy,
struct ieee80211_txq_params *params)
{
struct ieee80211_local *local = wiphy_priv(wiphy);
struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
struct ieee80211_tx_queue_params p;

if (!local->ops->conf_tx)
Expand All @@ -1295,8 +1296,8 @@ static int ieee80211_set_txq_params(struct wiphy *wiphy,
if (params->queue >= local->hw.queues)
return -EINVAL;

local->tx_conf[params->queue] = p;
if (drv_conf_tx(local, params->queue, &p)) {
sdata->tx_conf[params->queue] = p;
if (drv_conf_tx(local, sdata, params->queue, &p)) {
wiphy_debug(local->hw.wiphy,
"failed to set TX queue parameters for queue %d\n",
params->queue);
Expand Down
5 changes: 3 additions & 2 deletions trunk/net/mac80211/driver-ops.h
Original file line number Diff line number Diff line change
Expand Up @@ -413,14 +413,15 @@ static inline void drv_sta_remove(struct ieee80211_local *local,
trace_drv_return_void(local);
}

static inline int drv_conf_tx(struct ieee80211_local *local, u16 queue,
static inline int drv_conf_tx(struct ieee80211_local *local,
struct ieee80211_sub_if_data *sdata, u16 queue,
const struct ieee80211_tx_queue_params *params)
{
int ret = -EOPNOTSUPP;

might_sleep();

trace_drv_conf_tx(local, queue, params);
trace_drv_conf_tx(local, sdata, queue, params);
if (local->ops->conf_tx)
ret = local->ops->conf_tx(&local->hw, queue, params);
trace_drv_return_int(local, ret);
Expand Down
14 changes: 10 additions & 4 deletions trunk/net/mac80211/driver-trace.h
Original file line number Diff line number Diff line change
Expand Up @@ -697,32 +697,38 @@ TRACE_EVENT(drv_sta_remove,
);

TRACE_EVENT(drv_conf_tx,
TP_PROTO(struct ieee80211_local *local, u16 queue,
TP_PROTO(struct ieee80211_local *local,
struct ieee80211_sub_if_data *sdata,
u16 queue,
const struct ieee80211_tx_queue_params *params),

TP_ARGS(local, queue, params),
TP_ARGS(local, sdata, queue, params),

TP_STRUCT__entry(
LOCAL_ENTRY
VIF_ENTRY
__field(u16, queue)
__field(u16, txop)
__field(u16, cw_min)
__field(u16, cw_max)
__field(u8, aifs)
__field(bool, uapsd)
),

TP_fast_assign(
LOCAL_ASSIGN;
VIF_ASSIGN;
__entry->queue = queue;
__entry->txop = params->txop;
__entry->cw_max = params->cw_max;
__entry->cw_min = params->cw_min;
__entry->aifs = params->aifs;
__entry->uapsd = params->uapsd;
),

TP_printk(
LOCAL_PR_FMT " queue:%d",
LOCAL_PR_ARG, __entry->queue
LOCAL_PR_FMT VIF_PR_FMT " queue:%d",
LOCAL_PR_ARG, VIF_PR_ARG, __entry->queue
)
);

Expand Down
3 changes: 2 additions & 1 deletion trunk/net/mac80211/ieee80211_i.h
Original file line number Diff line number Diff line change
Expand Up @@ -609,6 +609,8 @@ struct ieee80211_sub_if_data {
__be16 control_port_protocol;
bool control_port_no_encrypt;

struct ieee80211_tx_queue_params tx_conf[IEEE80211_MAX_QUEUES];

struct work_struct work;
struct sk_buff_head skb_queue;

Expand Down Expand Up @@ -751,7 +753,6 @@ struct ieee80211_local {
struct workqueue_struct *workqueue;

unsigned long queue_stop_reasons[IEEE80211_MAX_QUEUES];
struct ieee80211_tx_queue_params tx_conf[IEEE80211_MAX_QUEUES];
/* also used to protect ampdu_ac_queue and amdpu_ac_stop_refcnt */
spinlock_t queue_stop_reason_lock;

Expand Down
4 changes: 2 additions & 2 deletions trunk/net/mac80211/mlme.c
Original file line number Diff line number Diff line change
Expand Up @@ -936,8 +936,8 @@ static void ieee80211_sta_wmm_params(struct ieee80211_local *local,
params.aifs, params.cw_min, params.cw_max,
params.txop, params.uapsd);
#endif
local->tx_conf[queue] = params;
if (drv_conf_tx(local, queue, &params))
sdata->tx_conf[queue] = params;
if (drv_conf_tx(local, sdata, queue, &params))
wiphy_debug(local->hw.wiphy,
"failed to set TX queue parameters for queue %d\n",
queue);
Expand Down
15 changes: 11 additions & 4 deletions trunk/net/mac80211/util.c
Original file line number Diff line number Diff line change
Expand Up @@ -632,8 +632,8 @@ void ieee80211_set_wmm_default(struct ieee80211_sub_if_data *sdata)

qparam.uapsd = false;

local->tx_conf[queue] = qparam;
drv_conf_tx(local, queue, &qparam);
sdata->tx_conf[queue] = qparam;
drv_conf_tx(local, sdata, queue, &qparam);
}

/* after reinitialize QoS TX queues setting to default,
Expand Down Expand Up @@ -1044,8 +1044,15 @@ int ieee80211_reconfig(struct ieee80211_local *local)
mutex_unlock(&local->sta_mtx);

/* reconfigure tx conf */
for (i = 0; i < hw->queues; i++)
drv_conf_tx(local, i, &local->tx_conf[i]);
list_for_each_entry(sdata, &local->interfaces, list) {
if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN ||
sdata->vif.type == NL80211_IFTYPE_MONITOR ||
!ieee80211_sdata_running(sdata))
continue;

for (i = 0; i < hw->queues; i++)
drv_conf_tx(local, sdata, i, &sdata->tx_conf[i]);
}

/* reconfigure hardware */
ieee80211_hw_config(local, ~0);
Expand Down

0 comments on commit 9be7893

Please sign in to comment.