mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-03 22:44:27 -05:00 
			
		
		
		
	mac80211: round up tx status headroom
Fixes unaligned access exceptions in mt76 when transmitting beacons Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
		
							parent
							
								
									8a59f9590e
								
							
						
					
					
						commit
						526921f20e
					
				@ -0,0 +1,26 @@
 | 
			
		||||
From: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
Date: Fri, 9 Feb 2018 19:46:54 +0100
 | 
			
		||||
Subject: [PATCH] mac80211: round IEEE80211_TX_STATUS_HEADROOM up to multiple
 | 
			
		||||
 of 4
 | 
			
		||||
 | 
			
		||||
This ensures that mac80211 allocated management frames are properly
 | 
			
		||||
aligned, which makes copying them more efficient.
 | 
			
		||||
For instance, mt76 uses iowrite32_copy to copy beacon frames to beacon
 | 
			
		||||
template memory on the chip.
 | 
			
		||||
Misaligned 32-bit accesses cause CPU exceptions on MIPS and should be
 | 
			
		||||
avoided.
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
--- a/include/net/mac80211.h
 | 
			
		||||
+++ b/include/net/mac80211.h
 | 
			
		||||
@@ -4149,7 +4149,7 @@ void ieee80211_sta_uapsd_trigger(struct
 | 
			
		||||
  * The TX headroom reserved by mac80211 for its own tx_status functions.
 | 
			
		||||
  * This is enough for the radiotap header.
 | 
			
		||||
  */
 | 
			
		||||
-#define IEEE80211_TX_STATUS_HEADROOM	14
 | 
			
		||||
+#define IEEE80211_TX_STATUS_HEADROOM	ALIGN(14, 4)
 | 
			
		||||
 
 | 
			
		||||
 /**
 | 
			
		||||
  * ieee80211_sta_set_buffered - inform mac80211 about driver-buffered frames
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user