mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-04 06:54:27 -05:00 
			
		
		
		
	ath9k: fix a locking issue in the tx path
SVN-Revision: 29560
This commit is contained in:
		
							parent
							
								
									5b89536395
								
							
						
					
					
						commit
						ead4fdf1f1
					
				
							
								
								
									
										25
									
								
								package/mac80211/patches/565-ath9k_fix_lockup.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								package/mac80211/patches/565-ath9k_fix_lockup.patch
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,25 @@
 | 
			
		||||
--- a/drivers/net/wireless/ath/ath9k/xmit.c
 | 
			
		||||
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
 | 
			
		||||
@@ -189,8 +189,11 @@ static void ath_tx_flush_tid(struct ath_
 | 
			
		||||
 		tid->state &= ~AGGR_CLEANUP;
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
-	if (sendbar)
 | 
			
		||||
+	if (sendbar) {
 | 
			
		||||
+		spin_unlock_bh(&txq->axq_lock);
 | 
			
		||||
 		ath_send_bar(tid, tid->seq_start);
 | 
			
		||||
+		spin_lock_bh(&txq->axq_lock);
 | 
			
		||||
+	}
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 static void ath_tx_update_baw(struct ath_softc *sc, struct ath_atx_tid *tid,
 | 
			
		||||
@@ -566,7 +569,9 @@ static void ath_tx_complete_aggr(struct 
 | 
			
		||||
 
 | 
			
		||||
 	if (bar_index >= 0) {
 | 
			
		||||
 		u16 bar_seq = ATH_BA_INDEX2SEQ(seq_first, bar_index);
 | 
			
		||||
+		spin_unlock_bh(&txq->axq_lock);
 | 
			
		||||
 		ath_send_bar(tid, ATH_BA_INDEX2SEQ(seq_first, bar_index + 1));
 | 
			
		||||
+		spin_lock_bh(&txq->axq_lock);
 | 
			
		||||
 		if (BAW_WITHIN(tid->seq_start, tid->baw_size, bar_seq))
 | 
			
		||||
 			tid->bar_index = ATH_BA_INDEX(tid->seq_start, bar_seq);
 | 
			
		||||
 	}
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user