diff mbox

mac80211: simplify station assignment in ieee80211_tx_prepare()

Message ID 1424734438-18209-1-git-send-email-johannes@sipsolutions.net (mailing list archive)
State RFC
Delegated to: Johannes Berg
Headers show

Commit Message

Johannes Berg Feb. 23, 2015, 11:33 p.m. UTC
From: Johannes Berg <johannes.berg@intel.com>

There's no need for the second conditional as the same will be
done immediately afterwards if there's no station assigned.

Remove the useless conditional, move fallback assignment into
the else branch and don't try to look up a multicast address
which cannot be found anyway.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
 net/mac80211/tx.c | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

Comments

Jouni Malinen Feb. 27, 2015, 7:55 p.m. UTC | #1
On Tue, Feb 24, 2015 at 12:33:58AM +0100, Johannes Berg wrote:
> There's no need for the second conditional as the same will be
> done immediately afterwards if there's no station assigned.
> 
> Remove the useless conditional, move fallback assignment into
> the else branch and don't try to look up a multicast address
> which cannot be found anyway.

It looks like this breaks ap_vlan_* hwsim test cases. Found by git
bisect on current wireless-testing, confirmed by reverting this on top
of the current master branch.
diff mbox

Patch

diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 88a18ffe2975..76b95ce23113 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -1167,13 +1167,9 @@  ieee80211_tx_prepare(struct ieee80211_sub_if_data *sdata,
 		tx->sta = rcu_dereference(sdata->u.vlan.sta);
 		if (!tx->sta && sdata->dev->ieee80211_ptr->use_4addr)
 			return TX_DROP;
-	} else if (info->flags & (IEEE80211_TX_CTL_INJECTED |
-				  IEEE80211_TX_INTFL_NL80211_FRAME_TX) ||
-		   tx->sdata->control_port_protocol == tx->skb->protocol) {
+	} else if (!is_multicast_ether_addr(hdr->addr1)) {
 		tx->sta = sta_info_get_bss(sdata, hdr->addr1);
 	}
-	if (!tx->sta)
-		tx->sta = sta_info_get(sdata, hdr->addr1);
 
 	if (tx->sta && ieee80211_is_data_qos(hdr->frame_control) &&
 	    !ieee80211_is_qos_nullfunc(hdr->frame_control) &&