diff options
author | John W. Linville <linville@tuxdriver.com> | 2013-02-08 13:16:17 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2013-02-08 13:16:17 -0500 |
commit | f5237f278f30a92401539a54f87ee0c717b6f818 (patch) | |
tree | 209d4fd6fb00e660c76ca8ac5d4caed59dbb9957 /include | |
parent | b285109dde7b873b5dc671ef1b3ae3090f4bc72f (diff) | |
parent | b26f5f09ebdeb85ab152344cc1d6d484a3ce967d (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/bcma/bcma_driver_chipcommon.h | 2 | ||||
-rw-r--r-- | include/linux/bcma/bcma_driver_mips.h | 9 | ||||
-rw-r--r-- | include/linux/ieee80211.h | 5 | ||||
-rw-r--r-- | include/linux/ssb/ssb_driver_mips.h | 5 | ||||
-rw-r--r-- | include/net/bluetooth/a2mp.h | 4 | ||||
-rw-r--r-- | include/net/bluetooth/bluetooth.h | 23 | ||||
-rw-r--r-- | include/net/bluetooth/hci.h | 18 | ||||
-rw-r--r-- | include/net/bluetooth/hci_core.h | 5 | ||||
-rw-r--r-- | include/net/bluetooth/l2cap.h | 1 | ||||
-rw-r--r-- | include/net/cfg80211.h | 42 | ||||
-rw-r--r-- | include/net/mac80211.h | 31 | ||||
-rw-r--r-- | include/uapi/linux/nl80211.h | 51 |
12 files changed, 177 insertions, 19 deletions
diff --git a/include/linux/bcma/bcma_driver_chipcommon.h b/include/linux/bcma/bcma_driver_chipcommon.h index ee332fab825b..1d002b58b60b 100644 --- a/include/linux/bcma/bcma_driver_chipcommon.h +++ b/include/linux/bcma/bcma_driver_chipcommon.h | |||
@@ -27,7 +27,7 @@ | |||
27 | #define BCMA_CC_FLASHT_NONE 0x00000000 /* No flash */ | 27 | #define BCMA_CC_FLASHT_NONE 0x00000000 /* No flash */ |
28 | #define BCMA_CC_FLASHT_STSER 0x00000100 /* ST serial flash */ | 28 | #define BCMA_CC_FLASHT_STSER 0x00000100 /* ST serial flash */ |
29 | #define BCMA_CC_FLASHT_ATSER 0x00000200 /* Atmel serial flash */ | 29 | #define BCMA_CC_FLASHT_ATSER 0x00000200 /* Atmel serial flash */ |
30 | #define BCMA_CC_FLASHT_NFLASH 0x00000200 /* NAND flash */ | 30 | #define BCMA_CC_FLASHT_NAND 0x00000300 /* NAND flash */ |
31 | #define BCMA_CC_FLASHT_PARA 0x00000700 /* Parallel flash */ | 31 | #define BCMA_CC_FLASHT_PARA 0x00000700 /* Parallel flash */ |
32 | #define BCMA_CC_CAP_PLLT 0x00038000 /* PLL Type */ | 32 | #define BCMA_CC_CAP_PLLT 0x00038000 /* PLL Type */ |
33 | #define BCMA_PLLTYPE_NONE 0x00000000 | 33 | #define BCMA_PLLTYPE_NONE 0x00000000 |
diff --git a/include/linux/bcma/bcma_driver_mips.h b/include/linux/bcma/bcma_driver_mips.h index 0d1ea297851a..fb61f3fb4ddb 100644 --- a/include/linux/bcma/bcma_driver_mips.h +++ b/include/linux/bcma/bcma_driver_mips.h | |||
@@ -42,13 +42,18 @@ struct bcma_drv_mips { | |||
42 | #ifdef CONFIG_BCMA_DRIVER_MIPS | 42 | #ifdef CONFIG_BCMA_DRIVER_MIPS |
43 | extern void bcma_core_mips_init(struct bcma_drv_mips *mcore); | 43 | extern void bcma_core_mips_init(struct bcma_drv_mips *mcore); |
44 | extern void bcma_core_mips_early_init(struct bcma_drv_mips *mcore); | 44 | extern void bcma_core_mips_early_init(struct bcma_drv_mips *mcore); |
45 | |||
46 | extern unsigned int bcma_core_irq(struct bcma_device *core); | ||
45 | #else | 47 | #else |
46 | static inline void bcma_core_mips_init(struct bcma_drv_mips *mcore) { } | 48 | static inline void bcma_core_mips_init(struct bcma_drv_mips *mcore) { } |
47 | static inline void bcma_core_mips_early_init(struct bcma_drv_mips *mcore) { } | 49 | static inline void bcma_core_mips_early_init(struct bcma_drv_mips *mcore) { } |
50 | |||
51 | static inline unsigned int bcma_core_irq(struct bcma_device *core) | ||
52 | { | ||
53 | return 0; | ||
54 | } | ||
48 | #endif | 55 | #endif |
49 | 56 | ||
50 | extern u32 bcma_cpu_clock(struct bcma_drv_mips *mcore); | 57 | extern u32 bcma_cpu_clock(struct bcma_drv_mips *mcore); |
51 | 58 | ||
52 | extern unsigned int bcma_core_irq(struct bcma_device *core); | ||
53 | |||
54 | #endif /* LINUX_BCMA_DRIVER_MIPS_H_ */ | 59 | #endif /* LINUX_BCMA_DRIVER_MIPS_H_ */ |
diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h index ccf9ee1dca8c..11c8bc87fdcb 100644 --- a/include/linux/ieee80211.h +++ b/include/linux/ieee80211.h | |||
@@ -1898,7 +1898,10 @@ enum ieee80211_sa_query_action { | |||
1898 | /* AKM suite selectors */ | 1898 | /* AKM suite selectors */ |
1899 | #define WLAN_AKM_SUITE_8021X 0x000FAC01 | 1899 | #define WLAN_AKM_SUITE_8021X 0x000FAC01 |
1900 | #define WLAN_AKM_SUITE_PSK 0x000FAC02 | 1900 | #define WLAN_AKM_SUITE_PSK 0x000FAC02 |
1901 | #define WLAN_AKM_SUITE_SAE 0x000FAC08 | 1901 | #define WLAN_AKM_SUITE_8021X_SHA256 0x000FAC05 |
1902 | #define WLAN_AKM_SUITE_PSK_SHA256 0x000FAC06 | ||
1903 | #define WLAN_AKM_SUITE_TDLS 0x000FAC07 | ||
1904 | #define WLAN_AKM_SUITE_SAE 0x000FAC08 | ||
1902 | #define WLAN_AKM_SUITE_FT_OVER_SAE 0x000FAC09 | 1905 | #define WLAN_AKM_SUITE_FT_OVER_SAE 0x000FAC09 |
1903 | 1906 | ||
1904 | #define WLAN_MAX_KEY_LEN 32 | 1907 | #define WLAN_MAX_KEY_LEN 32 |
diff --git a/include/linux/ssb/ssb_driver_mips.h b/include/linux/ssb/ssb_driver_mips.h index 07a9c7a2e088..afe79d40a99e 100644 --- a/include/linux/ssb/ssb_driver_mips.h +++ b/include/linux/ssb/ssb_driver_mips.h | |||
@@ -45,6 +45,11 @@ void ssb_mipscore_init(struct ssb_mipscore *mcore) | |||
45 | { | 45 | { |
46 | } | 46 | } |
47 | 47 | ||
48 | static inline unsigned int ssb_mips_irq(struct ssb_device *dev) | ||
49 | { | ||
50 | return 0; | ||
51 | } | ||
52 | |||
48 | #endif /* CONFIG_SSB_DRIVER_MIPS */ | 53 | #endif /* CONFIG_SSB_DRIVER_MIPS */ |
49 | 54 | ||
50 | #endif /* LINUX_SSB_MIPSCORE_H_ */ | 55 | #endif /* LINUX_SSB_MIPSCORE_H_ */ |
diff --git a/include/net/bluetooth/a2mp.h b/include/net/bluetooth/a2mp.h index 42f21766c538..487b54c1308f 100644 --- a/include/net/bluetooth/a2mp.h +++ b/include/net/bluetooth/a2mp.h | |||
@@ -23,6 +23,7 @@ enum amp_mgr_state { | |||
23 | READ_LOC_AMP_INFO, | 23 | READ_LOC_AMP_INFO, |
24 | READ_LOC_AMP_ASSOC, | 24 | READ_LOC_AMP_ASSOC, |
25 | READ_LOC_AMP_ASSOC_FINAL, | 25 | READ_LOC_AMP_ASSOC_FINAL, |
26 | WRITE_REMOTE_AMP_ASSOC, | ||
26 | }; | 27 | }; |
27 | 28 | ||
28 | struct amp_mgr { | 29 | struct amp_mgr { |
@@ -33,7 +34,7 @@ struct amp_mgr { | |||
33 | struct kref kref; | 34 | struct kref kref; |
34 | __u8 ident; | 35 | __u8 ident; |
35 | __u8 handle; | 36 | __u8 handle; |
36 | enum amp_mgr_state state; | 37 | unsigned long state; |
37 | unsigned long flags; | 38 | unsigned long flags; |
38 | 39 | ||
39 | struct list_head amp_ctrls; | 40 | struct list_head amp_ctrls; |
@@ -144,5 +145,6 @@ void a2mp_discover_amp(struct l2cap_chan *chan); | |||
144 | void a2mp_send_getinfo_rsp(struct hci_dev *hdev); | 145 | void a2mp_send_getinfo_rsp(struct hci_dev *hdev); |
145 | void a2mp_send_getampassoc_rsp(struct hci_dev *hdev, u8 status); | 146 | void a2mp_send_getampassoc_rsp(struct hci_dev *hdev, u8 status); |
146 | void a2mp_send_create_phy_link_req(struct hci_dev *hdev, u8 status); | 147 | void a2mp_send_create_phy_link_req(struct hci_dev *hdev, u8 status); |
148 | void a2mp_send_create_phy_link_rsp(struct hci_dev *hdev, u8 status); | ||
147 | 149 | ||
148 | #endif /* __A2MP_H */ | 150 | #endif /* __A2MP_H */ |
diff --git a/include/net/bluetooth/bluetooth.h b/include/net/bluetooth/bluetooth.h index 2554b3f5222a..9531beee09b5 100644 --- a/include/net/bluetooth/bluetooth.h +++ b/include/net/bluetooth/bluetooth.h | |||
@@ -166,6 +166,29 @@ typedef struct { | |||
166 | #define BDADDR_LE_PUBLIC 0x01 | 166 | #define BDADDR_LE_PUBLIC 0x01 |
167 | #define BDADDR_LE_RANDOM 0x02 | 167 | #define BDADDR_LE_RANDOM 0x02 |
168 | 168 | ||
169 | static inline bool bdaddr_type_is_valid(__u8 type) | ||
170 | { | ||
171 | switch (type) { | ||
172 | case BDADDR_BREDR: | ||
173 | case BDADDR_LE_PUBLIC: | ||
174 | case BDADDR_LE_RANDOM: | ||
175 | return true; | ||
176 | } | ||
177 | |||
178 | return false; | ||
179 | } | ||
180 | |||
181 | static inline bool bdaddr_type_is_le(__u8 type) | ||
182 | { | ||
183 | switch (type) { | ||
184 | case BDADDR_LE_PUBLIC: | ||
185 | case BDADDR_LE_RANDOM: | ||
186 | return true; | ||
187 | } | ||
188 | |||
189 | return false; | ||
190 | } | ||
191 | |||
169 | #define BDADDR_ANY (&(bdaddr_t) {{0, 0, 0, 0, 0, 0} }) | 192 | #define BDADDR_ANY (&(bdaddr_t) {{0, 0, 0, 0, 0, 0} }) |
170 | #define BDADDR_LOCAL (&(bdaddr_t) {{0, 0, 0, 0xff, 0xff, 0xff} }) | 193 | #define BDADDR_LOCAL (&(bdaddr_t) {{0, 0, 0, 0xff, 0xff, 0xff} }) |
171 | 194 | ||
diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h index 45eee08157bb..7f12c25f1fca 100644 --- a/include/net/bluetooth/hci.h +++ b/include/net/bluetooth/hci.h | |||
@@ -943,6 +943,12 @@ struct hci_rp_le_read_buffer_size { | |||
943 | __u8 le_max_pkt; | 943 | __u8 le_max_pkt; |
944 | } __packed; | 944 | } __packed; |
945 | 945 | ||
946 | #define HCI_OP_LE_READ_LOCAL_FEATURES 0x2003 | ||
947 | struct hci_rp_le_read_local_features { | ||
948 | __u8 status; | ||
949 | __u8 features[8]; | ||
950 | } __packed; | ||
951 | |||
946 | #define HCI_OP_LE_READ_ADV_TX_POWER 0x2007 | 952 | #define HCI_OP_LE_READ_ADV_TX_POWER 0x2007 |
947 | struct hci_rp_le_read_adv_tx_power { | 953 | struct hci_rp_le_read_adv_tx_power { |
948 | __u8 status; | 954 | __u8 status; |
@@ -995,6 +1001,12 @@ struct hci_cp_le_create_conn { | |||
995 | 1001 | ||
996 | #define HCI_OP_LE_CREATE_CONN_CANCEL 0x200e | 1002 | #define HCI_OP_LE_CREATE_CONN_CANCEL 0x200e |
997 | 1003 | ||
1004 | #define HCI_OP_LE_READ_WHITE_LIST_SIZE 0x200f | ||
1005 | struct hci_rp_le_read_white_list_size { | ||
1006 | __u8 status; | ||
1007 | __u8 size; | ||
1008 | } __packed; | ||
1009 | |||
998 | #define HCI_OP_LE_CONN_UPDATE 0x2013 | 1010 | #define HCI_OP_LE_CONN_UPDATE 0x2013 |
999 | struct hci_cp_le_conn_update { | 1011 | struct hci_cp_le_conn_update { |
1000 | __le16 handle; | 1012 | __le16 handle; |
@@ -1033,6 +1045,12 @@ struct hci_rp_le_ltk_neg_reply { | |||
1033 | __le16 handle; | 1045 | __le16 handle; |
1034 | } __packed; | 1046 | } __packed; |
1035 | 1047 | ||
1048 | #define HCI_OP_LE_READ_SUPPORTED_STATES 0x201c | ||
1049 | struct hci_rp_le_read_supported_states { | ||
1050 | __u8 status; | ||
1051 | __u8 le_states[8]; | ||
1052 | } __packed; | ||
1053 | |||
1036 | /* ---- HCI Events ---- */ | 1054 | /* ---- HCI Events ---- */ |
1037 | #define HCI_EV_INQUIRY_COMPLETE 0x01 | 1055 | #define HCI_EV_INQUIRY_COMPLETE 0x01 |
1038 | 1056 | ||
diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h index 014a2eaa5389..90cf75afcb02 100644 --- a/include/net/bluetooth/hci_core.h +++ b/include/net/bluetooth/hci_core.h | |||
@@ -86,6 +86,7 @@ struct bdaddr_list { | |||
86 | struct bt_uuid { | 86 | struct bt_uuid { |
87 | struct list_head list; | 87 | struct list_head list; |
88 | u8 uuid[16]; | 88 | u8 uuid[16]; |
89 | u8 size; | ||
89 | u8 svc_hint; | 90 | u8 svc_hint; |
90 | }; | 91 | }; |
91 | 92 | ||
@@ -152,6 +153,9 @@ struct hci_dev { | |||
152 | __u8 minor_class; | 153 | __u8 minor_class; |
153 | __u8 features[8]; | 154 | __u8 features[8]; |
154 | __u8 host_features[8]; | 155 | __u8 host_features[8]; |
156 | __u8 le_features[8]; | ||
157 | __u8 le_white_list_size; | ||
158 | __u8 le_states[8]; | ||
155 | __u8 commands[64]; | 159 | __u8 commands[64]; |
156 | __u8 hci_ver; | 160 | __u8 hci_ver; |
157 | __u16 hci_rev; | 161 | __u16 hci_rev; |
@@ -216,6 +220,7 @@ struct hci_dev { | |||
216 | unsigned long le_last_tx; | 220 | unsigned long le_last_tx; |
217 | 221 | ||
218 | struct workqueue_struct *workqueue; | 222 | struct workqueue_struct *workqueue; |
223 | struct workqueue_struct *req_workqueue; | ||
219 | 224 | ||
220 | struct work_struct power_on; | 225 | struct work_struct power_on; |
221 | struct delayed_work power_off; | 226 | struct delayed_work power_off; |
diff --git a/include/net/bluetooth/l2cap.h b/include/net/bluetooth/l2cap.h index 7588ef44ebaf..cdd33021f831 100644 --- a/include/net/bluetooth/l2cap.h +++ b/include/net/bluetooth/l2cap.h | |||
@@ -496,7 +496,6 @@ struct l2cap_chan { | |||
496 | __u16 frames_sent; | 496 | __u16 frames_sent; |
497 | __u16 unacked_frames; | 497 | __u16 unacked_frames; |
498 | __u8 retry_count; | 498 | __u8 retry_count; |
499 | __u16 srej_queue_next; | ||
500 | __u16 sdu_len; | 499 | __u16 sdu_len; |
501 | struct sk_buff *sdu; | 500 | struct sk_buff *sdu; |
502 | struct sk_buff *sdu_last_frag; | 501 | struct sk_buff *sdu_last_frag; |
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index 1b9830ebe6c6..f9df20028bbd 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h | |||
@@ -527,6 +527,26 @@ struct cfg80211_beacon_data { | |||
527 | size_t probe_resp_len; | 527 | size_t probe_resp_len; |
528 | }; | 528 | }; |
529 | 529 | ||
530 | struct mac_address { | ||
531 | u8 addr[ETH_ALEN]; | ||
532 | }; | ||
533 | |||
534 | /** | ||
535 | * struct cfg80211_acl_data - Access control list data | ||
536 | * | ||
537 | * @acl_policy: ACL policy to be applied on the station's | ||
538 | entry specified by mac_addr | ||
539 | * @n_acl_entries: Number of MAC address entries passed | ||
540 | * @mac_addrs: List of MAC addresses of stations to be used for ACL | ||
541 | */ | ||
542 | struct cfg80211_acl_data { | ||
543 | enum nl80211_acl_policy acl_policy; | ||
544 | int n_acl_entries; | ||
545 | |||
546 | /* Keep it last */ | ||
547 | struct mac_address mac_addrs[]; | ||
548 | }; | ||
549 | |||
530 | /** | 550 | /** |
531 | * struct cfg80211_ap_settings - AP configuration | 551 | * struct cfg80211_ap_settings - AP configuration |
532 | * | 552 | * |
@@ -546,6 +566,8 @@ struct cfg80211_beacon_data { | |||
546 | * @inactivity_timeout: time in seconds to determine station's inactivity. | 566 | * @inactivity_timeout: time in seconds to determine station's inactivity. |
547 | * @p2p_ctwindow: P2P CT Window | 567 | * @p2p_ctwindow: P2P CT Window |
548 | * @p2p_opp_ps: P2P opportunistic PS | 568 | * @p2p_opp_ps: P2P opportunistic PS |
569 | * @acl: ACL configuration used by the drivers which has support for | ||
570 | * MAC address based access control | ||
549 | */ | 571 | */ |
550 | struct cfg80211_ap_settings { | 572 | struct cfg80211_ap_settings { |
551 | struct cfg80211_chan_def chandef; | 573 | struct cfg80211_chan_def chandef; |
@@ -562,6 +584,7 @@ struct cfg80211_ap_settings { | |||
562 | int inactivity_timeout; | 584 | int inactivity_timeout; |
563 | u8 p2p_ctwindow; | 585 | u8 p2p_ctwindow; |
564 | bool p2p_opp_ps; | 586 | bool p2p_opp_ps; |
587 | const struct cfg80211_acl_data *acl; | ||
565 | }; | 588 | }; |
566 | 589 | ||
567 | /** | 590 | /** |
@@ -1796,6 +1819,13 @@ struct cfg80211_gtk_rekey_data { | |||
1796 | * | 1819 | * |
1797 | * @start_p2p_device: Start the given P2P device. | 1820 | * @start_p2p_device: Start the given P2P device. |
1798 | * @stop_p2p_device: Stop the given P2P device. | 1821 | * @stop_p2p_device: Stop the given P2P device. |
1822 | * | ||
1823 | * @set_mac_acl: Sets MAC address control list in AP and P2P GO mode. | ||
1824 | * Parameters include ACL policy, an array of MAC address of stations | ||
1825 | * and the number of MAC addresses. If there is already a list in driver | ||
1826 | * this new list replaces the existing one. Driver has to clear its ACL | ||
1827 | * when number of MAC addresses entries is passed as 0. Drivers which | ||
1828 | * advertise the support for MAC based ACL have to implement this callback. | ||
1799 | */ | 1829 | */ |
1800 | struct cfg80211_ops { | 1830 | struct cfg80211_ops { |
1801 | int (*suspend)(struct wiphy *wiphy, struct cfg80211_wowlan *wow); | 1831 | int (*suspend)(struct wiphy *wiphy, struct cfg80211_wowlan *wow); |
@@ -2016,6 +2046,9 @@ struct cfg80211_ops { | |||
2016 | struct wireless_dev *wdev); | 2046 | struct wireless_dev *wdev); |
2017 | void (*stop_p2p_device)(struct wiphy *wiphy, | 2047 | void (*stop_p2p_device)(struct wiphy *wiphy, |
2018 | struct wireless_dev *wdev); | 2048 | struct wireless_dev *wdev); |
2049 | |||
2050 | int (*set_mac_acl)(struct wiphy *wiphy, struct net_device *dev, | ||
2051 | const struct cfg80211_acl_data *params); | ||
2019 | }; | 2052 | }; |
2020 | 2053 | ||
2021 | /* | 2054 | /* |
@@ -2181,10 +2214,6 @@ struct ieee80211_iface_combination { | |||
2181 | u8 radar_detect_widths; | 2214 | u8 radar_detect_widths; |
2182 | }; | 2215 | }; |
2183 | 2216 | ||
2184 | struct mac_address { | ||
2185 | u8 addr[ETH_ALEN]; | ||
2186 | }; | ||
2187 | |||
2188 | struct ieee80211_txrx_stypes { | 2217 | struct ieee80211_txrx_stypes { |
2189 | u16 tx, rx; | 2218 | u16 tx, rx; |
2190 | }; | 2219 | }; |
@@ -2325,6 +2354,9 @@ struct wiphy_wowlan_support { | |||
2325 | * @ap_sme_capa: AP SME capabilities, flags from &enum nl80211_ap_sme_features. | 2354 | * @ap_sme_capa: AP SME capabilities, flags from &enum nl80211_ap_sme_features. |
2326 | * @ht_capa_mod_mask: Specify what ht_cap values can be over-ridden. | 2355 | * @ht_capa_mod_mask: Specify what ht_cap values can be over-ridden. |
2327 | * If null, then none can be over-ridden. | 2356 | * If null, then none can be over-ridden. |
2357 | * | ||
2358 | * @max_acl_mac_addrs: Maximum number of MAC addresses that the device | ||
2359 | * supports for ACL. | ||
2328 | */ | 2360 | */ |
2329 | struct wiphy { | 2361 | struct wiphy { |
2330 | /* assign these fields before you register the wiphy */ | 2362 | /* assign these fields before you register the wiphy */ |
@@ -2346,6 +2378,8 @@ struct wiphy { | |||
2346 | /* Supported interface modes, OR together BIT(NL80211_IFTYPE_...) */ | 2378 | /* Supported interface modes, OR together BIT(NL80211_IFTYPE_...) */ |
2347 | u16 interface_modes; | 2379 | u16 interface_modes; |
2348 | 2380 | ||
2381 | u16 max_acl_mac_addrs; | ||
2382 | |||
2349 | u32 flags, features; | 2383 | u32 flags, features; |
2350 | 2384 | ||
2351 | u32 ap_sme_capa; | 2385 | u32 ap_sme_capa; |
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index 3037f49e51c8..5c98d654fc75 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -297,11 +297,9 @@ enum ieee80211_rssi_event { | |||
297 | * may filter ARP queries targeted for other addresses than listed here. | 297 | * may filter ARP queries targeted for other addresses than listed here. |
298 | * The driver must allow ARP queries targeted for all address listed here | 298 | * The driver must allow ARP queries targeted for all address listed here |
299 | * to pass through. An empty list implies no ARP queries need to pass. | 299 | * to pass through. An empty list implies no ARP queries need to pass. |
300 | * @arp_addr_cnt: Number of addresses currently on the list. | 300 | * @arp_addr_cnt: Number of addresses currently on the list. Note that this |
301 | * @arp_filter_enabled: Enable ARP filtering - if enabled, the hardware may | 301 | * may be larger than %IEEE80211_BSS_ARP_ADDR_LIST_LEN (the arp_addr_list |
302 | * filter ARP queries based on the @arp_addr_list, if disabled, the | 302 | * array size), it's up to the driver what to do in that case. |
303 | * hardware must not perform any ARP filtering. Note, that the filter will | ||
304 | * be enabled also in promiscuous mode. | ||
305 | * @qos: This is a QoS-enabled BSS. | 303 | * @qos: This is a QoS-enabled BSS. |
306 | * @idle: This interface is idle. There's also a global idle flag in the | 304 | * @idle: This interface is idle. There's also a global idle flag in the |
307 | * hardware config which may be more appropriate depending on what | 305 | * hardware config which may be more appropriate depending on what |
@@ -338,8 +336,7 @@ struct ieee80211_bss_conf { | |||
338 | u32 cqm_rssi_hyst; | 336 | u32 cqm_rssi_hyst; |
339 | struct cfg80211_chan_def chandef; | 337 | struct cfg80211_chan_def chandef; |
340 | __be32 arp_addr_list[IEEE80211_BSS_ARP_ADDR_LIST_LEN]; | 338 | __be32 arp_addr_list[IEEE80211_BSS_ARP_ADDR_LIST_LEN]; |
341 | u8 arp_addr_cnt; | 339 | int arp_addr_cnt; |
342 | bool arp_filter_enabled; | ||
343 | bool qos; | 340 | bool qos; |
344 | bool idle; | 341 | bool idle; |
345 | bool ps; | 342 | bool ps; |
@@ -1630,6 +1627,10 @@ void ieee80211_free_txskb(struct ieee80211_hw *hw, struct sk_buff *skb); | |||
1630 | * rekeying), it will not include a valid phase 1 key. The valid phase 1 key is | 1627 | * rekeying), it will not include a valid phase 1 key. The valid phase 1 key is |
1631 | * provided by update_tkip_key only. The trigger that makes mac80211 call this | 1628 | * provided by update_tkip_key only. The trigger that makes mac80211 call this |
1632 | * handler is software decryption with wrap around of iv16. | 1629 | * handler is software decryption with wrap around of iv16. |
1630 | * | ||
1631 | * The set_default_unicast_key() call updates the default WEP key index | ||
1632 | * configured to the hardware for WEP encryption type. This is required | ||
1633 | * for devices that support offload of data packets (e.g. ARP responses). | ||
1633 | */ | 1634 | */ |
1634 | 1635 | ||
1635 | /** | 1636 | /** |
@@ -2208,6 +2209,10 @@ enum ieee80211_rate_control_changed { | |||
2208 | * After rekeying was done it should (for example during resume) notify | 2209 | * After rekeying was done it should (for example during resume) notify |
2209 | * userspace of the new replay counter using ieee80211_gtk_rekey_notify(). | 2210 | * userspace of the new replay counter using ieee80211_gtk_rekey_notify(). |
2210 | * | 2211 | * |
2212 | * @set_default_unicast_key: Set the default (unicast) key index, useful for | ||
2213 | * WEP when the device sends data packets autonomously, e.g. for ARP | ||
2214 | * offloading. The index can be 0-3, or -1 for unsetting it. | ||
2215 | * | ||
2211 | * @hw_scan: Ask the hardware to service the scan request, no need to start | 2216 | * @hw_scan: Ask the hardware to service the scan request, no need to start |
2212 | * the scan state machine in stack. The scan must honour the channel | 2217 | * the scan state machine in stack. The scan must honour the channel |
2213 | * configuration done by the regulatory agent in the wiphy's | 2218 | * configuration done by the regulatory agent in the wiphy's |
@@ -2492,6 +2497,9 @@ enum ieee80211_rate_control_changed { | |||
2492 | * driver's resume function returned 1, as this is just like an "inline" | 2497 | * driver's resume function returned 1, as this is just like an "inline" |
2493 | * hardware restart. This callback may sleep. | 2498 | * hardware restart. This callback may sleep. |
2494 | * | 2499 | * |
2500 | * @ipv6_addr_change: IPv6 address assignment on the given interface changed. | ||
2501 | * Currently, this is only called for managed or P2P client interfaces. | ||
2502 | * This callback is optional; it must not sleep. | ||
2495 | */ | 2503 | */ |
2496 | struct ieee80211_ops { | 2504 | struct ieee80211_ops { |
2497 | void (*tx)(struct ieee80211_hw *hw, | 2505 | void (*tx)(struct ieee80211_hw *hw, |
@@ -2539,6 +2547,8 @@ struct ieee80211_ops { | |||
2539 | void (*set_rekey_data)(struct ieee80211_hw *hw, | 2547 | void (*set_rekey_data)(struct ieee80211_hw *hw, |
2540 | struct ieee80211_vif *vif, | 2548 | struct ieee80211_vif *vif, |
2541 | struct cfg80211_gtk_rekey_data *data); | 2549 | struct cfg80211_gtk_rekey_data *data); |
2550 | void (*set_default_unicast_key)(struct ieee80211_hw *hw, | ||
2551 | struct ieee80211_vif *vif, int idx); | ||
2542 | int (*hw_scan)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, | 2552 | int (*hw_scan)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, |
2543 | struct cfg80211_scan_request *req); | 2553 | struct cfg80211_scan_request *req); |
2544 | void (*cancel_hw_scan)(struct ieee80211_hw *hw, | 2554 | void (*cancel_hw_scan)(struct ieee80211_hw *hw, |
@@ -2623,6 +2633,7 @@ struct ieee80211_ops { | |||
2623 | int (*set_bitrate_mask)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, | 2633 | int (*set_bitrate_mask)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, |
2624 | const struct cfg80211_bitrate_mask *mask); | 2634 | const struct cfg80211_bitrate_mask *mask); |
2625 | void (*rssi_callback)(struct ieee80211_hw *hw, | 2635 | void (*rssi_callback)(struct ieee80211_hw *hw, |
2636 | struct ieee80211_vif *vif, | ||
2626 | enum ieee80211_rssi_event rssi_event); | 2637 | enum ieee80211_rssi_event rssi_event); |
2627 | 2638 | ||
2628 | void (*allow_buffered_frames)(struct ieee80211_hw *hw, | 2639 | void (*allow_buffered_frames)(struct ieee80211_hw *hw, |
@@ -2665,6 +2676,12 @@ struct ieee80211_ops { | |||
2665 | struct ieee80211_chanctx_conf *ctx); | 2676 | struct ieee80211_chanctx_conf *ctx); |
2666 | 2677 | ||
2667 | void (*restart_complete)(struct ieee80211_hw *hw); | 2678 | void (*restart_complete)(struct ieee80211_hw *hw); |
2679 | |||
2680 | #if IS_ENABLED(CONFIG_IPV6) | ||
2681 | void (*ipv6_addr_change)(struct ieee80211_hw *hw, | ||
2682 | struct ieee80211_vif *vif, | ||
2683 | struct inet6_dev *idev); | ||
2684 | #endif | ||
2668 | }; | 2685 | }; |
2669 | 2686 | ||
2670 | /** | 2687 | /** |
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h index e6eeb4ba5dc5..5b7dbc1ea966 100644 --- a/include/uapi/linux/nl80211.h +++ b/include/uapi/linux/nl80211.h | |||
@@ -170,7 +170,8 @@ | |||
170 | * %NL80211_ATTR_HIDDEN_SSID, %NL80211_ATTR_CIPHERS_PAIRWISE, | 170 | * %NL80211_ATTR_HIDDEN_SSID, %NL80211_ATTR_CIPHERS_PAIRWISE, |
171 | * %NL80211_ATTR_CIPHER_GROUP, %NL80211_ATTR_WPA_VERSIONS, | 171 | * %NL80211_ATTR_CIPHER_GROUP, %NL80211_ATTR_WPA_VERSIONS, |
172 | * %NL80211_ATTR_AKM_SUITES, %NL80211_ATTR_PRIVACY, | 172 | * %NL80211_ATTR_AKM_SUITES, %NL80211_ATTR_PRIVACY, |
173 | * %NL80211_ATTR_AUTH_TYPE and %NL80211_ATTR_INACTIVITY_TIMEOUT. | 173 | * %NL80211_ATTR_AUTH_TYPE, %NL80211_ATTR_INACTIVITY_TIMEOUT, |
174 | * %NL80211_ATTR_ACL_POLICY and %NL80211_ATTR_MAC_ADDRS. | ||
174 | * The channel to use can be set on the interface or be given using the | 175 | * The channel to use can be set on the interface or be given using the |
175 | * %NL80211_ATTR_WIPHY_FREQ and the attributes determining channel width. | 176 | * %NL80211_ATTR_WIPHY_FREQ and the attributes determining channel width. |
176 | * @NL80211_CMD_NEW_BEACON: old alias for %NL80211_CMD_START_AP | 177 | * @NL80211_CMD_NEW_BEACON: old alias for %NL80211_CMD_START_AP |
@@ -586,6 +587,16 @@ | |||
586 | * @NL80211_CMD_SET_MCAST_RATE: Change the rate used to send multicast frames | 587 | * @NL80211_CMD_SET_MCAST_RATE: Change the rate used to send multicast frames |
587 | * for IBSS or MESH vif. | 588 | * for IBSS or MESH vif. |
588 | * | 589 | * |
590 | * @NL80211_CMD_SET_MAC_ACL: sets ACL for MAC address based access control. | ||
591 | * This is to be used with the drivers advertising the support of MAC | ||
592 | * address based access control. List of MAC addresses is passed in | ||
593 | * %NL80211_ATTR_MAC_ADDRS and ACL policy is passed in | ||
594 | * %NL80211_ATTR_ACL_POLICY. Driver will enable ACL with this list, if it | ||
595 | * is not already done. The new list will replace any existing list. Driver | ||
596 | * will clear its ACL when the list of MAC addresses passed is empty. This | ||
597 | * command is used in AP/P2P GO mode. Driver has to make sure to clear its | ||
598 | * ACL list during %NL80211_CMD_STOP_AP. | ||
599 | * | ||
589 | * @NL80211_CMD_MAX: highest used command number | 600 | * @NL80211_CMD_MAX: highest used command number |
590 | * @__NL80211_CMD_AFTER_LAST: internal use | 601 | * @__NL80211_CMD_AFTER_LAST: internal use |
591 | */ | 602 | */ |
@@ -736,6 +747,8 @@ enum nl80211_commands { | |||
736 | 747 | ||
737 | NL80211_CMD_SET_MCAST_RATE, | 748 | NL80211_CMD_SET_MCAST_RATE, |
738 | 749 | ||
750 | NL80211_CMD_SET_MAC_ACL, | ||
751 | |||
739 | /* add new commands above here */ | 752 | /* add new commands above here */ |
740 | 753 | ||
741 | /* used to define NL80211_CMD_MAX below */ | 754 | /* used to define NL80211_CMD_MAX below */ |
@@ -1313,6 +1326,16 @@ enum nl80211_commands { | |||
1313 | * @NL80211_ATTR_LOCAL_MESH_POWER_MODE: local mesh STA link-specific power mode | 1326 | * @NL80211_ATTR_LOCAL_MESH_POWER_MODE: local mesh STA link-specific power mode |
1314 | * defined in &enum nl80211_mesh_power_mode. | 1327 | * defined in &enum nl80211_mesh_power_mode. |
1315 | * | 1328 | * |
1329 | * @NL80211_ATTR_ACL_POLICY: ACL policy, see &enum nl80211_acl_policy, | ||
1330 | * carried in a u32 attribute | ||
1331 | * | ||
1332 | * @NL80211_ATTR_MAC_ADDRS: Array of nested MAC addresses, used for | ||
1333 | * MAC ACL. | ||
1334 | * | ||
1335 | * @NL80211_ATTR_MAC_ACL_MAX: u32 attribute to advertise the maximum | ||
1336 | * number of MAC addresses that a device can support for MAC | ||
1337 | * ACL. | ||
1338 | * | ||
1316 | * @NL80211_ATTR_MAX: highest attribute number currently defined | 1339 | * @NL80211_ATTR_MAX: highest attribute number currently defined |
1317 | * @__NL80211_ATTR_AFTER_LAST: internal use | 1340 | * @__NL80211_ATTR_AFTER_LAST: internal use |
1318 | */ | 1341 | */ |
@@ -1585,6 +1608,12 @@ enum nl80211_attrs { | |||
1585 | 1608 | ||
1586 | NL80211_ATTR_LOCAL_MESH_POWER_MODE, | 1609 | NL80211_ATTR_LOCAL_MESH_POWER_MODE, |
1587 | 1610 | ||
1611 | NL80211_ATTR_ACL_POLICY, | ||
1612 | |||
1613 | NL80211_ATTR_MAC_ADDRS, | ||
1614 | |||
1615 | NL80211_ATTR_MAC_ACL_MAX, | ||
1616 | |||
1588 | /* add attributes here, update the policy in nl80211.c */ | 1617 | /* add attributes here, update the policy in nl80211.c */ |
1589 | 1618 | ||
1590 | __NL80211_ATTR_AFTER_LAST, | 1619 | __NL80211_ATTR_AFTER_LAST, |
@@ -3248,7 +3277,7 @@ enum nl80211_probe_resp_offload_support_attr { | |||
3248 | * enum nl80211_connect_failed_reason - connection request failed reasons | 3277 | * enum nl80211_connect_failed_reason - connection request failed reasons |
3249 | * @NL80211_CONN_FAIL_MAX_CLIENTS: Maximum number of clients that can be | 3278 | * @NL80211_CONN_FAIL_MAX_CLIENTS: Maximum number of clients that can be |
3250 | * handled by the AP is reached. | 3279 | * handled by the AP is reached. |
3251 | * @NL80211_CONN_FAIL_BLOCKED_CLIENT: Client's MAC is in the AP's blocklist. | 3280 | * @NL80211_CONN_FAIL_BLOCKED_CLIENT: Connection request is rejected due to ACL. |
3252 | */ | 3281 | */ |
3253 | enum nl80211_connect_failed_reason { | 3282 | enum nl80211_connect_failed_reason { |
3254 | NL80211_CONN_FAIL_MAX_CLIENTS, | 3283 | NL80211_CONN_FAIL_MAX_CLIENTS, |
@@ -3276,4 +3305,22 @@ enum nl80211_scan_flags { | |||
3276 | NL80211_SCAN_FLAG_AP = 1<<2, | 3305 | NL80211_SCAN_FLAG_AP = 1<<2, |
3277 | }; | 3306 | }; |
3278 | 3307 | ||
3308 | /** | ||
3309 | * enum nl80211_acl_policy - access control policy | ||
3310 | * | ||
3311 | * Access control policy is applied on a MAC list set by | ||
3312 | * %NL80211_CMD_START_AP and %NL80211_CMD_SET_MAC_ACL, to | ||
3313 | * be used with %NL80211_ATTR_ACL_POLICY. | ||
3314 | * | ||
3315 | * @NL80211_ACL_POLICY_ACCEPT_UNLESS_LISTED: Deny stations which are | ||
3316 | * listed in ACL, i.e. allow all the stations which are not listed | ||
3317 | * in ACL to authenticate. | ||
3318 | * @NL80211_ACL_POLICY_DENY_UNLESS_LISTED: Allow the stations which are listed | ||
3319 | * in ACL, i.e. deny all the stations which are not listed in ACL. | ||
3320 | */ | ||
3321 | enum nl80211_acl_policy { | ||
3322 | NL80211_ACL_POLICY_ACCEPT_UNLESS_LISTED, | ||
3323 | NL80211_ACL_POLICY_DENY_UNLESS_LISTED, | ||
3324 | }; | ||
3325 | |||
3279 | #endif /* __LINUX_NL80211_H */ | 3326 | #endif /* __LINUX_NL80211_H */ |