lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20200415161147.69738-15-Jerome.Pouiller@silabs.com>
Date:   Wed, 15 Apr 2020 18:11:41 +0200
From:   Jerome Pouiller <Jerome.Pouiller@...abs.com>
To:     devel@...verdev.osuosl.org, linux-wireless@...r.kernel.org
Cc:     netdev@...r.kernel.org, linux-kernel@...r.kernel.org,
        Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
        Kalle Valo <kvalo@...eaurora.org>,
        "David S . Miller" <davem@...emloft.net>,
        Jérôme Pouiller 
        <jerome.pouiller@...abs.com>
Subject: [PATCH 14/20] staging: wfx: drop struct wfx_grp_addr_table

From: Jérôme Pouiller <jerome.pouiller@...abs.com>

The struct wfx_grp_addr_table is only instantiated on one place. There
is no justifiation for this struct. Moreover, it is not consistent with
other fields related to filtering (filter_bssid, etc...).

Signed-off-by: Jérôme Pouiller <jerome.pouiller@...abs.com>
---
 drivers/staging/wfx/sta.c | 28 +++++++++++++---------------
 drivers/staging/wfx/sta.h |  6 ------
 drivers/staging/wfx/wfx.h |  4 +++-
 3 files changed, 16 insertions(+), 22 deletions(-)

diff --git a/drivers/staging/wfx/sta.c b/drivers/staging/wfx/sta.c
index 3a105d485237..70342bdd9d96 100644
--- a/drivers/staging/wfx/sta.c
+++ b/drivers/staging/wfx/sta.c
@@ -149,17 +149,16 @@ void wfx_update_filtering(struct wfx_vif *wvif)
 	hif_set_data_filtering(wvif, false, true);
 	return;
 
-	if (!wvif->mcast_filter.enable) {
+	if (!wvif->filter_mcast) {
 		hif_set_data_filtering(wvif, false, true);
 		return;
 	}
-	for (i = 0; i < wvif->mcast_filter.num_addresses; i++)
-		hif_set_mac_addr_condition(wvif, i,
-					   wvif->mcast_filter.address_list[i]);
+	for (i = 0; i < wvif->filter_mcast_count; i++)
+		hif_set_mac_addr_condition(wvif, i, wvif->filter_mcast_addr[i]);
 	hif_set_uc_mc_bc_condition(wvif, 0,
 				   HIF_FILTER_UNICAST | HIF_FILTER_BROADCAST);
 	hif_set_config_data_filter(wvif, true, 0, BIT(1),
-				   BIT(wvif->mcast_filter.num_addresses) - 1);
+				   BIT(wvif->filter_mcast_count) - 1);
 	hif_set_data_filtering(wvif, true, true);
 }
 
@@ -173,18 +172,17 @@ u64 wfx_prepare_multicast(struct ieee80211_hw *hw,
 	int count = netdev_hw_addr_list_count(mc_list);
 
 	while ((wvif = wvif_iterate(wdev, wvif)) != NULL) {
-		memset(&wvif->mcast_filter, 0x00, sizeof(wvif->mcast_filter));
-		if (!count ||
-		    count > ARRAY_SIZE(wvif->mcast_filter.address_list))
+		if (count > ARRAY_SIZE(wvif->filter_mcast_addr)) {
+			wvif->filter_mcast_count = 0;
 			continue;
+		}
+		wvif->filter_mcast_count = count;
 
 		i = 0;
 		netdev_hw_addr_list_for_each(ha, mc_list) {
-			ether_addr_copy(wvif->mcast_filter.address_list[i],
-					ha->addr);
+			ether_addr_copy(wvif->filter_mcast_addr[i], ha->addr);
 			i++;
 		}
-		wvif->mcast_filter.num_addresses = count;
 	}
 
 	return 0;
@@ -220,12 +218,12 @@ void wfx_configure_filter(struct ieee80211_hw *hw,
 			wvif->filter_beacon = true;
 
 		if (*total_flags & FIF_ALLMULTI) {
-			wvif->mcast_filter.enable = false;
-		} else if (!wvif->mcast_filter.num_addresses) {
+			wvif->filter_mcast = false;
+		} else if (!wvif->filter_mcast_count) {
 			dev_dbg(wdev->dev, "disabling unconfigured multicast filter");
-			wvif->mcast_filter.enable = false;
+			wvif->filter_mcast = false;
 		} else {
-			wvif->mcast_filter.enable = true;
+			wvif->filter_mcast = true;
 		}
 		wfx_update_filtering(wvif);
 
diff --git a/drivers/staging/wfx/sta.h b/drivers/staging/wfx/sta.h
index a90eaf5043a8..31097057563a 100644
--- a/drivers/staging/wfx/sta.h
+++ b/drivers/staging/wfx/sta.h
@@ -28,12 +28,6 @@ struct wfx_hif_event {
 	struct hif_ind_event evt;
 };
 
-struct wfx_grp_addr_table {
-	bool enable;
-	int num_addresses;
-	u8 address_list[8][ETH_ALEN];
-};
-
 struct wfx_sta_priv {
 	int link_id;
 	int vif_id;
diff --git a/drivers/staging/wfx/wfx.h b/drivers/staging/wfx/wfx.h
index 3941462097a4..53184fe2da4b 100644
--- a/drivers/staging/wfx/wfx.h
+++ b/drivers/staging/wfx/wfx.h
@@ -77,7 +77,6 @@ struct wfx_vif {
 	u32			link_id_map;
 
 	bool			after_dtim_tx_allowed;
-	struct wfx_grp_addr_table mcast_filter;
 
 	s8			wep_default_key_id;
 	struct sk_buff		*wep_pending_skb;
@@ -88,6 +87,9 @@ struct wfx_vif {
 
 	struct work_struct	update_tim_work;
 
+	int			filter_mcast_count;
+	u8			filter_mcast_addr[8][ETH_ALEN];
+	bool			filter_mcast;
 	bool			filter_bssid;
 	bool			filter_prbreq;
 	bool			filter_beacon;
-- 
2.25.1

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ