staging: wfx: drop struct wfx_grp_addr_table
authorJérôme Pouiller <jerome.pouiller@silabs.com>
Wed, 15 Apr 2020 16:11:41 +0000 (18:11 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 16 Apr 2020 10:29:45 +0000 (12:29 +0200)
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@silabs.com>
Link: https://lore.kernel.org/r/20200415161147.69738-15-Jerome.Pouiller@silabs.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/wfx/sta.c
drivers/staging/wfx/sta.h
drivers/staging/wfx/wfx.h

index 3a105d4..70342bd 100644 (file)
@@ -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);
 
index a90eaf5..3109705 100644 (file)
@@ -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;
index 3941462..53184fe 100644 (file)
@@ -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;