mirror of
				https://github.com/Ysurac/openmptcprouter.git
				synced 2025-03-09 15:40:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			34 lines
		
	
	
	
		
			1,013 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
	
		
			1,013 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;
 | 
						|
 
 |