[PATCH 23/24] wpa_supplicant: refactor channel list update event

Ilan Peer ilan.peer
Mon May 19 00:06:20 PDT 2014


From: Arik Nemtsov <arik at wizery.com>

Update HW features for all interfaces inside the loop, don't treat wpa_s
specially. Perform the P2P channel list updates after the HW features
are updated. This will prevent P2P from relying on stale information.

Signed-off-by: Arik Nemtsov <arikx.nemtsov at intel.com>
---
 wpa_supplicant/events.c |   26 ++++++++------------------
 1 file changed, 8 insertions(+), 18 deletions(-)

diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c
index 66ddc2a..be0d35a 100644
--- a/wpa_supplicant/events.c
+++ b/wpa_supplicant/events.c
@@ -2765,28 +2765,18 @@ static void wpa_supplicant_update_channel_list(
 	if (wpa_s->drv_priv == NULL)
 		return; /* Ignore event during drv initialization */
 
-	free_hw_features(wpa_s);
-	wpa_s->hw.modes = wpa_drv_get_hw_feature_data(
-		wpa_s, &wpa_s->hw.num_modes, &wpa_s->hw.flags);
+	dl_list_for_each(ifs, &wpa_s->radio->ifaces, struct wpa_supplicant,
+			 radio_list) {
+		wpa_printf(MSG_DEBUG, "%s: Updating hw mode",
+			   ifs->ifname);
+		free_hw_features(ifs);
+		ifs->hw.modes = wpa_drv_get_hw_feature_data(
+			ifs, &ifs->hw.num_modes, &ifs->hw.flags);
+	}
 
 #ifdef CONFIG_P2P
 	wpas_p2p_update_channel_list(wpa_s);
 #endif /* CONFIG_P2P */
-
-	/*
-	 * Check other interfaces to see if they share the same radio. If
-	 * so, they get updated with this same hw mode info.
-	 */
-	dl_list_for_each(ifs, &wpa_s->radio->ifaces, struct wpa_supplicant,
-			 radio_list) {
-		if (ifs != wpa_s) {
-			wpa_printf(MSG_DEBUG, "%s: Updating hw mode",
-				   ifs->ifname);
-			free_hw_features(ifs);
-			ifs->hw.modes = wpa_drv_get_hw_feature_data(
-				ifs, &ifs->hw.num_modes, &ifs->hw.flags);
-		}
-	}
 }
 
 
-- 
1.7.10.4




More information about the Hostap mailing list