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 -----BEGIN PGP SIGNATURE----- iQIcBAABCAAGBQJVWuPvAAoJEDBSmw7B7bqr/A4P/0TqzkCC5L2qJvi3a6QNFxvf s3riQMJ8WQeUxCRNgFNeeeNUAgSJn3hhiINGrjRmkwXXxYC4mbCwM0YXNT+WhSRL /Kx4mRJr7u5ZU0olW+KRvIV5CyTsbr9zVnaraCh5NV43nT87ZVZRBKC9vz2UkSM5 AsN6fUvhWMGhhHoGGDqtjRBjve8Xs5iKiEcE1iQTzLOPnFP3dKtB1zKKiA0JCQs4 OjxkQ7uaF0T1IfkMFr0gyzgQi4A8iPoMKV3qcRIH/QZN5dpJ6DR1dgaU50CrzQ+R JD9W09ifF9U8GnvQU/baJHKCxEvnQWO2XwlV4+mV6bXF1j5Ng4LRiXntIeu2d3T3 5JuvPV9cNJb8dSTzsYw+TRJg73hStlJCAjVMJ7hiOMQc1YCCY9Exrff0pWzJPJfE NygIkMHXymcy66yL3b7DIIXro5jHNVGVoHq3vMB+W+/EcEDFN6L9LeCzUVo+oKjl Qg4kC7VHDjcdt0f7Vgv2Cal76ZVfCZaq74QZV1cySF2sCiD27LnAAfoHVeMY979K qBsCRqhkBlc7ntnstv6tGz9LfG8ro+Fv548HIUDG80capZl6N6FR6g+8hYIuvJwu 2abJq36bp/NAGDt43UofmtDxyZNyvoKmzcQKSdn2QpryGKQ3uRcDHG/I+WD0yWX9 4WFNEm86sXmfL/Eyu0lU =iUFe -----END PGP SIGNATURE----- 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: David S. Miller <davem@davemloft.net>
This commit is contained in:
Коммит
b7a3a8e31f
|
@ -1010,6 +1010,8 @@ ieee80211_vif_use_reserved_reassign(struct ieee80211_sub_if_data *sdata)
|
|||
if (WARN_ON(!chandef))
|
||||
return -EINVAL;
|
||||
|
||||
ieee80211_change_chanctx(local, new_ctx, chandef);
|
||||
|
||||
vif_chsw[0].vif = &sdata->vif;
|
||||
vif_chsw[0].old_ctx = &old_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)
|
|||
if (WARN_ON(!chandef))
|
||||
return -EINVAL;
|
||||
|
||||
ieee80211_change_chanctx(local, new_ctx, chandef);
|
||||
|
||||
list_del(&sdata->reserved_chanctx_list);
|
||||
sdata->reserved_chanctx = NULL;
|
||||
|
||||
|
|
|
@ -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;
|
||||
ieee80211_check_fast_xmit(sta);
|
||||
}
|
||||
|
||||
if (sta && elems->ht_operation && elems->ht_cap_elem &&
|
||||
sdata->u.ibss.chandef.width != NL80211_CHAN_WIDTH_20_NOHT &&
|
||||
|
|
|
@ -1038,7 +1038,6 @@ enum queue_stop_reason {
|
|||
|
||||
#ifdef CONFIG_MAC80211_LEDS
|
||||
struct tpt_led_trigger {
|
||||
struct led_trigger trig;
|
||||
char name[32];
|
||||
const struct ieee80211_tpt_blink *blink_table;
|
||||
unsigned int blink_table_len;
|
||||
|
|
|
@ -276,10 +276,10 @@ static void tpt_trig_timer(unsigned long data)
|
|||
}
|
||||
}
|
||||
|
||||
read_lock(&tpt_trig->trig.leddev_list_lock);
|
||||
list_for_each_entry(led_cdev, &tpt_trig->trig.led_cdevs, trig_list)
|
||||
read_lock(&local->tpt_led.leddev_list_lock);
|
||||
list_for_each_entry(led_cdev, &local->tpt_led.led_cdevs, trig_list)
|
||||
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 *
|
||||
|
@ -341,10 +341,10 @@ static void ieee80211_stop_tpt_led_trig(struct ieee80211_local *local)
|
|||
tpt_trig->running = false;
|
||||
del_timer_sync(&tpt_trig->timer);
|
||||
|
||||
read_lock(&tpt_trig->trig.leddev_list_lock);
|
||||
list_for_each_entry(led_cdev, &tpt_trig->trig.led_cdevs, trig_list)
|
||||
read_lock(&local->tpt_led.leddev_list_lock);
|
||||
list_for_each_entry(led_cdev, &local->tpt_led.led_cdevs, trig_list)
|
||||
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,
|
||||
|
|
|
@ -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 (!ap_sta->sta.ht_cap.ht_supported && sta->sta.ht_cap.ht_supported) {
|
||||
struct ieee80211_chanctx_conf *chanctx_conf =
|
||||
rcu_dereference(sdata->vif.chanctx_conf);
|
||||
if (!WARN_ON(!chanctx_conf)) {
|
||||
pos = skb_put(skb, 2 +
|
||||
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);
|
||||
}
|
||||
pos = skb_put(skb, 2 + sizeof(struct ieee80211_ht_operation));
|
||||
/* send an empty HT operation IE */
|
||||
ieee80211_ie_build_ht_oper(pos, &sta->sta.ht_cap,
|
||||
&sdata->vif.bss_conf.chandef, 0);
|
||||
}
|
||||
|
||||
ieee80211_tdls_add_link_ie(sdata, skb, peer, initiator);
|
||||
|
||||
/* only include VHT-operation if not on the 2.4GHz band */
|
||||
if (band != IEEE80211_BAND_2GHZ && !ap_sta->sta.vht_cap.vht_supported &&
|
||||
sta->sta.vht_cap.vht_supported) {
|
||||
struct ieee80211_chanctx_conf *chanctx_conf =
|
||||
rcu_dereference(sdata->vif.chanctx_conf);
|
||||
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);
|
||||
}
|
||||
if (band != IEEE80211_BAND_2GHZ && sta->sta.vht_cap.vht_supported) {
|
||||
pos = skb_put(skb, 2 + sizeof(struct ieee80211_vht_operation));
|
||||
ieee80211_ie_build_vht_oper(pos, &sta->sta.vht_cap,
|
||||
&sdata->vif.bss_conf.chandef);
|
||||
}
|
||||
|
||||
rcu_read_unlock();
|
||||
|
|
Загрузка…
Ссылка в новой задаче