Commit b7a3a8e3 authored by David S. Miller's avatar David S. Miller

Merge tag 'mac80211-next-for-davem-2015-05-19' of...

Merge tag 'mac80211-next-for-davem-2015-05-19' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next

Johannes Berg says:

====================
This just has a few fixes:
 * LED throughput trigger was crashing
 * fast-xmit wasn't treating QoS changes in IBSS correctly
 * TDLS could use the wrong channel definition
 * using a reserved channel context could use the wrong channel width
====================
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 9a03259c 658358ce
...@@ -1010,6 +1010,8 @@ ieee80211_vif_use_reserved_reassign(struct ieee80211_sub_if_data *sdata) ...@@ -1010,6 +1010,8 @@ ieee80211_vif_use_reserved_reassign(struct ieee80211_sub_if_data *sdata)
if (WARN_ON(!chandef)) if (WARN_ON(!chandef))
return -EINVAL; return -EINVAL;
ieee80211_change_chanctx(local, new_ctx, chandef);
vif_chsw[0].vif = &sdata->vif; vif_chsw[0].vif = &sdata->vif;
vif_chsw[0].old_ctx = &old_ctx->conf; vif_chsw[0].old_ctx = &old_ctx->conf;
vif_chsw[0].new_ctx = &new_ctx->conf; vif_chsw[0].new_ctx = &new_ctx->conf;
...@@ -1083,6 +1085,8 @@ ieee80211_vif_use_reserved_assign(struct ieee80211_sub_if_data *sdata) ...@@ -1083,6 +1085,8 @@ ieee80211_vif_use_reserved_assign(struct ieee80211_sub_if_data *sdata)
if (WARN_ON(!chandef)) if (WARN_ON(!chandef))
return -EINVAL; return -EINVAL;
ieee80211_change_chanctx(local, new_ctx, chandef);
list_del(&sdata->reserved_chanctx_list); list_del(&sdata->reserved_chanctx_list);
sdata->reserved_chanctx = NULL; sdata->reserved_chanctx = NULL;
......
...@@ -1031,8 +1031,11 @@ static void ieee80211_update_sta_info(struct ieee80211_sub_if_data *sdata, ...@@ -1031,8 +1031,11 @@ static void ieee80211_update_sta_info(struct ieee80211_sub_if_data *sdata,
} }
} }
if (sta && elems->wmm_info && local->hw.queues >= IEEE80211_NUM_ACS) if (sta && !sta->sta.wme &&
elems->wmm_info && local->hw.queues >= IEEE80211_NUM_ACS) {
sta->sta.wme = true; sta->sta.wme = true;
ieee80211_check_fast_xmit(sta);
}
if (sta && elems->ht_operation && elems->ht_cap_elem && if (sta && elems->ht_operation && elems->ht_cap_elem &&
sdata->u.ibss.chandef.width != NL80211_CHAN_WIDTH_20_NOHT && sdata->u.ibss.chandef.width != NL80211_CHAN_WIDTH_20_NOHT &&
......
...@@ -1038,7 +1038,6 @@ enum queue_stop_reason { ...@@ -1038,7 +1038,6 @@ enum queue_stop_reason {
#ifdef CONFIG_MAC80211_LEDS #ifdef CONFIG_MAC80211_LEDS
struct tpt_led_trigger { struct tpt_led_trigger {
struct led_trigger trig;
char name[32]; char name[32];
const struct ieee80211_tpt_blink *blink_table; const struct ieee80211_tpt_blink *blink_table;
unsigned int blink_table_len; unsigned int blink_table_len;
......
...@@ -276,10 +276,10 @@ static void tpt_trig_timer(unsigned long data) ...@@ -276,10 +276,10 @@ static void tpt_trig_timer(unsigned long data)
} }
} }
read_lock(&tpt_trig->trig.leddev_list_lock); read_lock(&local->tpt_led.leddev_list_lock);
list_for_each_entry(led_cdev, &tpt_trig->trig.led_cdevs, trig_list) list_for_each_entry(led_cdev, &local->tpt_led.led_cdevs, trig_list)
led_blink_set(led_cdev, &on, &off); led_blink_set(led_cdev, &on, &off);
read_unlock(&tpt_trig->trig.leddev_list_lock); read_unlock(&local->tpt_led.leddev_list_lock);
} }
const char * const char *
...@@ -341,10 +341,10 @@ static void ieee80211_stop_tpt_led_trig(struct ieee80211_local *local) ...@@ -341,10 +341,10 @@ static void ieee80211_stop_tpt_led_trig(struct ieee80211_local *local)
tpt_trig->running = false; tpt_trig->running = false;
del_timer_sync(&tpt_trig->timer); del_timer_sync(&tpt_trig->timer);
read_lock(&tpt_trig->trig.leddev_list_lock); read_lock(&local->tpt_led.leddev_list_lock);
list_for_each_entry(led_cdev, &tpt_trig->trig.led_cdevs, trig_list) list_for_each_entry(led_cdev, &local->tpt_led.led_cdevs, trig_list)
led_set_brightness(led_cdev, LED_OFF); led_set_brightness(led_cdev, LED_OFF);
read_unlock(&tpt_trig->trig.leddev_list_lock); read_unlock(&local->tpt_led.leddev_list_lock);
} }
void ieee80211_mod_tpt_led_trig(struct ieee80211_local *local, void ieee80211_mod_tpt_led_trig(struct ieee80211_local *local,
......
...@@ -527,30 +527,19 @@ ieee80211_tdls_add_setup_cfm_ies(struct ieee80211_sub_if_data *sdata, ...@@ -527,30 +527,19 @@ ieee80211_tdls_add_setup_cfm_ies(struct ieee80211_sub_if_data *sdata,
/* if HT support is only added in TDLS, we need an HT-operation IE */ /* if HT support is only added in TDLS, we need an HT-operation IE */
if (!ap_sta->sta.ht_cap.ht_supported && sta->sta.ht_cap.ht_supported) { if (!ap_sta->sta.ht_cap.ht_supported && sta->sta.ht_cap.ht_supported) {
struct ieee80211_chanctx_conf *chanctx_conf = pos = skb_put(skb, 2 + sizeof(struct ieee80211_ht_operation));
rcu_dereference(sdata->vif.chanctx_conf); /* send an empty HT operation IE */
if (!WARN_ON(!chanctx_conf)) { ieee80211_ie_build_ht_oper(pos, &sta->sta.ht_cap,
pos = skb_put(skb, 2 + &sdata->vif.bss_conf.chandef, 0);
sizeof(struct ieee80211_ht_operation));
/* send an empty HT operation IE */
ieee80211_ie_build_ht_oper(pos, &sta->sta.ht_cap,
&chanctx_conf->def, 0);
}
} }
ieee80211_tdls_add_link_ie(sdata, skb, peer, initiator); ieee80211_tdls_add_link_ie(sdata, skb, peer, initiator);
/* only include VHT-operation if not on the 2.4GHz band */ /* only include VHT-operation if not on the 2.4GHz band */
if (band != IEEE80211_BAND_2GHZ && !ap_sta->sta.vht_cap.vht_supported && if (band != IEEE80211_BAND_2GHZ && sta->sta.vht_cap.vht_supported) {
sta->sta.vht_cap.vht_supported) { pos = skb_put(skb, 2 + sizeof(struct ieee80211_vht_operation));
struct ieee80211_chanctx_conf *chanctx_conf = ieee80211_ie_build_vht_oper(pos, &sta->sta.vht_cap,
rcu_dereference(sdata->vif.chanctx_conf); &sdata->vif.bss_conf.chandef);
if (!WARN_ON(!chanctx_conf)) {
pos = skb_put(skb, 2 +
sizeof(struct ieee80211_vht_operation));
ieee80211_ie_build_vht_oper(pos, &sta->sta.vht_cap,
&chanctx_conf->def);
}
} }
rcu_read_unlock(); rcu_read_unlock();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment