aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/cfg80211.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/net/cfg80211.h')
-rw-r--r--include/net/cfg80211.h173
1 files changed, 145 insertions, 28 deletions
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 2a7936d7851d..bcc9f448ec4e 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -258,13 +258,9 @@ struct ieee80211_supported_band {
258 258
259/** 259/**
260 * struct vif_params - describes virtual interface parameters 260 * struct vif_params - describes virtual interface parameters
261 * @mesh_id: mesh ID to use
262 * @mesh_id_len: length of the mesh ID
263 * @use_4addr: use 4-address frames 261 * @use_4addr: use 4-address frames
264 */ 262 */
265struct vif_params { 263struct vif_params {
266 u8 *mesh_id;
267 int mesh_id_len;
268 int use_4addr; 264 int use_4addr;
269}; 265};
270 266
@@ -424,6 +420,7 @@ struct station_parameters {
424 * @STATION_INFO_TX_RETRIES: @tx_retries filled 420 * @STATION_INFO_TX_RETRIES: @tx_retries filled
425 * @STATION_INFO_TX_FAILED: @tx_failed filled 421 * @STATION_INFO_TX_FAILED: @tx_failed filled
426 * @STATION_INFO_RX_DROP_MISC: @rx_dropped_misc filled 422 * @STATION_INFO_RX_DROP_MISC: @rx_dropped_misc filled
423 * @STATION_INFO_SIGNAL_AVG: @signal_avg filled
427 */ 424 */
428enum station_info_flags { 425enum station_info_flags {
429 STATION_INFO_INACTIVE_TIME = 1<<0, 426 STATION_INFO_INACTIVE_TIME = 1<<0,
@@ -439,6 +436,7 @@ enum station_info_flags {
439 STATION_INFO_TX_RETRIES = 1<<10, 436 STATION_INFO_TX_RETRIES = 1<<10,
440 STATION_INFO_TX_FAILED = 1<<11, 437 STATION_INFO_TX_FAILED = 1<<11,
441 STATION_INFO_RX_DROP_MISC = 1<<12, 438 STATION_INFO_RX_DROP_MISC = 1<<12,
439 STATION_INFO_SIGNAL_AVG = 1<<13,
442}; 440};
443 441
444/** 442/**
@@ -485,6 +483,7 @@ struct rate_info {
485 * @plid: mesh peer link id 483 * @plid: mesh peer link id
486 * @plink_state: mesh peer link state 484 * @plink_state: mesh peer link state
487 * @signal: signal strength of last received packet in dBm 485 * @signal: signal strength of last received packet in dBm
486 * @signal_avg: signal strength average in dBm
488 * @txrate: current unicast bitrate to this station 487 * @txrate: current unicast bitrate to this station
489 * @rx_packets: packets received from this station 488 * @rx_packets: packets received from this station
490 * @tx_packets: packets transmitted to this station 489 * @tx_packets: packets transmitted to this station
@@ -505,6 +504,7 @@ struct station_info {
505 u16 plid; 504 u16 plid;
506 u8 plink_state; 505 u8 plink_state;
507 s8 signal; 506 s8 signal;
507 s8 signal_avg;
508 struct rate_info txrate; 508 struct rate_info txrate;
509 u32 rx_packets; 509 u32 rx_packets;
510 u32 tx_packets; 510 u32 tx_packets;
@@ -605,6 +605,8 @@ struct mpath_info {
605 * (or NULL for no change) 605 * (or NULL for no change)
606 * @basic_rates_len: number of basic rates 606 * @basic_rates_len: number of basic rates
607 * @ap_isolate: do not forward packets between connected stations 607 * @ap_isolate: do not forward packets between connected stations
608 * @ht_opmode: HT Operation mode
609 * (u16 = opmode, -1 = do not change)
608 */ 610 */
609struct bss_parameters { 611struct bss_parameters {
610 int use_cts_prot; 612 int use_cts_prot;
@@ -613,8 +615,14 @@ struct bss_parameters {
613 u8 *basic_rates; 615 u8 *basic_rates;
614 u8 basic_rates_len; 616 u8 basic_rates_len;
615 int ap_isolate; 617 int ap_isolate;
618 int ht_opmode;
616}; 619};
617 620
621/*
622 * struct mesh_config - 802.11s mesh configuration
623 *
624 * These parameters can be changed while the mesh is active.
625 */
618struct mesh_config { 626struct mesh_config {
619 /* Timeouts in ms */ 627 /* Timeouts in ms */
620 /* Mesh plink management parameters */ 628 /* Mesh plink management parameters */
@@ -624,6 +632,8 @@ struct mesh_config {
624 u16 dot11MeshMaxPeerLinks; 632 u16 dot11MeshMaxPeerLinks;
625 u8 dot11MeshMaxRetries; 633 u8 dot11MeshMaxRetries;
626 u8 dot11MeshTTL; 634 u8 dot11MeshTTL;
635 /* ttl used in path selection information elements */
636 u8 element_ttl;
627 bool auto_open_plinks; 637 bool auto_open_plinks;
628 /* HWMP parameters */ 638 /* HWMP parameters */
629 u8 dot11MeshHWMPmaxPREQretries; 639 u8 dot11MeshHWMPmaxPREQretries;
@@ -636,6 +646,26 @@ struct mesh_config {
636}; 646};
637 647
638/** 648/**
649 * struct mesh_setup - 802.11s mesh setup configuration
650 * @mesh_id: the mesh ID
651 * @mesh_id_len: length of the mesh ID, at least 1 and at most 32 bytes
652 * @path_sel_proto: which path selection protocol to use
653 * @path_metric: which metric to use
654 * @vendor_ie: vendor information elements (optional)
655 * @vendor_ie_len: length of vendor information elements
656 *
657 * These parameters are fixed when the mesh is created.
658 */
659struct mesh_setup {
660 const u8 *mesh_id;
661 u8 mesh_id_len;
662 u8 path_sel_proto;
663 u8 path_metric;
664 const u8 *vendor_ie;
665 u8 vendor_ie_len;
666};
667
668/**
639 * struct ieee80211_txq_params - TX queue parameters 669 * struct ieee80211_txq_params - TX queue parameters
640 * @queue: TX queue identifier (NL80211_TXQ_Q_*) 670 * @queue: TX queue identifier (NL80211_TXQ_Q_*)
641 * @txop: Maximum burst time in units of 32 usecs, 0 meaning disabled 671 * @txop: Maximum burst time in units of 32 usecs, 0 meaning disabled
@@ -923,6 +953,7 @@ struct cfg80211_disassoc_request {
923 * @privacy: this is a protected network, keys will be configured 953 * @privacy: this is a protected network, keys will be configured
924 * after joining 954 * after joining
925 * @basic_rates: bitmap of basic rates to use when creating the IBSS 955 * @basic_rates: bitmap of basic rates to use when creating the IBSS
956 * @mcast_rate: per-band multicast rate index + 1 (0: disabled)
926 */ 957 */
927struct cfg80211_ibss_params { 958struct cfg80211_ibss_params {
928 u8 *ssid; 959 u8 *ssid;
@@ -934,6 +965,7 @@ struct cfg80211_ibss_params {
934 u32 basic_rates; 965 u32 basic_rates;
935 bool channel_fixed; 966 bool channel_fixed;
936 bool privacy; 967 bool privacy;
968 int mcast_rate[IEEE80211_NUM_BANDS];
937}; 969};
938 970
939/** 971/**
@@ -1029,7 +1061,8 @@ struct cfg80211_pmksa {
1029 * 1061 *
1030 * @add_virtual_intf: create a new virtual interface with the given name, 1062 * @add_virtual_intf: create a new virtual interface with the given name,
1031 * must set the struct wireless_dev's iftype. Beware: You must create 1063 * must set the struct wireless_dev's iftype. Beware: You must create
1032 * the new netdev in the wiphy's network namespace! 1064 * the new netdev in the wiphy's network namespace! Returns the netdev,
1065 * or an ERR_PTR.
1033 * 1066 *
1034 * @del_virtual_intf: remove the virtual interface determined by ifindex. 1067 * @del_virtual_intf: remove the virtual interface determined by ifindex.
1035 * 1068 *
@@ -1071,9 +1104,9 @@ struct cfg80211_pmksa {
1071 * @get_mpath: get a mesh path for the given parameters 1104 * @get_mpath: get a mesh path for the given parameters
1072 * @dump_mpath: dump mesh path callback -- resume dump at index @idx 1105 * @dump_mpath: dump mesh path callback -- resume dump at index @idx
1073 * 1106 *
1074 * @get_mesh_params: Put the current mesh parameters into *params 1107 * @get_mesh_config: Get the current mesh configuration
1075 * 1108 *
1076 * @set_mesh_params: Set mesh parameters. 1109 * @update_mesh_config: Update mesh parameters on a running mesh.
1077 * The mask is a bitfield which tells us which parameters to 1110 * The mask is a bitfield which tells us which parameters to
1078 * set, and which to leave alone. 1111 * set, and which to leave alone.
1079 * 1112 *
@@ -1132,7 +1165,9 @@ struct cfg80211_pmksa {
1132 * @cancel_remain_on_channel: Cancel an on-going remain-on-channel operation. 1165 * @cancel_remain_on_channel: Cancel an on-going remain-on-channel operation.
1133 * This allows the operation to be terminated prior to timeout based on 1166 * This allows the operation to be terminated prior to timeout based on
1134 * the duration value. 1167 * the duration value.
1135 * @mgmt_tx: Transmit a management frame 1168 * @mgmt_tx: Transmit a management frame.
1169 * @mgmt_tx_cancel_wait: Cancel the wait time from transmitting a management
1170 * frame on another channel
1136 * 1171 *
1137 * @testmode_cmd: run a test mode command 1172 * @testmode_cmd: run a test mode command
1138 * 1173 *
@@ -1150,14 +1185,23 @@ struct cfg80211_pmksa {
1150 * @mgmt_frame_register: Notify driver that a management frame type was 1185 * @mgmt_frame_register: Notify driver that a management frame type was
1151 * registered. Note that this callback may not sleep, and cannot run 1186 * registered. Note that this callback may not sleep, and cannot run
1152 * concurrently with itself. 1187 * concurrently with itself.
1188 *
1189 * @set_antenna: Set antenna configuration (tx_ant, rx_ant) on the device.
1190 * Parameters are bitmaps of allowed antennas to use for TX/RX. Drivers may
1191 * reject TX/RX mask combinations they cannot support by returning -EINVAL
1192 * (also see nl80211.h @NL80211_ATTR_WIPHY_ANTENNA_TX).
1193 *
1194 * @get_antenna: Get current antenna configuration from device (tx_ant, rx_ant).
1153 */ 1195 */
1154struct cfg80211_ops { 1196struct cfg80211_ops {
1155 int (*suspend)(struct wiphy *wiphy); 1197 int (*suspend)(struct wiphy *wiphy);
1156 int (*resume)(struct wiphy *wiphy); 1198 int (*resume)(struct wiphy *wiphy);
1157 1199
1158 int (*add_virtual_intf)(struct wiphy *wiphy, char *name, 1200 struct net_device * (*add_virtual_intf)(struct wiphy *wiphy,
1159 enum nl80211_iftype type, u32 *flags, 1201 char *name,
1160 struct vif_params *params); 1202 enum nl80211_iftype type,
1203 u32 *flags,
1204 struct vif_params *params);
1161 int (*del_virtual_intf)(struct wiphy *wiphy, struct net_device *dev); 1205 int (*del_virtual_intf)(struct wiphy *wiphy, struct net_device *dev);
1162 int (*change_virtual_intf)(struct wiphy *wiphy, 1206 int (*change_virtual_intf)(struct wiphy *wiphy,
1163 struct net_device *dev, 1207 struct net_device *dev,
@@ -1175,7 +1219,7 @@ struct cfg80211_ops {
1175 u8 key_index, bool pairwise, const u8 *mac_addr); 1219 u8 key_index, bool pairwise, const u8 *mac_addr);
1176 int (*set_default_key)(struct wiphy *wiphy, 1220 int (*set_default_key)(struct wiphy *wiphy,
1177 struct net_device *netdev, 1221 struct net_device *netdev,
1178 u8 key_index); 1222 u8 key_index, bool unicast, bool multicast);
1179 int (*set_default_mgmt_key)(struct wiphy *wiphy, 1223 int (*set_default_mgmt_key)(struct wiphy *wiphy,
1180 struct net_device *netdev, 1224 struct net_device *netdev,
1181 u8 key_index); 1225 u8 key_index);
@@ -1210,12 +1254,17 @@ struct cfg80211_ops {
1210 int (*dump_mpath)(struct wiphy *wiphy, struct net_device *dev, 1254 int (*dump_mpath)(struct wiphy *wiphy, struct net_device *dev,
1211 int idx, u8 *dst, u8 *next_hop, 1255 int idx, u8 *dst, u8 *next_hop,
1212 struct mpath_info *pinfo); 1256 struct mpath_info *pinfo);
1213 int (*get_mesh_params)(struct wiphy *wiphy, 1257 int (*get_mesh_config)(struct wiphy *wiphy,
1214 struct net_device *dev, 1258 struct net_device *dev,
1215 struct mesh_config *conf); 1259 struct mesh_config *conf);
1216 int (*set_mesh_params)(struct wiphy *wiphy, 1260 int (*update_mesh_config)(struct wiphy *wiphy,
1217 struct net_device *dev, 1261 struct net_device *dev, u32 mask,
1218 const struct mesh_config *nconf, u32 mask); 1262 const struct mesh_config *nconf);
1263 int (*join_mesh)(struct wiphy *wiphy, struct net_device *dev,
1264 const struct mesh_config *conf,
1265 const struct mesh_setup *setup);
1266 int (*leave_mesh)(struct wiphy *wiphy, struct net_device *dev);
1267
1219 int (*change_bss)(struct wiphy *wiphy, struct net_device *dev, 1268 int (*change_bss)(struct wiphy *wiphy, struct net_device *dev,
1220 struct bss_parameters *params); 1269 struct bss_parameters *params);
1221 1270
@@ -1289,10 +1338,13 @@ struct cfg80211_ops {
1289 u64 cookie); 1338 u64 cookie);
1290 1339
1291 int (*mgmt_tx)(struct wiphy *wiphy, struct net_device *dev, 1340 int (*mgmt_tx)(struct wiphy *wiphy, struct net_device *dev,
1292 struct ieee80211_channel *chan, 1341 struct ieee80211_channel *chan, bool offchan,
1293 enum nl80211_channel_type channel_type, 1342 enum nl80211_channel_type channel_type,
1294 bool channel_type_valid, 1343 bool channel_type_valid, unsigned int wait,
1295 const u8 *buf, size_t len, u64 *cookie); 1344 const u8 *buf, size_t len, u64 *cookie);
1345 int (*mgmt_tx_cancel_wait)(struct wiphy *wiphy,
1346 struct net_device *dev,
1347 u64 cookie);
1296 1348
1297 int (*set_power_mgmt)(struct wiphy *wiphy, struct net_device *dev, 1349 int (*set_power_mgmt)(struct wiphy *wiphy, struct net_device *dev,
1298 bool enabled, int timeout); 1350 bool enabled, int timeout);
@@ -1304,6 +1356,9 @@ struct cfg80211_ops {
1304 void (*mgmt_frame_register)(struct wiphy *wiphy, 1356 void (*mgmt_frame_register)(struct wiphy *wiphy,
1305 struct net_device *dev, 1357 struct net_device *dev,
1306 u16 frame_type, bool reg); 1358 u16 frame_type, bool reg);
1359
1360 int (*set_antenna)(struct wiphy *wiphy, u32 tx_ant, u32 rx_ant);
1361 int (*get_antenna)(struct wiphy *wiphy, u32 *tx_ant, u32 *rx_ant);
1307}; 1362};
1308 1363
1309/* 1364/*
@@ -1321,13 +1376,14 @@ struct cfg80211_ops {
1321 * initiator is %REGDOM_SET_BY_CORE). 1376 * initiator is %REGDOM_SET_BY_CORE).
1322 * @WIPHY_FLAG_STRICT_REGULATORY: tells us the driver for this device will 1377 * @WIPHY_FLAG_STRICT_REGULATORY: tells us the driver for this device will
1323 * ignore regulatory domain settings until it gets its own regulatory 1378 * ignore regulatory domain settings until it gets its own regulatory
1324 * domain via its regulatory_hint(). After its gets its own regulatory 1379 * domain via its regulatory_hint() unless the regulatory hint is
1325 * domain it will only allow further regulatory domain settings to 1380 * from a country IE. After its gets its own regulatory domain it will
1326 * further enhance compliance. For example if channel 13 and 14 are 1381 * only allow further regulatory domain settings to further enhance
1327 * disabled by this regulatory domain no user regulatory domain can 1382 * compliance. For example if channel 13 and 14 are disabled by this
1328 * enable these channels at a later time. This can be used for devices 1383 * regulatory domain no user regulatory domain can enable these channels
1329 * which do not have calibration information gauranteed for frequencies 1384 * at a later time. This can be used for devices which do not have
1330 * or settings outside of its regulatory domain. 1385 * calibration information guaranteed for frequencies or settings
1386 * outside of its regulatory domain.
1331 * @WIPHY_FLAG_DISABLE_BEACON_HINTS: enable this if your driver needs to ensure 1387 * @WIPHY_FLAG_DISABLE_BEACON_HINTS: enable this if your driver needs to ensure
1332 * that passive scan flags and beaconing flags may not be lifted by 1388 * that passive scan flags and beaconing flags may not be lifted by
1333 * cfg80211 due to regulatory beacon hints. For more information on beacon 1389 * cfg80211 due to regulatory beacon hints. For more information on beacon
@@ -1345,6 +1401,8 @@ struct cfg80211_ops {
1345 * control port protocol ethertype. The device also honours the 1401 * control port protocol ethertype. The device also honours the
1346 * control_port_no_encrypt flag. 1402 * control_port_no_encrypt flag.
1347 * @WIPHY_FLAG_IBSS_RSN: The device supports IBSS RSN. 1403 * @WIPHY_FLAG_IBSS_RSN: The device supports IBSS RSN.
1404 * @WIPHY_FLAG_SUPPORTS_SEPARATE_DEFAULT_KEYS: The device supports separate
1405 * unicast and multicast TX keys.
1348 */ 1406 */
1349enum wiphy_flags { 1407enum wiphy_flags {
1350 WIPHY_FLAG_CUSTOM_REGULATORY = BIT(0), 1408 WIPHY_FLAG_CUSTOM_REGULATORY = BIT(0),
@@ -1355,7 +1413,8 @@ enum wiphy_flags {
1355 WIPHY_FLAG_4ADDR_AP = BIT(5), 1413 WIPHY_FLAG_4ADDR_AP = BIT(5),
1356 WIPHY_FLAG_4ADDR_STATION = BIT(6), 1414 WIPHY_FLAG_4ADDR_STATION = BIT(6),
1357 WIPHY_FLAG_CONTROL_PORT_PROTOCOL = BIT(7), 1415 WIPHY_FLAG_CONTROL_PORT_PROTOCOL = BIT(7),
1358 WIPHY_FLAG_IBSS_RSN = BIT(7), 1416 WIPHY_FLAG_IBSS_RSN = BIT(8),
1417 WIPHY_FLAG_SUPPORTS_SEPARATE_DEFAULT_KEYS= BIT(9),
1359}; 1418};
1360 1419
1361struct mac_address { 1420struct mac_address {
@@ -1368,7 +1427,9 @@ struct ieee80211_txrx_stypes {
1368 1427
1369/** 1428/**
1370 * struct wiphy - wireless hardware description 1429 * struct wiphy - wireless hardware description
1371 * @reg_notifier: the driver's regulatory notification callback 1430 * @reg_notifier: the driver's regulatory notification callback,
1431 * note that if your driver uses wiphy_apply_custom_regulatory()
1432 * the reg_notifier's request can be passed as NULL
1372 * @regd: the driver's regulatory domain, if one was requested via 1433 * @regd: the driver's regulatory domain, if one was requested via
1373 * the regulatory_hint() API. This can be used by the driver 1434 * the regulatory_hint() API. This can be used by the driver
1374 * on the reg_notifier() if it chooses to ignore future 1435 * on the reg_notifier() if it chooses to ignore future
@@ -1420,6 +1481,17 @@ struct ieee80211_txrx_stypes {
1420 * @mgmt_stypes: bitmasks of frame subtypes that can be subscribed to or 1481 * @mgmt_stypes: bitmasks of frame subtypes that can be subscribed to or
1421 * transmitted through nl80211, points to an array indexed by interface 1482 * transmitted through nl80211, points to an array indexed by interface
1422 * type 1483 * type
1484 *
1485 * @available_antennas_tx: bitmap of antennas which are available to be
1486 * configured as TX antennas. Antenna configuration commands will be
1487 * rejected unless this or @available_antennas_rx is set.
1488 *
1489 * @available_antennas_rx: bitmap of antennas which are available to be
1490 * configured as RX antennas. Antenna configuration commands will be
1491 * rejected unless this or @available_antennas_tx is set.
1492 *
1493 * @max_remain_on_channel_duration: Maximum time a remain-on-channel operation
1494 * may request, if implemented.
1423 */ 1495 */
1424struct wiphy { 1496struct wiphy {
1425 /* assign these fields before you register the wiphy */ 1497 /* assign these fields before you register the wiphy */
@@ -1457,8 +1529,13 @@ struct wiphy {
1457 char fw_version[ETHTOOL_BUSINFO_LEN]; 1529 char fw_version[ETHTOOL_BUSINFO_LEN];
1458 u32 hw_version; 1530 u32 hw_version;
1459 1531
1532 u16 max_remain_on_channel_duration;
1533
1460 u8 max_num_pmkids; 1534 u8 max_num_pmkids;
1461 1535
1536 u32 available_antennas_tx;
1537 u32 available_antennas_rx;
1538
1462 /* If multiple wiphys are registered and you're handed e.g. 1539 /* If multiple wiphys are registered and you're handed e.g.
1463 * a regular netdev with assigned ieee80211_ptr, you won't 1540 * a regular netdev with assigned ieee80211_ptr, you won't
1464 * know whether it points to a wiphy your driver has registered 1541 * know whether it points to a wiphy your driver has registered
@@ -1624,6 +1701,8 @@ struct cfg80211_cached_keys;
1624 * @bssid: (private) Used by the internal configuration code 1701 * @bssid: (private) Used by the internal configuration code
1625 * @ssid: (private) Used by the internal configuration code 1702 * @ssid: (private) Used by the internal configuration code
1626 * @ssid_len: (private) Used by the internal configuration code 1703 * @ssid_len: (private) Used by the internal configuration code
1704 * @mesh_id_len: (private) Used by the internal configuration code
1705 * @mesh_id_up_len: (private) Used by the internal configuration code
1627 * @wext: (private) Used by the internal wireless extensions compat code 1706 * @wext: (private) Used by the internal wireless extensions compat code
1628 * @use_4addr: indicates 4addr mode is used on this interface, must be 1707 * @use_4addr: indicates 4addr mode is used on this interface, must be
1629 * set by driver (if supported) on add_interface BEFORE registering the 1708 * set by driver (if supported) on add_interface BEFORE registering the
@@ -1653,7 +1732,7 @@ struct wireless_dev {
1653 1732
1654 /* currently used for IBSS and SME - might be rearranged later */ 1733 /* currently used for IBSS and SME - might be rearranged later */
1655 u8 ssid[IEEE80211_MAX_SSID_LEN]; 1734 u8 ssid[IEEE80211_MAX_SSID_LEN];
1656 u8 ssid_len; 1735 u8 ssid_len, mesh_id_len, mesh_id_up_len;
1657 enum { 1736 enum {
1658 CFG80211_SME_IDLE, 1737 CFG80211_SME_IDLE,
1659 CFG80211_SME_CONNECTING, 1738 CFG80211_SME_CONNECTING,
@@ -2297,6 +2376,32 @@ void __cfg80211_send_disassoc(struct net_device *dev, const u8 *buf,
2297 size_t len); 2376 size_t len);
2298 2377
2299/** 2378/**
2379 * cfg80211_send_unprot_deauth - notification of unprotected deauthentication
2380 * @dev: network device
2381 * @buf: deauthentication frame (header + body)
2382 * @len: length of the frame data
2383 *
2384 * This function is called whenever a received Deauthentication frame has been
2385 * dropped in station mode because of MFP being used but the Deauthentication
2386 * frame was not protected. This function may sleep.
2387 */
2388void cfg80211_send_unprot_deauth(struct net_device *dev, const u8 *buf,
2389 size_t len);
2390
2391/**
2392 * cfg80211_send_unprot_disassoc - notification of unprotected disassociation
2393 * @dev: network device
2394 * @buf: disassociation frame (header + body)
2395 * @len: length of the frame data
2396 *
2397 * This function is called whenever a received Disassociation frame has been
2398 * dropped in station mode because of MFP being used but the Disassociation
2399 * frame was not protected. This function may sleep.
2400 */
2401void cfg80211_send_unprot_disassoc(struct net_device *dev, const u8 *buf,
2402 size_t len);
2403
2404/**
2300 * cfg80211_michael_mic_failure - notification of Michael MIC failure (TKIP) 2405 * cfg80211_michael_mic_failure - notification of Michael MIC failure (TKIP)
2301 * @dev: network device 2406 * @dev: network device
2302 * @addr: The source MAC address of the frame 2407 * @addr: The source MAC address of the frame
@@ -2595,6 +2700,18 @@ void cfg80211_cqm_rssi_notify(struct net_device *dev,
2595 enum nl80211_cqm_rssi_threshold_event rssi_event, 2700 enum nl80211_cqm_rssi_threshold_event rssi_event,
2596 gfp_t gfp); 2701 gfp_t gfp);
2597 2702
2703/**
2704 * cfg80211_cqm_pktloss_notify - notify userspace about packetloss to peer
2705 * @dev: network device
2706 * @peer: peer's MAC address
2707 * @num_packets: how many packets were lost -- should be a fixed threshold
2708 * but probably no less than maybe 50, or maybe a throughput dependent
2709 * threshold (to account for temporary interference)
2710 * @gfp: context flags
2711 */
2712void cfg80211_cqm_pktloss_notify(struct net_device *dev,
2713 const u8 *peer, u32 num_packets, gfp_t gfp);
2714
2598/* Logging, debugging and troubleshooting/diagnostic helpers. */ 2715/* Logging, debugging and troubleshooting/diagnostic helpers. */
2599 2716
2600/* wiphy_printk helpers, similar to dev_printk */ 2717/* wiphy_printk helpers, similar to dev_printk */