mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-31 05:54:26 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			35 lines
		
	
	
		
			1013 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			1013 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From: Felix Fietkau <nbd@nbd.name>
 | |
| Date: Fri, 23 Feb 2018 10:05:08 +0100
 | |
| Subject: [PATCH] mac80211: support station 4-addr mode fast-rx
 | |
| 
 | |
| Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | |
| ---
 | |
| 
 | |
| --- a/net/mac80211/rx.c
 | |
| +++ b/net/mac80211/rx.c
 | |
| @@ -3738,10 +3738,6 @@ void ieee80211_check_fast_rx(struct sta_
 | |
|  
 | |
|  	switch (sdata->vif.type) {
 | |
|  	case NL80211_IFTYPE_STATION:
 | |
| -		/* 4-addr is harder to deal with, later maybe */
 | |
| -		if (sdata->u.mgd.use_4addr)
 | |
| -			goto clear;
 | |
| -
 | |
|  		if (sta->sta.tdls) {
 | |
|  			fastrx.da_offs = offsetof(struct ieee80211_hdr, addr1);
 | |
|  			fastrx.sa_offs = offsetof(struct ieee80211_hdr, addr2);
 | |
| @@ -3754,6 +3750,13 @@ void ieee80211_check_fast_rx(struct sta_
 | |
|  				cpu_to_le16(IEEE80211_FCTL_FROMDS);
 | |
|  		}
 | |
|  
 | |
| +		if (sdata->u.mgd.use_4addr && !sta->sta.tdls) {
 | |
| +			fastrx.expected_ds_bits |=
 | |
| +				cpu_to_le16(IEEE80211_FCTL_TODS);
 | |
| +			fastrx.da_offs = offsetof(struct ieee80211_hdr, addr3);
 | |
| +			fastrx.sa_offs = offsetof(struct ieee80211_hdr, addr4);
 | |
| +		}
 | |
| +
 | |
|  		if (!sdata->u.mgd.powersave)
 | |
|  		    break;
 | |
|  
 |