diff options
Diffstat (limited to 'target/linux/generic-2.6/patches-2.6.23/210-mac80211_include_wireless_dev.patch')
-rw-r--r-- | target/linux/generic-2.6/patches-2.6.23/210-mac80211_include_wireless_dev.patch | 806 |
1 files changed, 0 insertions, 806 deletions
diff --git a/target/linux/generic-2.6/patches-2.6.23/210-mac80211_include_wireless_dev.patch b/target/linux/generic-2.6/patches-2.6.23/210-mac80211_include_wireless_dev.patch deleted file mode 100644 index b8fbbe9..0000000 --- a/target/linux/generic-2.6/patches-2.6.23/210-mac80211_include_wireless_dev.patch +++ /dev/null @@ -1,806 +0,0 @@ ---- a/include/linux/ieee80211.h -+++ b/include/linux/ieee80211.h -@@ -106,6 +106,75 @@ struct ieee80211_hdr { - } __attribute__ ((packed)); - - -+struct ieee80211_ht_capability { -+ __le16 capabilities_info; -+ u8 mac_ht_params_info; -+ u8 supported_mcs_set[16]; -+ __le16 extended_ht_capability_info; -+ __le32 tx_BF_capability_info; -+ u8 antenna_selection_info; -+}__attribute__ ((packed)); -+ -+struct ieee80211_ht_additional_info { -+ u8 control_chan; -+ u8 ht_param; -+ __le16 operation_mode; -+ __le16 stbc_param; -+ u8 basic_set[16]; -+}__attribute__ ((packed)); -+ -+ -+#define IEEE80211_TSINFO_TYPE(a) ((a.byte1 & 0x01) >> 0) -+#define IEEE80211_TSINFO_TSID(a) ((a.byte1 & 0x1E) >> 1) -+#define IEEE80211_TSINFO_DIR(a) ((a.byte1 & 0x60) >> 5) -+#define IEEE80211_TSINFO_POLICY(a) ((a.byte1 & 0x80) >> 7 + \ -+ (a.byte2 & 0x01) << 1) -+#define IEEE80211_TSINFO_AGG(a) ((a.byte2 & 0x02) >> 1) -+#define IEEE80211_TSINFO_APSD(a) ((a.byte2 & 0x04) >> 2) -+#define IEEE80211_TSINFO_UP(a) ((a.byte2 & 0x38) >> 3) -+#define IEEE80211_TSINFO_ACK(a) ((a.byte2 & 0xC0) >> 6) -+#define IEEE80211_TSINFO_SCHEDULE(a) ((a.byte3 & 0x01) >> 0) -+ -+#define IEEE80211_SET_TSINFO_TYPE(i, d) (i.byte1 |= (d << 0) & 0x01) -+#define IEEE80211_SET_TSINFO_TSID(i, d) (i.byte1 |= (d << 1) & 0x1E) -+#define IEEE80211_SET_TSINFO_DIR(i, d) (i.byte1 |= (d << 5) & 0x60) -+#define IEEE80211_SET_TSINFO_POLICY(i, d) \ -+do { \ -+ i.byte1 |= (d & 0x01) << 7; \ -+ i.byte2 |= (d & 0x02) >> 1; \ -+} while(0) -+#define IEEE80211_SET_TSINFO_AGG(i, d) (i.byte2 |= (d << 1) & 0x02) -+#define IEEE80211_SET_TSINFO_APSD(i, d) (i.byte2 |= (d << 2) & 0x04) -+#define IEEE80211_SET_TSINFO_UP(i, d) (i.byte2 |= (d << 3) & 0x38) -+#define IEEE80211_SET_TSINFO_ACK(i, d) (i.byte2 |= (d << 6) & 0xC0) -+#define IEEE80211_SET_TSINFO_SCHEDULE(i, d) (i.byte3 |= (d << 0) & 0x01) -+ -+struct ieee80211_ts_info { -+ u8 byte1; -+ u8 byte2; -+ u8 byte3; -+} __attribute__ ((packed)); -+ -+struct ieee80211_elem_tspec { -+ struct ieee80211_ts_info ts_info; -+ __le16 nominal_msdu_size; -+ __le16 max_msdu_size; -+ __le32 min_service_interval; -+ __le32 max_service_interval; -+ __le32 inactivity_interval; -+ __le32 suspension_interval; -+ __le32 service_start_time; -+ __le32 min_data_rate; -+ __le32 mean_data_rate; -+ __le32 peak_data_rate; -+ __le32 burst_size; -+ __le32 delay_bound; -+ __le32 min_phy_rate; -+ __le16 surplus_band_allow; -+ __le16 medium_time; -+} __attribute__ ((packed)); -+ -+ - struct ieee80211_mgmt { - __le16 frame_control; - __le16 duration; -@@ -173,9 +242,51 @@ struct ieee80211_mgmt { - struct { - u8 action_code; - u8 dialog_token; -+ u8 variable[0]; -+ } __attribute__ ((packed)) addts_req; -+ struct { -+ u8 action_code; -+ u8 dialog_token; -+ __le16 status_code; -+ u8 variable[0]; -+ } __attribute__ ((packed)) addts_resp; -+ struct { -+ u8 action_code; -+ struct ieee80211_ts_info ts_info; -+ __le16 reason_code; -+ } __attribute__ ((packed)) delts; -+ struct { -+ u8 action_code; -+ u8 dialog_token; - u8 status_code; - u8 variable[0]; - } __attribute__ ((packed)) wme_action; -+ struct { -+ u8 action_code; -+ u8 dest[6]; -+ u8 src[6]; -+ __le16 capab_info; -+ __le16 timeout; -+ /* Followed by Supported Rates and -+ * Extended Supported Rates */ -+ u8 variable[0]; -+ } __attribute__ ((packed)) dls_req; -+ struct { -+ u8 action_code; -+ __le16 status_code; -+ u8 dest[6]; -+ u8 src[6]; -+ /* Followed by Capability Information, -+ * Supported Rates and Extended -+ * Supported Rates */ -+ u8 variable[0]; -+ } __attribute__ ((packed)) dls_resp; -+ struct { -+ u8 action_code; -+ u8 dest[6]; -+ u8 src[6]; -+ __le16 reason_code; -+ } __attribute__ ((packed)) dls_teardown; - struct{ - u8 action_code; - u8 element_id; -@@ -184,6 +295,25 @@ struct ieee80211_mgmt { - u8 new_chan; - u8 switch_count; - } __attribute__((packed)) chan_switch; -+ struct{ -+ u8 action_code; -+ u8 dialog_token; -+ __le16 capab; -+ __le16 timeout; -+ __le16 start_seq_num; -+ } __attribute__((packed)) addba_req; -+ struct{ -+ u8 action_code; -+ u8 dialog_token; -+ __le16 status; -+ __le16 capab; -+ __le16 timeout; -+ } __attribute__((packed)) addba_resp; -+ struct{ -+ u8 action_code; -+ __le16 params; -+ __le16 reason_code; -+ }__attribute__((packed)) delba; - } u; - } __attribute__ ((packed)) action; - } u; -@@ -270,6 +400,18 @@ enum ieee80211_statuscode { - WLAN_STATUS_UNSUPP_RSN_VERSION = 44, - WLAN_STATUS_INVALID_RSN_IE_CAP = 45, - WLAN_STATUS_CIPHER_SUITE_REJECTED = 46, -+ /* 802.11e */ -+ WLAN_STATUS_UNSPECIFIED_QOS = 32, -+ WLAN_STATUS_ASSOC_DENIED_NOBANDWIDTH = 33, -+ WLAN_STATUS_ASSOC_DENIED_LOWACK = 34, -+ WLAN_STATUS_ASSOC_DENIED_UNSUPP_QOS = 35, -+ WLAN_STATUS_REQUEST_DECLINED = 37, -+ WLAN_STATUS_INVALID_QOS_PARAM = 38, -+ WLAN_STATUS_CHANGE_TSPEC = 39, -+ WLAN_STATUS_WAIT_TS_DELAY = 47, -+ WLAN_STATUS_NO_DIRECT_LINK = 48, -+ WLAN_STATUS_STA_NOT_PRESENT = 49, -+ WLAN_STATUS_STA_NOT_QSTA = 50, - }; - - -@@ -300,9 +442,50 @@ enum ieee80211_reasoncode { - WLAN_REASON_INVALID_RSN_IE_CAP = 22, - WLAN_REASON_IEEE8021X_FAILED = 23, - WLAN_REASON_CIPHER_SUITE_REJECTED = 24, -+ /* 802.11e */ -+ WLAN_REASON_DISASSOC_UNSPECIFIED_QOS = 32, -+ WLAN_REASON_DISASSOC_QAP_NO_BANDWIDTH = 33, -+ WLAN_REASON_DISASSOC_LOW_ACK = 34, -+ WLAN_REASON_DISASSOC_QAP_EXCEED_TXOP = 35, -+ WLAN_REASON_QSTA_LEAVE_QBSS = 36, -+ WLAN_REASON_QSTA_NOT_USE = 37, -+ WLAN_REASON_QSTA_REQUIRE_SETUP = 38, -+ WLAN_REASON_QSTA_TIMEOUT = 39, -+ WLAN_REASON_QSTA_CIPHER_NOT_SUPP = 45, - }; - - -+/* Category Code */ -+enum ieee80211_category { -+ WLAN_CATEGORY_SPECTRUM_MGMT = 0, -+ WLAN_CATEGORY_QOS = 1, -+ WLAN_CATEGORY_DLS = 2, -+ WLAN_CATEGORY_BACK = 3, -+ WLAN_CATEGORY_WMM = 17, -+}; -+ -+/* QoS Action Code */ -+enum ieee80211_qos_actioncode { -+ WLAN_ACTION_QOS_ADDTS_REQ = 0, -+ WLAN_ACTION_QOS_ADDTS_RESP = 1, -+ WLAN_ACTION_QOS_DELTS = 2, -+ WLAN_ACTION_QOS_SCHEDULE = 3, -+}; -+ -+/* DLS Action Code */ -+enum ieee80211_dls_actioncode { -+ WLAN_ACTION_DLS_REQ = 0, -+ WLAN_ACTION_DLS_RESP = 1, -+ WLAN_ACTION_DLS_TEARDOWN = 2, -+}; -+ -+/* BACK Action Code */ -+enum ieee80211_back_actioncode { -+ WLAN_ACTION_ADDBA_REQ = 0, -+ WLAN_ACTION_ADDBA_RESP = 1, -+ WLAN_ACTION_DELBA = 2, -+}; -+ - /* Information Element IDs */ - enum ieee80211_eid { - WLAN_EID_SSID = 0, -@@ -318,6 +501,15 @@ enum ieee80211_eid { - WLAN_EID_HP_PARAMS = 8, - WLAN_EID_HP_TABLE = 9, - WLAN_EID_REQUEST = 10, -+ /* 802.11e */ -+ WLAN_EID_QBSS_LOAD = 11, -+ WLAN_EID_EDCA_PARAM_SET = 12, -+ WLAN_EID_TSPEC = 13, -+ WLAN_EID_TCLAS = 14, -+ WLAN_EID_SCHEDULE = 15, -+ WLAN_EID_TS_DELAY = 43, -+ WLAN_EID_TCLAS_PROCESSING = 44, -+ WLAN_EID_QOS_CAPA = 46, - /* 802.11h */ - WLAN_EID_PWR_CONSTRAINT = 32, - WLAN_EID_PWR_CAPABILITY = 33, -@@ -332,6 +524,9 @@ enum ieee80211_eid { - /* 802.11g */ - WLAN_EID_ERP_INFO = 42, - WLAN_EID_EXT_SUPP_RATES = 50, -+ /* 802.11n */ -+ WLAN_EID_HT_CAPABILITY = 45, -+ WLAN_EID_HT_EXTRA_INFO = 61, - /* 802.11i */ - WLAN_EID_RSN = 48, - WLAN_EID_WPA = 221, -@@ -340,6 +535,9 @@ enum ieee80211_eid { - WLAN_EID_QOS_PARAMETER = 222 - }; - -+/* 80211n */ -+#define IEEE80211_QOS_CONTROL_A_MSDU_PRESENT 0x0080 -+ - /* cipher suite selectors */ - #define WLAN_CIPHER_SUITE_USE_GROUP 0x000FAC00 - #define WLAN_CIPHER_SUITE_WEP40 0x000FAC01 -@@ -350,4 +548,37 @@ enum ieee80211_eid { - - #define WLAN_MAX_KEY_LEN 32 - -+enum ieee80211_tsinfo_direction { -+ WLAN_TSINFO_UPLINK = 0, -+ WLAN_TSINFO_DOWNLINK = 1, -+ WLAN_TSINFO_DIRECTLINK = 2, -+ WLAN_TSINFO_BIDIRECTIONAL = 3, -+}; -+ -+enum ieee80211_tsinfo_access { -+ WLAN_TSINFO_EDCA = 1, -+ WLAN_TSINFO_HCCA = 2, -+ WLAN_TSINFO_HEMM = 3, -+}; -+ -+enum ieee80211_tsinfo_psb { -+ WLAN_TSINFO_PSB_LEGACY = 0, -+ WLAN_TSINFO_PSB_APSD = 1, -+}; -+ -+ -+/* WI-FI Alliance OUI Type and Subtype */ -+enum wifi_oui_type { -+ WIFI_OUI_TYPE_WPA = 1, -+ WIFI_OUI_TYPE_WMM = 2, -+ WIFI_OUI_TYPE_WSC = 4, -+ WIFI_OUI_TYPE_PSD = 6, -+}; -+ -+enum wifi_oui_stype_wmm { -+ WIFI_OUI_STYPE_WMM_INFO = 0, -+ WIFI_OUI_STYPE_WMM_PARAM = 1, -+ WIFI_OUI_STYPE_WMM_TSPEC = 2, -+}; -+ - #endif /* IEEE80211_H */ ---- a/include/linux/nl80211.h -+++ b/include/linux/nl80211.h -@@ -7,6 +7,217 @@ - */ - - /** -+ * enum nl80211_commands - supported nl80211 commands -+ * @NL80211_CMD_UNSPEC: unspecified command to catch errors -+ * @NL80211_CMD_RENAME_WIPHY: rename a wiphy, needs -+ * %NL80211_ATTR_WIPHY and %NL80211_ATTR_WIPHY_NAME -+ * @NL80211_CMD_WIPHY_NEWNAME: rename notification -+ * @NL80211_CMD_GET_CMDLIST: TO BE DEFINED PROPERLY. currently the code makes -+ * it depend on the wiphy only but it really should depend on the -+ * interface type too.... -+ * @NL80211_CMD_NEW_CMDLIST: command list result -+ * @NL80211_CMD_ADD_VIRTUAL_INTERFACE: create a virtual interface for the -+ * wiphy identified by an %NL80211_ATTR_WIPHY attribute with the given -+ * %NL80211_ATTR_IFTYPE and %NL80211_ATTR_IFNAME. -+ * @NL80211_CMD_DEL_VIRTUAL_INTERFACE: destroy a virtual interface identified -+ * by %NL80211_ATTR_IFINDEX. -+ * @NL80211_CMD_CHANGE_VIRTUAL_INTERFACE: change type of virtual interface to -+ * the type given by %NL80211_ATTR_IFTYPE, the interface is identified by -+ * %NL80211_ATTR_IFINDEX. -+ * @NL80211_CMD_GET_WIPHYS: request a list of all wiphys present in the system -+ * @NL80211_CMD_NEW_WIPHYS: returned list of all wiphys -+ * @NL80211_CMD_GET_INTERFACES: request a list of all interfaces belonging to -+ * the wiphy identified by %NL80211_ATTR_WIPHY -+ * @NL80211_CMD_NEW_INTERFACES: result for %NL80211_CMD_GET_INTERFACES -+ * @NL80211_CMD_INITIATE_SCAN: initiate a scan with the passed parameters. THe -+ * parameters may contain %NL80211_ATTR_FLAG_SCAN_ACTIVE, -+ * %NL80211_ATTR_PHYMODE and a list of channels in an -+ * %NL80211_ATTR_CHANNEL_LIST attribute (an array of nested attributes) -+ * containing %NL80211_ATTR_CHANNEL, %NL80211_ATTR_PHYMODE, and possibly -+ * %NL80211_ATTR_FLAG_SCAN_ACTIVE. The outer %NL80211_ATTR_FLAG_SCAN_ACTIVE -+ * is ignored when a channel list is present. -+ * @NL80211_CMD_SCAN_RESULT: scan result, contains an array in -+ * %NL80211_ATTR_BSS_LIST. -+ * @NL80211_CMD_ASSOCIATE: associate with the given parameters -+ * (%NL80211_ATTR_SSID is mandatory, %NL80211_ATTR_TIMEOUT_TU, -+ * %NL80211_ATTR_BSSID, %NL80211_ATTR_CHANNEL, %NL80211_ATTR_PHYMODE, -+ * and %NL80211_ATTR_IE may be given) -+ * @NL80211_CMD_ADD_KEY: add a key with given %NL80211_ATTR_KEY_DATA, -+ * %NL80211_ATTR_KEY_ID, %NL80211_ATTR_KEY_TYPE, %NL80211_ATTR_MAC and -+ * %NL80211_ATTR_KEY_CIPHER attributes. -+ * @NL80211_CMD_DEL_KEY: delete a key identified by %NL80211_ATTR_KEY_ID, -+ * %NL80211_ATTR_KEY_TYPE and %NL80211_ATTR_MAC or all keys. -+ * @__NL80211_CMD_AFTER_LAST: internal use -+ */ -+enum nl80211_commands { -+/* don't change the order or add anything inbetween, this is ABI! */ -+ NL80211_CMD_UNSPEC, -+ /* %input: wiphy, wiphy_name */ -+ NL80211_CMD_RENAME_WIPHY, -+ NL80211_CMD_WIPHY_NEWNAME, -+ /* %input: wiphy|ifindex */ -+ NL80211_CMD_GET_CMDLIST, -+ NL80211_CMD_NEW_CMDLIST, -+ /* %input: wiphy, ifname, {iftype} */ -+ NL80211_CMD_ADD_VIRTUAL_INTERFACE, -+ /* %input: wiphy, ifindex */ -+ NL80211_CMD_DEL_VIRTUAL_INTERFACE, -+ /* %input: ifindex, iftype */ -+ NL80211_CMD_CHANGE_VIRTUAL_INTERFACE, -+ /* %input: */ -+ NL80211_CMD_GET_WIPHYS, -+ NL80211_CMD_NEW_WIPHYS, -+ /* %input: wiphy */ -+ NL80211_CMD_GET_INTERFACES, -+ NL80211_CMD_NEW_INTERFACES, -+ NL80211_CMD_INITIATE_SCAN, -+ NL80211_CMD_SCAN_RESULT, -+ NL80211_CMD_GET_ASSOCIATION, -+ NL80211_CMD_ASSOCIATION_CHANGED, -+ NL80211_CMD_ASSOCIATE, -+ NL80211_CMD_DISASSOCIATE, -+ NL80211_CMD_DEAUTH, -+ NL80211_CMD_GET_AUTH_LIST, -+ NL80211_CMD_NEW_AUTH_LIST, -+ NL80211_CMD_AUTHENTICATION_CHANGED, -+ NL80211_CMD_AP_SET_BEACON, -+ NL80211_CMD_AP_ADD_STA, -+ NL80211_CMD_AP_UPDATE_STA, -+ NL80211_CMD_AP_GET_STA_INFO, -+ NL80211_CMD_AP_SET_RATESETS, -+ NL80211_CMD_ADD_KEY, -+ NL80211_CMD_DEL_KEY, -+ -+ /* add commands here */ -+ -+ /* used to define NL80211_CMD_MAX below */ -+ __NL80211_CMD_AFTER_LAST -+}; -+#define NL80211_CMD_MAX (__NL80211_CMD_AFTER_LAST - 1) -+ -+ -+/** -+ * enum nl80211_attrs - nl80211 netlink attributes -+ * @NL80211_ATTR_UNSPEC: unspecified attribute to catch errors -+ * @NL80211_ATTR_IFINDEX: network interface index of the device to operate on -+ * @NL80211_ATTR_IFNAME: network interface name -+ * @NL80211_ATTR_WIPHY: index of wiphy to operate on, cf. -+ * /sys/class/ieee80211/<phyname>/index -+ * @NL80211_ATTR_WIPHY_NAME: wiphy name (used for renaming) -+ * @NL80211_ATTR_CMDS: list of u8's identifying commands a device supports -+ * @NL80211_ATTR_IFTYPE: type of virtual interface, see &enum nl80211_iftype -+ * @NL80211_ATTR_INTERFACE_LIST: interface array, nested netlink attribute -+ * @NL80211_ATTR_WIPHY_LIST: wiphy array, nested netlink attribute -+ * @NL80211_ATTR_BSSID: BSSID (must be 6 bytes) -+ * @NL80211_ATTR_SSID: SSID (1-32 bytes) -+ * @NL80211_ATTR_CHANNEL: channel number -+ * @NL80211_ATTR_PHYMODE: PHY mode, see &enum nl80211_phymode -+ * @NL80211_ATTR_CHANNEL_LIST: netlink nested attribute array containing scan -+ * parameters for channels -+ * @NL80211_ATTR_BSS_LIST: nested attribute containing an array -+ * @NL80211_ATTR_BSSTYPE: BSS type, see &enum nl80211_bsstype -+ * @NL80211_ATTR_BEACON_PERIOD: beacon period -+ * @NL80211_ATTR_DTIM_PERIOD: DTIM period -+ * @NL80211_ATTR_TIMESTAMP: 64-bit timestamp of received beacon/probe response -+ * @NL80211_ATTR_IE: information element(s), maximum length %NL80211_MAX_IE_LEN -+ * @NL80211_ATTR_AUTH_ALGORITHM: authentication algorithm -+ * @NL80211_ATTR_TIMEOUT_TU: timeout in TU (TO BE USED) -+ * @NL80211_ATTR_REASON_CODE: 802.11 reason code -+ * @NL80211_ATTR_ASSOCIATION_ID: association ID (u16, 1-2007) -+ * @NL80211_ATTR_DEAUTHENTICATED: TO BE USED -+ * @NL80211_ATTR_RX_SENSITIVITY: receiver sensitivity in dBm -+ * @NL80211_ATTR_TRANSMIT_POWER: transmit power in mW -+ * @NL80211_ATTR_FRAG_THRESHOLD: fragmentation threshold (bytes) -+ * @NL80211_ATTR_FLAG_SCAN_ACTIVE: netlink flag indiciating active scan -+ * @NL80211_ATTR_KEY_DATA: temporal key data -+ * @NL80211_ATTR_KEY_ID: key ID (u8, 0-3) -+ * @NL80211_ATTR_KEY_TYPE: key type (see &enum nl80211_keytype) -+ * @NL80211_ATTR_MAC: MAC address -+ * @NL80211_ATTR_KEY_CIPHER: key cipher suite (u32) -+ * @__NL80211_ATTR_AFTER_LAST: internal use -+ */ -+enum nl80211_attrs { -+/* don't change the order or add anything inbetween, this is ABI! */ -+ NL80211_ATTR_UNSPEC, -+ /* %type: u32 */ -+ NL80211_ATTR_IFINDEX, -+ /* %type: nulstring */ -+ NL80211_ATTR_IFNAME, -+ /* %type: u32 */ -+ NL80211_ATTR_WIPHY, -+ /* %type: nulstring */ -+ NL80211_ATTR_WIPHY_NAME, -+ NL80211_ATTR_CMDS, -+ /* %type: u32 */ -+ NL80211_ATTR_IFTYPE, -+ NL80211_ATTR_INTERFACE_LIST, -+ NL80211_ATTR_WIPHY_LIST, -+ NL80211_ATTR_BSSID, -+ NL80211_ATTR_SSID, -+ NL80211_ATTR_CHANNEL, -+ NL80211_ATTR_PHYMODE, -+ NL80211_ATTR_CHANNEL_LIST, -+ NL80211_ATTR_BSS_LIST, -+ NL80211_ATTR_BSSTYPE, -+ NL80211_ATTR_BEACON_PERIOD, -+ NL80211_ATTR_DTIM_PERIOD, -+ NL80211_ATTR_TIMESTAMP, -+ NL80211_ATTR_IE, -+ NL80211_ATTR_AUTH_ALGORITHM, -+ NL80211_ATTR_TIMEOUT_TU, -+ NL80211_ATTR_REASON_CODE, -+ NL80211_ATTR_ASSOCIATION_ID, -+ NL80211_ATTR_DEAUTHENTICATED, -+ NL80211_ATTR_RX_SENSITIVITY, -+ NL80211_ATTR_TRANSMIT_POWER, -+ NL80211_ATTR_FRAG_THRESHOLD, -+ NL80211_ATTR_FLAG_SCAN_ACTIVE, -+ -+ NL80211_ATTR_KEY_DATA, -+ NL80211_ATTR_KEY_ID, -+ NL80211_ATTR_KEY_TYPE, -+ NL80211_ATTR_MAC, -+ NL80211_ATTR_KEY_CIPHER, -+ -+ NL80211_ATTR_BEACON_HEAD, -+ NL80211_ATTR_BEACON_TAIL, -+ -+ /* add attributes here, update the policy in nl80211.c */ -+ -+ /* used to define NL80211_ATTR_MAX below */ -+ __NL80211_ATTR_AFTER_LAST, -+}; -+#define NL80211_ATTR_MAX (__NL80211_ATTR_AFTER_LAST - 1) -+ -+/** -+ * enum nl80211_multicast_groups - multicast groups for nl80211 -+ * @NL80211_GROUP_CONFIG: members of this group are notified of -+ * configuration changes -+ */ -+enum nl80211_multicast_groups { -+ /* be notified of configuration changes like wiphy renames */ -+ NL80211_GROUP_CONFIG, -+ -+ /* add groups here */ -+ -+ /* keep last */ -+ __NL80211_GROUP_AFTER_LAST -+}; -+#define NL80211_GROUP_MAX (__NL80211_GROUP_AFTER_LAST - 1) -+ -+/* -+ * maximum length of IE(s) passed in an NL80211_ATTR_IE. -+ * this is an arbitrary limit, 774 means three full-length -+ * IEs would fit... increase if necessary */ -+#define NL80211_MAX_IE_LEN 774 -+ -+/* -+ * maximum number of items in an ATTR_CHANNEL_LIST, -+ * just to avoid too large allocations -+ */ -+#define NL80211_MAX_CHANNEL_LIST_ITEM 200 -+ -+/** - * enum nl80211_iftype - (virtual) interface types - * @NL80211_IFTYPE_UNSPECIFIED: unspecified type, driver decides - * @NL80211_IFTYPE_ADHOC: independent BSS member -@@ -35,4 +246,56 @@ enum nl80211_iftype { - }; - #define NL80211_IFTYPE_MAX (__NL80211_IFTYPE_AFTER_LAST - 1) - -+/** -+ * enum nl80211_phymode - PHY modes -+ * @NL80211_PHYMODE_A: 5 GHz PHY -+ * @NL80211_PHYMODE_B: 2.4 GHz PHY (B mode) -+ * @NL80211_PHYMODE_G: 2.4 GHz PHY (G, compatible with B) -+ * @__NL80211_PHYMODE_AFTER_LAST: internal use -+ * -+ * These values are used for %NL80211_ATTR_PHYMODE. -+ */ -+enum nl80211_phymode { -+ NL80211_PHYMODE_A, -+ NL80211_PHYMODE_B, -+ NL80211_PHYMODE_G, -+ -+ /* keep last */ -+ __NL80211_PHYMODE_AFTER_LAST -+}; -+#define NL80211_PHYMODE_MAX (__NL80211_PHYMODE_AFTER_LAST - 1) -+ -+/** -+ * enum nl80211_bsstype - BSS types -+ * @NL80211_BSSTYPE_INFRASTRUCTURE: infrastructure BSS -+ * @NL80211_BSSTYPE_INDEPENDENT: independent BSS (ad-hoc network) -+ * @__NL80211_BSSTYPE_AFTER_LAST: internal use -+ * -+ * These values are used for %NL80211_ATTR_BSSTYPE. -+ */ -+enum nl80211_bsstype { -+ NL80211_BSSTYPE_INFRASTRUCTURE, -+ NL80211_BSSTYPE_INDEPENDENT, -+ -+ /* keep last */ -+ __NL80211_BSSTYPE_AFTER_LAST -+}; -+#define NL80211_BSSTYPE_MAX (__NL80211_BSSTYPE_AFTER_LAST - 1) -+ -+/** -+ * enum nl80211_keytype - key types -+ * @NL80211_KEYTYPE_GROUP: group key -+ * @NL80211_KEYTYPE_PAIRWISE: pairwise key -+ * @NL80211_KEYTYPE_PEER: peer key -+ */ -+enum nl80211_keytype { -+ NL80211_KEYTYPE_GROUP, -+ NL80211_KEYTYPE_PAIRWISE, -+ NL80211_KEYTYPE_PEER, -+ -+ /* keep last */ -+ __NL80211_KEYTYPE_AFTER_LAST -+}; -+#define NL80211_KEYTYPE_MAX (__NL80211_KEYTYPE_AFTER_LAST - 1) -+ - #endif /* __LINUX_NL80211_H */ ---- a/include/net/cfg80211.h -+++ b/include/net/cfg80211.h -@@ -3,6 +3,7 @@ - - #include <linux/netlink.h> - #include <linux/skbuff.h> -+#include <linux/nl80211.h> - #include <net/genetlink.h> - - /* -@@ -49,6 +50,69 @@ extern int ieee80211_radiotap_iterator_n - struct ieee80211_radiotap_iterator *iterator); - - -+/** -+ * struct scan_channel - describes a single channel to scan -+ * @phymode: PHY mode for this channel -+ * @channel: channel number (1-14, ...) -+ * @active: scan actively or passively on this channel -+ */ -+struct scan_channel { -+ enum nl80211_phymode phymode; -+ u32 channel; -+ int active; -+}; -+ -+/** -+ * struct scan_params - describes scan parameters -+ * @n_channels: number of items in @channels array or -1 to indicate all -+ * channels should be scanned (in that case @channels will be %NULL) -+ * @active: when n_channels is -1 this determines active/passive scanning. -+ * @phymode: when n_channels is -1 this determines PHY mode to scan. It is -+ * not possible to scan different PHY modes in one request w/o giving -+ * a channel list. -+ * @channels: array containing @n_channels &struct scan_channel items -+ */ -+struct scan_params { -+ int n_channels; -+ int active; -+ enum nl80211_phymode phymode; -+ struct scan_channel *channels; -+}; -+ -+/** -+ * struct association_params - describes association parameters -+ * @valid: this member contains flags which items are valid -+ * @bssid: the BSSID of the BSS to associate [%ASSOC_PARAMS_BSSID] -+ * @timeout: timeout (in TU) [%ASSOC_PARAMS_TIMEOUT] -+ * @ie: information element(s) to include in the association frames [%ASSOC_PARAMS_IE] -+ * @ie_len: length of the information element(s) -+ * @ssid: the SSID, always valid. -+ * @ssid_len: length of the SSID -+ */ -+struct association_params { -+ u8 *bssid; -+ u32 timeout; -+ u8 *ie; -+ int ie_len; -+ u8 *ssid; -+ int ssid_len; -+ -+ unsigned int valid; -+}; -+#define ASSOC_PARAMS_TIMEOUT (1<<0) -+ -+/** -+ * struct key_params - key information -+ */ -+struct key_params { -+ u8 *key; -+ int key_len; -+ int key_id; -+ u32 key_type; -+ u8 *macaddress; -+ u32 cipher; -+}; -+ - /* from net/wireless.h */ - struct wiphy; - -@@ -68,11 +132,62 @@ struct wiphy; - * @add_virtual_intf: create a new virtual interface with the given name - * - * @del_virtual_intf: remove the virtual interface determined by ifindex. -+ * -+ * @change_virtual_intf: change type of virtual interface -+ * -+ * @associate: associate with given parameters -+ * -+ * @disassociate: disassociate from current AP -+ * -+ * @deauth: deauth from current AP -+ * -+ * @initiate_scan: scan with the given information (see &struct scan_params above) -+ * -+ * @get_association: get BSSID of the BSS that the device is currently -+ * associated to and return 1, or return 0 if not -+ * associated (or a negative error code) -+ * @get_auth_list: get list of BSSIDs of all BSSs the device has -+ * authenticated with, must call next_bssid for each, -+ * next_bssid returns non-zero on error, the given data -+ * is to be passed to that callback -+ * @add_key: add a key using &struct key_params -+ * @del_key: delete a key using info from &struct key_params - */ - struct cfg80211_ops { - int (*add_virtual_intf)(struct wiphy *wiphy, char *name, -- unsigned int type); -+ enum nl80211_iftype type); - int (*del_virtual_intf)(struct wiphy *wiphy, int ifindex); -+ int (*change_virtual_intf)(struct wiphy *wiphy, int ifindex, -+ enum nl80211_iftype type); -+ -+ int (*associate)(struct wiphy *wiphy, struct net_device *dev, -+ struct association_params *params); -+ int (*disassociate)(struct wiphy *wiphy, struct net_device *dev); -+ int (*deauth)(struct wiphy *wiphy, struct net_device *dev); -+ -+ -+ int (*initiate_scan)(struct wiphy *wiphy, struct net_device *dev, -+ struct scan_params *params); -+ -+ -+ int (*get_association)(struct wiphy *wiphy, struct net_device *dev, -+ u8 *bssid); -+ -+ int (*get_auth_list)(struct wiphy *wiphy, struct net_device *dev, -+ void *data, -+ int (*next_bssid)(void *data, u8 *bssid)); -+ -+ int (*add_key)(struct wiphy *wiphy, struct net_device *dev, -+ struct key_params *params); -+ int (*del_key)(struct wiphy *wiphy, struct net_device *dev, -+ struct key_params *params); - }; - -+ -+/* helper functions specific to nl80211 */ -+extern void *nl80211hdr_put(struct sk_buff *skb, u32 pid, -+ u32 seq, int flags, u8 cmd); -+extern void *nl80211msg_new(struct sk_buff **skb, u32 pid, -+ u32 seq, int flags, u8 cmd); -+ - #endif /* __NET_CFG80211_H */ ---- a/include/net/iw_handler.h -+++ b/include/net/iw_handler.h -@@ -431,7 +431,13 @@ struct iw_public_data { - * Those may be called only within the kernel. - */ - --/* functions that may be called by driver modules */ -+/* First : function strictly used inside the kernel */ -+ -+/* Handle /proc/net/wireless, called in net/code/dev.c */ -+extern int dev_get_wireless_info(char * buffer, char **start, off_t offset, -+ int length); -+ -+/* Second : functions that may be called by driver modules */ - - /* Send a single event to user space */ - extern void wireless_send_event(struct net_device * dev, ---- a/include/net/mac80211.h -+++ b/include/net/mac80211.h -@@ -300,7 +300,6 @@ struct ieee80211_conf { - /* Following five fields are used for IEEE 802.11H */ - unsigned int radar_detect; - unsigned int spect_mgmt; -- /* All following fields are currently unused. */ - unsigned int quiet_duration; /* duration of quiet period */ - unsigned int quiet_offset; /* how far into the beacon is the quiet - * period */ -@@ -521,6 +520,9 @@ struct ieee80211_hw { - * per-packet RC4 key with each TX frame when doing hwcrypto */ - #define IEEE80211_HW_TKIP_REQ_PHASE2_KEY (1<<14) - -+ /* The device capable of supporting 11n */ -+#define IEEE80211_HW_SUPPORT_HT_MODE (1<<15) -+ - u32 flags; /* hardware flags defined above */ - - /* Set to the size of a needed device specific skb headroom for TX skbs. */ -@@ -649,8 +651,7 @@ struct ieee80211_ops { - * used if the wlan hardware or low-level driver implements PAE. - * 80211.o module will anyway filter frames based on authorization - * state, so this function pointer can be NULL if low-level driver does -- * not require event notification about port state changes. -- * Currently unused. */ -+ * not require event notification about port state changes. */ - int (*set_port_auth)(struct ieee80211_hw *hw, u8 *addr, - int authorized); - -@@ -702,8 +703,9 @@ struct ieee80211_ops { - /* Get statistics of the current TX queue status. This is used to get - * number of currently queued packets (queue length), maximum queue - * size (limit), and total number of packets sent using each TX queue -- * (count). -- * Currently unused. */ -+ * (count). This information is used for WMM to find out which TX -+ * queues have room for more packets and by hostapd to provide -+ * statistics about the current queueing state to external programs. */ - int (*get_tx_stats)(struct ieee80211_hw *hw, - struct ieee80211_tx_queue_stats *stats); - -@@ -713,12 +715,25 @@ struct ieee80211_ops { - * Must be atomic. */ - u64 (*get_tsf)(struct ieee80211_hw *hw); - -+ /* Call low level driver with 11n Block Ack action */ -+ int (*handle_ba_action)(struct ieee80211_hw *hw, -+ struct ieee80211_mgmt *mgmt); -+ - /* Reset the TSF timer and allow firmware/hardware to synchronize with - * other STAs in the IBSS. This is only used in IBSS mode. This - * function is optional if the firmware/hardware takes full care of - * TSF synchronization. */ - void (*reset_tsf)(struct ieee80211_hw *hw); - -+ /* Configure ht parameters. */ -+ int (*conf_ht)(struct ieee80211_hw *hw, -+ struct ieee80211_ht_capability *ht_cap_param, -+ struct ieee80211_ht_additional_info *ht_extra_param); -+ -+ /* Get ht capabilities from the device */ -+ void (*get_ht_capab)(struct ieee80211_hw *hw, -+ struct ieee80211_ht_capability *ht_cap_param); -+ - /* Setup beacon data for IBSS beacons. Unlike access point (Master), - * IBSS uses a fixed beacon frame which is configured using this - * function. This handler is required only for IBSS mode. */ |