From: Jerome Pouiller <Jerome.Pouiller@silabs.com>
To: devel@driverdev.osuosl.org, linux-wireless@vger.kernel.org
Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Kalle Valo" <kvalo@codeaurora.org>,
"David S . Miller" <davem@davemloft.net>,
"Jérôme Pouiller" <jerome.pouiller@silabs.com>
Subject: [PATCH 06/31] staging: wfx: drop multicast filtering
Date: Mon, 7 Sep 2020 12:14:56 +0200 [thread overview]
Message-ID: <20200907101521.66082-7-Jerome.Pouiller@silabs.com> (raw)
In-Reply-To: <20200907101521.66082-1-Jerome.Pouiller@silabs.com>
From: Jérôme Pouiller <jerome.pouiller@silabs.com>
The device allows to filter multicast frames. The driver has the
necessary code to take advantage of this feature. However, some bugs
has been reported on this feature. So, it was temporary disabled.
Finally, the things work well as-is for more than one year now. So there
is no plan to enable this feature in near future.
Since we dislike to maintain dead code, drop it.
Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
---
drivers/staging/wfx/hif_api_mib.h | 36 -------------------
drivers/staging/wfx/hif_tx_mib.c | 40 ---------------------
drivers/staging/wfx/hif_tx_mib.h | 6 ----
drivers/staging/wfx/main.c | 1 -
drivers/staging/wfx/sta.c | 59 ++-----------------------------
drivers/staging/wfx/sta.h | 2 --
drivers/staging/wfx/wfx.h | 3 --
7 files changed, 2 insertions(+), 145 deletions(-)
diff --git a/drivers/staging/wfx/hif_api_mib.h b/drivers/staging/wfx/hif_api_mib.h
index 6f1434795fa8..d0e0a9e29afa 100644
--- a/drivers/staging/wfx/hif_api_mib.h
+++ b/drivers/staging/wfx/hif_api_mib.h
@@ -82,42 +82,6 @@ struct hif_mib_gl_set_multi_msg {
u8 reserved2[3];
} __packed;
-enum hif_mac_addr_type {
- HIF_MAC_ADDR_A1 = 0x0,
- HIF_MAC_ADDR_A2 = 0x1,
- HIF_MAC_ADDR_A3 = 0x2
-};
-
-struct hif_mib_mac_addr_data_frame_condition {
- u8 condition_idx;
- u8 address_type;
- u8 mac_address[ETH_ALEN];
-} __packed;
-
-#define HIF_FILTER_UNICAST 0x1
-#define HIF_FILTER_MULTICAST 0x2
-#define HIF_FILTER_BROADCAST 0x4
-
-struct hif_mib_uc_mc_bc_data_frame_condition {
- u8 condition_idx;
- u8 allowed_frames;
- u8 reserved[2];
-} __packed;
-
-struct hif_mib_config_data_filter {
- u8 filter_idx;
- u8 enable;
- u8 reserved1[2];
- u8 eth_type_cond;
- u8 port_cond;
- u8 magic_cond;
- u8 mac_cond;
- u8 ipv4_cond;
- u8 ipv6_cond;
- u8 uc_mc_bc_cond;
- u8 reserved2;
-} __packed;
-
struct hif_mib_set_data_filtering {
u8 invert_matching:1;
u8 reserved1:7;
diff --git a/drivers/staging/wfx/hif_tx_mib.c b/drivers/staging/wfx/hif_tx_mib.c
index 3b20b7486f08..7f24e9f77c22 100644
--- a/drivers/staging/wfx/hif_tx_mib.c
+++ b/drivers/staging/wfx/hif_tx_mib.c
@@ -228,46 +228,6 @@ int hif_set_tx_rate_retry_policy(struct wfx_vif *wvif,
return ret;
}
-int hif_set_mac_addr_condition(struct wfx_vif *wvif,
- int idx, const u8 *mac_addr)
-{
- struct hif_mib_mac_addr_data_frame_condition val = {
- .condition_idx = idx,
- .address_type = HIF_MAC_ADDR_A1,
- };
-
- ether_addr_copy(val.mac_address, mac_addr);
- return hif_write_mib(wvif->wdev, wvif->id,
- HIF_MIB_ID_MAC_ADDR_DATAFRAME_CONDITION,
- &val, sizeof(val));
-}
-
-int hif_set_uc_mc_bc_condition(struct wfx_vif *wvif, int idx, u8 allowed_frames)
-{
- struct hif_mib_uc_mc_bc_data_frame_condition val = {
- .condition_idx = idx,
- .allowed_frames = allowed_frames,
- };
-
- return hif_write_mib(wvif->wdev, wvif->id,
- HIF_MIB_ID_UC_MC_BC_DATAFRAME_CONDITION,
- &val, sizeof(val));
-}
-
-int hif_set_config_data_filter(struct wfx_vif *wvif, bool enable, int idx,
- int mac_filters, int frames_types_filters)
-{
- struct hif_mib_config_data_filter val = {
- .enable = enable,
- .filter_idx = idx,
- .mac_cond = mac_filters,
- .uc_mc_bc_cond = frames_types_filters,
- };
-
- return hif_write_mib(wvif->wdev, wvif->id,
- HIF_MIB_ID_CONFIG_DATA_FILTER, &val, sizeof(val));
-}
-
int hif_set_data_filtering(struct wfx_vif *wvif, bool enable, bool invert)
{
struct hif_mib_set_data_filtering val = {
diff --git a/drivers/staging/wfx/hif_tx_mib.h b/drivers/staging/wfx/hif_tx_mib.h
index 1a6f4221bdeb..d4cac63164ba 100644
--- a/drivers/staging/wfx/hif_tx_mib.h
+++ b/drivers/staging/wfx/hif_tx_mib.h
@@ -37,12 +37,6 @@ int hif_set_association_mode(struct wfx_vif *wvif, int ampdu_density,
bool greenfield, bool short_preamble);
int hif_set_tx_rate_retry_policy(struct wfx_vif *wvif,
int policy_index, u8 *rates);
-int hif_set_mac_addr_condition(struct wfx_vif *wvif,
- int idx, const u8 *mac_addr);
-int hif_set_uc_mc_bc_condition(struct wfx_vif *wvif,
- int idx, u8 allowed_frames);
-int hif_set_config_data_filter(struct wfx_vif *wvif, bool enable, int idx,
- int mac_filters, int frames_types_filters);
int hif_set_data_filtering(struct wfx_vif *wvif, bool enable, bool invert);
int hif_keep_alive_period(struct wfx_vif *wvif, int period);
int hif_set_arp_ipv4_filter(struct wfx_vif *wvif, int idx, __be32 *addr);
diff --git a/drivers/staging/wfx/main.c b/drivers/staging/wfx/main.c
index 2af4914e905c..1017a2290f08 100644
--- a/drivers/staging/wfx/main.c
+++ b/drivers/staging/wfx/main.c
@@ -142,7 +142,6 @@ static const struct ieee80211_ops wfx_ops = {
.set_rts_threshold = wfx_set_rts_threshold,
.set_default_unicast_key = wfx_set_default_unicast_key,
.bss_info_changed = wfx_bss_info_changed,
- .prepare_multicast = wfx_prepare_multicast,
.configure_filter = wfx_configure_filter,
.ampdu_action = wfx_ampdu_action,
.flush = wfx_flush,
diff --git a/drivers/staging/wfx/sta.c b/drivers/staging/wfx/sta.c
index feebb7c3bdfe..8700d2fc6a77 100644
--- a/drivers/staging/wfx/sta.c
+++ b/drivers/staging/wfx/sta.c
@@ -91,59 +91,12 @@ static void wfx_filter_beacon(struct wfx_vif *wvif, bool filter_beacon)
}
}
-static void wfx_filter_mcast(struct wfx_vif *wvif, bool filter_mcast)
-{
- int i;
-
- // Temporary workaround for filters
- hif_set_data_filtering(wvif, false, true);
- return;
-
- if (!filter_mcast) {
- hif_set_data_filtering(wvif, false, true);
- return;
- }
- 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->filter_mcast_count) - 1);
- hif_set_data_filtering(wvif, true, true);
-}
-
-u64 wfx_prepare_multicast(struct ieee80211_hw *hw,
- struct netdev_hw_addr_list *mc_list)
-{
- int i;
- struct netdev_hw_addr *ha;
- struct wfx_vif *wvif = NULL;
- struct wfx_dev *wdev = hw->priv;
- int count = netdev_hw_addr_list_count(mc_list);
-
- while ((wvif = wvif_iterate(wdev, wvif)) != NULL) {
- 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->filter_mcast_addr[i], ha->addr);
- i++;
- }
- }
-
- return 0;
-}
-
void wfx_configure_filter(struct ieee80211_hw *hw, unsigned int changed_flags,
unsigned int *total_flags, u64 unused)
{
struct wfx_vif *wvif = NULL;
struct wfx_dev *wdev = hw->priv;
- bool filter_bssid, filter_prbreq, filter_beacon, filter_mcast;
+ bool filter_bssid, filter_prbreq, filter_beacon;
// Notes:
// - Probe responses (FIF_BCN_PRBRESP_PROMISC) are never filtered
@@ -167,15 +120,7 @@ void wfx_configure_filter(struct ieee80211_hw *hw, unsigned int changed_flags,
filter_beacon = true;
wfx_filter_beacon(wvif, filter_beacon);
- if (*total_flags & FIF_ALLMULTI) {
- filter_mcast = false;
- } else if (!wvif->filter_mcast_count) {
- dev_dbg(wdev->dev, "disabling unconfigured multicast filter");
- filter_mcast = false;
- } else {
- filter_mcast = true;
- }
- wfx_filter_mcast(wvif, filter_mcast);
+ hif_set_data_filtering(wvif, false, true);
if (*total_flags & FIF_OTHER_BSS)
filter_bssid = false;
diff --git a/drivers/staging/wfx/sta.h b/drivers/staging/wfx/sta.h
index 6b15a64ac9e2..610cfb0fcd02 100644
--- a/drivers/staging/wfx/sta.h
+++ b/drivers/staging/wfx/sta.h
@@ -25,8 +25,6 @@ int wfx_config(struct ieee80211_hw *hw, u32 changed);
int wfx_set_rts_threshold(struct ieee80211_hw *hw, u32 value);
void wfx_set_default_unicast_key(struct ieee80211_hw *hw,
struct ieee80211_vif *vif, int idx);
-u64 wfx_prepare_multicast(struct ieee80211_hw *hw,
- struct netdev_hw_addr_list *mc_list);
void wfx_configure_filter(struct ieee80211_hw *hw, unsigned int changed_flags,
unsigned int *total_flags, u64 unused);
diff --git a/drivers/staging/wfx/wfx.h b/drivers/staging/wfx/wfx.h
index 241eaaf71f5e..56fbfab05651 100644
--- a/drivers/staging/wfx/wfx.h
+++ b/drivers/staging/wfx/wfx.h
@@ -79,9 +79,6 @@ struct wfx_vif {
struct work_struct update_tim_work;
- int filter_mcast_count;
- u8 filter_mcast_addr[8][ETH_ALEN];
-
unsigned long uapsd_mask;
/* avoid some operations in parallel with scan */
--
2.28.0
next prev parent reply other threads:[~2020-09-07 10:33 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-07 10:14 [PATCH 00/31] staging: wfx: fix last items of the TODO list Jerome Pouiller
2020-09-07 10:14 ` [PATCH 01/31] staging: wfx: improve readability of association processing Jerome Pouiller
2020-09-07 10:14 ` [PATCH 02/31] staging: wfx: relocate wfx_join() beside wfx_join_finalize() Jerome Pouiller
2020-09-07 10:14 ` [PATCH 03/31] staging: wfx: simplify hif_set_association_mode() Jerome Pouiller
2020-09-07 10:14 ` [PATCH 04/31] staging: wfx: keep API error list up-to-date Jerome Pouiller
2020-09-07 10:14 ` [PATCH 05/31] staging: wfx: drop 'secure link' feature Jerome Pouiller
2020-09-07 10:14 ` Jerome Pouiller [this message]
2020-09-07 10:14 ` [PATCH 07/31] staging: wfx: drop useless function Jerome Pouiller
2020-09-07 10:14 ` [PATCH 08/31] staging: wfx: drop useless enum hif_beacon Jerome Pouiller
2020-09-07 10:14 ` [PATCH 09/31] staging: wfx: drop useless union hif_commands_ids Jerome Pouiller
2020-09-07 10:15 ` [PATCH 10/31] staging: wfx: drop useless struct hif_reset_flags Jerome Pouiller
2020-09-07 10:15 ` [PATCH 11/31] staging: wfx: drop useless struct hif_ie_flags Jerome Pouiller
2020-09-07 10:15 ` [PATCH 12/31] staging: wfx: drop useless struct hif_join_flags Jerome Pouiller
2020-09-07 10:15 ` [PATCH 13/31] staging: wfx: drop useless struct hif_bss_flags Jerome Pouiller
2020-09-07 10:15 ` [PATCH 14/31] staging: wfx: drop useless struct hif_map_link_flags Jerome Pouiller
2020-09-07 10:15 ` [PATCH 15/31] staging: wfx: drop useless struct hif_suspend_resume_flags Jerome Pouiller
2020-09-07 10:15 ` [PATCH 16/31] staging: wfx: drop useless struct hif_pm_mode Jerome Pouiller
2020-09-07 10:15 ` [PATCH 17/31] staging: wfx: drop useless struct hif_rx_flags Jerome Pouiller
2020-09-07 10:15 ` [PATCH 18/31] staging: wfx: drop useless struct hif_tx_result_flags Jerome Pouiller
2020-09-07 10:15 ` [PATCH 19/31] staging: wfx: drop useless structs only used in hif_req_tx Jerome Pouiller
2020-09-07 10:15 ` [PATCH 20/31] staging: wfx: drop useless stricts only used in hif_req_start_scan_alt Jerome Pouiller
2020-09-07 10:15 ` [PATCH 21/31] staging: wfx: drop useless structs only used in hif_ind_startup Jerome Pouiller
2020-09-07 10:15 ` [PATCH 22/31] staging: wfx: drop useless union hif_privacy_key_data Jerome Pouiller
2020-09-07 10:15 ` [PATCH 23/31] staging: wfx: drop useless union hif_event_data Jerome Pouiller
2020-09-07 10:15 ` [PATCH 24/31] staging: wfx: drop useless union hif_indication_data Jerome Pouiller
2020-09-07 10:15 ` [PATCH 25/31] staging: wfx: drop struct hif_ie_tlv Jerome Pouiller
2020-09-07 10:15 ` [PATCH 26/31] staging: wfx: drop macro API_SSID_SIZE Jerome Pouiller
2020-09-07 10:15 ` [PATCH 27/31] staging: wfx: fix naming of hif_tx_rate_retry_policy Jerome Pouiller
2020-09-07 10:15 ` [PATCH 28/31] staging: wfx: fix spaces Jerome Pouiller
2020-09-07 10:15 ` [PATCH 29/31] staging: wfx: uniformize naming rules in hif_tx_mib.c Jerome Pouiller
2020-09-07 10:15 ` [PATCH 30/31] staging: wfx: drop async field from struct hif_cmd Jerome Pouiller
2020-09-07 10:15 ` [PATCH 31/31] staging: wfx: update TODO list Jerome Pouiller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200907101521.66082-7-Jerome.Pouiller@silabs.com \
--to=jerome.pouiller@silabs.com \
--cc=davem@davemloft.net \
--cc=devel@driverdev.osuosl.org \
--cc=gregkh@linuxfoundation.org \
--cc=kvalo@codeaurora.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-wireless@vger.kernel.org \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).