diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/ieee80211.h | 1 | ||||
| -rw-r--r-- | include/net/bluetooth/hci.h | 21 | ||||
| -rw-r--r-- | include/net/bluetooth/hci_core.h | 11 | ||||
| -rw-r--r-- | include/net/bluetooth/mgmt.h | 15 | ||||
| -rw-r--r-- | include/net/bluetooth/rfcomm.h | 6 | ||||
| -rw-r--r-- | include/net/mac80211.h | 46 |
6 files changed, 97 insertions, 3 deletions
diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h index f194ccb8539c..6bff13f74050 100644 --- a/include/linux/ieee80211.h +++ b/include/linux/ieee80211.h | |||
| @@ -1711,6 +1711,7 @@ enum ieee80211_eid { | |||
| 1711 | WLAN_EID_RRM_ENABLED_CAPABILITIES = 70, | 1711 | WLAN_EID_RRM_ENABLED_CAPABILITIES = 70, |
| 1712 | WLAN_EID_MULTIPLE_BSSID = 71, | 1712 | WLAN_EID_MULTIPLE_BSSID = 71, |
| 1713 | WLAN_EID_BSS_COEX_2040 = 72, | 1713 | WLAN_EID_BSS_COEX_2040 = 72, |
| 1714 | WLAN_EID_BSS_INTOLERANT_CHL_REPORT = 73, | ||
| 1714 | WLAN_EID_OVERLAP_BSS_SCAN_PARAM = 74, | 1715 | WLAN_EID_OVERLAP_BSS_SCAN_PARAM = 74, |
| 1715 | WLAN_EID_RIC_DESCRIPTOR = 75, | 1716 | WLAN_EID_RIC_DESCRIPTOR = 75, |
| 1716 | WLAN_EID_MMIE = 76, | 1717 | WLAN_EID_MMIE = 76, |
diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h index 4261a67682c0..16587dcd6a91 100644 --- a/include/net/bluetooth/hci.h +++ b/include/net/bluetooth/hci.h | |||
| @@ -1054,6 +1054,17 @@ struct hci_cp_write_page_scan_activity { | |||
| 1054 | __le16 window; | 1054 | __le16 window; |
| 1055 | } __packed; | 1055 | } __packed; |
| 1056 | 1056 | ||
| 1057 | #define HCI_OP_READ_TX_POWER 0x0c2d | ||
| 1058 | struct hci_cp_read_tx_power { | ||
| 1059 | __le16 handle; | ||
| 1060 | __u8 type; | ||
| 1061 | } __packed; | ||
| 1062 | struct hci_rp_read_tx_power { | ||
| 1063 | __u8 status; | ||
| 1064 | __le16 handle; | ||
| 1065 | __s8 tx_power; | ||
| 1066 | } __packed; | ||
| 1067 | |||
| 1057 | #define HCI_OP_READ_PAGE_SCAN_TYPE 0x0c46 | 1068 | #define HCI_OP_READ_PAGE_SCAN_TYPE 0x0c46 |
| 1058 | struct hci_rp_read_page_scan_type { | 1069 | struct hci_rp_read_page_scan_type { |
| 1059 | __u8 status; | 1070 | __u8 status; |
| @@ -1064,6 +1075,16 @@ struct hci_rp_read_page_scan_type { | |||
| 1064 | #define PAGE_SCAN_TYPE_STANDARD 0x00 | 1075 | #define PAGE_SCAN_TYPE_STANDARD 0x00 |
| 1065 | #define PAGE_SCAN_TYPE_INTERLACED 0x01 | 1076 | #define PAGE_SCAN_TYPE_INTERLACED 0x01 |
| 1066 | 1077 | ||
| 1078 | #define HCI_OP_READ_RSSI 0x1405 | ||
| 1079 | struct hci_cp_read_rssi { | ||
| 1080 | __le16 handle; | ||
| 1081 | } __packed; | ||
| 1082 | struct hci_rp_read_rssi { | ||
| 1083 | __u8 status; | ||
| 1084 | __le16 handle; | ||
| 1085 | __s8 rssi; | ||
| 1086 | } __packed; | ||
| 1087 | |||
| 1067 | #define HCI_OP_READ_LOCAL_AMP_INFO 0x1409 | 1088 | #define HCI_OP_READ_LOCAL_AMP_INFO 0x1409 |
| 1068 | struct hci_rp_read_local_amp_info { | 1089 | struct hci_rp_read_local_amp_info { |
| 1069 | __u8 status; | 1090 | __u8 status; |
diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h index d73f41855ada..b386bf17e6c2 100644 --- a/include/net/bluetooth/hci_core.h +++ b/include/net/bluetooth/hci_core.h | |||
| @@ -145,6 +145,10 @@ struct oob_data { | |||
| 145 | /* Default LE RPA expiry time, 15 minutes */ | 145 | /* Default LE RPA expiry time, 15 minutes */ |
| 146 | #define HCI_DEFAULT_RPA_TIMEOUT (15 * 60) | 146 | #define HCI_DEFAULT_RPA_TIMEOUT (15 * 60) |
| 147 | 147 | ||
| 148 | /* Default min/max age of connection information (1s/3s) */ | ||
| 149 | #define DEFAULT_CONN_INFO_MIN_AGE 1000 | ||
| 150 | #define DEFAULT_CONN_INFO_MAX_AGE 3000 | ||
| 151 | |||
| 148 | struct amp_assoc { | 152 | struct amp_assoc { |
| 149 | __u16 len; | 153 | __u16 len; |
| 150 | __u16 offset; | 154 | __u16 offset; |
| @@ -200,6 +204,8 @@ struct hci_dev { | |||
| 200 | __u16 le_conn_min_interval; | 204 | __u16 le_conn_min_interval; |
| 201 | __u16 le_conn_max_interval; | 205 | __u16 le_conn_max_interval; |
| 202 | __u16 discov_interleaved_timeout; | 206 | __u16 discov_interleaved_timeout; |
| 207 | __u16 conn_info_min_age; | ||
| 208 | __u16 conn_info_max_age; | ||
| 203 | __u8 ssp_debug_mode; | 209 | __u8 ssp_debug_mode; |
| 204 | 210 | ||
| 205 | __u16 devid_source; | 211 | __u16 devid_source; |
| @@ -374,8 +380,13 @@ struct hci_conn { | |||
| 374 | __u16 setting; | 380 | __u16 setting; |
| 375 | __u16 le_conn_min_interval; | 381 | __u16 le_conn_min_interval; |
| 376 | __u16 le_conn_max_interval; | 382 | __u16 le_conn_max_interval; |
| 383 | __s8 rssi; | ||
| 384 | __s8 tx_power; | ||
| 385 | __s8 max_tx_power; | ||
| 377 | unsigned long flags; | 386 | unsigned long flags; |
| 378 | 387 | ||
| 388 | unsigned long conn_info_timestamp; | ||
| 389 | |||
| 379 | __u8 remote_cap; | 390 | __u8 remote_cap; |
| 380 | __u8 remote_auth; | 391 | __u8 remote_auth; |
| 381 | __u8 remote_id; | 392 | __u8 remote_id; |
diff --git a/include/net/bluetooth/mgmt.h b/include/net/bluetooth/mgmt.h index d4b571c2f9fd..bcffc9ae0c89 100644 --- a/include/net/bluetooth/mgmt.h +++ b/include/net/bluetooth/mgmt.h | |||
| @@ -181,6 +181,9 @@ struct mgmt_cp_load_link_keys { | |||
| 181 | } __packed; | 181 | } __packed; |
| 182 | #define MGMT_LOAD_LINK_KEYS_SIZE 3 | 182 | #define MGMT_LOAD_LINK_KEYS_SIZE 3 |
| 183 | 183 | ||
| 184 | #define MGMT_LTK_UNAUTHENTICATED 0x00 | ||
| 185 | #define MGMT_LTK_AUTHENTICATED 0x01 | ||
| 186 | |||
| 184 | struct mgmt_ltk_info { | 187 | struct mgmt_ltk_info { |
| 185 | struct mgmt_addr_info addr; | 188 | struct mgmt_addr_info addr; |
| 186 | __u8 type; | 189 | __u8 type; |
| @@ -409,6 +412,18 @@ struct mgmt_cp_load_irks { | |||
| 409 | } __packed; | 412 | } __packed; |
| 410 | #define MGMT_LOAD_IRKS_SIZE 2 | 413 | #define MGMT_LOAD_IRKS_SIZE 2 |
| 411 | 414 | ||
| 415 | #define MGMT_OP_GET_CONN_INFO 0x0031 | ||
| 416 | struct mgmt_cp_get_conn_info { | ||
| 417 | struct mgmt_addr_info addr; | ||
| 418 | } __packed; | ||
| 419 | #define MGMT_GET_CONN_INFO_SIZE MGMT_ADDR_INFO_SIZE | ||
| 420 | struct mgmt_rp_get_conn_info { | ||
| 421 | struct mgmt_addr_info addr; | ||
| 422 | __s8 rssi; | ||
| 423 | __s8 tx_power; | ||
| 424 | __s8 max_tx_power; | ||
| 425 | } __packed; | ||
| 426 | |||
| 412 | #define MGMT_EV_CMD_COMPLETE 0x0001 | 427 | #define MGMT_EV_CMD_COMPLETE 0x0001 |
| 413 | struct mgmt_ev_cmd_complete { | 428 | struct mgmt_ev_cmd_complete { |
| 414 | __le16 opcode; | 429 | __le16 opcode; |
diff --git a/include/net/bluetooth/rfcomm.h b/include/net/bluetooth/rfcomm.h index 2611cc389d7d..578b83127af1 100644 --- a/include/net/bluetooth/rfcomm.h +++ b/include/net/bluetooth/rfcomm.h | |||
| @@ -173,7 +173,7 @@ struct rfcomm_dlc { | |||
| 173 | struct sk_buff_head tx_queue; | 173 | struct sk_buff_head tx_queue; |
| 174 | struct timer_list timer; | 174 | struct timer_list timer; |
| 175 | 175 | ||
| 176 | spinlock_t lock; | 176 | struct mutex lock; |
| 177 | unsigned long state; | 177 | unsigned long state; |
| 178 | unsigned long flags; | 178 | unsigned long flags; |
| 179 | atomic_t refcnt; | 179 | atomic_t refcnt; |
| @@ -244,8 +244,8 @@ int rfcomm_dlc_get_modem_status(struct rfcomm_dlc *d, u8 *v24_sig); | |||
| 244 | void rfcomm_dlc_accept(struct rfcomm_dlc *d); | 244 | void rfcomm_dlc_accept(struct rfcomm_dlc *d); |
| 245 | struct rfcomm_dlc *rfcomm_dlc_exists(bdaddr_t *src, bdaddr_t *dst, u8 channel); | 245 | struct rfcomm_dlc *rfcomm_dlc_exists(bdaddr_t *src, bdaddr_t *dst, u8 channel); |
| 246 | 246 | ||
| 247 | #define rfcomm_dlc_lock(d) spin_lock(&d->lock) | 247 | #define rfcomm_dlc_lock(d) mutex_lock(&d->lock) |
| 248 | #define rfcomm_dlc_unlock(d) spin_unlock(&d->lock) | 248 | #define rfcomm_dlc_unlock(d) mutex_unlock(&d->lock) |
| 249 | 249 | ||
| 250 | static inline void rfcomm_dlc_hold(struct rfcomm_dlc *d) | 250 | static inline void rfcomm_dlc_hold(struct rfcomm_dlc *d) |
| 251 | { | 251 | { |
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index 2c78997bc48d..421b6ecb4b2c 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
| @@ -189,6 +189,43 @@ struct ieee80211_chanctx_conf { | |||
| 189 | }; | 189 | }; |
| 190 | 190 | ||
| 191 | /** | 191 | /** |
| 192 | * enum ieee80211_chanctx_switch_mode - channel context switch mode | ||
| 193 | * @CHANCTX_SWMODE_REASSIGN_VIF: Both old and new contexts already | ||
| 194 | * exist (and will continue to exist), but the virtual interface | ||
| 195 | * needs to be switched from one to the other. | ||
| 196 | * @CHANCTX_SWMODE_SWAP_CONTEXTS: The old context exists but will stop | ||
| 197 | * to exist with this call, the new context doesn't exist but | ||
| 198 | * will be active after this call, the virtual interface switches | ||
| 199 | * from the old to the new (note that the driver may of course | ||
| 200 | * implement this as an on-the-fly chandef switch of the existing | ||
| 201 | * hardware context, but the mac80211 pointer for the old context | ||
| 202 | * will cease to exist and only the new one will later be used | ||
| 203 | * for changes/removal.) | ||
| 204 | */ | ||
| 205 | enum ieee80211_chanctx_switch_mode { | ||
| 206 | CHANCTX_SWMODE_REASSIGN_VIF, | ||
| 207 | CHANCTX_SWMODE_SWAP_CONTEXTS, | ||
| 208 | }; | ||
| 209 | |||
| 210 | /** | ||
| 211 | * struct ieee80211_vif_chanctx_switch - vif chanctx switch information | ||
| 212 | * | ||
| 213 | * This is structure is used to pass information about a vif that | ||
| 214 | * needs to switch from one chanctx to another. The | ||
| 215 | * &ieee80211_chanctx_switch_mode defines how the switch should be | ||
| 216 | * done. | ||
| 217 | * | ||
| 218 | * @vif: the vif that should be switched from old_ctx to new_ctx | ||
| 219 | * @old_ctx: the old context to which the vif was assigned | ||
| 220 | * @new_ctx: the new context to which the vif must be assigned | ||
| 221 | */ | ||
| 222 | struct ieee80211_vif_chanctx_switch { | ||
| 223 | struct ieee80211_vif *vif; | ||
| 224 | struct ieee80211_chanctx_conf *old_ctx; | ||
| 225 | struct ieee80211_chanctx_conf *new_ctx; | ||
| 226 | }; | ||
| 227 | |||
| 228 | /** | ||
| 192 | * enum ieee80211_bss_change - BSS change notification flags | 229 | * enum ieee80211_bss_change - BSS change notification flags |
| 193 | * | 230 | * |
| 194 | * These flags are used with the bss_info_changed() callback | 231 | * These flags are used with the bss_info_changed() callback |
| @@ -2736,6 +2773,11 @@ enum ieee80211_roc_type { | |||
| 2736 | * to vif. Possible use is for hw queue remapping. | 2773 | * to vif. Possible use is for hw queue remapping. |
| 2737 | * @unassign_vif_chanctx: Notifies device driver about channel context being | 2774 | * @unassign_vif_chanctx: Notifies device driver about channel context being |
| 2738 | * unbound from vif. | 2775 | * unbound from vif. |
| 2776 | * @switch_vif_chanctx: switch a number of vifs from one chanctx to | ||
| 2777 | * another, as specified in the list of | ||
| 2778 | * @ieee80211_vif_chanctx_switch passed to the driver, according | ||
| 2779 | * to the mode defined in &ieee80211_chanctx_switch_mode. | ||
| 2780 | * | ||
| 2739 | * @start_ap: Start operation on the AP interface, this is called after all the | 2781 | * @start_ap: Start operation on the AP interface, this is called after all the |
| 2740 | * information in bss_conf is set and beacon can be retrieved. A channel | 2782 | * information in bss_conf is set and beacon can be retrieved. A channel |
| 2741 | * context is bound before this is called. Note that if the driver uses | 2783 | * context is bound before this is called. Note that if the driver uses |
| @@ -2952,6 +2994,10 @@ struct ieee80211_ops { | |||
| 2952 | void (*unassign_vif_chanctx)(struct ieee80211_hw *hw, | 2994 | void (*unassign_vif_chanctx)(struct ieee80211_hw *hw, |
| 2953 | struct ieee80211_vif *vif, | 2995 | struct ieee80211_vif *vif, |
| 2954 | struct ieee80211_chanctx_conf *ctx); | 2996 | struct ieee80211_chanctx_conf *ctx); |
| 2997 | int (*switch_vif_chanctx)(struct ieee80211_hw *hw, | ||
| 2998 | struct ieee80211_vif_chanctx_switch *vifs, | ||
| 2999 | int n_vifs, | ||
| 3000 | enum ieee80211_chanctx_switch_mode mode); | ||
| 2955 | 3001 | ||
| 2956 | void (*restart_complete)(struct ieee80211_hw *hw); | 3002 | void (*restart_complete)(struct ieee80211_hw *hw); |
| 2957 | 3003 | ||
