Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bdbb612f authored by Johannes Berg's avatar Johannes Berg Committed by Reinette Chatre
Browse files

iwlwifi: use iwl_sta_id() for TKIP key update



With the station ID being stored in the
station struct, which mac80211 gives us
for TKIP phase 1 key updates, we can also
remove the use of iwl_find_station() in
that code path.

Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
Signed-off-by: default avatarReinette Chatre <reinette.chatre@intel.com>
parent 619753ff
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -3057,8 +3057,7 @@ static void iwl_mac_update_tkip_key(struct ieee80211_hw *hw,
	struct iwl_priv *priv = hw->priv;
	IWL_DEBUG_MAC80211(priv, "enter\n");

	iwl_update_tkip_key(priv, keyconf,
			    sta ? sta->addr : iwl_bcast_addr,
	iwl_update_tkip_key(priv, keyconf, sta,
			    iv32, phase1key);

	IWL_DEBUG_MAC80211(priv, "leave\n");
+13 −8
Original line number Diff line number Diff line
@@ -1012,18 +1012,23 @@ static int iwl_set_tkip_dynamic_key_info(struct iwl_priv *priv,

void iwl_update_tkip_key(struct iwl_priv *priv,
			struct ieee80211_key_conf *keyconf,
			const u8 *addr, u32 iv32, u16 *phase1key)
			struct ieee80211_sta *sta, u32 iv32, u16 *phase1key)
{
	u8 sta_id = IWL_INVALID_STATION;
	u8 sta_id;
	unsigned long flags;
	int i;

	sta_id = iwl_find_station(priv, addr);
	if (sta) {
		sta_id = iwl_sta_id(sta);

		if (sta_id == IWL_INVALID_STATION) {
		IWL_DEBUG_MAC80211(priv, "leave - %pM not in station map.\n",
				   addr);
			IWL_DEBUG_MAC80211(priv, "leave - %pM not initialised.\n",
					   sta->addr);
			return;
		}
	} else
		sta_id = priv->hw_params.bcast_sta_id;


	if (iwl_scan_cancel(priv)) {
		/* cancel scan failed, just live w/ bad key and rely
+1 −1
Original line number Diff line number Diff line
@@ -60,7 +60,7 @@ int iwl_remove_dynamic_key(struct iwl_priv *priv,
			   struct ieee80211_key_conf *key, u8 sta_id);
void iwl_update_tkip_key(struct iwl_priv *priv,
			struct ieee80211_key_conf *keyconf,
			const u8 *addr, u32 iv32, u16 *phase1key);
			struct ieee80211_sta *sta, u32 iv32, u16 *phase1key);

void iwl_restore_stations(struct iwl_priv *priv);
void iwl_clear_ucode_stations(struct iwl_priv *priv);