aboutsummaryrefslogtreecommitdiffstats
path: root/package/mac80211/patches/800-cfg80211_ap_isolate.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/mac80211/patches/800-cfg80211_ap_isolate.patch')
-rw-r--r--package/mac80211/patches/800-cfg80211_ap_isolate.patch66
1 files changed, 66 insertions, 0 deletions
diff --git a/package/mac80211/patches/800-cfg80211_ap_isolate.patch b/package/mac80211/patches/800-cfg80211_ap_isolate.patch
new file mode 100644
index 0000000000..c9a241ace4
--- /dev/null
+++ b/package/mac80211/patches/800-cfg80211_ap_isolate.patch
@@ -0,0 +1,66 @@
+--- a/include/linux/nl80211.h
++++ b/include/linux/nl80211.h
+@@ -709,6 +709,9 @@ enum nl80211_commands {
+ * NL80211_CMD_AUTHENTICATE, NL80211_CMD_DEAUTHENTICATE,
+ * NL80211_CMD_DISASSOCIATE.
+ *
++ * @NL80211_ATTR_AP_ISOLATE: (AP mode) Do not forward traffic between stations
++ * connected to this BSS.
++ *
+ * @NL80211_ATTR_MAX: highest attribute number currently defined
+ * @__NL80211_ATTR_AFTER_LAST: internal use
+ */
+@@ -864,6 +867,8 @@ enum nl80211_attrs {
+
+ NL80211_ATTR_LOCAL_STATE_CHANGE,
+
++ NL80211_ATTR_AP_ISOLATE,
++
+ /* add attributes here, update the policy in nl80211.c */
+
+ __NL80211_ATTR_AFTER_LAST,
+--- a/include/net/cfg80211.h
++++ b/include/net/cfg80211.h
+@@ -512,6 +512,7 @@ struct mpath_info {
+ * @basic_rates: basic rates in IEEE 802.11 format
+ * (or NULL for no change)
+ * @basic_rates_len: number of basic rates
++ * @ap_isolate: do not forward packets between connected stations
+ */
+ struct bss_parameters {
+ int use_cts_prot;
+@@ -519,6 +520,7 @@ struct bss_parameters {
+ int use_short_slot_time;
+ u8 *basic_rates;
+ u8 basic_rates_len;
++ int ap_isolate;
+ };
+
+ struct mesh_config {
+--- a/net/wireless/nl80211.c
++++ b/net/wireless/nl80211.c
+@@ -154,6 +154,7 @@ static const struct nla_policy nl80211_p
+ [NL80211_ATTR_PS_STATE] = { .type = NLA_U32 },
+ [NL80211_ATTR_CQM] = { .type = NLA_NESTED, },
+ [NL80211_ATTR_LOCAL_STATE_CHANGE] = { .type = NLA_FLAG },
++ [NL80211_ATTR_AP_ISOLATE] = { .type = NLA_U8 },
+ };
+
+ /* policy for the attributes */
+@@ -2449,6 +2450,7 @@ static int nl80211_set_bss(struct sk_buf
+ params.use_cts_prot = -1;
+ params.use_short_preamble = -1;
+ params.use_short_slot_time = -1;
++ params.ap_isolate = -1;
+
+ if (info->attrs[NL80211_ATTR_BSS_CTS_PROT])
+ params.use_cts_prot =
+@@ -2465,6 +2467,8 @@ static int nl80211_set_bss(struct sk_buf
+ params.basic_rates_len =
+ nla_len(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]);
+ }
++ if (info->attrs[NL80211_ATTR_AP_ISOLATE])
++ params.ap_isolate = !!nla_get_u8(info->attrs[NL80211_ATTR_AP_ISOLATE]);
+
+ rtnl_lock();
+