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.h317
1 files changed, 306 insertions, 11 deletions
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index b2b9d28cb4ab..0589f554788a 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -387,6 +387,7 @@ enum plink_actions {
387 * @listen_interval: listen interval or -1 for no change 387 * @listen_interval: listen interval or -1 for no change
388 * @aid: AID or zero for no change 388 * @aid: AID or zero for no change
389 * @plink_action: plink action to take 389 * @plink_action: plink action to take
390 * @plink_state: set the peer link state for a station
390 * @ht_capa: HT capabilities of station 391 * @ht_capa: HT capabilities of station
391 */ 392 */
392struct station_parameters { 393struct station_parameters {
@@ -397,6 +398,7 @@ struct station_parameters {
397 u16 aid; 398 u16 aid;
398 u8 supported_rates_len; 399 u8 supported_rates_len;
399 u8 plink_action; 400 u8 plink_action;
401 u8 plink_state;
400 struct ieee80211_ht_cap *ht_capa; 402 struct ieee80211_ht_cap *ht_capa;
401}; 403};
402 404
@@ -422,6 +424,8 @@ struct station_parameters {
422 * @STATION_INFO_RX_DROP_MISC: @rx_dropped_misc filled 424 * @STATION_INFO_RX_DROP_MISC: @rx_dropped_misc filled
423 * @STATION_INFO_SIGNAL_AVG: @signal_avg filled 425 * @STATION_INFO_SIGNAL_AVG: @signal_avg filled
424 * @STATION_INFO_RX_BITRATE: @rxrate fields are filled 426 * @STATION_INFO_RX_BITRATE: @rxrate fields are filled
427 * @STATION_INFO_BSS_PARAM: @bss_param filled
428 * @STATION_INFO_CONNECTED_TIME: @connected_time filled
425 */ 429 */
426enum station_info_flags { 430enum station_info_flags {
427 STATION_INFO_INACTIVE_TIME = 1<<0, 431 STATION_INFO_INACTIVE_TIME = 1<<0,
@@ -439,6 +443,8 @@ enum station_info_flags {
439 STATION_INFO_RX_DROP_MISC = 1<<12, 443 STATION_INFO_RX_DROP_MISC = 1<<12,
440 STATION_INFO_SIGNAL_AVG = 1<<13, 444 STATION_INFO_SIGNAL_AVG = 1<<13,
441 STATION_INFO_RX_BITRATE = 1<<14, 445 STATION_INFO_RX_BITRATE = 1<<14,
446 STATION_INFO_BSS_PARAM = 1<<15,
447 STATION_INFO_CONNECTED_TIME = 1<<16
442}; 448};
443 449
444/** 450/**
@@ -473,11 +479,43 @@ struct rate_info {
473}; 479};
474 480
475/** 481/**
482 * enum station_info_rate_flags - bitrate info flags
483 *
484 * Used by the driver to indicate the specific rate transmission
485 * type for 802.11n transmissions.
486 *
487 * @BSS_PARAM_FLAGS_CTS_PROT: whether CTS protection is enabled
488 * @BSS_PARAM_FLAGS_SHORT_PREAMBLE: whether short preamble is enabled
489 * @BSS_PARAM_FLAGS_SHORT_SLOT_TIME: whether short slot time is enabled
490 */
491enum bss_param_flags {
492 BSS_PARAM_FLAGS_CTS_PROT = 1<<0,
493 BSS_PARAM_FLAGS_SHORT_PREAMBLE = 1<<1,
494 BSS_PARAM_FLAGS_SHORT_SLOT_TIME = 1<<2,
495};
496
497/**
498 * struct sta_bss_parameters - BSS parameters for the attached station
499 *
500 * Information about the currently associated BSS
501 *
502 * @flags: bitflag of flags from &enum bss_param_flags
503 * @dtim_period: DTIM period for the BSS
504 * @beacon_interval: beacon interval
505 */
506struct sta_bss_parameters {
507 u8 flags;
508 u8 dtim_period;
509 u16 beacon_interval;
510};
511
512/**
476 * struct station_info - station information 513 * struct station_info - station information
477 * 514 *
478 * Station information filled by driver for get_station() and dump_station. 515 * Station information filled by driver for get_station() and dump_station.
479 * 516 *
480 * @filled: bitflag of flags from &enum station_info_flags 517 * @filled: bitflag of flags from &enum station_info_flags
518 * @connected_time: time(in secs) since a station is last connected
481 * @inactive_time: time since last station activity (tx/rx) in milliseconds 519 * @inactive_time: time since last station activity (tx/rx) in milliseconds
482 * @rx_bytes: bytes received from this station 520 * @rx_bytes: bytes received from this station
483 * @tx_bytes: bytes transmitted to this station 521 * @tx_bytes: bytes transmitted to this station
@@ -493,6 +531,7 @@ struct rate_info {
493 * @tx_retries: cumulative retry counts 531 * @tx_retries: cumulative retry counts
494 * @tx_failed: number of failed transmissions (retries exceeded, no ACK) 532 * @tx_failed: number of failed transmissions (retries exceeded, no ACK)
495 * @rx_dropped_misc: Dropped for un-specified reason. 533 * @rx_dropped_misc: Dropped for un-specified reason.
534 * @bss_param: current BSS parameters
496 * @generation: generation number for nl80211 dumps. 535 * @generation: generation number for nl80211 dumps.
497 * This number should increase every time the list of stations 536 * This number should increase every time the list of stations
498 * changes, i.e. when a station is added or removed, so that 537 * changes, i.e. when a station is added or removed, so that
@@ -500,6 +539,7 @@ struct rate_info {
500 */ 539 */
501struct station_info { 540struct station_info {
502 u32 filled; 541 u32 filled;
542 u32 connected_time;
503 u32 inactive_time; 543 u32 inactive_time;
504 u32 rx_bytes; 544 u32 rx_bytes;
505 u32 tx_bytes; 545 u32 tx_bytes;
@@ -515,6 +555,7 @@ struct station_info {
515 u32 tx_retries; 555 u32 tx_retries;
516 u32 tx_failed; 556 u32 tx_failed;
517 u32 rx_dropped_misc; 557 u32 rx_dropped_misc;
558 struct sta_bss_parameters bss_param;
518 559
519 int generation; 560 int generation;
520}; 561};
@@ -655,8 +696,10 @@ struct mesh_config {
655 * @mesh_id_len: length of the mesh ID, at least 1 and at most 32 bytes 696 * @mesh_id_len: length of the mesh ID, at least 1 and at most 32 bytes
656 * @path_sel_proto: which path selection protocol to use 697 * @path_sel_proto: which path selection protocol to use
657 * @path_metric: which metric to use 698 * @path_metric: which metric to use
658 * @vendor_ie: vendor information elements (optional) 699 * @ie: vendor information elements (optional)
659 * @vendor_ie_len: length of vendor information elements 700 * @ie_len: length of vendor information elements
701 * @is_authenticated: this mesh requires authentication
702 * @is_secure: this mesh uses security
660 * 703 *
661 * These parameters are fixed when the mesh is created. 704 * These parameters are fixed when the mesh is created.
662 */ 705 */
@@ -665,8 +708,10 @@ struct mesh_setup {
665 u8 mesh_id_len; 708 u8 mesh_id_len;
666 u8 path_sel_proto; 709 u8 path_sel_proto;
667 u8 path_metric; 710 u8 path_metric;
668 const u8 *vendor_ie; 711 const u8 *ie;
669 u8 vendor_ie_len; 712 u8 ie_len;
713 bool is_authenticated;
714 bool is_secure;
670}; 715};
671 716
672/** 717/**
@@ -753,6 +798,35 @@ struct cfg80211_scan_request {
753}; 798};
754 799
755/** 800/**
801 * struct cfg80211_sched_scan_request - scheduled scan request description
802 *
803 * @ssids: SSIDs to scan for (passed in the probe_reqs in active scans)
804 * @n_ssids: number of SSIDs
805 * @n_channels: total number of channels to scan
806 * @interval: interval between each scheduled scan cycle
807 * @ie: optional information element(s) to add into Probe Request or %NULL
808 * @ie_len: length of ie in octets
809 * @wiphy: the wiphy this was for
810 * @dev: the interface
811 * @channels: channels to scan
812 */
813struct cfg80211_sched_scan_request {
814 struct cfg80211_ssid *ssids;
815 int n_ssids;
816 u32 n_channels;
817 u32 interval;
818 const u8 *ie;
819 size_t ie_len;
820
821 /* internal */
822 struct wiphy *wiphy;
823 struct net_device *dev;
824
825 /* keep last */
826 struct ieee80211_channel *channels[0];
827};
828
829/**
756 * enum cfg80211_signal_type - signal type 830 * enum cfg80211_signal_type - signal type
757 * 831 *
758 * @CFG80211_SIGNAL_TYPE_NONE: no signal strength information available 832 * @CFG80211_SIGNAL_TYPE_NONE: no signal strength information available
@@ -1048,6 +1122,38 @@ struct cfg80211_pmksa {
1048}; 1122};
1049 1123
1050/** 1124/**
1125 * struct cfg80211_wowlan_trig_pkt_pattern - packet pattern
1126 * @mask: bitmask where to match pattern and where to ignore bytes,
1127 * one bit per byte, in same format as nl80211
1128 * @pattern: bytes to match where bitmask is 1
1129 * @pattern_len: length of pattern (in bytes)
1130 *
1131 * Internal note: @mask and @pattern are allocated in one chunk of
1132 * memory, free @mask only!
1133 */
1134struct cfg80211_wowlan_trig_pkt_pattern {
1135 u8 *mask, *pattern;
1136 int pattern_len;
1137};
1138
1139/**
1140 * struct cfg80211_wowlan - Wake on Wireless-LAN support info
1141 *
1142 * This structure defines the enabled WoWLAN triggers for the device.
1143 * @any: wake up on any activity -- special trigger if device continues
1144 * operating as normal during suspend
1145 * @disconnect: wake up if getting disconnected
1146 * @magic_pkt: wake up on receiving magic packet
1147 * @patterns: wake up on receiving packet matching a pattern
1148 * @n_patterns: number of patterns
1149 */
1150struct cfg80211_wowlan {
1151 bool any, disconnect, magic_pkt;
1152 struct cfg80211_wowlan_trig_pkt_pattern *patterns;
1153 int n_patterns;
1154};
1155
1156/**
1051 * struct cfg80211_ops - backend description for wireless configuration 1157 * struct cfg80211_ops - backend description for wireless configuration
1052 * 1158 *
1053 * This struct is registered by fullmac card drivers and/or wireless stacks 1159 * This struct is registered by fullmac card drivers and/or wireless stacks
@@ -1060,7 +1166,9 @@ struct cfg80211_pmksa {
1060 * wireless extensions but this is subject to reevaluation as soon as this 1166 * wireless extensions but this is subject to reevaluation as soon as this
1061 * code is used more widely and we have a first user without wext. 1167 * code is used more widely and we have a first user without wext.
1062 * 1168 *
1063 * @suspend: wiphy device needs to be suspended 1169 * @suspend: wiphy device needs to be suspended. The variable @wow will
1170 * be %NULL or contain the enabled Wake-on-Wireless triggers that are
1171 * configured for the device.
1064 * @resume: wiphy device needs to be resumed 1172 * @resume: wiphy device needs to be resumed
1065 * 1173 *
1066 * @add_virtual_intf: create a new virtual interface with the given name, 1174 * @add_virtual_intf: create a new virtual interface with the given name,
@@ -1187,6 +1295,10 @@ struct cfg80211_pmksa {
1187 * @set_power_mgmt: Configure WLAN power management. A timeout value of -1 1295 * @set_power_mgmt: Configure WLAN power management. A timeout value of -1
1188 * allows the driver to adjust the dynamic ps timeout value. 1296 * allows the driver to adjust the dynamic ps timeout value.
1189 * @set_cqm_rssi_config: Configure connection quality monitor RSSI threshold. 1297 * @set_cqm_rssi_config: Configure connection quality monitor RSSI threshold.
1298 * @sched_scan_start: Tell the driver to start a scheduled scan.
1299 * @sched_scan_stop: Tell the driver to stop an ongoing scheduled
1300 * scan. The driver_initiated flag specifies whether the driver
1301 * itself has informed that the scan has stopped.
1190 * 1302 *
1191 * @mgmt_frame_register: Notify driver that a management frame type was 1303 * @mgmt_frame_register: Notify driver that a management frame type was
1192 * registered. Note that this callback may not sleep, and cannot run 1304 * registered. Note that this callback may not sleep, and cannot run
@@ -1204,7 +1316,7 @@ struct cfg80211_pmksa {
1204 * @get_ringparam: Get tx and rx ring current and maximum sizes. 1316 * @get_ringparam: Get tx and rx ring current and maximum sizes.
1205 */ 1317 */
1206struct cfg80211_ops { 1318struct cfg80211_ops {
1207 int (*suspend)(struct wiphy *wiphy); 1319 int (*suspend)(struct wiphy *wiphy, struct cfg80211_wowlan *wow);
1208 int (*resume)(struct wiphy *wiphy); 1320 int (*resume)(struct wiphy *wiphy);
1209 1321
1210 struct net_device * (*add_virtual_intf)(struct wiphy *wiphy, 1322 struct net_device * (*add_virtual_intf)(struct wiphy *wiphy,
@@ -1373,6 +1485,11 @@ struct cfg80211_ops {
1373 int (*set_ringparam)(struct wiphy *wiphy, u32 tx, u32 rx); 1485 int (*set_ringparam)(struct wiphy *wiphy, u32 tx, u32 rx);
1374 void (*get_ringparam)(struct wiphy *wiphy, 1486 void (*get_ringparam)(struct wiphy *wiphy,
1375 u32 *tx, u32 *tx_max, u32 *rx, u32 *rx_max); 1487 u32 *tx, u32 *tx_max, u32 *rx, u32 *rx_max);
1488
1489 int (*sched_scan_start)(struct wiphy *wiphy,
1490 struct net_device *dev,
1491 struct cfg80211_sched_scan_request *request);
1492 int (*sched_scan_stop)(struct wiphy *wiphy, struct net_device *dev);
1376}; 1493};
1377 1494
1378/* 1495/*
@@ -1404,6 +1521,10 @@ struct cfg80211_ops {
1404 * hints read the documenation for regulatory_hint_found_beacon() 1521 * hints read the documenation for regulatory_hint_found_beacon()
1405 * @WIPHY_FLAG_NETNS_OK: if not set, do not allow changing the netns of this 1522 * @WIPHY_FLAG_NETNS_OK: if not set, do not allow changing the netns of this
1406 * wiphy at all 1523 * wiphy at all
1524 * @WIPHY_FLAG_ENFORCE_COMBINATIONS: Set this flag to enforce interface
1525 * combinations for this device. This flag is used for backward
1526 * compatibility only until all drivers advertise combinations and
1527 * they will always be enforced.
1407 * @WIPHY_FLAG_PS_ON_BY_DEFAULT: if set to true, powersave will be enabled 1528 * @WIPHY_FLAG_PS_ON_BY_DEFAULT: if set to true, powersave will be enabled
1408 * by default -- this flag will be set depending on the kernel's default 1529 * by default -- this flag will be set depending on the kernel's default
1409 * on wiphy_new(), but can be changed by the driver if it has a good 1530 * on wiphy_new(), but can be changed by the driver if it has a good
@@ -1415,8 +1536,9 @@ struct cfg80211_ops {
1415 * control port protocol ethertype. The device also honours the 1536 * control port protocol ethertype. The device also honours the
1416 * control_port_no_encrypt flag. 1537 * control_port_no_encrypt flag.
1417 * @WIPHY_FLAG_IBSS_RSN: The device supports IBSS RSN. 1538 * @WIPHY_FLAG_IBSS_RSN: The device supports IBSS RSN.
1418 * @WIPHY_FLAG_SUPPORTS_SEPARATE_DEFAULT_KEYS: The device supports separate 1539 * @WIPHY_FLAG_MESH_AUTH: The device supports mesh authentication by routing
1419 * unicast and multicast TX keys. 1540 * auth frames to userspace. See @NL80211_MESH_SETUP_USERSPACE_AUTH.
1541 * @WIPHY_FLAG_SUPPORTS_SCHED_SCAN: The device supports scheduled scans.
1420 */ 1542 */
1421enum wiphy_flags { 1543enum wiphy_flags {
1422 WIPHY_FLAG_CUSTOM_REGULATORY = BIT(0), 1544 WIPHY_FLAG_CUSTOM_REGULATORY = BIT(0),
@@ -1428,7 +1550,83 @@ enum wiphy_flags {
1428 WIPHY_FLAG_4ADDR_STATION = BIT(6), 1550 WIPHY_FLAG_4ADDR_STATION = BIT(6),
1429 WIPHY_FLAG_CONTROL_PORT_PROTOCOL = BIT(7), 1551 WIPHY_FLAG_CONTROL_PORT_PROTOCOL = BIT(7),
1430 WIPHY_FLAG_IBSS_RSN = BIT(8), 1552 WIPHY_FLAG_IBSS_RSN = BIT(8),
1431 WIPHY_FLAG_SUPPORTS_SEPARATE_DEFAULT_KEYS= BIT(9), 1553 WIPHY_FLAG_MESH_AUTH = BIT(10),
1554 WIPHY_FLAG_SUPPORTS_SCHED_SCAN = BIT(11),
1555 WIPHY_FLAG_ENFORCE_COMBINATIONS = BIT(12),
1556};
1557
1558/**
1559 * struct ieee80211_iface_limit - limit on certain interface types
1560 * @max: maximum number of interfaces of these types
1561 * @types: interface types (bits)
1562 */
1563struct ieee80211_iface_limit {
1564 u16 max;
1565 u16 types;
1566};
1567
1568/**
1569 * struct ieee80211_iface_combination - possible interface combination
1570 * @limits: limits for the given interface types
1571 * @n_limits: number of limitations
1572 * @num_different_channels: can use up to this many different channels
1573 * @max_interfaces: maximum number of interfaces in total allowed in this
1574 * group
1575 * @beacon_int_infra_match: In this combination, the beacon intervals
1576 * between infrastructure and AP types must match. This is required
1577 * only in special cases.
1578 *
1579 * These examples can be expressed as follows:
1580 *
1581 * Allow #STA <= 1, #AP <= 1, matching BI, channels = 1, 2 total:
1582 *
1583 * struct ieee80211_iface_limit limits1[] = {
1584 * { .max = 1, .types = BIT(NL80211_IFTYPE_STATION), },
1585 * { .max = 1, .types = BIT(NL80211_IFTYPE_AP}, },
1586 * };
1587 * struct ieee80211_iface_combination combination1 = {
1588 * .limits = limits1,
1589 * .n_limits = ARRAY_SIZE(limits1),
1590 * .max_interfaces = 2,
1591 * .beacon_int_infra_match = true,
1592 * };
1593 *
1594 *
1595 * Allow #{AP, P2P-GO} <= 8, channels = 1, 8 total:
1596 *
1597 * struct ieee80211_iface_limit limits2[] = {
1598 * { .max = 8, .types = BIT(NL80211_IFTYPE_AP) |
1599 * BIT(NL80211_IFTYPE_P2P_GO), },
1600 * };
1601 * struct ieee80211_iface_combination combination2 = {
1602 * .limits = limits2,
1603 * .n_limits = ARRAY_SIZE(limits2),
1604 * .max_interfaces = 8,
1605 * .num_different_channels = 1,
1606 * };
1607 *
1608 *
1609 * Allow #STA <= 1, #{P2P-client,P2P-GO} <= 3 on two channels, 4 total.
1610 * This allows for an infrastructure connection and three P2P connections.
1611 *
1612 * struct ieee80211_iface_limit limits3[] = {
1613 * { .max = 1, .types = BIT(NL80211_IFTYPE_STATION), },
1614 * { .max = 3, .types = BIT(NL80211_IFTYPE_P2P_GO) |
1615 * BIT(NL80211_IFTYPE_P2P_CLIENT), },
1616 * };
1617 * struct ieee80211_iface_combination combination3 = {
1618 * .limits = limits3,
1619 * .n_limits = ARRAY_SIZE(limits3),
1620 * .max_interfaces = 4,
1621 * .num_different_channels = 2,
1622 * };
1623 */
1624struct ieee80211_iface_combination {
1625 const struct ieee80211_iface_limit *limits;
1626 u32 num_different_channels;
1627 u16 max_interfaces;
1628 u8 n_limits;
1629 bool beacon_int_infra_match;
1432}; 1630};
1433 1631
1434struct mac_address { 1632struct mac_address {
@@ -1440,6 +1638,38 @@ struct ieee80211_txrx_stypes {
1440}; 1638};
1441 1639
1442/** 1640/**
1641 * enum wiphy_wowlan_support_flags - WoWLAN support flags
1642 * @WIPHY_WOWLAN_ANY: supports wakeup for the special "any"
1643 * trigger that keeps the device operating as-is and
1644 * wakes up the host on any activity, for example a
1645 * received packet that passed filtering; note that the
1646 * packet should be preserved in that case
1647 * @WIPHY_WOWLAN_MAGIC_PKT: supports wakeup on magic packet
1648 * (see nl80211.h)
1649 * @WIPHY_WOWLAN_DISCONNECT: supports wakeup on disconnect
1650 */
1651enum wiphy_wowlan_support_flags {
1652 WIPHY_WOWLAN_ANY = BIT(0),
1653 WIPHY_WOWLAN_MAGIC_PKT = BIT(1),
1654 WIPHY_WOWLAN_DISCONNECT = BIT(2),
1655};
1656
1657/**
1658 * struct wiphy_wowlan_support - WoWLAN support data
1659 * @flags: see &enum wiphy_wowlan_support_flags
1660 * @n_patterns: number of supported wakeup patterns
1661 * (see nl80211.h for the pattern definition)
1662 * @pattern_max_len: maximum length of each pattern
1663 * @pattern_min_len: minimum length of each pattern
1664 */
1665struct wiphy_wowlan_support {
1666 u32 flags;
1667 int n_patterns;
1668 int pattern_max_len;
1669 int pattern_min_len;
1670};
1671
1672/**
1443 * struct wiphy - wireless hardware description 1673 * struct wiphy - wireless hardware description
1444 * @reg_notifier: the driver's regulatory notification callback, 1674 * @reg_notifier: the driver's regulatory notification callback,
1445 * note that if your driver uses wiphy_apply_custom_regulatory() 1675 * note that if your driver uses wiphy_apply_custom_regulatory()
@@ -1476,6 +1706,11 @@ struct ieee80211_txrx_stypes {
1476 * @priv: driver private data (sized according to wiphy_new() parameter) 1706 * @priv: driver private data (sized according to wiphy_new() parameter)
1477 * @interface_modes: bitmask of interfaces types valid for this wiphy, 1707 * @interface_modes: bitmask of interfaces types valid for this wiphy,
1478 * must be set by driver 1708 * must be set by driver
1709 * @iface_combinations: Valid interface combinations array, should not
1710 * list single interface types.
1711 * @n_iface_combinations: number of entries in @iface_combinations array.
1712 * @software_iftypes: bitmask of software interface types, these are not
1713 * subject to any restrictions since they are purely managed in SW.
1479 * @flags: wiphy flags, see &enum wiphy_flags 1714 * @flags: wiphy flags, see &enum wiphy_flags
1480 * @bss_priv_size: each BSS struct has private data allocated with it, 1715 * @bss_priv_size: each BSS struct has private data allocated with it,
1481 * this variable determines its size 1716 * this variable determines its size
@@ -1506,6 +1741,8 @@ struct ieee80211_txrx_stypes {
1506 * 1741 *
1507 * @max_remain_on_channel_duration: Maximum time a remain-on-channel operation 1742 * @max_remain_on_channel_duration: Maximum time a remain-on-channel operation
1508 * may request, if implemented. 1743 * may request, if implemented.
1744 *
1745 * @wowlan: WoWLAN support information
1509 */ 1746 */
1510struct wiphy { 1747struct wiphy {
1511 /* assign these fields before you register the wiphy */ 1748 /* assign these fields before you register the wiphy */
@@ -1518,6 +1755,10 @@ struct wiphy {
1518 1755
1519 const struct ieee80211_txrx_stypes *mgmt_stypes; 1756 const struct ieee80211_txrx_stypes *mgmt_stypes;
1520 1757
1758 const struct ieee80211_iface_combination *iface_combinations;
1759 int n_iface_combinations;
1760 u16 software_iftypes;
1761
1521 u16 n_addresses; 1762 u16 n_addresses;
1522 1763
1523 /* Supported interface modes, OR together BIT(NL80211_IFTYPE_...) */ 1764 /* Supported interface modes, OR together BIT(NL80211_IFTYPE_...) */
@@ -1543,6 +1784,8 @@ struct wiphy {
1543 char fw_version[ETHTOOL_BUSINFO_LEN]; 1784 char fw_version[ETHTOOL_BUSINFO_LEN];
1544 u32 hw_version; 1785 u32 hw_version;
1545 1786
1787 struct wiphy_wowlan_support wowlan;
1788
1546 u16 max_remain_on_channel_duration; 1789 u16 max_remain_on_channel_duration;
1547 1790
1548 u8 max_num_pmkids; 1791 u8 max_num_pmkids;
@@ -1726,6 +1969,8 @@ struct cfg80211_cached_keys;
1726 * @mgmt_registrations_lock: lock for the list 1969 * @mgmt_registrations_lock: lock for the list
1727 * @mtx: mutex used to lock data in this struct 1970 * @mtx: mutex used to lock data in this struct
1728 * @cleanup_work: work struct used for cleanup that can't be done directly 1971 * @cleanup_work: work struct used for cleanup that can't be done directly
1972 * @beacon_interval: beacon interval used on this device for transmitting
1973 * beacons, 0 when not valid
1729 */ 1974 */
1730struct wireless_dev { 1975struct wireless_dev {
1731 struct wiphy *wiphy; 1976 struct wiphy *wiphy;
@@ -1766,6 +2011,8 @@ struct wireless_dev {
1766 bool ps; 2011 bool ps;
1767 int ps_timeout; 2012 int ps_timeout;
1768 2013
2014 int beacon_interval;
2015
1769#ifdef CONFIG_CFG80211_WEXT 2016#ifdef CONFIG_CFG80211_WEXT
1770 /* wext data */ 2017 /* wext data */
1771 struct { 2018 struct {
@@ -1991,10 +2238,12 @@ int ieee80211_data_from_8023(struct sk_buff *skb, const u8 *addr,
1991 * @addr: The device MAC address. 2238 * @addr: The device MAC address.
1992 * @iftype: The device interface type. 2239 * @iftype: The device interface type.
1993 * @extra_headroom: The hardware extra headroom for SKBs in the @list. 2240 * @extra_headroom: The hardware extra headroom for SKBs in the @list.
2241 * @has_80211_header: Set it true if SKB is with IEEE 802.11 header.
1994 */ 2242 */
1995void ieee80211_amsdu_to_8023s(struct sk_buff *skb, struct sk_buff_head *list, 2243void ieee80211_amsdu_to_8023s(struct sk_buff *skb, struct sk_buff_head *list,
1996 const u8 *addr, enum nl80211_iftype iftype, 2244 const u8 *addr, enum nl80211_iftype iftype,
1997 const unsigned int extra_headroom); 2245 const unsigned int extra_headroom,
2246 bool has_80211_header);
1998 2247
1999/** 2248/**
2000 * cfg80211_classify8021d - determine the 802.1p/1d tag for a data frame 2249 * cfg80211_classify8021d - determine the 802.1p/1d tag for a data frame
@@ -2214,6 +2463,24 @@ int cfg80211_wext_siwpmksa(struct net_device *dev,
2214void cfg80211_scan_done(struct cfg80211_scan_request *request, bool aborted); 2463void cfg80211_scan_done(struct cfg80211_scan_request *request, bool aborted);
2215 2464
2216/** 2465/**
2466 * cfg80211_sched_scan_results - notify that new scan results are available
2467 *
2468 * @wiphy: the wiphy which got scheduled scan results
2469 */
2470void cfg80211_sched_scan_results(struct wiphy *wiphy);
2471
2472/**
2473 * cfg80211_sched_scan_stopped - notify that the scheduled scan has stopped
2474 *
2475 * @wiphy: the wiphy on which the scheduled scan stopped
2476 *
2477 * The driver can call this function to inform cfg80211 that the
2478 * scheduled scan had to be stopped, for whatever reason. The driver
2479 * is then called back via the sched_scan_stop operation when done.
2480 */
2481void cfg80211_sched_scan_stopped(struct wiphy *wiphy);
2482
2483/**
2217 * cfg80211_inform_bss_frame - inform cfg80211 of a received BSS frame 2484 * cfg80211_inform_bss_frame - inform cfg80211 of a received BSS frame
2218 * 2485 *
2219 * @wiphy: the wiphy reporting the BSS 2486 * @wiphy: the wiphy reporting the BSS
@@ -2450,6 +2717,22 @@ void cfg80211_michael_mic_failure(struct net_device *dev, const u8 *addr,
2450void cfg80211_ibss_joined(struct net_device *dev, const u8 *bssid, gfp_t gfp); 2717void cfg80211_ibss_joined(struct net_device *dev, const u8 *bssid, gfp_t gfp);
2451 2718
2452/** 2719/**
2720 * cfg80211_notify_new_candidate - notify cfg80211 of a new mesh peer candidate
2721 *
2722 * @dev: network device
2723 * @macaddr: the MAC address of the new candidate
2724 * @ie: information elements advertised by the peer candidate
2725 * @ie_len: lenght of the information elements buffer
2726 * @gfp: allocation flags
2727 *
2728 * This function notifies cfg80211 that the mesh peer candidate has been
2729 * detected, most likely via a beacon or, less likely, via a probe response.
2730 * cfg80211 then sends a notification to userspace.
2731 */
2732void cfg80211_notify_new_peer_candidate(struct net_device *dev,
2733 const u8 *macaddr, const u8 *ie, u8 ie_len, gfp_t gfp);
2734
2735/**
2453 * DOC: RFkill integration 2736 * DOC: RFkill integration
2454 * 2737 *
2455 * RFkill integration in cfg80211 is almost invisible to drivers, 2738 * RFkill integration in cfg80211 is almost invisible to drivers,
@@ -2596,6 +2879,7 @@ void cfg80211_connect_result(struct net_device *dev, const u8 *bssid,
2596 * cfg80211_roamed - notify cfg80211 of roaming 2879 * cfg80211_roamed - notify cfg80211 of roaming
2597 * 2880 *
2598 * @dev: network device 2881 * @dev: network device
2882 * @channel: the channel of the new AP
2599 * @bssid: the BSSID of the new AP 2883 * @bssid: the BSSID of the new AP
2600 * @req_ie: association request IEs (maybe be %NULL) 2884 * @req_ie: association request IEs (maybe be %NULL)
2601 * @req_ie_len: association request IEs length 2885 * @req_ie_len: association request IEs length
@@ -2606,7 +2890,9 @@ void cfg80211_connect_result(struct net_device *dev, const u8 *bssid,
2606 * It should be called by the underlying driver whenever it roamed 2890 * It should be called by the underlying driver whenever it roamed
2607 * from one AP to another while connected. 2891 * from one AP to another while connected.
2608 */ 2892 */
2609void cfg80211_roamed(struct net_device *dev, const u8 *bssid, 2893void cfg80211_roamed(struct net_device *dev,
2894 struct ieee80211_channel *channel,
2895 const u8 *bssid,
2610 const u8 *req_ie, size_t req_ie_len, 2896 const u8 *req_ie, size_t req_ie_len,
2611 const u8 *resp_ie, size_t resp_ie_len, gfp_t gfp); 2897 const u8 *resp_ie, size_t resp_ie_len, gfp_t gfp);
2612 2898
@@ -2667,6 +2953,15 @@ void cfg80211_new_sta(struct net_device *dev, const u8 *mac_addr,
2667 struct station_info *sinfo, gfp_t gfp); 2953 struct station_info *sinfo, gfp_t gfp);
2668 2954
2669/** 2955/**
2956 * cfg80211_del_sta - notify userspace about deletion of a station
2957 *
2958 * @dev: the netdev
2959 * @mac_addr: the station's address
2960 * @gfp: allocation flags
2961 */
2962void cfg80211_del_sta(struct net_device *dev, const u8 *mac_addr, gfp_t gfp);
2963
2964/**
2670 * cfg80211_rx_mgmt - notification of received, unprocessed management frame 2965 * cfg80211_rx_mgmt - notification of received, unprocessed management frame
2671 * @dev: network device 2966 * @dev: network device
2672 * @freq: Frequency on which the frame was received in MHz 2967 * @freq: Frequency on which the frame was received in MHz