mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-03 22:44:27 -05:00 
			
		
		
		
	This updates the mac80211 backport. The removed patches are already integrated in the upstream version. The 131-Revert-mac80211-aes-cmac-switch-to-shash-CMAC-driver.patch patch was manually adapted to the changes in kernel 5.7. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
		
			
				
	
	
		
			39 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From b478e06a16a8baa00c5ecc87c1d636981f2206d5 Mon Sep 17 00:00:00 2001
 | 
						|
From: Johannes Berg <johannes.berg@intel.com>
 | 
						|
Date: Tue, 29 Oct 2019 10:25:25 +0100
 | 
						|
Subject: [PATCH] mac80211: sta: randomize BA session dialog token allocator
 | 
						|
 | 
						|
We currently always start the dialog token generator at zero,
 | 
						|
so the first dialog token we use is always 1. This would be
 | 
						|
OK if we had a perfect guarantee that we always do a proper
 | 
						|
deauth/re-auth handshake, but in IBSS mode this doesn't always
 | 
						|
happen properly.
 | 
						|
 | 
						|
To make problems with block ack (aggregation) sessions getting
 | 
						|
stuck less likely, randomize the dialog token so if we start a
 | 
						|
new session but the peer still has old state for us, it can
 | 
						|
better detect this.
 | 
						|
 | 
						|
This is really just a workaround to make things a bit more
 | 
						|
robust than they are now - a better fix would be to do a full
 | 
						|
authentication handshake in IBSS mode upon having discovered a
 | 
						|
new station, and on the receiver resetting the state (removing
 | 
						|
and re-adding the station) on receiving the authentication
 | 
						|
packet.
 | 
						|
 | 
						|
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
 | 
						|
---
 | 
						|
 net/mac80211/sta_info.c | 1 +
 | 
						|
 1 file changed, 1 insertion(+)
 | 
						|
 | 
						|
--- a/net/mac80211/sta_info.c
 | 
						|
+++ b/net/mac80211/sta_info.c
 | 
						|
@@ -339,6 +339,7 @@ struct sta_info *sta_info_alloc(struct i
 | 
						|
 	INIT_WORK(&sta->drv_deliver_wk, sta_deliver_ps_frames);
 | 
						|
 	INIT_WORK(&sta->ampdu_mlme.work, ieee80211_ba_session_work);
 | 
						|
 	mutex_init(&sta->ampdu_mlme.mtx);
 | 
						|
+	sta->ampdu_mlme.dialog_token_allocator = prandom_u32_max(U8_MAX);
 | 
						|
 #ifdef CPTCFG_MAC80211_MESH
 | 
						|
 	if (ieee80211_vif_is_mesh(&sdata->vif)) {
 | 
						|
 		sta->mesh = kzalloc(sizeof(*sta->mesh), gfp);
 |