mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	mac80211: Fix accounting of the tailroom-needed counter
When hw acceleration is enabled, the GENERATE_IV or PUT_IV_SPACE flags will only require headroom space. Consequently, the tailroom-needed counter can safely be decremented. Signed-off-by: Ido Yariv <idox.yariv@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
		
							parent
							
								
									170fd0b1f6
								
							
						
					
					
						commit
						ca34e3b5c8
					
				
					 2 changed files with 8 additions and 11 deletions
				
			
		| 
						 | 
				
			
			@ -1226,7 +1226,8 @@ struct ieee80211_vif *wdev_to_ieee80211_vif(struct wireless_dev *wdev);
 | 
			
		|||
 *
 | 
			
		||||
 * @IEEE80211_KEY_FLAG_GENERATE_IV: This flag should be set by the
 | 
			
		||||
 *	driver to indicate that it requires IV generation for this
 | 
			
		||||
 *	particular key.
 | 
			
		||||
 *	particular key. Setting this flag does not necessarily mean that SKBs
 | 
			
		||||
 *	will have sufficient tailroom for ICV or MIC.
 | 
			
		||||
 * @IEEE80211_KEY_FLAG_GENERATE_MMIC: This flag should be set by
 | 
			
		||||
 *	the driver for a TKIP key if it requires Michael MIC
 | 
			
		||||
 *	generation in software.
 | 
			
		||||
| 
						 | 
				
			
			@ -1238,7 +1239,9 @@ struct ieee80211_vif *wdev_to_ieee80211_vif(struct wireless_dev *wdev);
 | 
			
		|||
 * @IEEE80211_KEY_FLAG_PUT_IV_SPACE: This flag should be set by the driver
 | 
			
		||||
 *	if space should be prepared for the IV, but the IV
 | 
			
		||||
 *	itself should not be generated. Do not set together with
 | 
			
		||||
 *	@IEEE80211_KEY_FLAG_GENERATE_IV on the same key.
 | 
			
		||||
 *	@IEEE80211_KEY_FLAG_GENERATE_IV on the same key. Setting this flag does
 | 
			
		||||
 *	not necessarily mean that SKBs will have sufficient tailroom for ICV or
 | 
			
		||||
 *	MIC.
 | 
			
		||||
 * @IEEE80211_KEY_FLAG_RX_MGMT: This key will be used to decrypt received
 | 
			
		||||
 *	management frames. The flag can help drivers that have a hardware
 | 
			
		||||
 *	crypto implementation that doesn't deal with management frames
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -130,9 +130,7 @@ static int ieee80211_key_enable_hw_accel(struct ieee80211_key *key)
 | 
			
		|||
	if (!ret) {
 | 
			
		||||
		key->flags |= KEY_FLAG_UPLOADED_TO_HARDWARE;
 | 
			
		||||
 | 
			
		||||
		if (!((key->conf.flags & IEEE80211_KEY_FLAG_GENERATE_MMIC) ||
 | 
			
		||||
		      (key->conf.flags & IEEE80211_KEY_FLAG_GENERATE_IV) ||
 | 
			
		||||
		      (key->conf.flags & IEEE80211_KEY_FLAG_PUT_IV_SPACE)))
 | 
			
		||||
		if (!(key->conf.flags & IEEE80211_KEY_FLAG_GENERATE_MMIC))
 | 
			
		||||
			sdata->crypto_tx_tailroom_needed_cnt--;
 | 
			
		||||
 | 
			
		||||
		WARN_ON((key->conf.flags & IEEE80211_KEY_FLAG_PUT_IV_SPACE) &&
 | 
			
		||||
| 
						 | 
				
			
			@ -180,9 +178,7 @@ static void ieee80211_key_disable_hw_accel(struct ieee80211_key *key)
 | 
			
		|||
	sta = key->sta;
 | 
			
		||||
	sdata = key->sdata;
 | 
			
		||||
 | 
			
		||||
	if (!((key->conf.flags & IEEE80211_KEY_FLAG_GENERATE_MMIC) ||
 | 
			
		||||
	      (key->conf.flags & IEEE80211_KEY_FLAG_GENERATE_IV) ||
 | 
			
		||||
	      (key->conf.flags & IEEE80211_KEY_FLAG_PUT_IV_SPACE)))
 | 
			
		||||
	if (!(key->conf.flags & IEEE80211_KEY_FLAG_GENERATE_MMIC))
 | 
			
		||||
		increment_tailroom_need_count(sdata);
 | 
			
		||||
 | 
			
		||||
	ret = drv_set_key(key->local, DISABLE_KEY, sdata,
 | 
			
		||||
| 
						 | 
				
			
			@ -878,9 +874,7 @@ void ieee80211_remove_key(struct ieee80211_key_conf *keyconf)
 | 
			
		|||
	if (key->flags & KEY_FLAG_UPLOADED_TO_HARDWARE) {
 | 
			
		||||
		key->flags &= ~KEY_FLAG_UPLOADED_TO_HARDWARE;
 | 
			
		||||
 | 
			
		||||
		if (!((key->conf.flags & IEEE80211_KEY_FLAG_GENERATE_MMIC) ||
 | 
			
		||||
		      (key->conf.flags & IEEE80211_KEY_FLAG_GENERATE_IV) ||
 | 
			
		||||
		      (key->conf.flags & IEEE80211_KEY_FLAG_PUT_IV_SPACE)))
 | 
			
		||||
		if (!(key->conf.flags & IEEE80211_KEY_FLAG_GENERATE_MMIC))
 | 
			
		||||
			increment_tailroom_need_count(key->sdata);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue