[PATCH 2/4] wiphy: add driver quirk for disabling multicast rx (and helper)

James Prestwood <[email protected]>
Newsgroups dev.linux.lists.iwd
Message-ID <[email protected]>
This driver quirk and associated helper API lets other modules both
check if multicast RX is supported, and if its been disabled via
the driver quirk setting.
---
 src/wiphy.c | 17 +++++++++++++----
 src/wiphy.h |  1 +
 2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/src/wiphy.c b/src/wiphy.c
index ecc345e9..5e958d65 100644
--- a/src/wiphy.c
+++ b/src/wiphy.c
@@ -73,6 +73,7 @@ enum driver_flag {
 	FORCE_PAE = 0x2,
 	POWER_SAVE_DISABLE = 0x4,
 	OWE_DISABLE = 0x8,
+	MULTICAST_RX_DISABLE = 0x10,
 };
 
 struct driver_flag_name {
@@ -101,10 +102,11 @@ static const struct driver_info driver_infos[] = {
 };
 
 static const struct driver_flag_name driver_flag_names[] = {
-	{ "DefaultInterface", DEFAULT_IF },
-	{ "ForcePae",         FORCE_PAE },
-	{ "PowerSaveDisable", POWER_SAVE_DISABLE },
-	{ "OweDisable",       OWE_DISABLE },
+	{ "DefaultInterface",   DEFAULT_IF },
+	{ "ForcePae",           FORCE_PAE },
+	{ "PowerSaveDisable",   POWER_SAVE_DISABLE },
+	{ "OweDisable",         OWE_DISABLE },
+	{ "MulticastRxDisable", MULTICAST_RX_DISABLE }
 };
 
 struct wiphy {
@@ -949,6 +951,13 @@ bool wiphy_supports_cmd_offchannel(const struct wiphy *wiphy)
 	return wiphy->supports_cmd_offchannel;
 }
 
+bool wiphy_supports_multicast_rx(const struct wiphy *wiphy)
+{
+	return wiphy_has_ext_feature(wiphy,
+				NL80211_EXT_FEATURE_MULTICAST_REGISTRATIONS) &&
+				!(wiphy->driver_flags & MULTICAST_RX_DISABLE);
+}
+
 const uint8_t *wiphy_get_ht_capabilities(const struct wiphy *wiphy,
 						enum band_freq band,
 						size_t *size)
diff --git a/src/wiphy.h b/src/wiphy.h
index c527c79d..9fcbdcd2 100644
--- a/src/wiphy.h
+++ b/src/wiphy.h
@@ -143,6 +143,7 @@ void wiphy_get_reg_domain_country(struct wiphy *wiphy, char *out);
 bool wiphy_country_is_unknown(struct wiphy *wiphy);
 bool wiphy_supports_uapsd(const struct wiphy *wiphy);
 bool wiphy_supports_cmd_offchannel(const struct wiphy *wiphy);
+bool wiphy_supports_multicast_rx(const struct wiphy *wiphy);
 
 const uint8_t *wiphy_get_ht_capabilities(const struct wiphy *wiphy,
 						enum band_freq band,
-- 
2.34.1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.