mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-03 22:44:27 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			817 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			817 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
Index: linux-2.6.22.19/include/linux/ieee80211.h
 | 
						|
===================================================================
 | 
						|
--- linux-2.6.22.19.orig/include/linux/ieee80211.h
 | 
						|
+++ linux-2.6.22.19/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;
 | 
						|
@@ -259,6 +389,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,
 | 
						|
 };
 | 
						|
 
 | 
						|
 
 | 
						|
@@ -289,9 +431,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,
 | 
						|
@@ -307,6 +490,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,
 | 
						|
@@ -321,6 +513,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,
 | 
						|
@@ -329,6 +524,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
 | 
						|
@@ -339,4 +537,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 */
 | 
						|
Index: linux-2.6.22.19/include/linux/nl80211.h
 | 
						|
===================================================================
 | 
						|
--- linux-2.6.22.19.orig/include/linux/nl80211.h
 | 
						|
+++ linux-2.6.22.19/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 */
 | 
						|
Index: linux-2.6.22.19/include/net/cfg80211.h
 | 
						|
===================================================================
 | 
						|
--- linux-2.6.22.19.orig/include/net/cfg80211.h
 | 
						|
+++ linux-2.6.22.19/include/net/cfg80211.h
 | 
						|
@@ -3,6 +3,7 @@
 | 
						|
 
 | 
						|
 #include <linux/netlink.h>
 | 
						|
 #include <linux/skbuff.h>
 | 
						|
+#include <linux/nl80211.h>
 | 
						|
 #include <net/genetlink.h>
 | 
						|
 
 | 
						|
 /*
 | 
						|
@@ -11,6 +12,69 @@
 | 
						|
  * Copyright 2006 Johannes Berg <johannes@sipsolutions.net>
 | 
						|
  */
 | 
						|
 
 | 
						|
+/**
 | 
						|
+ * 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;
 | 
						|
 
 | 
						|
@@ -30,11 +94,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 */
 | 
						|
Index: linux-2.6.22.19/include/net/iw_handler.h
 | 
						|
===================================================================
 | 
						|
--- linux-2.6.22.19.orig/include/net/iw_handler.h
 | 
						|
+++ linux-2.6.22.19/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,
 | 
						|
Index: linux-2.6.22.19/include/net/mac80211.h
 | 
						|
===================================================================
 | 
						|
--- linux-2.6.22.19.orig/include/net/mac80211.h
 | 
						|
+++ linux-2.6.22.19/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 */
 | 
						|
@@ -514,6 +513,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. */
 | 
						|
@@ -641,8 +643,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);
 | 
						|
 
 | 
						|
@@ -694,8 +695,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);
 | 
						|
 
 | 
						|
@@ -705,12 +707,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. */
 |