Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 587b36d3 authored by Avinash Patil's avatar Avinash Patil Committed by John W. Linville
Browse files

mwifiex: drop gratuitous ARP frames



This patch adds support for dropping gratuitous ARP frames which is
requirement for WFA Hotspot2.0.

Hotspot2.0 capability is enabled in driver if extended capabilities
IE from BSS descriptor has 11u interworking enabled.

Signed-off-by: default avatarAvinash Patil <patila@marvell.com>
Signed-off-by: default avatarBing Zhao <bzhao@marvell.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 68f95b09
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -399,6 +399,12 @@ mwifiex_cmd_append_11n_tlv(struct mwifiex_private *priv,
		       bss_desc->bcn_ext_cap + sizeof(struct ieee_types_header),
		       le16_to_cpu(ext_cap->header.len));

		if (hdr->len > 3 &&
		    ext_cap->ext_capab[3] & WLAN_EXT_CAPA4_INTERWORKING_ENABLED)
			priv->hs2_enabled = true;
		else
			priv->hs2_enabled = false;

		*buffer += sizeof(struct mwifiex_ie_types_extcap) + hdr->len;
		ret_len += sizeof(struct mwifiex_ie_types_extcap) + hdr->len;
	}
+1 −0
Original line number Diff line number Diff line
@@ -1508,6 +1508,7 @@ mwifiex_cfg80211_disconnect(struct wiphy *wiphy, struct net_device *dev,
		" reason code %d\n", priv->cfg_bssid, reason_code);

	memset(priv->cfg_bssid, 0, ETH_ALEN);
	priv->hs2_enabled = false;

	return 0;
}
+9 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@
#include <linux/wait.h>
#include <linux/timer.h>
#include <linux/ieee80211.h>
#include <uapi/linux/if_arp.h>
#include <net/mac80211.h>


@@ -152,4 +153,12 @@ struct mwifiex_types_wmm_info {
	u8 reserved;
	struct ieee_types_wmm_ac_parameters ac_params[IEEE80211_NUM_ACS];
} __packed;

struct mwifiex_arp_eth_header {
	struct arphdr hdr;
	u8 ar_sha[ETH_ALEN];
	u8 ar_sip[4];
	u8 ar_tha[ETH_ALEN];
	u8 ar_tip[4];
} __packed;
#endif /* !_MWIFIEX_DECL_H_ */
+1 −0
Original line number Diff line number Diff line
@@ -136,6 +136,7 @@ int mwifiex_init_priv(struct mwifiex_private *priv)
	priv->csa_chan = 0;
	priv->csa_expire_time = 0;
	priv->del_list_idx = 0;
	priv->hs2_enabled = false;

	return mwifiex_add_bss_prio_tbl(priv);
}
+1 −0
Original line number Diff line number Diff line
@@ -516,6 +516,7 @@ struct mwifiex_private {
	u8 csa_chan;
	unsigned long csa_expire_time;
	u8 del_list_idx;
	bool hs2_enabled;
};

enum mwifiex_ba_status {
Loading