Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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;

+4 −1
Original line number Diff line number Diff line
@@ -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 &&
+0 −1
Original line number Diff line number Diff line
@@ -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;
+6 −6
Original line number Diff line number Diff line
@@ -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,
+8 −19
Original line number Diff line number Diff line
@@ -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));
		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);
		}
					   &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));
	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,
						    &chanctx_conf->def);
		}
					    &sdata->vif.bss_conf.chandef);
	}

	rcu_read_unlock();