diff options
Diffstat (limited to 'include/net/cfg80211.h')
-rw-r--r-- | include/net/cfg80211.h | 173 |
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 | */ |
265 | struct vif_params { | 263 | struct 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 | */ |
428 | enum station_info_flags { | 425 | enum 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 | */ |
609 | struct bss_parameters { | 611 | struct 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 | */ | ||
618 | struct mesh_config { | 626 | struct 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 | */ | ||
659 | struct 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 | */ |
927 | struct cfg80211_ibss_params { | 958 | struct 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 | */ |
1154 | struct cfg80211_ops { | 1196 | struct 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 | */ |
1349 | enum wiphy_flags { | 1407 | enum 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 | ||
1361 | struct mac_address { | 1420 | struct 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 | */ |
1424 | struct wiphy { | 1496 | struct 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 | */ | ||
2388 | void 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 | */ | ||
2401 | void 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 | */ | ||
2712 | void 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 */ |