Linux wireless drivers development
 help / color / mirror / Atom feed
* [PATCH V2] b43: Fix Bugzilla #14181 and the bug from the previous 'fix'
From: Larry Finger @ 2009-10-16 15:18 UTC (permalink / raw)
  To: John W Linville; +Cc: linux-wireless

Commit 93bad2b757586fb153ef73b028953a8dcaccde77 entitled "b43: Fix PPC crash
in rfkill polling on unload" fixed the bug reported in Bugzilla No. 14181;
however, it introduced a new bug. Whenever the radio switch was turned off,
it was necessary to unload and reload the driver for it to recognize the
switch again.

This patch fixes both the original bug in #14181 and the bug introduced by
the previous patch. It must be stated, however, that if there is a BCM4306/3
with an rfkill switch (not yet proven), then the driver will need an
unload/reload cycle to turn the device back on.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
---

Index: wireless-testing/drivers/net/wireless/b43/main.c
===================================================================
--- wireless-testing.orig/drivers/net/wireless/b43/main.c
+++ wireless-testing/drivers/net/wireless/b43/main.c
@@ -4501,7 +4501,6 @@ static void b43_op_stop(struct ieee80211
 
 	cancel_work_sync(&(wl->beacon_update_trigger));
 
-	wiphy_rfkill_stop_polling(hw->wiphy);
 	mutex_lock(&wl->mutex);
 	if (b43_status(dev) >= B43_STAT_STARTED) {
 		dev = b43_wireless_core_stop(dev);
Index: wireless-testing/drivers/net/wireless/b43/rfkill.c
===================================================================
--- wireless-testing.orig/drivers/net/wireless/b43/rfkill.c
+++ wireless-testing/drivers/net/wireless/b43/rfkill.c
@@ -33,7 +33,8 @@ bool b43_is_hw_radio_enabled(struct b43_
 		      & B43_MMIO_RADIO_HWENABLED_HI_MASK))
 			return 1;
 	} else {
-		if (b43_read16(dev, B43_MMIO_RADIO_HWENABLED_LO)
+		if (b43_status(dev) >= B43_STAT_STARTED &&
+		    b43_read16(dev, B43_MMIO_RADIO_HWENABLED_LO)
 		    & B43_MMIO_RADIO_HWENABLED_LO_MASK)
 			return 1;
 	}

^ permalink raw reply

* Re: [PATCH 1/1] staging/stlc45xx: Fix compile error
From: Greg KH @ 2009-10-16 15:23 UTC (permalink / raw)
  To: Javier Martinez Canillas
  Cc: Kalle Valo, devel@driverdev.osuosl.org, linux-wireless
In-Reply-To: <390803460910160711i5f7edcc3ue737c05a8b1495b1@mail.gmail.com>

On Fri, Oct 16, 2009 at 10:11:22AM -0400, Javier Martinez Canillas wrote:
> If you agree I could take the task to mantain stlc45xx. I have the
> time, the motivation and I think the skills to do it.
> 
> At least I could make it compile when the API changes and work on bugs
> reported until you are confident that p54spi driver is good enough and
> there is no need anymore for stlc45xx.

Great, care to send me a patch adding a TODO file for this driver so
that we can keep the info straight?

thanks,

greg k-h

^ permalink raw reply

* [PATCH] libertas: cleanup host.h and hostcmd.h
From: Holger Schurig @ 2009-10-16 15:32 UTC (permalink / raw)
  To: linux-wireless, John Linville, Dan Williams

Also remove some unused definitions and make tab usage consistent.

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>

---
No functional changes!

--- linux-wl.orig/drivers/net/wireless/libertas/host.h
+++ linux-wl/drivers/net/wireless/libertas/host.h
@@ -1,202 +1,189 @@
 /**
-  * This file contains definitions of WLAN commands.
+  * This file function prototypes, data structure
+  * and  definitions for all the host/station commands
   */
 
 #ifndef _LBS_HOST_H_
 #define _LBS_HOST_H_
 
-/** PUBLIC DEFINITIONS */
-#define DEFAULT_AD_HOC_CHANNEL			6
-#define	DEFAULT_AD_HOC_CHANNEL_A		36
+#include "11d.h"
 
-#define CMD_OPTION_WAITFORRSP			0x0002
+#define DEFAULT_AD_HOC_CHANNEL                  6
+
+#define CMD_OPTION_WAITFORRSP                   0x0002
 
 /** Host command IDs */
 
 /* Return command are almost always the same as the host command, but with
  * bit 15 set high.  There are a few exceptions, though...
  */
-#define CMD_RET(cmd)			(0x8000 | cmd)
+#define CMD_RET(cmd)                            (0x8000 | cmd)
 
 /* Return command convention exceptions: */
-#define CMD_RET_802_11_ASSOCIATE		0x8012
+#define CMD_RET_802_11_ASSOCIATE                0x8012
 
 /* Command codes */
-#define CMD_GET_HW_SPEC				0x0003
-#define	CMD_EEPROM_UPDATE			0x0004
-#define CMD_802_11_RESET			0x0005
-#define	CMD_802_11_SCAN				0x0006
-#define CMD_802_11_GET_LOG			0x000b
-#define CMD_MAC_MULTICAST_ADR			0x0010
-#define CMD_802_11_AUTHENTICATE			0x0011
-#define CMD_802_11_EEPROM_ACCESS		0x0059
-#define CMD_802_11_ASSOCIATE			0x0050
-#define CMD_802_11_SET_WEP			0x0013
-#define CMD_802_11_GET_STAT			0x0014
-#define CMD_802_3_GET_STAT			0x0015
-#define CMD_802_11_SNMP_MIB			0x0016
-#define CMD_MAC_REG_MAP				0x0017
-#define CMD_BBP_REG_MAP				0x0018
-#define CMD_MAC_REG_ACCESS			0x0019
-#define CMD_BBP_REG_ACCESS			0x001a
-#define CMD_RF_REG_ACCESS			0x001b
-#define CMD_802_11_RADIO_CONTROL		0x001c
-#define CMD_802_11_RF_CHANNEL			0x001d
-#define CMD_802_11_RF_TX_POWER			0x001e
-#define CMD_802_11_RSSI				0x001f
-#define CMD_802_11_RF_ANTENNA			0x0020
-#define CMD_802_11_PS_MODE			0x0021
-#define CMD_802_11_DATA_RATE			0x0022
-#define CMD_RF_REG_MAP				0x0023
-#define CMD_802_11_DEAUTHENTICATE		0x0024
-#define CMD_802_11_REASSOCIATE			0x0025
-#define CMD_MAC_CONTROL				0x0028
-#define CMD_802_11_AD_HOC_START			0x002b
-#define CMD_802_11_AD_HOC_JOIN			0x002c
-#define CMD_802_11_QUERY_TKIP_REPLY_CNTRS	0x002e
-#define CMD_802_11_ENABLE_RSN			0x002f
-#define CMD_802_11_SET_AFC			0x003c
-#define CMD_802_11_GET_AFC			0x003d
-#define CMD_802_11_DEEP_SLEEP                  0x003e
-#define CMD_802_11_AD_HOC_STOP			0x0040
-#define CMD_802_11_HOST_SLEEP_CFG		0x0043
-#define CMD_802_11_WAKEUP_CONFIRM		0x0044
-#define CMD_802_11_HOST_SLEEP_ACTIVATE		0x0045
-#define CMD_802_11_BEACON_STOP			0x0049
-#define CMD_802_11_MAC_ADDRESS			0x004d
-#define CMD_802_11_LED_GPIO_CTRL		0x004e
-#define CMD_802_11_EEPROM_ACCESS		0x0059
-#define CMD_802_11_BAND_CONFIG			0x0058
-#define CMD_GSPI_BUS_CONFIG			0x005a
-#define CMD_802_11D_DOMAIN_INFO			0x005b
-#define CMD_802_11_KEY_MATERIAL			0x005e
-#define CMD_802_11_SLEEP_PARAMS			0x0066
-#define CMD_802_11_INACTIVITY_TIMEOUT		0x0067
-#define CMD_802_11_SLEEP_PERIOD			0x0068
-#define CMD_802_11_TPC_CFG			0x0072
-#define CMD_802_11_PA_CFG			0x0073
-#define CMD_802_11_FW_WAKE_METHOD		0x0074
-#define CMD_802_11_SUBSCRIBE_EVENT		0x0075
-#define CMD_802_11_RATE_ADAPT_RATESET		0x0076
-#define CMD_802_11_TX_RATE_QUERY		0x007f
-#define	CMD_GET_TSF				0x0080
-#define CMD_BT_ACCESS				0x0087
-#define CMD_FWT_ACCESS				0x0095
-#define CMD_802_11_MONITOR_MODE			0x0098
-#define CMD_MESH_ACCESS				0x009b
-#define CMD_MESH_CONFIG_OLD			0x00a3
-#define CMD_MESH_CONFIG				0x00ac
-#define	CMD_SET_BOOT2_VER			0x00a5
-#define	CMD_FUNC_INIT				0x00a9
-#define	CMD_FUNC_SHUTDOWN			0x00aa
-#define CMD_802_11_BEACON_CTRL			0x00b0
+#define CMD_GET_HW_SPEC                         0x0003
+#define CMD_EEPROM_UPDATE                       0x0004
+#define CMD_802_11_RESET                        0x0005
+#define CMD_802_11_SCAN                         0x0006
+#define CMD_802_11_GET_LOG                      0x000b
+#define CMD_MAC_MULTICAST_ADR                   0x0010
+#define CMD_802_11_AUTHENTICATE                 0x0011
+#define CMD_802_11_EEPROM_ACCESS                0x0059
+#define CMD_802_11_ASSOCIATE                    0x0050
+#define CMD_802_11_SET_WEP                      0x0013
+#define CMD_802_11_GET_STAT                     0x0014
+#define CMD_802_3_GET_STAT                      0x0015
+#define CMD_802_11_SNMP_MIB                     0x0016
+#define CMD_MAC_REG_MAP                         0x0017
+#define CMD_BBP_REG_MAP                         0x0018
+#define CMD_MAC_REG_ACCESS                      0x0019
+#define CMD_BBP_REG_ACCESS                      0x001a
+#define CMD_RF_REG_ACCESS                       0x001b
+#define CMD_802_11_RADIO_CONTROL                0x001c
+#define CMD_802_11_RF_CHANNEL                   0x001d
+#define CMD_802_11_RF_TX_POWER                  0x001e
+#define CMD_802_11_RSSI                         0x001f
+#define CMD_802_11_RF_ANTENNA                   0x0020
+#define CMD_802_11_PS_MODE                      0x0021
+#define CMD_802_11_DATA_RATE                    0x0022
+#define CMD_RF_REG_MAP                          0x0023
+#define CMD_802_11_DEAUTHENTICATE               0x0024
+#define CMD_802_11_REASSOCIATE                  0x0025
+#define CMD_MAC_CONTROL                         0x0028
+#define CMD_802_11_AD_HOC_START                 0x002b
+#define CMD_802_11_AD_HOC_JOIN                  0x002c
+#define CMD_802_11_QUERY_TKIP_REPLY_CNTRS       0x002e
+#define CMD_802_11_ENABLE_RSN                   0x002f
+#define CMD_802_11_SET_AFC                      0x003c
+#define CMD_802_11_GET_AFC                      0x003d
+#define CMD_802_11_DEEP_SLEEP                   0x003e
+#define CMD_802_11_AD_HOC_STOP                  0x0040
+#define CMD_802_11_HOST_SLEEP_CFG               0x0043
+#define CMD_802_11_WAKEUP_CONFIRM               0x0044
+#define CMD_802_11_HOST_SLEEP_ACTIVATE          0x0045
+#define CMD_802_11_BEACON_STOP                  0x0049
+#define CMD_802_11_MAC_ADDRESS                  0x004d
+#define CMD_802_11_LED_GPIO_CTRL                0x004e
+#define CMD_802_11_EEPROM_ACCESS                0x0059
+#define CMD_802_11_BAND_CONFIG                  0x0058
+#define CMD_GSPI_BUS_CONFIG                     0x005a
+#define CMD_802_11D_DOMAIN_INFO                 0x005b
+#define CMD_802_11_KEY_MATERIAL                 0x005e
+#define CMD_802_11_SLEEP_PARAMS                 0x0066
+#define CMD_802_11_INACTIVITY_TIMEOUT           0x0067
+#define CMD_802_11_SLEEP_PERIOD                 0x0068
+#define CMD_802_11_TPC_CFG                      0x0072
+#define CMD_802_11_PA_CFG                       0x0073
+#define CMD_802_11_FW_WAKE_METHOD               0x0074
+#define CMD_802_11_SUBSCRIBE_EVENT              0x0075
+#define CMD_802_11_RATE_ADAPT_RATESET           0x0076
+#define CMD_802_11_TX_RATE_QUERY                0x007f
+#define CMD_GET_TSF                             0x0080
+#define CMD_BT_ACCESS                           0x0087
+#define CMD_FWT_ACCESS                          0x0095
+#define CMD_802_11_MONITOR_MODE                 0x0098
+#define CMD_MESH_ACCESS                         0x009b
+#define CMD_MESH_CONFIG_OLD                     0x00a3
+#define CMD_MESH_CONFIG                         0x00ac
+#define CMD_SET_BOOT2_VER                       0x00a5
+#define CMD_FUNC_INIT                           0x00a9
+#define CMD_FUNC_SHUTDOWN                       0x00aa
+#define CMD_802_11_BEACON_CTRL                  0x00b0
 
 /* For the IEEE Power Save */
-#define CMD_SUBCMD_ENTER_PS		0x0030
-#define CMD_SUBCMD_EXIT_PS		0x0031
-#define CMD_SUBCMD_SLEEP_CONFIRMED	0x0034
-#define CMD_SUBCMD_FULL_POWERDOWN	0x0035
-#define CMD_SUBCMD_FULL_POWERUP		0x0036
-
-#define CMD_ENABLE_RSN			0x0001
-#define CMD_DISABLE_RSN			0x0000
-
-#define CMD_ACT_GET			0x0000
-#define CMD_ACT_SET			0x0001
-#define CMD_ACT_GET_AES			0x0002
-#define CMD_ACT_SET_AES			0x0003
-#define CMD_ACT_REMOVE_AES		0x0004
+#define CMD_SUBCMD_ENTER_PS                     0x0030
+#define CMD_SUBCMD_EXIT_PS                      0x0031
+#define CMD_SUBCMD_SLEEP_CONFIRMED              0x0034
+#define CMD_SUBCMD_FULL_POWERDOWN               0x0035
+#define CMD_SUBCMD_FULL_POWERUP                 0x0036
 
-/* Define action or option for CMD_802_11_SET_WEP */
-#define CMD_ACT_ADD			0x0002
-#define CMD_ACT_REMOVE			0x0004
-#define CMD_ACT_USE_DEFAULT		0x0008
+#define CMD_ENABLE_RSN                          0x0001
+#define CMD_DISABLE_RSN                         0x0000
 
-#define CMD_TYPE_WEP_40_BIT		0x01
-#define CMD_TYPE_WEP_104_BIT		0x02
+#define CMD_ACT_GET                             0x0000
+#define CMD_ACT_SET                             0x0001
 
-#define CMD_NUM_OF_WEP_KEYS		4
+/* Define action or option for CMD_802_11_SET_WEP */
+#define CMD_ACT_ADD                             0x0002
+#define CMD_ACT_REMOVE                          0x0004
 
-#define CMD_WEP_KEY_INDEX_MASK		0x3fff
+#define CMD_TYPE_WEP_40_BIT                     0x01
+#define CMD_TYPE_WEP_104_BIT                    0x02
 
-/* Define action or option for CMD_802_11_RESET */
-#define CMD_ACT_HALT			0x0003
+#define CMD_NUM_OF_WEP_KEYS                     4
+
+#define CMD_WEP_KEY_INDEX_MASK                  0x3fff
 
 /* Define action or option for CMD_802_11_SCAN */
-#define CMD_BSS_TYPE_BSS		0x0001
-#define CMD_BSS_TYPE_IBSS		0x0002
-#define CMD_BSS_TYPE_ANY		0x0003
+#define CMD_BSS_TYPE_BSS                        0x0001
+#define CMD_BSS_TYPE_IBSS                       0x0002
+#define CMD_BSS_TYPE_ANY                        0x0003
 
 /* Define action or option for CMD_802_11_SCAN */
-#define CMD_SCAN_TYPE_ACTIVE		0x0000
-#define CMD_SCAN_TYPE_PASSIVE		0x0001
+#define CMD_SCAN_TYPE_ACTIVE                    0x0000
+#define CMD_SCAN_TYPE_PASSIVE                   0x0001
 
-#define CMD_SCAN_RADIO_TYPE_BG		0
+#define CMD_SCAN_RADIO_TYPE_BG                  0
 
-#define	CMD_SCAN_PROBE_DELAY_TIME	0
+#define CMD_SCAN_PROBE_DELAY_TIME               0
 
 /* Define action or option for CMD_MAC_CONTROL */
-#define CMD_ACT_MAC_RX_ON			0x0001
-#define CMD_ACT_MAC_TX_ON			0x0002
-#define CMD_ACT_MAC_LOOPBACK_ON			0x0004
-#define CMD_ACT_MAC_WEP_ENABLE			0x0008
-#define CMD_ACT_MAC_INT_ENABLE			0x0010
-#define CMD_ACT_MAC_MULTICAST_ENABLE		0x0020
-#define CMD_ACT_MAC_BROADCAST_ENABLE		0x0040
-#define CMD_ACT_MAC_PROMISCUOUS_ENABLE		0x0080
-#define CMD_ACT_MAC_ALL_MULTICAST_ENABLE	0x0100
-#define CMD_ACT_MAC_STRICT_PROTECTION_ENABLE	0x0400
+#define CMD_ACT_MAC_RX_ON                       0x0001
+#define CMD_ACT_MAC_TX_ON                       0x0002
+#define CMD_ACT_MAC_LOOPBACK_ON                 0x0004
+#define CMD_ACT_MAC_WEP_ENABLE                  0x0008
+#define CMD_ACT_MAC_INT_ENABLE                  0x0010
+#define CMD_ACT_MAC_MULTICAST_ENABLE            0x0020
+#define CMD_ACT_MAC_BROADCAST_ENABLE            0x0040
+#define CMD_ACT_MAC_PROMISCUOUS_ENABLE          0x0080
+#define CMD_ACT_MAC_ALL_MULTICAST_ENABLE        0x0100
+#define CMD_ACT_MAC_STRICT_PROTECTION_ENABLE    0x0400
 
 /* Event flags for CMD_802_11_SUBSCRIBE_EVENT */
-#define CMD_SUBSCRIBE_RSSI_LOW		0x0001
-#define CMD_SUBSCRIBE_SNR_LOW		0x0002
-#define CMD_SUBSCRIBE_FAILCOUNT		0x0004
-#define CMD_SUBSCRIBE_BCNMISS		0x0008
-#define CMD_SUBSCRIBE_RSSI_HIGH		0x0010
-#define CMD_SUBSCRIBE_SNR_HIGH		0x0020
-
-#define RADIO_PREAMBLE_LONG	0x00
-#define RADIO_PREAMBLE_SHORT	0x02
-#define RADIO_PREAMBLE_AUTO	0x04
+#define CMD_SUBSCRIBE_RSSI_LOW                  0x0001
+#define CMD_SUBSCRIBE_SNR_LOW                   0x0002
+#define CMD_SUBSCRIBE_FAILCOUNT                 0x0004
+#define CMD_SUBSCRIBE_BCNMISS                   0x0008
+#define CMD_SUBSCRIBE_RSSI_HIGH                 0x0010
+#define CMD_SUBSCRIBE_SNR_HIGH                  0x0020
+
+#define RADIO_PREAMBLE_LONG                     0x00
+#define RADIO_PREAMBLE_SHORT                    0x02
+#define RADIO_PREAMBLE_AUTO                     0x04
 
 /* Define action or option for CMD_802_11_RF_CHANNEL */
-#define CMD_OPT_802_11_RF_CHANNEL_GET	0x00
-#define CMD_OPT_802_11_RF_CHANNEL_SET	0x01
+#define CMD_OPT_802_11_RF_CHANNEL_GET           0x00
+#define CMD_OPT_802_11_RF_CHANNEL_SET           0x01
 
 /* Define action or option for CMD_802_11_DATA_RATE */
-#define CMD_ACT_SET_TX_AUTO		0x0000
-#define CMD_ACT_SET_TX_FIX_RATE		0x0001
-#define CMD_ACT_GET_TX_RATE		0x0002
-
-#define CMD_ACT_SET_RX			0x0001
-#define	CMD_ACT_SET_TX			0x0002
-#define CMD_ACT_SET_BOTH		0x0003
-#define	CMD_ACT_GET_RX			0x0004
-#define CMD_ACT_GET_TX			0x0008
-#define	CMD_ACT_GET_BOTH		0x000c
+#define CMD_ACT_SET_TX_AUTO                     0x0000
+#define CMD_ACT_SET_TX_FIX_RATE                 0x0001
+#define CMD_ACT_GET_TX_RATE                     0x0002
 
 /* Define action or option for CMD_802_11_PS_MODE */
-#define CMD_TYPE_CAM			0x0000
-#define	CMD_TYPE_MAX_PSP		0x0001
-#define CMD_TYPE_FAST_PSP		0x0002
+#define CMD_TYPE_CAM                            0x0000
+#define CMD_TYPE_MAX_PSP                        0x0001
+#define CMD_TYPE_FAST_PSP                       0x0002
 
 /* Options for CMD_802_11_FW_WAKE_METHOD */
-#define CMD_WAKE_METHOD_UNCHANGED	0x0000
-#define CMD_WAKE_METHOD_COMMAND_INT	0x0001
-#define CMD_WAKE_METHOD_GPIO		0x0002
+#define CMD_WAKE_METHOD_UNCHANGED               0x0000
+#define CMD_WAKE_METHOD_COMMAND_INT             0x0001
+#define CMD_WAKE_METHOD_GPIO                    0x0002
 
 /* Object IDs for CMD_802_11_SNMP_MIB */
-#define SNMP_MIB_OID_BSS_TYPE		0x0000
-#define SNMP_MIB_OID_OP_RATE_SET	0x0001
-#define SNMP_MIB_OID_BEACON_PERIOD	0x0002  /* Reserved on v9+ */
-#define SNMP_MIB_OID_DTIM_PERIOD	0x0003  /* Reserved on v9+ */
-#define SNMP_MIB_OID_ASSOC_TIMEOUT	0x0004  /* Reserved on v9+ */
-#define SNMP_MIB_OID_RTS_THRESHOLD	0x0005
-#define SNMP_MIB_OID_SHORT_RETRY_LIMIT	0x0006
-#define SNMP_MIB_OID_LONG_RETRY_LIMIT	0x0007
-#define SNMP_MIB_OID_FRAG_THRESHOLD	0x0008
-#define SNMP_MIB_OID_11D_ENABLE		0x0009
-#define SNMP_MIB_OID_11H_ENABLE		0x000A
+#define SNMP_MIB_OID_BSS_TYPE                   0x0000
+#define SNMP_MIB_OID_OP_RATE_SET                0x0001
+#define SNMP_MIB_OID_BEACON_PERIOD              0x0002  /* Reserved on v9+ */
+#define SNMP_MIB_OID_DTIM_PERIOD                0x0003  /* Reserved on v9+ */
+#define SNMP_MIB_OID_ASSOC_TIMEOUT              0x0004  /* Reserved on v9+ */
+#define SNMP_MIB_OID_RTS_THRESHOLD              0x0005
+#define SNMP_MIB_OID_SHORT_RETRY_LIMIT          0x0006
+#define SNMP_MIB_OID_LONG_RETRY_LIMIT           0x0007
+#define SNMP_MIB_OID_FRAG_THRESHOLD             0x0008
+#define SNMP_MIB_OID_11D_ENABLE                 0x0009
+#define SNMP_MIB_OID_11H_ENABLE                 0x000A
 
 /* Define action or option for CMD_BT_ACCESS */
 enum cmd_bt_access_opts {
@@ -303,4 +290,714 @@
 #define MACREG_INT_CODE_MESH_AUTO_STARTED	35
 #define MACREG_INT_CODE_FIRMWARE_READY		48
 
+
+/* 802.11-related definitions */
+
+/* TxPD descriptor */
+struct txpd {
+	/* union to cope up with later FW revisions */
+	union {
+		/* Current Tx packet status */
+		__le32 tx_status;
+		struct {
+			/* BSS type: client, AP, etc. */
+			u8 bss_type;
+			/* BSS number */
+			u8 bss_num;
+			/* Reserved */
+			__le16 reserved;
+		} bss;
+	} u;
+	/* Tx control */
+	__le32 tx_control;
+	__le32 tx_packet_location;
+	/* Tx packet length */
+	__le16 tx_packet_length;
+	/* First 2 byte of destination MAC address */
+	u8 tx_dest_addr_high[2];
+	/* Last 4 byte of destination MAC address */
+	u8 tx_dest_addr_low[4];
+	/* Pkt Priority */
+	u8 priority;
+	/* Pkt Trasnit Power control */
+	u8 powermgmt;
+	/* Amount of time the packet has been queued (units = 2ms) */
+	u8 pktdelay_2ms;
+	/* reserved */
+	u8 reserved1;
+} __attribute__ ((packed));
+
+/* RxPD Descriptor */
+struct rxpd {
+	/* union to cope up with later FW revisions */
+	union {
+		/* Current Rx packet status */
+		__le16 status;
+		struct {
+			/* BSS type: client, AP, etc. */
+			u8 bss_type;
+			/* BSS number */
+			u8 bss_num;
+		} __attribute__ ((packed)) bss;
+	} __attribute__ ((packed)) u;
+
+	/* SNR */
+	u8 snr;
+
+	/* Tx control */
+	u8 rx_control;
+
+	/* Pkt length */
+	__le16 pkt_len;
+
+	/* Noise Floor */
+	u8 nf;
+
+	/* Rx Packet Rate */
+	u8 rx_rate;
+
+	/* Pkt addr */
+	__le32 pkt_ptr;
+
+	/* Next Rx RxPD addr */
+	__le32 next_rxpd_ptr;
+
+	/* Pkt Priority */
+	u8 priority;
+	u8 reserved[3];
+} __attribute__ ((packed));
+
+struct cmd_header {
+	__le16 command;
+	__le16 size;
+	__le16 seqnum;
+	__le16 result;
+} __attribute__ ((packed));
+
+struct cmd_ctrl_node {
+	struct list_head list;
+	int result;
+	/* command response */
+	int (*callback)(struct lbs_private *,
+			unsigned long,
+			struct cmd_header *);
+	unsigned long callback_arg;
+	/* command data */
+	struct cmd_header *cmdbuf;
+	/* wait queue */
+	u16 cmdwaitqwoken;
+	wait_queue_head_t cmdwait_q;
+};
+
+/* Generic structure to hold all key types. */
+struct enc_key {
+	u16 len;
+	u16 flags;  /* KEY_INFO_* from defs.h */
+	u16 type; /* KEY_TYPE_* from defs.h */
+	u8 key[32];
+};
+
+/* lbs_offset_value */
+struct lbs_offset_value {
+	u32 offset;
+	u32 value;
+} __attribute__ ((packed));
+
+/* Define general data structure */
+/* cmd_DS_GEN */
+struct cmd_ds_gen {
+	__le16 command;
+	__le16 size;
+	__le16 seqnum;
+	__le16 result;
+	void *cmdresp[0];
+} __attribute__ ((packed));
+
+#define S_DS_GEN sizeof(struct cmd_ds_gen)
+
+
+/*
+ * Define data structure for CMD_GET_HW_SPEC
+ * This structure defines the response for the GET_HW_SPEC command
+ */
+struct cmd_ds_get_hw_spec {
+	struct cmd_header hdr;
+
+	/* HW Interface version number */
+	__le16 hwifversion;
+	/* HW version number */
+	__le16 version;
+	/* Max number of TxPD FW can handle */
+	__le16 nr_txpd;
+	/* Max no of Multicast address */
+	__le16 nr_mcast_adr;
+	/* MAC address */
+	u8 permanentaddr[6];
+
+	/* region Code */
+	__le16 regioncode;
+
+	/* Number of antenna used */
+	__le16 nr_antenna;
+
+	/* FW release number, example 0x01030304 = 2.3.4p1 */
+	__le32 fwrelease;
+
+	/* Base Address of TxPD queue */
+	__le32 wcb_base;
+	/* Read Pointer of RxPd queue */
+	__le32 rxpd_rdptr;
+
+	/* Write Pointer of RxPd queue */
+	__le32 rxpd_wrptr;
+
+	/*FW/HW capability */
+	__le32 fwcapinfo;
+} __attribute__ ((packed));
+
+struct cmd_ds_802_11_subscribe_event {
+	struct cmd_header hdr;
+
+	__le16 action;
+	__le16 events;
+
+	/* A TLV to the CMD_802_11_SUBSCRIBE_EVENT command can contain a
+	 * number of TLVs. From the v5.1 manual, those TLVs would add up to
+	 * 40 bytes. However, future firmware might add additional TLVs, so I
+	 * bump this up a bit.
+	 */
+	uint8_t tlv[128];
+} __attribute__ ((packed));
+
+/*
+ * This scan handle Country Information IE(802.11d compliant)
+ * Define data structure for CMD_802_11_SCAN
+ */
+struct cmd_ds_802_11_scan {
+	struct cmd_header hdr;
+
+	uint8_t bsstype;
+	uint8_t bssid[ETH_ALEN];
+	uint8_t tlvbuffer[0];
+} __attribute__ ((packed));
+
+struct cmd_ds_802_11_scan_rsp {
+	struct cmd_header hdr;
+
+	__le16 bssdescriptsize;
+	uint8_t nr_sets;
+	uint8_t bssdesc_and_tlvbuffer[0];
+} __attribute__ ((packed));
+
+struct cmd_ds_802_11_get_log {
+	struct cmd_header hdr;
+
+	__le32 mcasttxframe;
+	__le32 failed;
+	__le32 retry;
+	__le32 multiretry;
+	__le32 framedup;
+	__le32 rtssuccess;
+	__le32 rtsfailure;
+	__le32 ackfailure;
+	__le32 rxfrag;
+	__le32 mcastrxframe;
+	__le32 fcserror;
+	__le32 txframe;
+	__le32 wepundecryptable;
+} __attribute__ ((packed));
+
+struct cmd_ds_mac_control {
+	struct cmd_header hdr;
+	__le16 action;
+	u16 reserved;
+} __attribute__ ((packed));
+
+struct cmd_ds_mac_multicast_adr {
+	struct cmd_header hdr;
+	__le16 action;
+	__le16 nr_of_adrs;
+	u8 maclist[ETH_ALEN * MRVDRV_MAX_MULTICAST_LIST_SIZE];
+} __attribute__ ((packed));
+
+struct cmd_ds_802_11_authenticate {
+	struct cmd_header hdr;
+
+	u8 bssid[ETH_ALEN];
+	u8 authtype;
+	u8 reserved[10];
+} __attribute__ ((packed));
+
+struct cmd_ds_802_11_deauthenticate {
+	struct cmd_header hdr;
+
+	u8 macaddr[ETH_ALEN];
+	__le16 reasoncode;
+} __attribute__ ((packed));
+
+struct cmd_ds_802_11_associate {
+	struct cmd_header hdr;
+
+	u8 bssid[6];
+	__le16 capability;
+	__le16 listeninterval;
+	__le16 bcnperiod;
+	u8 dtimperiod;
+	u8 iebuf[512];    /* Enough for required and most optional IEs */
+} __attribute__ ((packed));
+
+struct cmd_ds_802_11_associate_response {
+	struct cmd_header hdr;
+
+	__le16 capability;
+	__le16 statuscode;
+	__le16 aid;
+	u8 iebuf[512];
+} __attribute__ ((packed));
+
+struct cmd_ds_802_11_set_wep {
+	struct cmd_header hdr;
+
+	/* ACT_ADD, ACT_REMOVE or ACT_ENABLE */
+	__le16 action;
+
+	/* key Index selected for Tx */
+	__le16 keyindex;
+
+	/* 40, 128bit or TXWEP */
+	uint8_t keytype[4];
+	uint8_t keymaterial[4][16];
+} __attribute__ ((packed));
+
+struct cmd_ds_802_11_snmp_mib {
+	struct cmd_header hdr;
+
+	__le16 action;
+	__le16 oid;
+	__le16 bufsize;
+	u8 value[128];
+} __attribute__ ((packed));
+
+struct cmd_ds_mac_reg_access {
+	__le16 action;
+	__le16 offset;
+	__le32 value;
+} __attribute__ ((packed));
+
+struct cmd_ds_bbp_reg_access {
+	__le16 action;
+	__le16 offset;
+	u8 value;
+	u8 reserved[3];
+} __attribute__ ((packed));
+
+struct cmd_ds_rf_reg_access {
+	__le16 action;
+	__le16 offset;
+	u8 value;
+	u8 reserved[3];
+} __attribute__ ((packed));
+
+struct cmd_ds_802_11_radio_control {
+	struct cmd_header hdr;
+
+	__le16 action;
+	__le16 control;
+} __attribute__ ((packed));
+
+struct cmd_ds_802_11_beacon_control {
+	__le16 action;
+	__le16 beacon_enable;
+	__le16 beacon_period;
+} __attribute__ ((packed));
+
+struct cmd_ds_802_11_sleep_params {
+	struct cmd_header hdr;
+
+	/* ACT_GET/ACT_SET */
+	__le16 action;
+
+	/* Sleep clock error in ppm */
+	__le16 error;
+
+	/* Wakeup offset in usec */
+	__le16 offset;
+
+	/* Clock stabilization time in usec */
+	__le16 stabletime;
+
+	/* control periodic calibration */
+	uint8_t calcontrol;
+
+	/* control the use of external sleep clock */
+	uint8_t externalsleepclk;
+
+	/* reserved field, should be set to zero */
+	__le16 reserved;
+} __attribute__ ((packed));
+
+struct cmd_ds_802_11_inactivity_timeout {
+	struct cmd_header hdr;
+
+	/* ACT_GET/ACT_SET */
+	__le16 action;
+
+	/* Inactivity timeout in msec */
+	__le16 timeout;
+} __attribute__ ((packed));
+
+struct cmd_ds_802_11_rf_channel {
+	struct cmd_header hdr;
+
+	__le16 action;
+	__le16 channel;
+	__le16 rftype;      /* unused */
+	__le16 reserved;    /* unused */
+	u8 channellist[32]; /* unused */
+} __attribute__ ((packed));
+
+struct cmd_ds_802_11_rssi {
+	/* weighting factor */
+	__le16 N;
+
+	__le16 reserved_0;
+	__le16 reserved_1;
+	__le16 reserved_2;
+} __attribute__ ((packed));
+
+struct cmd_ds_802_11_rssi_rsp {
+	__le16 SNR;
+	__le16 noisefloor;
+	__le16 avgSNR;
+	__le16 avgnoisefloor;
+} __attribute__ ((packed));
+
+struct cmd_ds_802_11_mac_address {
+	struct cmd_header hdr;
+
+	__le16 action;
+	u8 macadd[ETH_ALEN];
+} __attribute__ ((packed));
+
+struct cmd_ds_802_11_rf_tx_power {
+	struct cmd_header hdr;
+
+	__le16 action;
+	__le16 curlevel;
+	s8 maxlevel;
+	s8 minlevel;
+} __attribute__ ((packed));
+
+struct cmd_ds_802_11_monitor_mode {
+	__le16 action;
+	__le16 mode;
+} __attribute__ ((packed));
+
+struct cmd_ds_set_boot2_ver {
+	struct cmd_header hdr;
+
+	__le16 action;
+	__le16 version;
+} __attribute__ ((packed));
+
+struct cmd_ds_802_11_fw_wake_method {
+	struct cmd_header hdr;
+
+	__le16 action;
+	__le16 method;
+} __attribute__ ((packed));
+
+struct cmd_ds_802_11_ps_mode {
+	__le16 action;
+	__le16 nullpktinterval;
+	__le16 multipledtim;
+	__le16 reserved;
+	__le16 locallisteninterval;
+} __attribute__ ((packed));
+
+struct cmd_confirm_sleep {
+	struct cmd_header hdr;
+
+	__le16 action;
+	__le16 nullpktinterval;
+	__le16 multipledtim;
+	__le16 reserved;
+	__le16 locallisteninterval;
+} __attribute__ ((packed));
+
+struct cmd_ds_802_11_data_rate {
+	struct cmd_header hdr;
+
+	__le16 action;
+	__le16 reserved;
+	u8 rates[MAX_RATES];
+} __attribute__ ((packed));
+
+struct cmd_ds_802_11_rate_adapt_rateset {
+	struct cmd_header hdr;
+	__le16 action;
+	__le16 enablehwauto;
+	__le16 bitmap;
+} __attribute__ ((packed));
+
+struct cmd_ds_802_11_ad_hoc_start {
+	struct cmd_header hdr;
+
+	u8 ssid[IW_ESSID_MAX_SIZE];
+	u8 bsstype;
+	__le16 beaconperiod;
+	u8 dtimperiod;   /* Reserved on v9 and later */
+	struct ieee_ie_ibss_param_set ibss;
+	u8 reserved1[4];
+	struct ieee_ie_ds_param_set ds;
+	u8 reserved2[4];
+	__le16 probedelay;  /* Reserved on v9 and later */
+	__le16 capability;
+	u8 rates[MAX_RATES];
+	u8 tlv_memory_size_pad[100];
+} __attribute__ ((packed));
+
+struct cmd_ds_802_11_ad_hoc_result {
+	struct cmd_header hdr;
+
+	u8 pad[3];
+	u8 bssid[ETH_ALEN];
+} __attribute__ ((packed));
+
+struct adhoc_bssdesc {
+	u8 bssid[ETH_ALEN];
+	u8 ssid[IW_ESSID_MAX_SIZE];
+	u8 type;
+	__le16 beaconperiod;
+	u8 dtimperiod;
+	__le64 timestamp;
+	__le64 localtime;
+	struct ieee_ie_ds_param_set ds;
+	u8 reserved1[4];
+	struct ieee_ie_ibss_param_set ibss;
+	u8 reserved2[4];
+	__le16 capability;
+	u8 rates[MAX_RATES];
+
+	/* DO NOT ADD ANY FIELDS TO THIS STRUCTURE. It is used below in the
+	 * Adhoc join command and will cause a binary layout mismatch with
+	 * the firmware
+	 */
+} __attribute__ ((packed));
+
+struct cmd_ds_802_11_ad_hoc_join {
+	struct cmd_header hdr;
+
+	struct adhoc_bssdesc bss;
+	__le16 failtimeout;   /* Reserved on v9 and later */
+	__le16 probedelay;    /* Reserved on v9 and later */
+} __attribute__ ((packed));
+
+struct cmd_ds_802_11_ad_hoc_stop {
+	struct cmd_header hdr;
+} __attribute__ ((packed));
+
+struct cmd_ds_802_11_enable_rsn {
+	struct cmd_header hdr;
+
+	__le16 action;
+	__le16 enable;
+} __attribute__ ((packed));
+
+struct MrvlIEtype_keyParamSet {
+	/* type ID */
+	__le16 type;
+
+	/* length of Payload */
+	__le16 length;
+
+	/* type of key: WEP=0, TKIP=1, AES=2 */
+	__le16 keytypeid;
+
+	/* key control Info specific to a keytypeid */
+	__le16 keyinfo;
+
+	/* length of key */
+	__le16 keylen;
+
+	/* key material of size keylen */
+	u8 key[32];
+} __attribute__ ((packed));
+
+#define MAX_WOL_RULES 		16
+
+struct host_wol_rule {
+	uint8_t rule_no;
+	uint8_t rule_ops;
+	__le16 sig_offset;
+	__le16 sig_length;
+	__le16 reserve;
+	__be32 sig_mask;
+	__be32 signature;
+} __attribute__ ((packed));
+
+struct wol_config {
+	uint8_t action;
+	uint8_t pattern;
+	uint8_t no_rules_in_cmd;
+	uint8_t result;
+	struct host_wol_rule rule[MAX_WOL_RULES];
+} __attribute__ ((packed));
+
+struct cmd_ds_host_sleep {
+	struct cmd_header hdr;
+	__le32 criteria;
+	uint8_t gpio;
+	uint16_t gap;
+	struct wol_config wol_conf;
+} __attribute__ ((packed));
+
+
+
+struct cmd_ds_802_11_key_material {
+	struct cmd_header hdr;
+
+	__le16 action;
+	struct MrvlIEtype_keyParamSet keyParamSet[2];
+} __attribute__ ((packed));
+
+struct cmd_ds_802_11_eeprom_access {
+	struct cmd_header hdr;
+	__le16 action;
+	__le16 offset;
+	__le16 len;
+	/* firmware says it returns a maximum of 20 bytes */
+#define LBS_EEPROM_READ_LEN 20
+	u8 value[LBS_EEPROM_READ_LEN];
+} __attribute__ ((packed));
+
+struct cmd_ds_802_11_tpc_cfg {
+	struct cmd_header hdr;
+
+	__le16 action;
+	uint8_t enable;
+	int8_t P0;
+	int8_t P1;
+	int8_t P2;
+	uint8_t usesnr;
+} __attribute__ ((packed));
+
+
+struct cmd_ds_802_11_pa_cfg {
+	struct cmd_header hdr;
+
+	__le16 action;
+	uint8_t enable;
+	int8_t P0;
+	int8_t P1;
+	int8_t P2;
+} __attribute__ ((packed));
+
+
+struct cmd_ds_802_11_led_ctrl {
+	__le16 action;
+	__le16 numled;
+	u8 data[256];
+} __attribute__ ((packed));
+
+struct cmd_ds_802_11_afc {
+	__le16 afc_auto;
+	union {
+		struct {
+			__le16 threshold;
+			__le16 period;
+		};
+		struct {
+			__le16 timing_offset; /* signed */
+			__le16 carrier_offset; /* signed */
+		};
+	};
+} __attribute__ ((packed));
+
+struct cmd_tx_rate_query {
+	__le16 txrate;
+} __attribute__ ((packed));
+
+struct cmd_ds_get_tsf {
+	__le64 tsfvalue;
+} __attribute__ ((packed));
+
+struct cmd_ds_bt_access {
+	__le16 action;
+	__le32 id;
+	u8 addr1[ETH_ALEN];
+	u8 addr2[ETH_ALEN];
+} __attribute__ ((packed));
+
+struct cmd_ds_fwt_access {
+	__le16 action;
+	__le32 id;
+	u8 valid;
+	u8 da[ETH_ALEN];
+	u8 dir;
+	u8 ra[ETH_ALEN];
+	__le32 ssn;
+	__le32 dsn;
+	__le32 metric;
+	u8 rate;
+	u8 hopcount;
+	u8 ttl;
+	__le32 expiration;
+	u8 sleepmode;
+	__le32 snr;
+	__le32 references;
+	u8 prec[ETH_ALEN];
+} __attribute__ ((packed));
+
+struct cmd_ds_mesh_config {
+	struct cmd_header hdr;
+
+	__le16 action;
+	__le16 channel;
+	__le16 type;
+	__le16 length;
+	u8 data[128];	/* last position reserved */
+} __attribute__ ((packed));
+
+struct cmd_ds_mesh_access {
+	struct cmd_header hdr;
+
+	__le16 action;
+	__le32 data[32];	/* last position reserved */
+} __attribute__ ((packed));
+
+/* Number of stats counters returned by the firmware */
+#define MESH_STATS_NUM 8
+
+struct cmd_ds_command {
+	/* command header */
+	__le16 command;
+	__le16 size;
+	__le16 seqnum;
+	__le16 result;
+
+	/* command Body */
+	union {
+		struct cmd_ds_802_11_ps_mode psmode;
+		struct cmd_ds_802_11_monitor_mode monitor;
+		struct cmd_ds_802_11_rssi rssi;
+		struct cmd_ds_802_11_rssi_rsp rssirsp;
+		struct cmd_ds_mac_reg_access macreg;
+		struct cmd_ds_bbp_reg_access bbpreg;
+		struct cmd_ds_rf_reg_access rfreg;
+
+		struct cmd_ds_802_11d_domain_info domaininfo;
+		struct cmd_ds_802_11d_domain_info domaininforesp;
+
+		struct cmd_ds_802_11_tpc_cfg tpccfg;
+		struct cmd_ds_802_11_afc afc;
+		struct cmd_ds_802_11_led_ctrl ledgpio;
+
+		struct cmd_ds_bt_access bt;
+		struct cmd_ds_fwt_access fwt;
+		struct cmd_ds_get_tsf gettsf;
+		struct cmd_ds_802_11_beacon_control bcn_ctrl;
+	} params;
+} __attribute__ ((packed));
+
 #endif
--- linux-wl.orig/drivers/net/wireless/libertas/hostcmd.h
+++ /dev/null
@@ -1,800 +0,0 @@
-/*
- * This file contains the function prototypes, data structure
- * and defines for all the host/station commands
- */
-#ifndef _LBS_HOSTCMD_H
-#define _LBS_HOSTCMD_H
-
-#include <linux/wireless.h>
-#include "11d.h"
-#include "types.h"
-
-/* 802.11-related definitions */
-
-/* TxPD descriptor */
-struct txpd {
-	/* union to cope up with later FW revisions */
-	union {
-		/* Current Tx packet status */
-		__le32 tx_status;
-		struct {
-			/* BSS type: client, AP, etc. */
-			u8 bss_type;
-			/* BSS number */
-			u8 bss_num;
-			/* Reserved */
-			__le16 reserved;
-		} bss;
-	} u;
-	/* Tx control */
-	__le32 tx_control;
-	__le32 tx_packet_location;
-	/* Tx packet length */
-	__le16 tx_packet_length;
-	/* First 2 byte of destination MAC address */
-	u8 tx_dest_addr_high[2];
-	/* Last 4 byte of destination MAC address */
-	u8 tx_dest_addr_low[4];
-	/* Pkt Priority */
-	u8 priority;
-	/* Pkt Trasnit Power control */
-	u8 powermgmt;
-	/* Amount of time the packet has been queued in the driver (units = 2ms) */
-	u8 pktdelay_2ms;
-	/* reserved */
-	u8 reserved1;
-} __attribute__ ((packed));
-
-/* RxPD Descriptor */
-struct rxpd {
-	/* union to cope up with later FW revisions */
-	union {
-		/* Current Rx packet status */
-		__le16 status;
-		struct {
-			/* BSS type: client, AP, etc. */
-			u8 bss_type;
-			/* BSS number */
-			u8 bss_num;
-		} __attribute__ ((packed)) bss;
-	} __attribute__ ((packed)) u;
-
-	/* SNR */
-	u8 snr;
-
-	/* Tx control */
-	u8 rx_control;
-
-	/* Pkt length */
-	__le16 pkt_len;
-
-	/* Noise Floor */
-	u8 nf;
-
-	/* Rx Packet Rate */
-	u8 rx_rate;
-
-	/* Pkt addr */
-	__le32 pkt_ptr;
-
-	/* Next Rx RxPD addr */
-	__le32 next_rxpd_ptr;
-
-	/* Pkt Priority */
-	u8 priority;
-	u8 reserved[3];
-} __attribute__ ((packed));
-
-struct cmd_header {
-	__le16 command;
-	__le16 size;
-	__le16 seqnum;
-	__le16 result;
-} __attribute__ ((packed));
-
-struct cmd_ctrl_node {
-	struct list_head list;
-	int result;
-	/* command response */
-	int (*callback)(struct lbs_private *, unsigned long, struct cmd_header *);
-	unsigned long callback_arg;
-	/* command data */
-	struct cmd_header *cmdbuf;
-	/* wait queue */
-	u16 cmdwaitqwoken;
-	wait_queue_head_t cmdwait_q;
-};
-
-/* Generic structure to hold all key types. */
-struct enc_key {
-	u16 len;
-	u16 flags;  /* KEY_INFO_* from defs.h */
-	u16 type; /* KEY_TYPE_* from defs.h */
-	u8 key[32];
-};
-
-/* lbs_offset_value */
-struct lbs_offset_value {
-	u32 offset;
-	u32 value;
-} __attribute__ ((packed));
-
-/* Define general data structure */
-/* cmd_DS_GEN */
-struct cmd_ds_gen {
-	__le16 command;
-	__le16 size;
-	__le16 seqnum;
-	__le16 result;
-	void *cmdresp[0];
-} __attribute__ ((packed));
-
-#define S_DS_GEN sizeof(struct cmd_ds_gen)
-
-
-/*
- * Define data structure for CMD_GET_HW_SPEC
- * This structure defines the response for the GET_HW_SPEC command
- */
-struct cmd_ds_get_hw_spec {
-	struct cmd_header hdr;
-
-	/* HW Interface version number */
-	__le16 hwifversion;
-	/* HW version number */
-	__le16 version;
-	/* Max number of TxPD FW can handle */
-	__le16 nr_txpd;
-	/* Max no of Multicast address */
-	__le16 nr_mcast_adr;
-	/* MAC address */
-	u8 permanentaddr[6];
-
-	/* region Code */
-	__le16 regioncode;
-
-	/* Number of antenna used */
-	__le16 nr_antenna;
-
-	/* FW release number, example 0x01030304 = 2.3.4p1 */
-	__le32 fwrelease;
-
-	/* Base Address of TxPD queue */
-	__le32 wcb_base;
-	/* Read Pointer of RxPd queue */
-	__le32 rxpd_rdptr;
-
-	/* Write Pointer of RxPd queue */
-	__le32 rxpd_wrptr;
-
-	/*FW/HW capability */
-	__le32 fwcapinfo;
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_subscribe_event {
-	struct cmd_header hdr;
-
-	__le16 action;
-	__le16 events;
-
-	/* A TLV to the CMD_802_11_SUBSCRIBE_EVENT command can contain a
-	 * number of TLVs. From the v5.1 manual, those TLVs would add up to
-	 * 40 bytes. However, future firmware might add additional TLVs, so I
-	 * bump this up a bit.
-	 */
-	uint8_t tlv[128];
-} __attribute__ ((packed));
-
-/*
- * This scan handle Country Information IE(802.11d compliant)
- * Define data structure for CMD_802_11_SCAN
- */
-struct cmd_ds_802_11_scan {
-	struct cmd_header hdr;
-
-	uint8_t bsstype;
-	uint8_t bssid[ETH_ALEN];
-	uint8_t tlvbuffer[0];
-#if 0
-	mrvlietypes_ssidparamset_t ssidParamSet;
-	mrvlietypes_chanlistparamset_t ChanListParamSet;
-	mrvlietypes_ratesparamset_t OpRateSet;
-#endif
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_scan_rsp {
-	struct cmd_header hdr;
-
-	__le16 bssdescriptsize;
-	uint8_t nr_sets;
-	uint8_t bssdesc_and_tlvbuffer[0];
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_get_log {
-	struct cmd_header hdr;
-
-	__le32 mcasttxframe;
-	__le32 failed;
-	__le32 retry;
-	__le32 multiretry;
-	__le32 framedup;
-	__le32 rtssuccess;
-	__le32 rtsfailure;
-	__le32 ackfailure;
-	__le32 rxfrag;
-	__le32 mcastrxframe;
-	__le32 fcserror;
-	__le32 txframe;
-	__le32 wepundecryptable;
-} __attribute__ ((packed));
-
-struct cmd_ds_mac_control {
-	struct cmd_header hdr;
-	__le16 action;
-	u16 reserved;
-} __attribute__ ((packed));
-
-struct cmd_ds_mac_multicast_adr {
-	struct cmd_header hdr;
-	__le16 action;
-	__le16 nr_of_adrs;
-	u8 maclist[ETH_ALEN * MRVDRV_MAX_MULTICAST_LIST_SIZE];
-} __attribute__ ((packed));
-
-struct cmd_ds_gspi_bus_config {
-	struct cmd_header hdr;
-	__le16 action;
-	__le16 bus_delay_mode;
-	__le16 host_time_delay_to_read_port;
-	__le16 host_time_delay_to_read_register;
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_authenticate {
-	struct cmd_header hdr;
-
-	u8 bssid[ETH_ALEN];
-	u8 authtype;
-	u8 reserved[10];
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_deauthenticate {
-	struct cmd_header hdr;
-
-	u8 macaddr[ETH_ALEN];
-	__le16 reasoncode;
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_associate {
-	struct cmd_header hdr;
-
-	u8 bssid[6];
-	__le16 capability;
-	__le16 listeninterval;
-	__le16 bcnperiod;
-	u8 dtimperiod;
-	u8 iebuf[512];    /* Enough for required and most optional IEs */
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_associate_response {
-	struct cmd_header hdr;
-
-	__le16 capability;
-	__le16 statuscode;
-	__le16 aid;
-	u8 iebuf[512];
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_set_wep {
-	struct cmd_header hdr;
-
-	/* ACT_ADD, ACT_REMOVE or ACT_ENABLE */
-	__le16 action;
-
-	/* key Index selected for Tx */
-	__le16 keyindex;
-
-	/* 40, 128bit or TXWEP */
-	uint8_t keytype[4];
-	uint8_t keymaterial[4][16];
-} __attribute__ ((packed));
-
-struct cmd_ds_802_3_get_stat {
-	__le32 xmitok;
-	__le32 rcvok;
-	__le32 xmiterror;
-	__le32 rcverror;
-	__le32 rcvnobuffer;
-	__le32 rcvcrcerror;
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_get_stat {
-	__le32 txfragmentcnt;
-	__le32 mcasttxframecnt;
-	__le32 failedcnt;
-	__le32 retrycnt;
-	__le32 Multipleretrycnt;
-	__le32 rtssuccesscnt;
-	__le32 rtsfailurecnt;
-	__le32 ackfailurecnt;
-	__le32 frameduplicatecnt;
-	__le32 rxfragmentcnt;
-	__le32 mcastrxframecnt;
-	__le32 fcserrorcnt;
-	__le32 bcasttxframecnt;
-	__le32 bcastrxframecnt;
-	__le32 txbeacon;
-	__le32 rxbeacon;
-	__le32 wepundecryptable;
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_snmp_mib {
-	struct cmd_header hdr;
-
-	__le16 action;
-	__le16 oid;
-	__le16 bufsize;
-	u8 value[128];
-} __attribute__ ((packed));
-
-struct cmd_ds_mac_reg_map {
-	__le16 buffersize;
-	u8 regmap[128];
-	__le16 reserved;
-} __attribute__ ((packed));
-
-struct cmd_ds_bbp_reg_map {
-	__le16 buffersize;
-	u8 regmap[128];
-	__le16 reserved;
-} __attribute__ ((packed));
-
-struct cmd_ds_rf_reg_map {
-	__le16 buffersize;
-	u8 regmap[64];
-	__le16 reserved;
-} __attribute__ ((packed));
-
-struct cmd_ds_mac_reg_access {
-	__le16 action;
-	__le16 offset;
-	__le32 value;
-} __attribute__ ((packed));
-
-struct cmd_ds_bbp_reg_access {
-	__le16 action;
-	__le16 offset;
-	u8 value;
-	u8 reserved[3];
-} __attribute__ ((packed));
-
-struct cmd_ds_rf_reg_access {
-	__le16 action;
-	__le16 offset;
-	u8 value;
-	u8 reserved[3];
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_radio_control {
-	struct cmd_header hdr;
-
-	__le16 action;
-	__le16 control;
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_beacon_control {
-	__le16 action;
-	__le16 beacon_enable;
-	__le16 beacon_period;
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_sleep_params {
-	struct cmd_header hdr;
-
-	/* ACT_GET/ACT_SET */
-	__le16 action;
-
-	/* Sleep clock error in ppm */
-	__le16 error;
-
-	/* Wakeup offset in usec */
-	__le16 offset;
-
-	/* Clock stabilization time in usec */
-	__le16 stabletime;
-
-	/* control periodic calibration */
-	uint8_t calcontrol;
-
-	/* control the use of external sleep clock */
-	uint8_t externalsleepclk;
-
-	/* reserved field, should be set to zero */
-	__le16 reserved;
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_inactivity_timeout {
-	struct cmd_header hdr;
-
-	/* ACT_GET/ACT_SET */
-	__le16 action;
-
-	/* Inactivity timeout in msec */
-	__le16 timeout;
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_rf_channel {
-	struct cmd_header hdr;
-
-	__le16 action;
-	__le16 channel;
-	__le16 rftype;      /* unused */
-	__le16 reserved;    /* unused */
-	u8 channellist[32]; /* unused */
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_rssi {
-	/* weighting factor */
-	__le16 N;
-
-	__le16 reserved_0;
-	__le16 reserved_1;
-	__le16 reserved_2;
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_rssi_rsp {
-	__le16 SNR;
-	__le16 noisefloor;
-	__le16 avgSNR;
-	__le16 avgnoisefloor;
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_mac_address {
-	struct cmd_header hdr;
-
-	__le16 action;
-	u8 macadd[ETH_ALEN];
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_rf_tx_power {
-	struct cmd_header hdr;
-
-	__le16 action;
-	__le16 curlevel;
-	s8 maxlevel;
-	s8 minlevel;
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_rf_antenna {
-	__le16 action;
-
-	/* Number of antennas or 0xffff(diversity) */
-	__le16 antennamode;
-
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_monitor_mode {
-	__le16 action;
-	__le16 mode;
-} __attribute__ ((packed));
-
-struct cmd_ds_set_boot2_ver {
-	struct cmd_header hdr;
-
-	__le16 action;
-	__le16 version;
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_fw_wake_method {
-	struct cmd_header hdr;
-
-	__le16 action;
-	__le16 method;
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_sleep_period {
-	struct cmd_header hdr;
-
-	__le16 action;
-	__le16 period;
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_ps_mode {
-	__le16 action;
-	__le16 nullpktinterval;
-	__le16 multipledtim;
-	__le16 reserved;
-	__le16 locallisteninterval;
-} __attribute__ ((packed));
-
-struct cmd_confirm_sleep {
-	struct cmd_header hdr;
-
-	__le16 action;
-	__le16 nullpktinterval;
-	__le16 multipledtim;
-	__le16 reserved;
-	__le16 locallisteninterval;
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_data_rate {
-	struct cmd_header hdr;
-
-	__le16 action;
-	__le16 reserved;
-	u8 rates[MAX_RATES];
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_rate_adapt_rateset {
-	struct cmd_header hdr;
-	__le16 action;
-	__le16 enablehwauto;
-	__le16 bitmap;
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_ad_hoc_start {
-	struct cmd_header hdr;
-
-	u8 ssid[IW_ESSID_MAX_SIZE];
-	u8 bsstype;
-	__le16 beaconperiod;
-	u8 dtimperiod;   /* Reserved on v9 and later */
-	struct ieee_ie_ibss_param_set ibss;
-	u8 reserved1[4];
-	struct ieee_ie_ds_param_set ds;
-	u8 reserved2[4];
-	__le16 probedelay;  /* Reserved on v9 and later */
-	__le16 capability;
-	u8 rates[MAX_RATES];
-	u8 tlv_memory_size_pad[100];
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_ad_hoc_result {
-	struct cmd_header hdr;
-
-	u8 pad[3];
-	u8 bssid[ETH_ALEN];
-} __attribute__ ((packed));
-
-struct adhoc_bssdesc {
-	u8 bssid[ETH_ALEN];
-	u8 ssid[IW_ESSID_MAX_SIZE];
-	u8 type;
-	__le16 beaconperiod;
-	u8 dtimperiod;
-	__le64 timestamp;
-	__le64 localtime;
-	struct ieee_ie_ds_param_set ds;
-	u8 reserved1[4];
-	struct ieee_ie_ibss_param_set ibss;
-	u8 reserved2[4];
-	__le16 capability;
-	u8 rates[MAX_RATES];
-
-	/* DO NOT ADD ANY FIELDS TO THIS STRUCTURE. It is used below in the
-	 * Adhoc join command and will cause a binary layout mismatch with
-	 * the firmware
-	 */
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_ad_hoc_join {
-	struct cmd_header hdr;
-
-	struct adhoc_bssdesc bss;
-	__le16 failtimeout;   /* Reserved on v9 and later */
-	__le16 probedelay;    /* Reserved on v9 and later */
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_ad_hoc_stop {
-	struct cmd_header hdr;
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_enable_rsn {
-	struct cmd_header hdr;
-
-	__le16 action;
-	__le16 enable;
-} __attribute__ ((packed));
-
-struct MrvlIEtype_keyParamSet {
-	/* type ID */
-	__le16 type;
-
-	/* length of Payload */
-	__le16 length;
-
-	/* type of key: WEP=0, TKIP=1, AES=2 */
-	__le16 keytypeid;
-
-	/* key control Info specific to a keytypeid */
-	__le16 keyinfo;
-
-	/* length of key */
-	__le16 keylen;
-
-	/* key material of size keylen */
-	u8 key[32];
-} __attribute__ ((packed));
-
-#define MAX_WOL_RULES 		16
-
-struct host_wol_rule {
-	uint8_t rule_no;
-	uint8_t rule_ops;
-	__le16 sig_offset;
-	__le16 sig_length;
-	__le16 reserve;
-	__be32 sig_mask;
-	__be32 signature;
-} __attribute__ ((packed));
-
-struct wol_config {
-	uint8_t action;
-	uint8_t pattern;
-	uint8_t no_rules_in_cmd;
-	uint8_t result;
-	struct host_wol_rule rule[MAX_WOL_RULES];
-} __attribute__ ((packed));
-
-struct cmd_ds_host_sleep {
-	struct cmd_header hdr;
-	__le32 criteria;
-	uint8_t gpio;
-	uint16_t gap;
-	struct wol_config wol_conf;
-} __attribute__ ((packed));
-
-
-
-struct cmd_ds_802_11_key_material {
-	struct cmd_header hdr;
-
-	__le16 action;
-	struct MrvlIEtype_keyParamSet keyParamSet[2];
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_eeprom_access {
-	struct cmd_header hdr;
-	__le16 action;
-	__le16 offset;
-	__le16 len;
-	/* firmware says it returns a maximum of 20 bytes */
-#define LBS_EEPROM_READ_LEN 20
-	u8 value[LBS_EEPROM_READ_LEN];
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_tpc_cfg {
-	struct cmd_header hdr;
-
-	__le16 action;
-	uint8_t enable;
-	int8_t P0;
-	int8_t P1;
-	int8_t P2;
-	uint8_t usesnr;
-} __attribute__ ((packed));
-
-
-struct cmd_ds_802_11_pa_cfg {
-	struct cmd_header hdr;
-
-	__le16 action;
-	uint8_t enable;
-	int8_t P0;
-	int8_t P1;
-	int8_t P2;
-} __attribute__ ((packed));
-
-
-struct cmd_ds_802_11_led_ctrl {
-	__le16 action;
-	__le16 numled;
-	u8 data[256];
-} __attribute__ ((packed));
-
-struct cmd_ds_802_11_afc {
-	__le16 afc_auto;
-	union {
-		struct {
-			__le16 threshold;
-			__le16 period;
-		};
-		struct {
-			__le16 timing_offset; /* signed */
-			__le16 carrier_offset; /* signed */
-		};
-	};
-} __attribute__ ((packed));
-
-struct cmd_tx_rate_query {
-	__le16 txrate;
-} __attribute__ ((packed));
-
-struct cmd_ds_get_tsf {
-	__le64 tsfvalue;
-} __attribute__ ((packed));
-
-struct cmd_ds_bt_access {
-	__le16 action;
-	__le32 id;
-	u8 addr1[ETH_ALEN];
-	u8 addr2[ETH_ALEN];
-} __attribute__ ((packed));
-
-struct cmd_ds_fwt_access {
-	__le16 action;
-	__le32 id;
-	u8 valid;
-	u8 da[ETH_ALEN];
-	u8 dir;
-	u8 ra[ETH_ALEN];
-	__le32 ssn;
-	__le32 dsn;
-	__le32 metric;
-	u8 rate;
-	u8 hopcount;
-	u8 ttl;
-	__le32 expiration;
-	u8 sleepmode;
-	__le32 snr;
-	__le32 references;
-	u8 prec[ETH_ALEN];
-} __attribute__ ((packed));
-
-
-struct cmd_ds_mesh_config {
-	struct cmd_header hdr;
-
-        __le16 action;
-        __le16 channel;
-        __le16 type;
-        __le16 length;
-        u8 data[128];   /* last position reserved */
-} __attribute__ ((packed));
-
-
-struct cmd_ds_mesh_access {
-	struct cmd_header hdr;
-
-	__le16 action;
-	__le32 data[32];	/* last position reserved */
-} __attribute__ ((packed));
-
-/* Number of stats counters returned by the firmware */
-#define MESH_STATS_NUM 8
-
-struct cmd_ds_command {
-	/* command header */
-	__le16 command;
-	__le16 size;
-	__le16 seqnum;
-	__le16 result;
-
-	/* command Body */
-	union {
-		struct cmd_ds_802_11_ps_mode psmode;
-		struct cmd_ds_802_11_get_stat gstat;
-		struct cmd_ds_802_3_get_stat gstat_8023;
-		struct cmd_ds_802_11_rf_antenna rant;
-		struct cmd_ds_802_11_monitor_mode monitor;
-		struct cmd_ds_802_11_rssi rssi;
-		struct cmd_ds_802_11_rssi_rsp rssirsp;
-		struct cmd_ds_mac_reg_access macreg;
-		struct cmd_ds_bbp_reg_access bbpreg;
-		struct cmd_ds_rf_reg_access rfreg;
-
-		struct cmd_ds_802_11d_domain_info domaininfo;
-		struct cmd_ds_802_11d_domain_info domaininforesp;
-
-		struct cmd_ds_802_11_tpc_cfg tpccfg;
-		struct cmd_ds_802_11_afc afc;
-		struct cmd_ds_802_11_led_ctrl ledgpio;
-
-		struct cmd_tx_rate_query txrate;
-		struct cmd_ds_bt_access bt;
-		struct cmd_ds_fwt_access fwt;
-		struct cmd_ds_get_tsf gettsf;
-		struct cmd_ds_802_11_beacon_control bcn_ctrl;
-	} params;
-} __attribute__ ((packed));
-
-#endif
--- linux-wl.orig/drivers/net/wireless/libertas/cmd.h
+++ linux-wl/drivers/net/wireless/libertas/cmd.h
@@ -3,7 +3,7 @@
 #ifndef _LBS_CMD_H_
 #define _LBS_CMD_H_
 
-#include "hostcmd.h"
+#include "host.h"
 #include "dev.h"
 
 /* lbs_cmd() infers the size of the buffer to copy data back into, from
--- linux-wl.orig/drivers/net/wireless/libertas/cmd.c
+++ linux-wl/drivers/net/wireless/libertas/cmd.c
@@ -8,7 +8,6 @@
 #include <linux/kfifo.h>
 #include <linux/sched.h>
 #include "host.h"
-#include "hostcmd.h"
 #include "decl.h"
 #include "defs.h"
 #include "dev.h"
--- linux-wl.orig/drivers/net/wireless/libertas/dev.h
+++ linux-wl/drivers/net/wireless/libertas/dev.h
@@ -12,7 +12,7 @@
 #include <linux/debugfs.h>
 
 #include "defs.h"
-#include "hostcmd.h"
+#include "host.h"
 
 extern const struct ethtool_ops lbs_ethtool_ops;
 
--- linux-wl.orig/drivers/net/wireless/libertas/rx.c
+++ linux-wl/drivers/net/wireless/libertas/rx.c
@@ -4,7 +4,7 @@
 #include <linux/etherdevice.h>
 #include <linux/types.h>
 
-#include "hostcmd.h"
+#include "host.h"
 #include "radiotap.h"
 #include "decl.h"
 #include "dev.h"
--- linux-wl.orig/drivers/net/wireless/libertas/tx.c
+++ linux-wl/drivers/net/wireless/libertas/tx.c
@@ -5,7 +5,7 @@
 #include <linux/etherdevice.h>
 #include <linux/sched.h>
 
-#include "hostcmd.h"
+#include "host.h"
 #include "radiotap.h"
 #include "decl.h"
 #include "defs.h"

-- 
http://www.holgerschurig.de

^ permalink raw reply

* [PATCH] libertas: harmonize cmd.h
From: Holger Schurig @ 2009-10-16 15:33 UTC (permalink / raw)
  To: linux-wireless, John Linville; +Cc: Dan Williams

* move declarations for functions of cmd.c/cmdresp.c into cmd.h
* move declarations from cmd.h that are in main.c to decl.h
* group command functions

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>

--- linux-wl.orig/drivers/net/wireless/libertas/cmd.h
+++ linux-wl/drivers/net/wireless/libertas/cmd.h
@@ -6,8 +6,27 @@
 #include "host.h"
 #include "dev.h"
 
+
+/* Command & response transfer between host and card */
+
+struct cmd_ctrl_node {
+	struct list_head list;
+	int result;
+	/* command response */
+	int (*callback)(struct lbs_private *,
+			unsigned long,
+			struct cmd_header *);
+	unsigned long callback_arg;
+	/* command data */
+	struct cmd_header *cmdbuf;
+	/* wait queue */
+	u16 cmdwaitqwoken;
+	wait_queue_head_t cmdwait_q;
+};
+
+
 /* lbs_cmd() infers the size of the buffer to copy data back into, from
-   the size of the target of the pointer. Since the command to be sent 
+   the size of the target of the pointer. Since the command to be sent
    may often be smaller, that size is set in cmd->size by the caller.*/
 #define lbs_cmd(priv, cmdnr, cmd, cb, cb_arg)	({		\
 	uint16_t __sz = le16_to_cpu((cmd)->hdr.size);		\
@@ -18,6 +37,11 @@
 #define lbs_cmd_with_response(priv, cmdnr, cmd)	\
 	lbs_cmd(priv, cmdnr, cmd, lbs_cmd_copyback, (unsigned long) (cmd))
 
+int lbs_prepare_and_send_command(struct lbs_private *priv,
+	u16 cmd_no,
+	u16 cmd_action,
+	u16 wait_option, u32 cmd_oid, void *pdata_buf);
+
 void lbs_cmd_async(struct lbs_private *priv, uint16_t command,
 	struct cmd_header *in_cmd, int in_cmd_size);
 
@@ -31,62 +55,102 @@
 	int (*callback)(struct lbs_private *, unsigned long, struct cmd_header *),
 	unsigned long callback_arg);
 
-int lbs_set_power_adapt_cfg(struct lbs_private *priv, int enable, int8_t p0,
-		int8_t p1, int8_t p2);
+int lbs_cmd_copyback(struct lbs_private *priv, unsigned long extra,
+		     struct cmd_header *resp);
 
-int lbs_set_tpc_cfg(struct lbs_private *priv, int enable, int8_t p0, int8_t p1,
-		int8_t p2, int usesnr);
+int lbs_allocate_cmd_buffer(struct lbs_private *priv);
+int lbs_free_cmd_buffer(struct lbs_private *priv);
 
-int lbs_set_power_adapt_cfg(struct lbs_private *priv, int enable, int8_t p0,
-		int8_t p1, int8_t p2);
+int lbs_execute_next_command(struct lbs_private *priv);
+void lbs_complete_command(struct lbs_private *priv, struct cmd_ctrl_node *cmd,
+			  int result);
+int lbs_process_command_response(struct lbs_private *priv, u8 *data, u32 len);
 
-int lbs_set_tpc_cfg(struct lbs_private *priv, int enable, int8_t p0, int8_t p1,
-		int8_t p2, int usesnr);
 
-int lbs_cmd_copyback(struct lbs_private *priv, unsigned long extra,
-		     struct cmd_header *resp);
+/* From cmdresp.c */
 
-int lbs_update_hw_spec(struct lbs_private *priv);
+void lbs_mac_event_disconnected(struct lbs_private *priv);
 
-int lbs_mesh_access(struct lbs_private *priv, uint16_t cmd_action,
-		    struct cmd_ds_mesh_access *cmd);
 
-int lbs_set_data_rate(struct lbs_private *priv, u8 rate);
+
+/* Events */
+
+int lbs_process_event(struct lbs_private *priv, u32 event);
+
+
+/* Actual commands */
+
+int lbs_update_hw_spec(struct lbs_private *priv);
 
 int lbs_get_channel(struct lbs_private *priv);
+
 int lbs_set_channel(struct lbs_private *priv, u8 channel);
 
+int lbs_update_channel(struct lbs_private *priv);
+
+int lbs_host_sleep_cfg(struct lbs_private *priv, uint32_t criteria,
+		struct wol_config *p_wol_config);
+
+int lbs_cmd_802_11_sleep_params(struct lbs_private *priv, uint16_t cmd_action,
+				struct sleep_params *sp);
+
+void lbs_ps_sleep(struct lbs_private *priv, int wait_option);
+
+void lbs_ps_wakeup(struct lbs_private *priv, int wait_option);
+
+void lbs_ps_confirm_sleep(struct lbs_private *priv);
+
+int lbs_set_radio(struct lbs_private *priv, u8 preamble, u8 radio_on);
+
+void lbs_set_mac_control(struct lbs_private *priv);
+
+int lbs_get_tx_power(struct lbs_private *priv, s16 *curlevel, s16 *minlevel,
+		     s16 *maxlevel);
+
+int lbs_set_snmp_mib(struct lbs_private *priv, u32 oid, u16 val);
+
+int lbs_get_snmp_mib(struct lbs_private *priv, u32 oid, u16 *out_val);
+
+
+/* Mesh related */
+
+int lbs_mesh_access(struct lbs_private *priv, uint16_t cmd_action,
+		    struct cmd_ds_mesh_access *cmd);
+
 int lbs_mesh_config_send(struct lbs_private *priv,
 			 struct cmd_ds_mesh_config *cmd,
 			 uint16_t action, uint16_t type);
+
 int lbs_mesh_config(struct lbs_private *priv, uint16_t enable, uint16_t chan);
 
-int lbs_host_sleep_cfg(struct lbs_private *priv, uint32_t criteria,
-		struct wol_config *p_wol_config);
-int lbs_suspend(struct lbs_private *priv);
-void lbs_resume(struct lbs_private *priv);
+
+/* Commands only used in wext.c, assoc. and scan.c */
+
+int lbs_set_power_adapt_cfg(struct lbs_private *priv, int enable, int8_t p0,
+		int8_t p1, int8_t p2);
+
+int lbs_set_tpc_cfg(struct lbs_private *priv, int enable, int8_t p0, int8_t p1,
+		int8_t p2, int usesnr);
+
+int lbs_set_data_rate(struct lbs_private *priv, u8 rate);
 
 int lbs_cmd_802_11_rate_adapt_rateset(struct lbs_private *priv,
 				      uint16_t cmd_action);
+
 int lbs_cmd_802_11_inactivity_timeout(struct lbs_private *priv,
 				      uint16_t cmd_action, uint16_t *timeout);
-int lbs_cmd_802_11_sleep_params(struct lbs_private *priv, uint16_t cmd_action,
-				struct sleep_params *sp);
+
 int lbs_cmd_802_11_set_wep(struct lbs_private *priv, uint16_t cmd_action,
 			   struct assoc_request *assoc);
+
 int lbs_cmd_802_11_enable_rsn(struct lbs_private *priv, uint16_t cmd_action,
 			      uint16_t *enable);
+
 int lbs_cmd_802_11_key_material(struct lbs_private *priv, uint16_t cmd_action,
 				struct assoc_request *assoc);
 
-int lbs_get_tx_power(struct lbs_private *priv, s16 *curlevel, s16 *minlevel,
-		     s16 *maxlevel);
 int lbs_set_tx_power(struct lbs_private *priv, s16 dbm);
 
-int lbs_set_radio(struct lbs_private *priv, u8 preamble, u8 radio_on);
-
-int lbs_set_snmp_mib(struct lbs_private *priv, u32 oid, u16 val);
-
-int lbs_get_snmp_mib(struct lbs_private *priv, u32 oid, u16 *out_val);
+int lbs_set_deep_sleep(struct lbs_private *priv, int deep_sleep);
 
 #endif /* _LBS_CMD_H */
--- linux-wl.orig/drivers/net/wireless/libertas/decl.h
+++ linux-wl/drivers/net/wireless/libertas/decl.h
@@ -17,23 +17,13 @@
 struct cmd_ctrl_node;
 struct cmd_ds_command;
 
-void lbs_set_mac_control(struct lbs_private *priv);
+int lbs_suspend(struct lbs_private *priv);
+void lbs_resume(struct lbs_private *priv);
 
 void lbs_send_tx_feedback(struct lbs_private *priv, u32 try_count);
 
-int lbs_free_cmd_buffer(struct lbs_private *priv);
-
-int lbs_prepare_and_send_command(struct lbs_private *priv,
-	u16 cmd_no,
-	u16 cmd_action,
-	u16 wait_option, u32 cmd_oid, void *pdata_buf);
-
-int lbs_allocate_cmd_buffer(struct lbs_private *priv);
-int lbs_execute_next_command(struct lbs_private *priv);
-int lbs_process_event(struct lbs_private *priv, u32 event);
 void lbs_queue_event(struct lbs_private *priv, u32 event);
 void lbs_notify_command_response(struct lbs_private *priv, u8 resp_idx);
-int lbs_set_deep_sleep(struct lbs_private *priv, int deep_sleep);
 int lbs_enter_auto_deep_sleep(struct lbs_private *priv);
 int lbs_exit_auto_deep_sleep(struct lbs_private *priv);
 
@@ -41,26 +31,17 @@
 u8 lbs_data_rate_to_fw_index(u32 rate);
 
 /** The proc fs interface */
-int lbs_process_command_response(struct lbs_private *priv, u8 *data, u32 len);
-void lbs_complete_command(struct lbs_private *priv, struct cmd_ctrl_node *cmd,
-			  int result);
 netdev_tx_t lbs_hard_start_xmit(struct sk_buff *skb,
 				struct net_device *dev);
 int lbs_set_regiontable(struct lbs_private *priv, u8 region, u8 band);
 
 int lbs_process_rxed_packet(struct lbs_private *priv, struct sk_buff *);
 
-void lbs_ps_sleep(struct lbs_private *priv, int wait_option);
-void lbs_ps_confirm_sleep(struct lbs_private *priv);
-void lbs_ps_wakeup(struct lbs_private *priv, int wait_option);
-
 struct chan_freq_power *lbs_find_cfp_by_band_and_channel(
 	struct lbs_private *priv,
 	u8 band,
 	u16 channel);
 
-void lbs_mac_event_disconnected(struct lbs_private *priv);
-
 void lbs_send_iwevcustom_event(struct lbs_private *priv, s8 *str);
 
 /* persistcfg.c */
@@ -76,6 +57,5 @@
 void lbs_stop_card(struct lbs_private *priv);
 void lbs_host_to_card_done(struct lbs_private *priv);
 
-int lbs_update_channel(struct lbs_private *priv);
 
 #endif
--- linux-wl.orig/drivers/net/wireless/libertas/host.h
+++ linux-wl/drivers/net/wireless/libertas/host.h
@@ -374,21 +374,6 @@
 	__le16 result;
 } __attribute__ ((packed));
 
-struct cmd_ctrl_node {
-	struct list_head list;
-	int result;
-	/* command response */
-	int (*callback)(struct lbs_private *,
-			unsigned long,
-			struct cmd_header *);
-	unsigned long callback_arg;
-	/* command data */
-	struct cmd_header *cmdbuf;
-	/* wait queue */
-	u16 cmdwaitqwoken;
-	wait_queue_head_t cmdwait_q;
-};
-
 /* Generic structure to hold all key types. */
 struct enc_key {
 	u16 len;
--- linux-wl.orig/drivers/net/wireless/libertas/cmdresp.c
+++ linux-wl/drivers/net/wireless/libertas/cmdresp.c
@@ -11,6 +11,7 @@
 
 #include "host.h"
 #include "decl.h"
+#include "cmd.h"
 #include "defs.h"
 #include "dev.h"
 #include "assoc.h"
--- linux-wl.orig/drivers/net/wireless/libertas/11d.c
+++ linux-wl/drivers/net/wireless/libertas/11d.c
@@ -6,6 +6,7 @@
 #include <linux/wireless.h>
 
 #include "host.h"
+#include "cmd.h"
 #include "decl.h"
 #include "11d.h"
 #include "dev.h"

-- 
http://www.holgerschurig.de

^ permalink raw reply

* [PATCH] libertas: make lbs_get_channel() static
From: Holger Schurig @ 2009-10-16 15:33 UTC (permalink / raw)
  To: linux-wireless, John Linville; +Cc: Dan Williams

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>

--- linux-wl.orig/drivers/net/wireless/libertas/cmd.c
+++ linux-wl/drivers/net/wireless/libertas/cmd.c
@@ -880,7 +880,7 @@
  *
  *  @return 	   	The channel on success, error on failure
  */
-int lbs_get_channel(struct lbs_private *priv)
+static int lbs_get_channel(struct lbs_private *priv)
 {
 	struct cmd_ds_802_11_rf_channel cmd;
 	int ret = 0;
--- linux-wl.orig/drivers/net/wireless/libertas/cmd.h
+++ linux-wl/drivers/net/wireless/libertas/cmd.h
@@ -82,8 +82,6 @@
 
 int lbs_update_hw_spec(struct lbs_private *priv);
 
-int lbs_get_channel(struct lbs_private *priv);
-
 int lbs_set_channel(struct lbs_private *priv, u8 channel);
 
 int lbs_update_channel(struct lbs_private *priv);

-- 
http://www.holgerschurig.de

^ permalink raw reply

* [PATCH] libertas: remove unused lbs_cmd_802_11_inactivity_timeout()
From: Holger Schurig @ 2009-10-16 15:34 UTC (permalink / raw)
  To: linux-wireless, John Linville; +Cc: Dan Williams

Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>

--- linux-wl.orig/drivers/net/wireless/libertas/cmd.c
+++ linux-wl/drivers/net/wireless/libertas/cmd.c
@@ -273,33 +273,6 @@
 	return 0;
 }
 
-int lbs_cmd_802_11_inactivity_timeout(struct lbs_private *priv,
-				      uint16_t cmd_action, uint16_t *timeout)
-{
-	struct cmd_ds_802_11_inactivity_timeout cmd;
-	int ret;
-
-	lbs_deb_enter(LBS_DEB_CMD);
-
-	cmd.hdr.command = cpu_to_le16(CMD_802_11_INACTIVITY_TIMEOUT);
-	cmd.hdr.size = cpu_to_le16(sizeof(cmd));
-
-	cmd.action = cpu_to_le16(cmd_action);
-
-	if (cmd_action == CMD_ACT_SET)
-		cmd.timeout = cpu_to_le16(*timeout);
-	else
-		cmd.timeout = 0;
-
-	ret = lbs_cmd_with_response(priv, CMD_802_11_INACTIVITY_TIMEOUT, &cmd);
-
-	if (!ret)
-		*timeout = le16_to_cpu(cmd.timeout);
-
-	lbs_deb_leave_args(LBS_DEB_CMD, "ret %d", ret);
-	return 0;
-}
-
 int lbs_cmd_802_11_sleep_params(struct lbs_private *priv, uint16_t cmd_action,
 				struct sleep_params *sp)
 {
--- linux-wl.orig/drivers/net/wireless/libertas/cmd.h
+++ linux-wl/drivers/net/wireless/libertas/cmd.h
@@ -135,9 +135,6 @@
 int lbs_cmd_802_11_rate_adapt_rateset(struct lbs_private *priv,
 				      uint16_t cmd_action);
 
-int lbs_cmd_802_11_inactivity_timeout(struct lbs_private *priv,
-				      uint16_t cmd_action, uint16_t *timeout);
-
 int lbs_cmd_802_11_set_wep(struct lbs_private *priv, uint16_t cmd_action,
 			   struct assoc_request *assoc);
 
--- linux-wl.orig/drivers/net/wireless/libertas/host.h
+++ linux-wl/drivers/net/wireless/libertas/host.h
@@ -621,16 +621,6 @@
 	__le16 reserved;
 } __attribute__ ((packed));
 
-struct cmd_ds_802_11_inactivity_timeout {
-	struct cmd_header hdr;
-
-	/* ACT_GET/ACT_SET */
-	__le16 action;
-
-	/* Inactivity timeout in msec */
-	__le16 timeout;
-} __attribute__ ((packed));
-
 struct cmd_ds_802_11_rf_channel {
 	struct cmd_header hdr;
 

-- 
http://www.holgerschurig.de

^ permalink raw reply

* BUG: endianness issues with libertas if_spi.c
From: Holger Schurig @ 2009-10-16 15:41 UTC (permalink / raw)
  To: andrey, linux-wireless

Andrey, can you fix this?  I don't have SPI hardware and wouldn't
be able to check the functionality after the fixes. However, some
things are obvious, e.g.


u16 reg_out = cpu_to_le16(reg | IF_SPI_WRITE_OPERATION_MASK);

should either be

  reg_out = reg | IF_SPI_WRITE_OPERATION_MASK;

or

  __le16 reg_out = cpu_to_le16(reg | IF_SPI_WRITE_OPERATION_MASK);


Here's a run with sparse:

$ make -C /usr/src/linux-wl/ modules SUBDIRS=drivers/net/wireless/libertas C=2 CF=-D__CHECK_ENDIAN__    
drivers/net/wireless/libertas/if_spi.c:137:16: warning: incorrect type in initializer (different base types)
drivers/net/wireless/libertas/if_spi.c:137:16:    expected unsigned short [unsigned] [usertype] reg_out
drivers/net/wireless/libertas/if_spi.c:137:16:    got restricted __le16 [usertype] <noident>
drivers/net/wireless/libertas/if_spi.c:191:16: warning: incorrect type in initializer (different base types)
drivers/net/wireless/libertas/if_spi.c:191:16:    expected unsigned short [unsigned] [usertype] reg_out
drivers/net/wireless/libertas/if_spi.c:191:16:    got restricted __le16 [usertype] <noident>
drivers/net/wireless/libertas/if_spi.c:256:24: warning: incorrect type in argument 1 (different base types)
drivers/net/wireless/libertas/if_spi.c:256:24:    expected restricted __le32 const [usertype] *p
drivers/net/wireless/libertas/if_spi.c:256:24:    got unsigned int *<noident>
drivers/net/wireless/libertas/if_spi.c:243:24: warning: incorrect type in argument 1 (different base types)
drivers/net/wireless/libertas/if_spi.c:243:24:    expected restricted __le16 const [usertype] *p
drivers/net/wireless/libertas/if_spi.c:243:24:    got unsigned short *<noident>
drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
drivers/net/wireless/libertas/if_spi.c:243:24: warning: incorrect type in argument 1 (different base types)
drivers/net/wireless/libertas/if_spi.c:243:24:    expected restricted __le16 const [usertype] *p
drivers/net/wireless/libertas/if_spi.c:243:24:    got unsigned short *<noident>
drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
drivers/net/wireless/libertas/if_spi.c:243:24: warning: incorrect type in argument 1 (different base types)
drivers/net/wireless/libertas/if_spi.c:243:24:    expected restricted __le16 const [usertype] *p
drivers/net/wireless/libertas/if_spi.c:243:24:    got unsigned short *<noident>
drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
drivers/net/wireless/libertas/if_spi.c:243:24: warning: incorrect type in argument 1 (different base types)
drivers/net/wireless/libertas/if_spi.c:243:24:    expected restricted __le16 const [usertype] *p
drivers/net/wireless/libertas/if_spi.c:243:24:    got unsigned short *<noident>
drivers/net/wireless/libertas/if_spi.c:243:24: warning: incorrect type in argument 1 (different base types)
drivers/net/wireless/libertas/if_spi.c:243:24:    expected restricted __le16 const [usertype] *p
drivers/net/wireless/libertas/if_spi.c:243:24:    got unsigned short *<noident>
drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
drivers/net/wireless/libertas/if_spi.c:243:24: warning: incorrect type in argument 1 (different base types)
drivers/net/wireless/libertas/if_spi.c:243:24:    expected restricted __le16 const [usertype] *p
drivers/net/wireless/libertas/if_spi.c:243:24:    got unsigned short *<noident>
-- 
http://www.holgerschurig.de

^ permalink raw reply

* Re: [PATCH 1/1] staging/stlc45xx: Fix compile error
From: Javier Martinez Canillas @ 2009-10-16 15:59 UTC (permalink / raw)
  To: Christian Lamparter
  Cc: Kalle Valo, Greg KH, devel@driverdev.osuosl.org, linux-wireless
In-Reply-To: <200910161654.29933.chunkeey@googlemail.com>

>> At least I could make it compile when the API changes and work on bugs
>> reported until you are confident that p54spi driver is good enough and
>> there is no need anymore for stlc45xx.
>
> p54spi IS stlc45xx, but with a different name.
>

In that case I guess probably the best option would be to remove
stlc45xx from staging as Kalle sugested. Users should migrate to
p54spi since it is already in /net/wireless/

Best regards

-----------------------------------------
Javier Martínez Canillas
+595 981 88 66 58

^ permalink raw reply

* Re: [PATCH 1/1] staging/stlc45xx: Fix compile error
From: Greg KH @ 2009-10-16 16:01 UTC (permalink / raw)
  To: Javier Martinez Canillas
  Cc: Christian Lamparter, Kalle Valo, devel@driverdev.osuosl.org,
	linux-wireless
In-Reply-To: <390803460910160859m6364219fx59fe067432a4942e@mail.gmail.com>

On Fri, Oct 16, 2009 at 11:59:04AM -0400, Javier Martinez Canillas wrote:
> >> At least I could make it compile when the API changes and work on bugs
> >> reported until you are confident that p54spi driver is good enough and
> >> there is no need anymore for stlc45xx.
> >
> > p54spi IS stlc45xx, but with a different name.
> >
> 
> In that case I guess probably the best option would be to remove
> stlc45xx from staging as Kalle sugested. Users should migrate to
> p54spi since it is already in /net/wireless/

Ah, ok, I'll go delete it.

thanks,

greg k-h

^ permalink raw reply

* Re: [PATCH 1/1] staging/stlc45xx: Fix compile error
From: Kalle Valo @ 2009-10-16 16:05 UTC (permalink / raw)
  To: Javier Martinez Canillas
  Cc: Christian Lamparter, Greg KH, devel@driverdev.osuosl.org,
	linux-wireless
In-Reply-To: <390803460910160859m6364219fx59fe067432a4942e@mail.gmail.com>

Javier Martinez Canillas <martinez.javier@gmail.com> writes:

>>> At least I could make it compile when the API changes and work on bugs
>>> reported until you are confident that p54spi driver is good enough and
>>> there is no need anymore for stlc45xx.
>>
>> p54spi IS stlc45xx, but with a different name.
>
> In that case I guess probably the best option would be to remove
> stlc45xx from staging as Kalle sugested. Users should migrate to
> p54spi since it is already in /net/wireless/

Yes, p54spi is the future. If you have spare time, better to work on
p54spi instead of stlc45xx.

-- 
Kalle Valo

^ permalink raw reply

* Re: libertas + cfg80211: road for kernel inclusion?
From: Dan Williams @ 2009-10-16 16:16 UTC (permalink / raw)
  To: Holger Schurig; +Cc: linux-wireless
In-Reply-To: <200910161426.22206.hs4233@mail.mn-solutions.de>

On Fri, 2009-10-16 at 14:26 +0200, Holger Schurig wrote:
> Hi all !
> 
> Today I got a connection of libertas + cfg80211 to an AP in the 
> modes WEP40, WEP104, WPA, WPA2 and also with no encryption at 
> all.
> 
> I still have some loose odds and ends, but the initial work is 
> done and we can consider if we want this feature included in the 
> linux kernel --- or not.
> 
> 
> However, an cfg80211-converted libertas has some missing 
> features, that others migth think are important: no 
> libertas-mesh, no monitor mode, no ad-hoc mode. Nothing of this 
> is per-se impossible with cfg80211, it just needs to be 
> implemented.
> 
> I see several possibilities:
> 
> 
> 1. Let it mature outside
>    ---------------------
> Keep libertas+cfg80211 out-of-tree until it supports some minimal 
> functionality.
> 
> Pro: no one misses a feature
> Cons: no widespread testing of the cfg80211 features
> 
> 
> 2. Take it as it is
>    ----------------
> Nah, not exactly at it is today, but let us stop by missing 
> monitor-mode, adhoc etc --- for now. Implement that later, once 
> libertas is in-kernel and people need it.

If you can keep working on this, I'd say lets shoot for kernel inclusion
in 2.6.34.  But we'd need at least adhoc support before then.  The mesh
stuff will be interesting, yes, but hopefully we can hammer out what the
specific interface there should be.

I'm somewhat hesitant about pushing a big change like this to 2.6.33
without a lot more testing by people that have the hardware.  I haven't
had time to poke at this yet besides looking at the patches.

BTW, do you have any rough counts of the LoC you've removed from the
driver as a result of this?  Ideally you could remove a cargo-ship's
worth of work I did back in 2007 and you know what?  I like that :)

Dan

> Pro: widespread testing of the cfg80211 features
> Cons: people miss some functions when they upgrade the kernel
> 
> 
> 3. Make things configurable
>    ------------------------
> I could create a Kconfig "choice" entry, where one can select 
> CONFIG_LIBERTAS_WEXT or CONFIG_LIBERTAS_CFG80211. I would then 
> provide a bunch of cleanup patches, e.g. to move all things in 
> struct "libertas_private" into one place that are WEXT-related.
> 
> Pro: no one misses his beloved feature (because it's in 
> CONFIG_LIBERTAS_WEXT)
> Pro: some people can test the cfg80211-features (with 
> CONFIG_LIBERTAS_CFG80211)
> Cons: we have a higher amount of #ifdef in Libertas code until 
> either libertas-cfg80211 got all the features added OR until 
> WEXT get's removed from the kernel.
> 
> 


^ permalink raw reply

* Re: [PATCH 03/16] iwmc3200wifi: WPS support
From: Marcel Holtmann @ 2009-10-16 16:18 UTC (permalink / raw)
  To: Zhu Yi; +Cc: linville, linux-wireless, Samuel Ortiz
In-Reply-To: <1255670340-22565-4-git-send-email-yi.zhu@intel.com>

Hi Yi,

> From: Samuel Ortiz <sameo@linux.intel.com>
> 
> By setting the WSC profile flag, we now support WPS as an enrollee.
> 
> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
> Signed-off-by: Zhu Yi <yi.zhu@intel.com>
> ---
>  drivers/net/wireless/iwmc3200wifi/cfg80211.c |    7 +++++++
>  drivers/net/wireless/iwmc3200wifi/commands.h |    3 +++
>  2 files changed, 10 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/net/wireless/iwmc3200wifi/cfg80211.c b/drivers/net/wireless/iwmc3200wifi/cfg80211.c
> index 0d2e719..a6d2f20 100644
> --- a/drivers/net/wireless/iwmc3200wifi/cfg80211.c
> +++ b/drivers/net/wireless/iwmc3200wifi/cfg80211.c
> @@ -628,6 +628,13 @@ static int iwm_cfg80211_connect(struct wiphy *wiphy, struct net_device *dev,
>  		iwm->default_key = sme->key_idx;
>  	}
>  
> +	/* WPA and open AUTH type from wpa_s means WPS (a.k.a. WSC) */
> +	if ((iwm->umac_profile->sec.flags &
> +	     (UMAC_SEC_FLG_WPA_ON_MSK | UMAC_SEC_FLG_RSNA_ON_MSK)) &&
> +	    iwm->umac_profile->sec.auth_type == UMAC_AUTH_TYPE_OPEN) {
> +			iwm->umac_profile->sec.flags = UMAC_SEC_FLG_WSC_ON_MSK;
> +	}
> +

I don't wanna be picky, but what coding style are you following here?
The indentation makes no sense and doesn't improve readability.

Regards

Marcel



^ permalink raw reply

* Re: [PATCH] libertas: cleanup host.h and hostcmd.h
From: Dan Williams @ 2009-10-16 16:28 UTC (permalink / raw)
  To: Holger Schurig; +Cc: linux-wireless, John Linville
In-Reply-To: <200910161732.16401.hs4233@mail.mn-solutions.de>

On Fri, 2009-10-16 at 17:32 +0200, Holger Schurig wrote:
> Also remove some unused definitions and make tab usage consistent.
> 
> Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>

Acked-by: Dan Williams <dcbw@redhat.com>

> 
> ---
> No functional changes!
> 
> --- linux-wl.orig/drivers/net/wireless/libertas/host.h
> +++ linux-wl/drivers/net/wireless/libertas/host.h
> @@ -1,202 +1,189 @@
>  /**
> -  * This file contains definitions of WLAN commands.
> +  * This file function prototypes, data structure
> +  * and  definitions for all the host/station commands
>    */
>  
>  #ifndef _LBS_HOST_H_
>  #define _LBS_HOST_H_
>  
> -/** PUBLIC DEFINITIONS */
> -#define DEFAULT_AD_HOC_CHANNEL			6
> -#define	DEFAULT_AD_HOC_CHANNEL_A		36
> +#include "11d.h"
>  
> -#define CMD_OPTION_WAITFORRSP			0x0002
> +#define DEFAULT_AD_HOC_CHANNEL                  6
> +
> +#define CMD_OPTION_WAITFORRSP                   0x0002
>  
>  /** Host command IDs */
>  
>  /* Return command are almost always the same as the host command, but with
>   * bit 15 set high.  There are a few exceptions, though...
>   */
> -#define CMD_RET(cmd)			(0x8000 | cmd)
> +#define CMD_RET(cmd)                            (0x8000 | cmd)
>  
>  /* Return command convention exceptions: */
> -#define CMD_RET_802_11_ASSOCIATE		0x8012
> +#define CMD_RET_802_11_ASSOCIATE                0x8012
>  
>  /* Command codes */
> -#define CMD_GET_HW_SPEC				0x0003
> -#define	CMD_EEPROM_UPDATE			0x0004
> -#define CMD_802_11_RESET			0x0005
> -#define	CMD_802_11_SCAN				0x0006
> -#define CMD_802_11_GET_LOG			0x000b
> -#define CMD_MAC_MULTICAST_ADR			0x0010
> -#define CMD_802_11_AUTHENTICATE			0x0011
> -#define CMD_802_11_EEPROM_ACCESS		0x0059
> -#define CMD_802_11_ASSOCIATE			0x0050
> -#define CMD_802_11_SET_WEP			0x0013
> -#define CMD_802_11_GET_STAT			0x0014
> -#define CMD_802_3_GET_STAT			0x0015
> -#define CMD_802_11_SNMP_MIB			0x0016
> -#define CMD_MAC_REG_MAP				0x0017
> -#define CMD_BBP_REG_MAP				0x0018
> -#define CMD_MAC_REG_ACCESS			0x0019
> -#define CMD_BBP_REG_ACCESS			0x001a
> -#define CMD_RF_REG_ACCESS			0x001b
> -#define CMD_802_11_RADIO_CONTROL		0x001c
> -#define CMD_802_11_RF_CHANNEL			0x001d
> -#define CMD_802_11_RF_TX_POWER			0x001e
> -#define CMD_802_11_RSSI				0x001f
> -#define CMD_802_11_RF_ANTENNA			0x0020
> -#define CMD_802_11_PS_MODE			0x0021
> -#define CMD_802_11_DATA_RATE			0x0022
> -#define CMD_RF_REG_MAP				0x0023
> -#define CMD_802_11_DEAUTHENTICATE		0x0024
> -#define CMD_802_11_REASSOCIATE			0x0025
> -#define CMD_MAC_CONTROL				0x0028
> -#define CMD_802_11_AD_HOC_START			0x002b
> -#define CMD_802_11_AD_HOC_JOIN			0x002c
> -#define CMD_802_11_QUERY_TKIP_REPLY_CNTRS	0x002e
> -#define CMD_802_11_ENABLE_RSN			0x002f
> -#define CMD_802_11_SET_AFC			0x003c
> -#define CMD_802_11_GET_AFC			0x003d
> -#define CMD_802_11_DEEP_SLEEP                  0x003e
> -#define CMD_802_11_AD_HOC_STOP			0x0040
> -#define CMD_802_11_HOST_SLEEP_CFG		0x0043
> -#define CMD_802_11_WAKEUP_CONFIRM		0x0044
> -#define CMD_802_11_HOST_SLEEP_ACTIVATE		0x0045
> -#define CMD_802_11_BEACON_STOP			0x0049
> -#define CMD_802_11_MAC_ADDRESS			0x004d
> -#define CMD_802_11_LED_GPIO_CTRL		0x004e
> -#define CMD_802_11_EEPROM_ACCESS		0x0059
> -#define CMD_802_11_BAND_CONFIG			0x0058
> -#define CMD_GSPI_BUS_CONFIG			0x005a
> -#define CMD_802_11D_DOMAIN_INFO			0x005b
> -#define CMD_802_11_KEY_MATERIAL			0x005e
> -#define CMD_802_11_SLEEP_PARAMS			0x0066
> -#define CMD_802_11_INACTIVITY_TIMEOUT		0x0067
> -#define CMD_802_11_SLEEP_PERIOD			0x0068
> -#define CMD_802_11_TPC_CFG			0x0072
> -#define CMD_802_11_PA_CFG			0x0073
> -#define CMD_802_11_FW_WAKE_METHOD		0x0074
> -#define CMD_802_11_SUBSCRIBE_EVENT		0x0075
> -#define CMD_802_11_RATE_ADAPT_RATESET		0x0076
> -#define CMD_802_11_TX_RATE_QUERY		0x007f
> -#define	CMD_GET_TSF				0x0080
> -#define CMD_BT_ACCESS				0x0087
> -#define CMD_FWT_ACCESS				0x0095
> -#define CMD_802_11_MONITOR_MODE			0x0098
> -#define CMD_MESH_ACCESS				0x009b
> -#define CMD_MESH_CONFIG_OLD			0x00a3
> -#define CMD_MESH_CONFIG				0x00ac
> -#define	CMD_SET_BOOT2_VER			0x00a5
> -#define	CMD_FUNC_INIT				0x00a9
> -#define	CMD_FUNC_SHUTDOWN			0x00aa
> -#define CMD_802_11_BEACON_CTRL			0x00b0
> +#define CMD_GET_HW_SPEC                         0x0003
> +#define CMD_EEPROM_UPDATE                       0x0004
> +#define CMD_802_11_RESET                        0x0005
> +#define CMD_802_11_SCAN                         0x0006
> +#define CMD_802_11_GET_LOG                      0x000b
> +#define CMD_MAC_MULTICAST_ADR                   0x0010
> +#define CMD_802_11_AUTHENTICATE                 0x0011
> +#define CMD_802_11_EEPROM_ACCESS                0x0059
> +#define CMD_802_11_ASSOCIATE                    0x0050
> +#define CMD_802_11_SET_WEP                      0x0013
> +#define CMD_802_11_GET_STAT                     0x0014
> +#define CMD_802_3_GET_STAT                      0x0015
> +#define CMD_802_11_SNMP_MIB                     0x0016
> +#define CMD_MAC_REG_MAP                         0x0017
> +#define CMD_BBP_REG_MAP                         0x0018
> +#define CMD_MAC_REG_ACCESS                      0x0019
> +#define CMD_BBP_REG_ACCESS                      0x001a
> +#define CMD_RF_REG_ACCESS                       0x001b
> +#define CMD_802_11_RADIO_CONTROL                0x001c
> +#define CMD_802_11_RF_CHANNEL                   0x001d
> +#define CMD_802_11_RF_TX_POWER                  0x001e
> +#define CMD_802_11_RSSI                         0x001f
> +#define CMD_802_11_RF_ANTENNA                   0x0020
> +#define CMD_802_11_PS_MODE                      0x0021
> +#define CMD_802_11_DATA_RATE                    0x0022
> +#define CMD_RF_REG_MAP                          0x0023
> +#define CMD_802_11_DEAUTHENTICATE               0x0024
> +#define CMD_802_11_REASSOCIATE                  0x0025
> +#define CMD_MAC_CONTROL                         0x0028
> +#define CMD_802_11_AD_HOC_START                 0x002b
> +#define CMD_802_11_AD_HOC_JOIN                  0x002c
> +#define CMD_802_11_QUERY_TKIP_REPLY_CNTRS       0x002e
> +#define CMD_802_11_ENABLE_RSN                   0x002f
> +#define CMD_802_11_SET_AFC                      0x003c
> +#define CMD_802_11_GET_AFC                      0x003d
> +#define CMD_802_11_DEEP_SLEEP                   0x003e
> +#define CMD_802_11_AD_HOC_STOP                  0x0040
> +#define CMD_802_11_HOST_SLEEP_CFG               0x0043
> +#define CMD_802_11_WAKEUP_CONFIRM               0x0044
> +#define CMD_802_11_HOST_SLEEP_ACTIVATE          0x0045
> +#define CMD_802_11_BEACON_STOP                  0x0049
> +#define CMD_802_11_MAC_ADDRESS                  0x004d
> +#define CMD_802_11_LED_GPIO_CTRL                0x004e
> +#define CMD_802_11_EEPROM_ACCESS                0x0059
> +#define CMD_802_11_BAND_CONFIG                  0x0058
> +#define CMD_GSPI_BUS_CONFIG                     0x005a
> +#define CMD_802_11D_DOMAIN_INFO                 0x005b
> +#define CMD_802_11_KEY_MATERIAL                 0x005e
> +#define CMD_802_11_SLEEP_PARAMS                 0x0066
> +#define CMD_802_11_INACTIVITY_TIMEOUT           0x0067
> +#define CMD_802_11_SLEEP_PERIOD                 0x0068
> +#define CMD_802_11_TPC_CFG                      0x0072
> +#define CMD_802_11_PA_CFG                       0x0073
> +#define CMD_802_11_FW_WAKE_METHOD               0x0074
> +#define CMD_802_11_SUBSCRIBE_EVENT              0x0075
> +#define CMD_802_11_RATE_ADAPT_RATESET           0x0076
> +#define CMD_802_11_TX_RATE_QUERY                0x007f
> +#define CMD_GET_TSF                             0x0080
> +#define CMD_BT_ACCESS                           0x0087
> +#define CMD_FWT_ACCESS                          0x0095
> +#define CMD_802_11_MONITOR_MODE                 0x0098
> +#define CMD_MESH_ACCESS                         0x009b
> +#define CMD_MESH_CONFIG_OLD                     0x00a3
> +#define CMD_MESH_CONFIG                         0x00ac
> +#define CMD_SET_BOOT2_VER                       0x00a5
> +#define CMD_FUNC_INIT                           0x00a9
> +#define CMD_FUNC_SHUTDOWN                       0x00aa
> +#define CMD_802_11_BEACON_CTRL                  0x00b0
>  
>  /* For the IEEE Power Save */
> -#define CMD_SUBCMD_ENTER_PS		0x0030
> -#define CMD_SUBCMD_EXIT_PS		0x0031
> -#define CMD_SUBCMD_SLEEP_CONFIRMED	0x0034
> -#define CMD_SUBCMD_FULL_POWERDOWN	0x0035
> -#define CMD_SUBCMD_FULL_POWERUP		0x0036
> -
> -#define CMD_ENABLE_RSN			0x0001
> -#define CMD_DISABLE_RSN			0x0000
> -
> -#define CMD_ACT_GET			0x0000
> -#define CMD_ACT_SET			0x0001
> -#define CMD_ACT_GET_AES			0x0002
> -#define CMD_ACT_SET_AES			0x0003
> -#define CMD_ACT_REMOVE_AES		0x0004
> +#define CMD_SUBCMD_ENTER_PS                     0x0030
> +#define CMD_SUBCMD_EXIT_PS                      0x0031
> +#define CMD_SUBCMD_SLEEP_CONFIRMED              0x0034
> +#define CMD_SUBCMD_FULL_POWERDOWN               0x0035
> +#define CMD_SUBCMD_FULL_POWERUP                 0x0036
>  
> -/* Define action or option for CMD_802_11_SET_WEP */
> -#define CMD_ACT_ADD			0x0002
> -#define CMD_ACT_REMOVE			0x0004
> -#define CMD_ACT_USE_DEFAULT		0x0008
> +#define CMD_ENABLE_RSN                          0x0001
> +#define CMD_DISABLE_RSN                         0x0000
>  
> -#define CMD_TYPE_WEP_40_BIT		0x01
> -#define CMD_TYPE_WEP_104_BIT		0x02
> +#define CMD_ACT_GET                             0x0000
> +#define CMD_ACT_SET                             0x0001
>  
> -#define CMD_NUM_OF_WEP_KEYS		4
> +/* Define action or option for CMD_802_11_SET_WEP */
> +#define CMD_ACT_ADD                             0x0002
> +#define CMD_ACT_REMOVE                          0x0004
>  
> -#define CMD_WEP_KEY_INDEX_MASK		0x3fff
> +#define CMD_TYPE_WEP_40_BIT                     0x01
> +#define CMD_TYPE_WEP_104_BIT                    0x02
>  
> -/* Define action or option for CMD_802_11_RESET */
> -#define CMD_ACT_HALT			0x0003
> +#define CMD_NUM_OF_WEP_KEYS                     4
> +
> +#define CMD_WEP_KEY_INDEX_MASK                  0x3fff
>  
>  /* Define action or option for CMD_802_11_SCAN */
> -#define CMD_BSS_TYPE_BSS		0x0001
> -#define CMD_BSS_TYPE_IBSS		0x0002
> -#define CMD_BSS_TYPE_ANY		0x0003
> +#define CMD_BSS_TYPE_BSS                        0x0001
> +#define CMD_BSS_TYPE_IBSS                       0x0002
> +#define CMD_BSS_TYPE_ANY                        0x0003
>  
>  /* Define action or option for CMD_802_11_SCAN */
> -#define CMD_SCAN_TYPE_ACTIVE		0x0000
> -#define CMD_SCAN_TYPE_PASSIVE		0x0001
> +#define CMD_SCAN_TYPE_ACTIVE                    0x0000
> +#define CMD_SCAN_TYPE_PASSIVE                   0x0001
>  
> -#define CMD_SCAN_RADIO_TYPE_BG		0
> +#define CMD_SCAN_RADIO_TYPE_BG                  0
>  
> -#define	CMD_SCAN_PROBE_DELAY_TIME	0
> +#define CMD_SCAN_PROBE_DELAY_TIME               0
>  
>  /* Define action or option for CMD_MAC_CONTROL */
> -#define CMD_ACT_MAC_RX_ON			0x0001
> -#define CMD_ACT_MAC_TX_ON			0x0002
> -#define CMD_ACT_MAC_LOOPBACK_ON			0x0004
> -#define CMD_ACT_MAC_WEP_ENABLE			0x0008
> -#define CMD_ACT_MAC_INT_ENABLE			0x0010
> -#define CMD_ACT_MAC_MULTICAST_ENABLE		0x0020
> -#define CMD_ACT_MAC_BROADCAST_ENABLE		0x0040
> -#define CMD_ACT_MAC_PROMISCUOUS_ENABLE		0x0080
> -#define CMD_ACT_MAC_ALL_MULTICAST_ENABLE	0x0100
> -#define CMD_ACT_MAC_STRICT_PROTECTION_ENABLE	0x0400
> +#define CMD_ACT_MAC_RX_ON                       0x0001
> +#define CMD_ACT_MAC_TX_ON                       0x0002
> +#define CMD_ACT_MAC_LOOPBACK_ON                 0x0004
> +#define CMD_ACT_MAC_WEP_ENABLE                  0x0008
> +#define CMD_ACT_MAC_INT_ENABLE                  0x0010
> +#define CMD_ACT_MAC_MULTICAST_ENABLE            0x0020
> +#define CMD_ACT_MAC_BROADCAST_ENABLE            0x0040
> +#define CMD_ACT_MAC_PROMISCUOUS_ENABLE          0x0080
> +#define CMD_ACT_MAC_ALL_MULTICAST_ENABLE        0x0100
> +#define CMD_ACT_MAC_STRICT_PROTECTION_ENABLE    0x0400
>  
>  /* Event flags for CMD_802_11_SUBSCRIBE_EVENT */
> -#define CMD_SUBSCRIBE_RSSI_LOW		0x0001
> -#define CMD_SUBSCRIBE_SNR_LOW		0x0002
> -#define CMD_SUBSCRIBE_FAILCOUNT		0x0004
> -#define CMD_SUBSCRIBE_BCNMISS		0x0008
> -#define CMD_SUBSCRIBE_RSSI_HIGH		0x0010
> -#define CMD_SUBSCRIBE_SNR_HIGH		0x0020
> -
> -#define RADIO_PREAMBLE_LONG	0x00
> -#define RADIO_PREAMBLE_SHORT	0x02
> -#define RADIO_PREAMBLE_AUTO	0x04
> +#define CMD_SUBSCRIBE_RSSI_LOW                  0x0001
> +#define CMD_SUBSCRIBE_SNR_LOW                   0x0002
> +#define CMD_SUBSCRIBE_FAILCOUNT                 0x0004
> +#define CMD_SUBSCRIBE_BCNMISS                   0x0008
> +#define CMD_SUBSCRIBE_RSSI_HIGH                 0x0010
> +#define CMD_SUBSCRIBE_SNR_HIGH                  0x0020
> +
> +#define RADIO_PREAMBLE_LONG                     0x00
> +#define RADIO_PREAMBLE_SHORT                    0x02
> +#define RADIO_PREAMBLE_AUTO                     0x04
>  
>  /* Define action or option for CMD_802_11_RF_CHANNEL */
> -#define CMD_OPT_802_11_RF_CHANNEL_GET	0x00
> -#define CMD_OPT_802_11_RF_CHANNEL_SET	0x01
> +#define CMD_OPT_802_11_RF_CHANNEL_GET           0x00
> +#define CMD_OPT_802_11_RF_CHANNEL_SET           0x01
>  
>  /* Define action or option for CMD_802_11_DATA_RATE */
> -#define CMD_ACT_SET_TX_AUTO		0x0000
> -#define CMD_ACT_SET_TX_FIX_RATE		0x0001
> -#define CMD_ACT_GET_TX_RATE		0x0002
> -
> -#define CMD_ACT_SET_RX			0x0001
> -#define	CMD_ACT_SET_TX			0x0002
> -#define CMD_ACT_SET_BOTH		0x0003
> -#define	CMD_ACT_GET_RX			0x0004
> -#define CMD_ACT_GET_TX			0x0008
> -#define	CMD_ACT_GET_BOTH		0x000c
> +#define CMD_ACT_SET_TX_AUTO                     0x0000
> +#define CMD_ACT_SET_TX_FIX_RATE                 0x0001
> +#define CMD_ACT_GET_TX_RATE                     0x0002
>  
>  /* Define action or option for CMD_802_11_PS_MODE */
> -#define CMD_TYPE_CAM			0x0000
> -#define	CMD_TYPE_MAX_PSP		0x0001
> -#define CMD_TYPE_FAST_PSP		0x0002
> +#define CMD_TYPE_CAM                            0x0000
> +#define CMD_TYPE_MAX_PSP                        0x0001
> +#define CMD_TYPE_FAST_PSP                       0x0002
>  
>  /* Options for CMD_802_11_FW_WAKE_METHOD */
> -#define CMD_WAKE_METHOD_UNCHANGED	0x0000
> -#define CMD_WAKE_METHOD_COMMAND_INT	0x0001
> -#define CMD_WAKE_METHOD_GPIO		0x0002
> +#define CMD_WAKE_METHOD_UNCHANGED               0x0000
> +#define CMD_WAKE_METHOD_COMMAND_INT             0x0001
> +#define CMD_WAKE_METHOD_GPIO                    0x0002
>  
>  /* Object IDs for CMD_802_11_SNMP_MIB */
> -#define SNMP_MIB_OID_BSS_TYPE		0x0000
> -#define SNMP_MIB_OID_OP_RATE_SET	0x0001
> -#define SNMP_MIB_OID_BEACON_PERIOD	0x0002  /* Reserved on v9+ */
> -#define SNMP_MIB_OID_DTIM_PERIOD	0x0003  /* Reserved on v9+ */
> -#define SNMP_MIB_OID_ASSOC_TIMEOUT	0x0004  /* Reserved on v9+ */
> -#define SNMP_MIB_OID_RTS_THRESHOLD	0x0005
> -#define SNMP_MIB_OID_SHORT_RETRY_LIMIT	0x0006
> -#define SNMP_MIB_OID_LONG_RETRY_LIMIT	0x0007
> -#define SNMP_MIB_OID_FRAG_THRESHOLD	0x0008
> -#define SNMP_MIB_OID_11D_ENABLE		0x0009
> -#define SNMP_MIB_OID_11H_ENABLE		0x000A
> +#define SNMP_MIB_OID_BSS_TYPE                   0x0000
> +#define SNMP_MIB_OID_OP_RATE_SET                0x0001
> +#define SNMP_MIB_OID_BEACON_PERIOD              0x0002  /* Reserved on v9+ */
> +#define SNMP_MIB_OID_DTIM_PERIOD                0x0003  /* Reserved on v9+ */
> +#define SNMP_MIB_OID_ASSOC_TIMEOUT              0x0004  /* Reserved on v9+ */
> +#define SNMP_MIB_OID_RTS_THRESHOLD              0x0005
> +#define SNMP_MIB_OID_SHORT_RETRY_LIMIT          0x0006
> +#define SNMP_MIB_OID_LONG_RETRY_LIMIT           0x0007
> +#define SNMP_MIB_OID_FRAG_THRESHOLD             0x0008
> +#define SNMP_MIB_OID_11D_ENABLE                 0x0009
> +#define SNMP_MIB_OID_11H_ENABLE                 0x000A
>  
>  /* Define action or option for CMD_BT_ACCESS */
>  enum cmd_bt_access_opts {
> @@ -303,4 +290,714 @@
>  #define MACREG_INT_CODE_MESH_AUTO_STARTED	35
>  #define MACREG_INT_CODE_FIRMWARE_READY		48
>  
> +
> +/* 802.11-related definitions */
> +
> +/* TxPD descriptor */
> +struct txpd {
> +	/* union to cope up with later FW revisions */
> +	union {
> +		/* Current Tx packet status */
> +		__le32 tx_status;
> +		struct {
> +			/* BSS type: client, AP, etc. */
> +			u8 bss_type;
> +			/* BSS number */
> +			u8 bss_num;
> +			/* Reserved */
> +			__le16 reserved;
> +		} bss;
> +	} u;
> +	/* Tx control */
> +	__le32 tx_control;
> +	__le32 tx_packet_location;
> +	/* Tx packet length */
> +	__le16 tx_packet_length;
> +	/* First 2 byte of destination MAC address */
> +	u8 tx_dest_addr_high[2];
> +	/* Last 4 byte of destination MAC address */
> +	u8 tx_dest_addr_low[4];
> +	/* Pkt Priority */
> +	u8 priority;
> +	/* Pkt Trasnit Power control */
> +	u8 powermgmt;
> +	/* Amount of time the packet has been queued (units = 2ms) */
> +	u8 pktdelay_2ms;
> +	/* reserved */
> +	u8 reserved1;
> +} __attribute__ ((packed));
> +
> +/* RxPD Descriptor */
> +struct rxpd {
> +	/* union to cope up with later FW revisions */
> +	union {
> +		/* Current Rx packet status */
> +		__le16 status;
> +		struct {
> +			/* BSS type: client, AP, etc. */
> +			u8 bss_type;
> +			/* BSS number */
> +			u8 bss_num;
> +		} __attribute__ ((packed)) bss;
> +	} __attribute__ ((packed)) u;
> +
> +	/* SNR */
> +	u8 snr;
> +
> +	/* Tx control */
> +	u8 rx_control;
> +
> +	/* Pkt length */
> +	__le16 pkt_len;
> +
> +	/* Noise Floor */
> +	u8 nf;
> +
> +	/* Rx Packet Rate */
> +	u8 rx_rate;
> +
> +	/* Pkt addr */
> +	__le32 pkt_ptr;
> +
> +	/* Next Rx RxPD addr */
> +	__le32 next_rxpd_ptr;
> +
> +	/* Pkt Priority */
> +	u8 priority;
> +	u8 reserved[3];
> +} __attribute__ ((packed));
> +
> +struct cmd_header {
> +	__le16 command;
> +	__le16 size;
> +	__le16 seqnum;
> +	__le16 result;
> +} __attribute__ ((packed));
> +
> +struct cmd_ctrl_node {
> +	struct list_head list;
> +	int result;
> +	/* command response */
> +	int (*callback)(struct lbs_private *,
> +			unsigned long,
> +			struct cmd_header *);
> +	unsigned long callback_arg;
> +	/* command data */
> +	struct cmd_header *cmdbuf;
> +	/* wait queue */
> +	u16 cmdwaitqwoken;
> +	wait_queue_head_t cmdwait_q;
> +};
> +
> +/* Generic structure to hold all key types. */
> +struct enc_key {
> +	u16 len;
> +	u16 flags;  /* KEY_INFO_* from defs.h */
> +	u16 type; /* KEY_TYPE_* from defs.h */
> +	u8 key[32];
> +};
> +
> +/* lbs_offset_value */
> +struct lbs_offset_value {
> +	u32 offset;
> +	u32 value;
> +} __attribute__ ((packed));
> +
> +/* Define general data structure */
> +/* cmd_DS_GEN */
> +struct cmd_ds_gen {
> +	__le16 command;
> +	__le16 size;
> +	__le16 seqnum;
> +	__le16 result;
> +	void *cmdresp[0];
> +} __attribute__ ((packed));
> +
> +#define S_DS_GEN sizeof(struct cmd_ds_gen)
> +
> +
> +/*
> + * Define data structure for CMD_GET_HW_SPEC
> + * This structure defines the response for the GET_HW_SPEC command
> + */
> +struct cmd_ds_get_hw_spec {
> +	struct cmd_header hdr;
> +
> +	/* HW Interface version number */
> +	__le16 hwifversion;
> +	/* HW version number */
> +	__le16 version;
> +	/* Max number of TxPD FW can handle */
> +	__le16 nr_txpd;
> +	/* Max no of Multicast address */
> +	__le16 nr_mcast_adr;
> +	/* MAC address */
> +	u8 permanentaddr[6];
> +
> +	/* region Code */
> +	__le16 regioncode;
> +
> +	/* Number of antenna used */
> +	__le16 nr_antenna;
> +
> +	/* FW release number, example 0x01030304 = 2.3.4p1 */
> +	__le32 fwrelease;
> +
> +	/* Base Address of TxPD queue */
> +	__le32 wcb_base;
> +	/* Read Pointer of RxPd queue */
> +	__le32 rxpd_rdptr;
> +
> +	/* Write Pointer of RxPd queue */
> +	__le32 rxpd_wrptr;
> +
> +	/*FW/HW capability */
> +	__le32 fwcapinfo;
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_802_11_subscribe_event {
> +	struct cmd_header hdr;
> +
> +	__le16 action;
> +	__le16 events;
> +
> +	/* A TLV to the CMD_802_11_SUBSCRIBE_EVENT command can contain a
> +	 * number of TLVs. From the v5.1 manual, those TLVs would add up to
> +	 * 40 bytes. However, future firmware might add additional TLVs, so I
> +	 * bump this up a bit.
> +	 */
> +	uint8_t tlv[128];
> +} __attribute__ ((packed));
> +
> +/*
> + * This scan handle Country Information IE(802.11d compliant)
> + * Define data structure for CMD_802_11_SCAN
> + */
> +struct cmd_ds_802_11_scan {
> +	struct cmd_header hdr;
> +
> +	uint8_t bsstype;
> +	uint8_t bssid[ETH_ALEN];
> +	uint8_t tlvbuffer[0];
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_802_11_scan_rsp {
> +	struct cmd_header hdr;
> +
> +	__le16 bssdescriptsize;
> +	uint8_t nr_sets;
> +	uint8_t bssdesc_and_tlvbuffer[0];
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_802_11_get_log {
> +	struct cmd_header hdr;
> +
> +	__le32 mcasttxframe;
> +	__le32 failed;
> +	__le32 retry;
> +	__le32 multiretry;
> +	__le32 framedup;
> +	__le32 rtssuccess;
> +	__le32 rtsfailure;
> +	__le32 ackfailure;
> +	__le32 rxfrag;
> +	__le32 mcastrxframe;
> +	__le32 fcserror;
> +	__le32 txframe;
> +	__le32 wepundecryptable;
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_mac_control {
> +	struct cmd_header hdr;
> +	__le16 action;
> +	u16 reserved;
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_mac_multicast_adr {
> +	struct cmd_header hdr;
> +	__le16 action;
> +	__le16 nr_of_adrs;
> +	u8 maclist[ETH_ALEN * MRVDRV_MAX_MULTICAST_LIST_SIZE];
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_802_11_authenticate {
> +	struct cmd_header hdr;
> +
> +	u8 bssid[ETH_ALEN];
> +	u8 authtype;
> +	u8 reserved[10];
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_802_11_deauthenticate {
> +	struct cmd_header hdr;
> +
> +	u8 macaddr[ETH_ALEN];
> +	__le16 reasoncode;
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_802_11_associate {
> +	struct cmd_header hdr;
> +
> +	u8 bssid[6];
> +	__le16 capability;
> +	__le16 listeninterval;
> +	__le16 bcnperiod;
> +	u8 dtimperiod;
> +	u8 iebuf[512];    /* Enough for required and most optional IEs */
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_802_11_associate_response {
> +	struct cmd_header hdr;
> +
> +	__le16 capability;
> +	__le16 statuscode;
> +	__le16 aid;
> +	u8 iebuf[512];
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_802_11_set_wep {
> +	struct cmd_header hdr;
> +
> +	/* ACT_ADD, ACT_REMOVE or ACT_ENABLE */
> +	__le16 action;
> +
> +	/* key Index selected for Tx */
> +	__le16 keyindex;
> +
> +	/* 40, 128bit or TXWEP */
> +	uint8_t keytype[4];
> +	uint8_t keymaterial[4][16];
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_802_11_snmp_mib {
> +	struct cmd_header hdr;
> +
> +	__le16 action;
> +	__le16 oid;
> +	__le16 bufsize;
> +	u8 value[128];
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_mac_reg_access {
> +	__le16 action;
> +	__le16 offset;
> +	__le32 value;
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_bbp_reg_access {
> +	__le16 action;
> +	__le16 offset;
> +	u8 value;
> +	u8 reserved[3];
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_rf_reg_access {
> +	__le16 action;
> +	__le16 offset;
> +	u8 value;
> +	u8 reserved[3];
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_802_11_radio_control {
> +	struct cmd_header hdr;
> +
> +	__le16 action;
> +	__le16 control;
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_802_11_beacon_control {
> +	__le16 action;
> +	__le16 beacon_enable;
> +	__le16 beacon_period;
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_802_11_sleep_params {
> +	struct cmd_header hdr;
> +
> +	/* ACT_GET/ACT_SET */
> +	__le16 action;
> +
> +	/* Sleep clock error in ppm */
> +	__le16 error;
> +
> +	/* Wakeup offset in usec */
> +	__le16 offset;
> +
> +	/* Clock stabilization time in usec */
> +	__le16 stabletime;
> +
> +	/* control periodic calibration */
> +	uint8_t calcontrol;
> +
> +	/* control the use of external sleep clock */
> +	uint8_t externalsleepclk;
> +
> +	/* reserved field, should be set to zero */
> +	__le16 reserved;
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_802_11_inactivity_timeout {
> +	struct cmd_header hdr;
> +
> +	/* ACT_GET/ACT_SET */
> +	__le16 action;
> +
> +	/* Inactivity timeout in msec */
> +	__le16 timeout;
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_802_11_rf_channel {
> +	struct cmd_header hdr;
> +
> +	__le16 action;
> +	__le16 channel;
> +	__le16 rftype;      /* unused */
> +	__le16 reserved;    /* unused */
> +	u8 channellist[32]; /* unused */
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_802_11_rssi {
> +	/* weighting factor */
> +	__le16 N;
> +
> +	__le16 reserved_0;
> +	__le16 reserved_1;
> +	__le16 reserved_2;
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_802_11_rssi_rsp {
> +	__le16 SNR;
> +	__le16 noisefloor;
> +	__le16 avgSNR;
> +	__le16 avgnoisefloor;
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_802_11_mac_address {
> +	struct cmd_header hdr;
> +
> +	__le16 action;
> +	u8 macadd[ETH_ALEN];
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_802_11_rf_tx_power {
> +	struct cmd_header hdr;
> +
> +	__le16 action;
> +	__le16 curlevel;
> +	s8 maxlevel;
> +	s8 minlevel;
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_802_11_monitor_mode {
> +	__le16 action;
> +	__le16 mode;
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_set_boot2_ver {
> +	struct cmd_header hdr;
> +
> +	__le16 action;
> +	__le16 version;
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_802_11_fw_wake_method {
> +	struct cmd_header hdr;
> +
> +	__le16 action;
> +	__le16 method;
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_802_11_ps_mode {
> +	__le16 action;
> +	__le16 nullpktinterval;
> +	__le16 multipledtim;
> +	__le16 reserved;
> +	__le16 locallisteninterval;
> +} __attribute__ ((packed));
> +
> +struct cmd_confirm_sleep {
> +	struct cmd_header hdr;
> +
> +	__le16 action;
> +	__le16 nullpktinterval;
> +	__le16 multipledtim;
> +	__le16 reserved;
> +	__le16 locallisteninterval;
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_802_11_data_rate {
> +	struct cmd_header hdr;
> +
> +	__le16 action;
> +	__le16 reserved;
> +	u8 rates[MAX_RATES];
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_802_11_rate_adapt_rateset {
> +	struct cmd_header hdr;
> +	__le16 action;
> +	__le16 enablehwauto;
> +	__le16 bitmap;
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_802_11_ad_hoc_start {
> +	struct cmd_header hdr;
> +
> +	u8 ssid[IW_ESSID_MAX_SIZE];
> +	u8 bsstype;
> +	__le16 beaconperiod;
> +	u8 dtimperiod;   /* Reserved on v9 and later */
> +	struct ieee_ie_ibss_param_set ibss;
> +	u8 reserved1[4];
> +	struct ieee_ie_ds_param_set ds;
> +	u8 reserved2[4];
> +	__le16 probedelay;  /* Reserved on v9 and later */
> +	__le16 capability;
> +	u8 rates[MAX_RATES];
> +	u8 tlv_memory_size_pad[100];
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_802_11_ad_hoc_result {
> +	struct cmd_header hdr;
> +
> +	u8 pad[3];
> +	u8 bssid[ETH_ALEN];
> +} __attribute__ ((packed));
> +
> +struct adhoc_bssdesc {
> +	u8 bssid[ETH_ALEN];
> +	u8 ssid[IW_ESSID_MAX_SIZE];
> +	u8 type;
> +	__le16 beaconperiod;
> +	u8 dtimperiod;
> +	__le64 timestamp;
> +	__le64 localtime;
> +	struct ieee_ie_ds_param_set ds;
> +	u8 reserved1[4];
> +	struct ieee_ie_ibss_param_set ibss;
> +	u8 reserved2[4];
> +	__le16 capability;
> +	u8 rates[MAX_RATES];
> +
> +	/* DO NOT ADD ANY FIELDS TO THIS STRUCTURE. It is used below in the
> +	 * Adhoc join command and will cause a binary layout mismatch with
> +	 * the firmware
> +	 */
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_802_11_ad_hoc_join {
> +	struct cmd_header hdr;
> +
> +	struct adhoc_bssdesc bss;
> +	__le16 failtimeout;   /* Reserved on v9 and later */
> +	__le16 probedelay;    /* Reserved on v9 and later */
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_802_11_ad_hoc_stop {
> +	struct cmd_header hdr;
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_802_11_enable_rsn {
> +	struct cmd_header hdr;
> +
> +	__le16 action;
> +	__le16 enable;
> +} __attribute__ ((packed));
> +
> +struct MrvlIEtype_keyParamSet {
> +	/* type ID */
> +	__le16 type;
> +
> +	/* length of Payload */
> +	__le16 length;
> +
> +	/* type of key: WEP=0, TKIP=1, AES=2 */
> +	__le16 keytypeid;
> +
> +	/* key control Info specific to a keytypeid */
> +	__le16 keyinfo;
> +
> +	/* length of key */
> +	__le16 keylen;
> +
> +	/* key material of size keylen */
> +	u8 key[32];
> +} __attribute__ ((packed));
> +
> +#define MAX_WOL_RULES 		16
> +
> +struct host_wol_rule {
> +	uint8_t rule_no;
> +	uint8_t rule_ops;
> +	__le16 sig_offset;
> +	__le16 sig_length;
> +	__le16 reserve;
> +	__be32 sig_mask;
> +	__be32 signature;
> +} __attribute__ ((packed));
> +
> +struct wol_config {
> +	uint8_t action;
> +	uint8_t pattern;
> +	uint8_t no_rules_in_cmd;
> +	uint8_t result;
> +	struct host_wol_rule rule[MAX_WOL_RULES];
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_host_sleep {
> +	struct cmd_header hdr;
> +	__le32 criteria;
> +	uint8_t gpio;
> +	uint16_t gap;
> +	struct wol_config wol_conf;
> +} __attribute__ ((packed));
> +
> +
> +
> +struct cmd_ds_802_11_key_material {
> +	struct cmd_header hdr;
> +
> +	__le16 action;
> +	struct MrvlIEtype_keyParamSet keyParamSet[2];
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_802_11_eeprom_access {
> +	struct cmd_header hdr;
> +	__le16 action;
> +	__le16 offset;
> +	__le16 len;
> +	/* firmware says it returns a maximum of 20 bytes */
> +#define LBS_EEPROM_READ_LEN 20
> +	u8 value[LBS_EEPROM_READ_LEN];
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_802_11_tpc_cfg {
> +	struct cmd_header hdr;
> +
> +	__le16 action;
> +	uint8_t enable;
> +	int8_t P0;
> +	int8_t P1;
> +	int8_t P2;
> +	uint8_t usesnr;
> +} __attribute__ ((packed));
> +
> +
> +struct cmd_ds_802_11_pa_cfg {
> +	struct cmd_header hdr;
> +
> +	__le16 action;
> +	uint8_t enable;
> +	int8_t P0;
> +	int8_t P1;
> +	int8_t P2;
> +} __attribute__ ((packed));
> +
> +
> +struct cmd_ds_802_11_led_ctrl {
> +	__le16 action;
> +	__le16 numled;
> +	u8 data[256];
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_802_11_afc {
> +	__le16 afc_auto;
> +	union {
> +		struct {
> +			__le16 threshold;
> +			__le16 period;
> +		};
> +		struct {
> +			__le16 timing_offset; /* signed */
> +			__le16 carrier_offset; /* signed */
> +		};
> +	};
> +} __attribute__ ((packed));
> +
> +struct cmd_tx_rate_query {
> +	__le16 txrate;
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_get_tsf {
> +	__le64 tsfvalue;
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_bt_access {
> +	__le16 action;
> +	__le32 id;
> +	u8 addr1[ETH_ALEN];
> +	u8 addr2[ETH_ALEN];
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_fwt_access {
> +	__le16 action;
> +	__le32 id;
> +	u8 valid;
> +	u8 da[ETH_ALEN];
> +	u8 dir;
> +	u8 ra[ETH_ALEN];
> +	__le32 ssn;
> +	__le32 dsn;
> +	__le32 metric;
> +	u8 rate;
> +	u8 hopcount;
> +	u8 ttl;
> +	__le32 expiration;
> +	u8 sleepmode;
> +	__le32 snr;
> +	__le32 references;
> +	u8 prec[ETH_ALEN];
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_mesh_config {
> +	struct cmd_header hdr;
> +
> +	__le16 action;
> +	__le16 channel;
> +	__le16 type;
> +	__le16 length;
> +	u8 data[128];	/* last position reserved */
> +} __attribute__ ((packed));
> +
> +struct cmd_ds_mesh_access {
> +	struct cmd_header hdr;
> +
> +	__le16 action;
> +	__le32 data[32];	/* last position reserved */
> +} __attribute__ ((packed));
> +
> +/* Number of stats counters returned by the firmware */
> +#define MESH_STATS_NUM 8
> +
> +struct cmd_ds_command {
> +	/* command header */
> +	__le16 command;
> +	__le16 size;
> +	__le16 seqnum;
> +	__le16 result;
> +
> +	/* command Body */
> +	union {
> +		struct cmd_ds_802_11_ps_mode psmode;
> +		struct cmd_ds_802_11_monitor_mode monitor;
> +		struct cmd_ds_802_11_rssi rssi;
> +		struct cmd_ds_802_11_rssi_rsp rssirsp;
> +		struct cmd_ds_mac_reg_access macreg;
> +		struct cmd_ds_bbp_reg_access bbpreg;
> +		struct cmd_ds_rf_reg_access rfreg;
> +
> +		struct cmd_ds_802_11d_domain_info domaininfo;
> +		struct cmd_ds_802_11d_domain_info domaininforesp;
> +
> +		struct cmd_ds_802_11_tpc_cfg tpccfg;
> +		struct cmd_ds_802_11_afc afc;
> +		struct cmd_ds_802_11_led_ctrl ledgpio;
> +
> +		struct cmd_ds_bt_access bt;
> +		struct cmd_ds_fwt_access fwt;
> +		struct cmd_ds_get_tsf gettsf;
> +		struct cmd_ds_802_11_beacon_control bcn_ctrl;
> +	} params;
> +} __attribute__ ((packed));
> +
>  #endif
> --- linux-wl.orig/drivers/net/wireless/libertas/hostcmd.h
> +++ /dev/null
> @@ -1,800 +0,0 @@
> -/*
> - * This file contains the function prototypes, data structure
> - * and defines for all the host/station commands
> - */
> -#ifndef _LBS_HOSTCMD_H
> -#define _LBS_HOSTCMD_H
> -
> -#include <linux/wireless.h>
> -#include "11d.h"
> -#include "types.h"
> -
> -/* 802.11-related definitions */
> -
> -/* TxPD descriptor */
> -struct txpd {
> -	/* union to cope up with later FW revisions */
> -	union {
> -		/* Current Tx packet status */
> -		__le32 tx_status;
> -		struct {
> -			/* BSS type: client, AP, etc. */
> -			u8 bss_type;
> -			/* BSS number */
> -			u8 bss_num;
> -			/* Reserved */
> -			__le16 reserved;
> -		} bss;
> -	} u;
> -	/* Tx control */
> -	__le32 tx_control;
> -	__le32 tx_packet_location;
> -	/* Tx packet length */
> -	__le16 tx_packet_length;
> -	/* First 2 byte of destination MAC address */
> -	u8 tx_dest_addr_high[2];
> -	/* Last 4 byte of destination MAC address */
> -	u8 tx_dest_addr_low[4];
> -	/* Pkt Priority */
> -	u8 priority;
> -	/* Pkt Trasnit Power control */
> -	u8 powermgmt;
> -	/* Amount of time the packet has been queued in the driver (units = 2ms) */
> -	u8 pktdelay_2ms;
> -	/* reserved */
> -	u8 reserved1;
> -} __attribute__ ((packed));
> -
> -/* RxPD Descriptor */
> -struct rxpd {
> -	/* union to cope up with later FW revisions */
> -	union {
> -		/* Current Rx packet status */
> -		__le16 status;
> -		struct {
> -			/* BSS type: client, AP, etc. */
> -			u8 bss_type;
> -			/* BSS number */
> -			u8 bss_num;
> -		} __attribute__ ((packed)) bss;
> -	} __attribute__ ((packed)) u;
> -
> -	/* SNR */
> -	u8 snr;
> -
> -	/* Tx control */
> -	u8 rx_control;
> -
> -	/* Pkt length */
> -	__le16 pkt_len;
> -
> -	/* Noise Floor */
> -	u8 nf;
> -
> -	/* Rx Packet Rate */
> -	u8 rx_rate;
> -
> -	/* Pkt addr */
> -	__le32 pkt_ptr;
> -
> -	/* Next Rx RxPD addr */
> -	__le32 next_rxpd_ptr;
> -
> -	/* Pkt Priority */
> -	u8 priority;
> -	u8 reserved[3];
> -} __attribute__ ((packed));
> -
> -struct cmd_header {
> -	__le16 command;
> -	__le16 size;
> -	__le16 seqnum;
> -	__le16 result;
> -} __attribute__ ((packed));
> -
> -struct cmd_ctrl_node {
> -	struct list_head list;
> -	int result;
> -	/* command response */
> -	int (*callback)(struct lbs_private *, unsigned long, struct cmd_header *);
> -	unsigned long callback_arg;
> -	/* command data */
> -	struct cmd_header *cmdbuf;
> -	/* wait queue */
> -	u16 cmdwaitqwoken;
> -	wait_queue_head_t cmdwait_q;
> -};
> -
> -/* Generic structure to hold all key types. */
> -struct enc_key {
> -	u16 len;
> -	u16 flags;  /* KEY_INFO_* from defs.h */
> -	u16 type; /* KEY_TYPE_* from defs.h */
> -	u8 key[32];
> -};
> -
> -/* lbs_offset_value */
> -struct lbs_offset_value {
> -	u32 offset;
> -	u32 value;
> -} __attribute__ ((packed));
> -
> -/* Define general data structure */
> -/* cmd_DS_GEN */
> -struct cmd_ds_gen {
> -	__le16 command;
> -	__le16 size;
> -	__le16 seqnum;
> -	__le16 result;
> -	void *cmdresp[0];
> -} __attribute__ ((packed));
> -
> -#define S_DS_GEN sizeof(struct cmd_ds_gen)
> -
> -
> -/*
> - * Define data structure for CMD_GET_HW_SPEC
> - * This structure defines the response for the GET_HW_SPEC command
> - */
> -struct cmd_ds_get_hw_spec {
> -	struct cmd_header hdr;
> -
> -	/* HW Interface version number */
> -	__le16 hwifversion;
> -	/* HW version number */
> -	__le16 version;
> -	/* Max number of TxPD FW can handle */
> -	__le16 nr_txpd;
> -	/* Max no of Multicast address */
> -	__le16 nr_mcast_adr;
> -	/* MAC address */
> -	u8 permanentaddr[6];
> -
> -	/* region Code */
> -	__le16 regioncode;
> -
> -	/* Number of antenna used */
> -	__le16 nr_antenna;
> -
> -	/* FW release number, example 0x01030304 = 2.3.4p1 */
> -	__le32 fwrelease;
> -
> -	/* Base Address of TxPD queue */
> -	__le32 wcb_base;
> -	/* Read Pointer of RxPd queue */
> -	__le32 rxpd_rdptr;
> -
> -	/* Write Pointer of RxPd queue */
> -	__le32 rxpd_wrptr;
> -
> -	/*FW/HW capability */
> -	__le32 fwcapinfo;
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_subscribe_event {
> -	struct cmd_header hdr;
> -
> -	__le16 action;
> -	__le16 events;
> -
> -	/* A TLV to the CMD_802_11_SUBSCRIBE_EVENT command can contain a
> -	 * number of TLVs. From the v5.1 manual, those TLVs would add up to
> -	 * 40 bytes. However, future firmware might add additional TLVs, so I
> -	 * bump this up a bit.
> -	 */
> -	uint8_t tlv[128];
> -} __attribute__ ((packed));
> -
> -/*
> - * This scan handle Country Information IE(802.11d compliant)
> - * Define data structure for CMD_802_11_SCAN
> - */
> -struct cmd_ds_802_11_scan {
> -	struct cmd_header hdr;
> -
> -	uint8_t bsstype;
> -	uint8_t bssid[ETH_ALEN];
> -	uint8_t tlvbuffer[0];
> -#if 0
> -	mrvlietypes_ssidparamset_t ssidParamSet;
> -	mrvlietypes_chanlistparamset_t ChanListParamSet;
> -	mrvlietypes_ratesparamset_t OpRateSet;
> -#endif
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_scan_rsp {
> -	struct cmd_header hdr;
> -
> -	__le16 bssdescriptsize;
> -	uint8_t nr_sets;
> -	uint8_t bssdesc_and_tlvbuffer[0];
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_get_log {
> -	struct cmd_header hdr;
> -
> -	__le32 mcasttxframe;
> -	__le32 failed;
> -	__le32 retry;
> -	__le32 multiretry;
> -	__le32 framedup;
> -	__le32 rtssuccess;
> -	__le32 rtsfailure;
> -	__le32 ackfailure;
> -	__le32 rxfrag;
> -	__le32 mcastrxframe;
> -	__le32 fcserror;
> -	__le32 txframe;
> -	__le32 wepundecryptable;
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_mac_control {
> -	struct cmd_header hdr;
> -	__le16 action;
> -	u16 reserved;
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_mac_multicast_adr {
> -	struct cmd_header hdr;
> -	__le16 action;
> -	__le16 nr_of_adrs;
> -	u8 maclist[ETH_ALEN * MRVDRV_MAX_MULTICAST_LIST_SIZE];
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_gspi_bus_config {
> -	struct cmd_header hdr;
> -	__le16 action;
> -	__le16 bus_delay_mode;
> -	__le16 host_time_delay_to_read_port;
> -	__le16 host_time_delay_to_read_register;
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_authenticate {
> -	struct cmd_header hdr;
> -
> -	u8 bssid[ETH_ALEN];
> -	u8 authtype;
> -	u8 reserved[10];
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_deauthenticate {
> -	struct cmd_header hdr;
> -
> -	u8 macaddr[ETH_ALEN];
> -	__le16 reasoncode;
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_associate {
> -	struct cmd_header hdr;
> -
> -	u8 bssid[6];
> -	__le16 capability;
> -	__le16 listeninterval;
> -	__le16 bcnperiod;
> -	u8 dtimperiod;
> -	u8 iebuf[512];    /* Enough for required and most optional IEs */
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_associate_response {
> -	struct cmd_header hdr;
> -
> -	__le16 capability;
> -	__le16 statuscode;
> -	__le16 aid;
> -	u8 iebuf[512];
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_set_wep {
> -	struct cmd_header hdr;
> -
> -	/* ACT_ADD, ACT_REMOVE or ACT_ENABLE */
> -	__le16 action;
> -
> -	/* key Index selected for Tx */
> -	__le16 keyindex;
> -
> -	/* 40, 128bit or TXWEP */
> -	uint8_t keytype[4];
> -	uint8_t keymaterial[4][16];
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_3_get_stat {
> -	__le32 xmitok;
> -	__le32 rcvok;
> -	__le32 xmiterror;
> -	__le32 rcverror;
> -	__le32 rcvnobuffer;
> -	__le32 rcvcrcerror;
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_get_stat {
> -	__le32 txfragmentcnt;
> -	__le32 mcasttxframecnt;
> -	__le32 failedcnt;
> -	__le32 retrycnt;
> -	__le32 Multipleretrycnt;
> -	__le32 rtssuccesscnt;
> -	__le32 rtsfailurecnt;
> -	__le32 ackfailurecnt;
> -	__le32 frameduplicatecnt;
> -	__le32 rxfragmentcnt;
> -	__le32 mcastrxframecnt;
> -	__le32 fcserrorcnt;
> -	__le32 bcasttxframecnt;
> -	__le32 bcastrxframecnt;
> -	__le32 txbeacon;
> -	__le32 rxbeacon;
> -	__le32 wepundecryptable;
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_snmp_mib {
> -	struct cmd_header hdr;
> -
> -	__le16 action;
> -	__le16 oid;
> -	__le16 bufsize;
> -	u8 value[128];
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_mac_reg_map {
> -	__le16 buffersize;
> -	u8 regmap[128];
> -	__le16 reserved;
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_bbp_reg_map {
> -	__le16 buffersize;
> -	u8 regmap[128];
> -	__le16 reserved;
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_rf_reg_map {
> -	__le16 buffersize;
> -	u8 regmap[64];
> -	__le16 reserved;
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_mac_reg_access {
> -	__le16 action;
> -	__le16 offset;
> -	__le32 value;
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_bbp_reg_access {
> -	__le16 action;
> -	__le16 offset;
> -	u8 value;
> -	u8 reserved[3];
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_rf_reg_access {
> -	__le16 action;
> -	__le16 offset;
> -	u8 value;
> -	u8 reserved[3];
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_radio_control {
> -	struct cmd_header hdr;
> -
> -	__le16 action;
> -	__le16 control;
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_beacon_control {
> -	__le16 action;
> -	__le16 beacon_enable;
> -	__le16 beacon_period;
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_sleep_params {
> -	struct cmd_header hdr;
> -
> -	/* ACT_GET/ACT_SET */
> -	__le16 action;
> -
> -	/* Sleep clock error in ppm */
> -	__le16 error;
> -
> -	/* Wakeup offset in usec */
> -	__le16 offset;
> -
> -	/* Clock stabilization time in usec */
> -	__le16 stabletime;
> -
> -	/* control periodic calibration */
> -	uint8_t calcontrol;
> -
> -	/* control the use of external sleep clock */
> -	uint8_t externalsleepclk;
> -
> -	/* reserved field, should be set to zero */
> -	__le16 reserved;
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_inactivity_timeout {
> -	struct cmd_header hdr;
> -
> -	/* ACT_GET/ACT_SET */
> -	__le16 action;
> -
> -	/* Inactivity timeout in msec */
> -	__le16 timeout;
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_rf_channel {
> -	struct cmd_header hdr;
> -
> -	__le16 action;
> -	__le16 channel;
> -	__le16 rftype;      /* unused */
> -	__le16 reserved;    /* unused */
> -	u8 channellist[32]; /* unused */
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_rssi {
> -	/* weighting factor */
> -	__le16 N;
> -
> -	__le16 reserved_0;
> -	__le16 reserved_1;
> -	__le16 reserved_2;
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_rssi_rsp {
> -	__le16 SNR;
> -	__le16 noisefloor;
> -	__le16 avgSNR;
> -	__le16 avgnoisefloor;
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_mac_address {
> -	struct cmd_header hdr;
> -
> -	__le16 action;
> -	u8 macadd[ETH_ALEN];
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_rf_tx_power {
> -	struct cmd_header hdr;
> -
> -	__le16 action;
> -	__le16 curlevel;
> -	s8 maxlevel;
> -	s8 minlevel;
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_rf_antenna {
> -	__le16 action;
> -
> -	/* Number of antennas or 0xffff(diversity) */
> -	__le16 antennamode;
> -
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_monitor_mode {
> -	__le16 action;
> -	__le16 mode;
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_set_boot2_ver {
> -	struct cmd_header hdr;
> -
> -	__le16 action;
> -	__le16 version;
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_fw_wake_method {
> -	struct cmd_header hdr;
> -
> -	__le16 action;
> -	__le16 method;
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_sleep_period {
> -	struct cmd_header hdr;
> -
> -	__le16 action;
> -	__le16 period;
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_ps_mode {
> -	__le16 action;
> -	__le16 nullpktinterval;
> -	__le16 multipledtim;
> -	__le16 reserved;
> -	__le16 locallisteninterval;
> -} __attribute__ ((packed));
> -
> -struct cmd_confirm_sleep {
> -	struct cmd_header hdr;
> -
> -	__le16 action;
> -	__le16 nullpktinterval;
> -	__le16 multipledtim;
> -	__le16 reserved;
> -	__le16 locallisteninterval;
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_data_rate {
> -	struct cmd_header hdr;
> -
> -	__le16 action;
> -	__le16 reserved;
> -	u8 rates[MAX_RATES];
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_rate_adapt_rateset {
> -	struct cmd_header hdr;
> -	__le16 action;
> -	__le16 enablehwauto;
> -	__le16 bitmap;
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_ad_hoc_start {
> -	struct cmd_header hdr;
> -
> -	u8 ssid[IW_ESSID_MAX_SIZE];
> -	u8 bsstype;
> -	__le16 beaconperiod;
> -	u8 dtimperiod;   /* Reserved on v9 and later */
> -	struct ieee_ie_ibss_param_set ibss;
> -	u8 reserved1[4];
> -	struct ieee_ie_ds_param_set ds;
> -	u8 reserved2[4];
> -	__le16 probedelay;  /* Reserved on v9 and later */
> -	__le16 capability;
> -	u8 rates[MAX_RATES];
> -	u8 tlv_memory_size_pad[100];
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_ad_hoc_result {
> -	struct cmd_header hdr;
> -
> -	u8 pad[3];
> -	u8 bssid[ETH_ALEN];
> -} __attribute__ ((packed));
> -
> -struct adhoc_bssdesc {
> -	u8 bssid[ETH_ALEN];
> -	u8 ssid[IW_ESSID_MAX_SIZE];
> -	u8 type;
> -	__le16 beaconperiod;
> -	u8 dtimperiod;
> -	__le64 timestamp;
> -	__le64 localtime;
> -	struct ieee_ie_ds_param_set ds;
> -	u8 reserved1[4];
> -	struct ieee_ie_ibss_param_set ibss;
> -	u8 reserved2[4];
> -	__le16 capability;
> -	u8 rates[MAX_RATES];
> -
> -	/* DO NOT ADD ANY FIELDS TO THIS STRUCTURE. It is used below in the
> -	 * Adhoc join command and will cause a binary layout mismatch with
> -	 * the firmware
> -	 */
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_ad_hoc_join {
> -	struct cmd_header hdr;
> -
> -	struct adhoc_bssdesc bss;
> -	__le16 failtimeout;   /* Reserved on v9 and later */
> -	__le16 probedelay;    /* Reserved on v9 and later */
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_ad_hoc_stop {
> -	struct cmd_header hdr;
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_enable_rsn {
> -	struct cmd_header hdr;
> -
> -	__le16 action;
> -	__le16 enable;
> -} __attribute__ ((packed));
> -
> -struct MrvlIEtype_keyParamSet {
> -	/* type ID */
> -	__le16 type;
> -
> -	/* length of Payload */
> -	__le16 length;
> -
> -	/* type of key: WEP=0, TKIP=1, AES=2 */
> -	__le16 keytypeid;
> -
> -	/* key control Info specific to a keytypeid */
> -	__le16 keyinfo;
> -
> -	/* length of key */
> -	__le16 keylen;
> -
> -	/* key material of size keylen */
> -	u8 key[32];
> -} __attribute__ ((packed));
> -
> -#define MAX_WOL_RULES 		16
> -
> -struct host_wol_rule {
> -	uint8_t rule_no;
> -	uint8_t rule_ops;
> -	__le16 sig_offset;
> -	__le16 sig_length;
> -	__le16 reserve;
> -	__be32 sig_mask;
> -	__be32 signature;
> -} __attribute__ ((packed));
> -
> -struct wol_config {
> -	uint8_t action;
> -	uint8_t pattern;
> -	uint8_t no_rules_in_cmd;
> -	uint8_t result;
> -	struct host_wol_rule rule[MAX_WOL_RULES];
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_host_sleep {
> -	struct cmd_header hdr;
> -	__le32 criteria;
> -	uint8_t gpio;
> -	uint16_t gap;
> -	struct wol_config wol_conf;
> -} __attribute__ ((packed));
> -
> -
> -
> -struct cmd_ds_802_11_key_material {
> -	struct cmd_header hdr;
> -
> -	__le16 action;
> -	struct MrvlIEtype_keyParamSet keyParamSet[2];
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_eeprom_access {
> -	struct cmd_header hdr;
> -	__le16 action;
> -	__le16 offset;
> -	__le16 len;
> -	/* firmware says it returns a maximum of 20 bytes */
> -#define LBS_EEPROM_READ_LEN 20
> -	u8 value[LBS_EEPROM_READ_LEN];
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_tpc_cfg {
> -	struct cmd_header hdr;
> -
> -	__le16 action;
> -	uint8_t enable;
> -	int8_t P0;
> -	int8_t P1;
> -	int8_t P2;
> -	uint8_t usesnr;
> -} __attribute__ ((packed));
> -
> -
> -struct cmd_ds_802_11_pa_cfg {
> -	struct cmd_header hdr;
> -
> -	__le16 action;
> -	uint8_t enable;
> -	int8_t P0;
> -	int8_t P1;
> -	int8_t P2;
> -} __attribute__ ((packed));
> -
> -
> -struct cmd_ds_802_11_led_ctrl {
> -	__le16 action;
> -	__le16 numled;
> -	u8 data[256];
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_802_11_afc {
> -	__le16 afc_auto;
> -	union {
> -		struct {
> -			__le16 threshold;
> -			__le16 period;
> -		};
> -		struct {
> -			__le16 timing_offset; /* signed */
> -			__le16 carrier_offset; /* signed */
> -		};
> -	};
> -} __attribute__ ((packed));
> -
> -struct cmd_tx_rate_query {
> -	__le16 txrate;
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_get_tsf {
> -	__le64 tsfvalue;
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_bt_access {
> -	__le16 action;
> -	__le32 id;
> -	u8 addr1[ETH_ALEN];
> -	u8 addr2[ETH_ALEN];
> -} __attribute__ ((packed));
> -
> -struct cmd_ds_fwt_access {
> -	__le16 action;
> -	__le32 id;
> -	u8 valid;
> -	u8 da[ETH_ALEN];
> -	u8 dir;
> -	u8 ra[ETH_ALEN];
> -	__le32 ssn;
> -	__le32 dsn;
> -	__le32 metric;
> -	u8 rate;
> -	u8 hopcount;
> -	u8 ttl;
> -	__le32 expiration;
> -	u8 sleepmode;
> -	__le32 snr;
> -	__le32 references;
> -	u8 prec[ETH_ALEN];
> -} __attribute__ ((packed));
> -
> -
> -struct cmd_ds_mesh_config {
> -	struct cmd_header hdr;
> -
> -        __le16 action;
> -        __le16 channel;
> -        __le16 type;
> -        __le16 length;
> -        u8 data[128];   /* last position reserved */
> -} __attribute__ ((packed));
> -
> -
> -struct cmd_ds_mesh_access {
> -	struct cmd_header hdr;
> -
> -	__le16 action;
> -	__le32 data[32];	/* last position reserved */
> -} __attribute__ ((packed));
> -
> -/* Number of stats counters returned by the firmware */
> -#define MESH_STATS_NUM 8
> -
> -struct cmd_ds_command {
> -	/* command header */
> -	__le16 command;
> -	__le16 size;
> -	__le16 seqnum;
> -	__le16 result;
> -
> -	/* command Body */
> -	union {
> -		struct cmd_ds_802_11_ps_mode psmode;
> -		struct cmd_ds_802_11_get_stat gstat;
> -		struct cmd_ds_802_3_get_stat gstat_8023;
> -		struct cmd_ds_802_11_rf_antenna rant;
> -		struct cmd_ds_802_11_monitor_mode monitor;
> -		struct cmd_ds_802_11_rssi rssi;
> -		struct cmd_ds_802_11_rssi_rsp rssirsp;
> -		struct cmd_ds_mac_reg_access macreg;
> -		struct cmd_ds_bbp_reg_access bbpreg;
> -		struct cmd_ds_rf_reg_access rfreg;
> -
> -		struct cmd_ds_802_11d_domain_info domaininfo;
> -		struct cmd_ds_802_11d_domain_info domaininforesp;
> -
> -		struct cmd_ds_802_11_tpc_cfg tpccfg;
> -		struct cmd_ds_802_11_afc afc;
> -		struct cmd_ds_802_11_led_ctrl ledgpio;
> -
> -		struct cmd_tx_rate_query txrate;
> -		struct cmd_ds_bt_access bt;
> -		struct cmd_ds_fwt_access fwt;
> -		struct cmd_ds_get_tsf gettsf;
> -		struct cmd_ds_802_11_beacon_control bcn_ctrl;
> -	} params;
> -} __attribute__ ((packed));
> -
> -#endif
> --- linux-wl.orig/drivers/net/wireless/libertas/cmd.h
> +++ linux-wl/drivers/net/wireless/libertas/cmd.h
> @@ -3,7 +3,7 @@
>  #ifndef _LBS_CMD_H_
>  #define _LBS_CMD_H_
>  
> -#include "hostcmd.h"
> +#include "host.h"
>  #include "dev.h"
>  
>  /* lbs_cmd() infers the size of the buffer to copy data back into, from
> --- linux-wl.orig/drivers/net/wireless/libertas/cmd.c
> +++ linux-wl/drivers/net/wireless/libertas/cmd.c
> @@ -8,7 +8,6 @@
>  #include <linux/kfifo.h>
>  #include <linux/sched.h>
>  #include "host.h"
> -#include "hostcmd.h"
>  #include "decl.h"
>  #include "defs.h"
>  #include "dev.h"
> --- linux-wl.orig/drivers/net/wireless/libertas/dev.h
> +++ linux-wl/drivers/net/wireless/libertas/dev.h
> @@ -12,7 +12,7 @@
>  #include <linux/debugfs.h>
>  
>  #include "defs.h"
> -#include "hostcmd.h"
> +#include "host.h"
>  
>  extern const struct ethtool_ops lbs_ethtool_ops;
>  
> --- linux-wl.orig/drivers/net/wireless/libertas/rx.c
> +++ linux-wl/drivers/net/wireless/libertas/rx.c
> @@ -4,7 +4,7 @@
>  #include <linux/etherdevice.h>
>  #include <linux/types.h>
>  
> -#include "hostcmd.h"
> +#include "host.h"
>  #include "radiotap.h"
>  #include "decl.h"
>  #include "dev.h"
> --- linux-wl.orig/drivers/net/wireless/libertas/tx.c
> +++ linux-wl/drivers/net/wireless/libertas/tx.c
> @@ -5,7 +5,7 @@
>  #include <linux/etherdevice.h>
>  #include <linux/sched.h>
>  
> -#include "hostcmd.h"
> +#include "host.h"
>  #include "radiotap.h"
>  #include "decl.h"
>  #include "defs.h"
> 


^ permalink raw reply

* Re: [PATCH] libertas: harmonize cmd.h
From: Dan Williams @ 2009-10-16 16:29 UTC (permalink / raw)
  To: Holger Schurig; +Cc: linux-wireless, John Linville
In-Reply-To: <200910161733.23868.hs4233@mail.mn-solutions.de>

On Fri, 2009-10-16 at 17:33 +0200, Holger Schurig wrote:
> * move declarations for functions of cmd.c/cmdresp.c into cmd.h
> * move declarations from cmd.h that are in main.c to decl.h
> * group command functions
> 
> Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>

Acked-by: Dan Williams <dcbw@redhat.com>

> --- linux-wl.orig/drivers/net/wireless/libertas/cmd.h
> +++ linux-wl/drivers/net/wireless/libertas/cmd.h
> @@ -6,8 +6,27 @@
>  #include "host.h"
>  #include "dev.h"
>  
> +
> +/* Command & response transfer between host and card */
> +
> +struct cmd_ctrl_node {
> +	struct list_head list;
> +	int result;
> +	/* command response */
> +	int (*callback)(struct lbs_private *,
> +			unsigned long,
> +			struct cmd_header *);
> +	unsigned long callback_arg;
> +	/* command data */
> +	struct cmd_header *cmdbuf;
> +	/* wait queue */
> +	u16 cmdwaitqwoken;
> +	wait_queue_head_t cmdwait_q;
> +};
> +
> +
>  /* lbs_cmd() infers the size of the buffer to copy data back into, from
> -   the size of the target of the pointer. Since the command to be sent 
> +   the size of the target of the pointer. Since the command to be sent
>     may often be smaller, that size is set in cmd->size by the caller.*/
>  #define lbs_cmd(priv, cmdnr, cmd, cb, cb_arg)	({		\
>  	uint16_t __sz = le16_to_cpu((cmd)->hdr.size);		\
> @@ -18,6 +37,11 @@
>  #define lbs_cmd_with_response(priv, cmdnr, cmd)	\
>  	lbs_cmd(priv, cmdnr, cmd, lbs_cmd_copyback, (unsigned long) (cmd))
>  
> +int lbs_prepare_and_send_command(struct lbs_private *priv,
> +	u16 cmd_no,
> +	u16 cmd_action,
> +	u16 wait_option, u32 cmd_oid, void *pdata_buf);
> +
>  void lbs_cmd_async(struct lbs_private *priv, uint16_t command,
>  	struct cmd_header *in_cmd, int in_cmd_size);
>  
> @@ -31,62 +55,102 @@
>  	int (*callback)(struct lbs_private *, unsigned long, struct cmd_header *),
>  	unsigned long callback_arg);
>  
> -int lbs_set_power_adapt_cfg(struct lbs_private *priv, int enable, int8_t p0,
> -		int8_t p1, int8_t p2);
> +int lbs_cmd_copyback(struct lbs_private *priv, unsigned long extra,
> +		     struct cmd_header *resp);
>  
> -int lbs_set_tpc_cfg(struct lbs_private *priv, int enable, int8_t p0, int8_t p1,
> -		int8_t p2, int usesnr);
> +int lbs_allocate_cmd_buffer(struct lbs_private *priv);
> +int lbs_free_cmd_buffer(struct lbs_private *priv);
>  
> -int lbs_set_power_adapt_cfg(struct lbs_private *priv, int enable, int8_t p0,
> -		int8_t p1, int8_t p2);
> +int lbs_execute_next_command(struct lbs_private *priv);
> +void lbs_complete_command(struct lbs_private *priv, struct cmd_ctrl_node *cmd,
> +			  int result);
> +int lbs_process_command_response(struct lbs_private *priv, u8 *data, u32 len);
>  
> -int lbs_set_tpc_cfg(struct lbs_private *priv, int enable, int8_t p0, int8_t p1,
> -		int8_t p2, int usesnr);
>  
> -int lbs_cmd_copyback(struct lbs_private *priv, unsigned long extra,
> -		     struct cmd_header *resp);
> +/* From cmdresp.c */
>  
> -int lbs_update_hw_spec(struct lbs_private *priv);
> +void lbs_mac_event_disconnected(struct lbs_private *priv);
>  
> -int lbs_mesh_access(struct lbs_private *priv, uint16_t cmd_action,
> -		    struct cmd_ds_mesh_access *cmd);
>  
> -int lbs_set_data_rate(struct lbs_private *priv, u8 rate);
> +
> +/* Events */
> +
> +int lbs_process_event(struct lbs_private *priv, u32 event);
> +
> +
> +/* Actual commands */
> +
> +int lbs_update_hw_spec(struct lbs_private *priv);
>  
>  int lbs_get_channel(struct lbs_private *priv);
> +
>  int lbs_set_channel(struct lbs_private *priv, u8 channel);
>  
> +int lbs_update_channel(struct lbs_private *priv);
> +
> +int lbs_host_sleep_cfg(struct lbs_private *priv, uint32_t criteria,
> +		struct wol_config *p_wol_config);
> +
> +int lbs_cmd_802_11_sleep_params(struct lbs_private *priv, uint16_t cmd_action,
> +				struct sleep_params *sp);
> +
> +void lbs_ps_sleep(struct lbs_private *priv, int wait_option);
> +
> +void lbs_ps_wakeup(struct lbs_private *priv, int wait_option);
> +
> +void lbs_ps_confirm_sleep(struct lbs_private *priv);
> +
> +int lbs_set_radio(struct lbs_private *priv, u8 preamble, u8 radio_on);
> +
> +void lbs_set_mac_control(struct lbs_private *priv);
> +
> +int lbs_get_tx_power(struct lbs_private *priv, s16 *curlevel, s16 *minlevel,
> +		     s16 *maxlevel);
> +
> +int lbs_set_snmp_mib(struct lbs_private *priv, u32 oid, u16 val);
> +
> +int lbs_get_snmp_mib(struct lbs_private *priv, u32 oid, u16 *out_val);
> +
> +
> +/* Mesh related */
> +
> +int lbs_mesh_access(struct lbs_private *priv, uint16_t cmd_action,
> +		    struct cmd_ds_mesh_access *cmd);
> +
>  int lbs_mesh_config_send(struct lbs_private *priv,
>  			 struct cmd_ds_mesh_config *cmd,
>  			 uint16_t action, uint16_t type);
> +
>  int lbs_mesh_config(struct lbs_private *priv, uint16_t enable, uint16_t chan);
>  
> -int lbs_host_sleep_cfg(struct lbs_private *priv, uint32_t criteria,
> -		struct wol_config *p_wol_config);
> -int lbs_suspend(struct lbs_private *priv);
> -void lbs_resume(struct lbs_private *priv);
> +
> +/* Commands only used in wext.c, assoc. and scan.c */
> +
> +int lbs_set_power_adapt_cfg(struct lbs_private *priv, int enable, int8_t p0,
> +		int8_t p1, int8_t p2);
> +
> +int lbs_set_tpc_cfg(struct lbs_private *priv, int enable, int8_t p0, int8_t p1,
> +		int8_t p2, int usesnr);
> +
> +int lbs_set_data_rate(struct lbs_private *priv, u8 rate);
>  
>  int lbs_cmd_802_11_rate_adapt_rateset(struct lbs_private *priv,
>  				      uint16_t cmd_action);
> +
>  int lbs_cmd_802_11_inactivity_timeout(struct lbs_private *priv,
>  				      uint16_t cmd_action, uint16_t *timeout);
> -int lbs_cmd_802_11_sleep_params(struct lbs_private *priv, uint16_t cmd_action,
> -				struct sleep_params *sp);
> +
>  int lbs_cmd_802_11_set_wep(struct lbs_private *priv, uint16_t cmd_action,
>  			   struct assoc_request *assoc);
> +
>  int lbs_cmd_802_11_enable_rsn(struct lbs_private *priv, uint16_t cmd_action,
>  			      uint16_t *enable);
> +
>  int lbs_cmd_802_11_key_material(struct lbs_private *priv, uint16_t cmd_action,
>  				struct assoc_request *assoc);
>  
> -int lbs_get_tx_power(struct lbs_private *priv, s16 *curlevel, s16 *minlevel,
> -		     s16 *maxlevel);
>  int lbs_set_tx_power(struct lbs_private *priv, s16 dbm);
>  
> -int lbs_set_radio(struct lbs_private *priv, u8 preamble, u8 radio_on);
> -
> -int lbs_set_snmp_mib(struct lbs_private *priv, u32 oid, u16 val);
> -
> -int lbs_get_snmp_mib(struct lbs_private *priv, u32 oid, u16 *out_val);
> +int lbs_set_deep_sleep(struct lbs_private *priv, int deep_sleep);
>  
>  #endif /* _LBS_CMD_H */
> --- linux-wl.orig/drivers/net/wireless/libertas/decl.h
> +++ linux-wl/drivers/net/wireless/libertas/decl.h
> @@ -17,23 +17,13 @@
>  struct cmd_ctrl_node;
>  struct cmd_ds_command;
>  
> -void lbs_set_mac_control(struct lbs_private *priv);
> +int lbs_suspend(struct lbs_private *priv);
> +void lbs_resume(struct lbs_private *priv);
>  
>  void lbs_send_tx_feedback(struct lbs_private *priv, u32 try_count);
>  
> -int lbs_free_cmd_buffer(struct lbs_private *priv);
> -
> -int lbs_prepare_and_send_command(struct lbs_private *priv,
> -	u16 cmd_no,
> -	u16 cmd_action,
> -	u16 wait_option, u32 cmd_oid, void *pdata_buf);
> -
> -int lbs_allocate_cmd_buffer(struct lbs_private *priv);
> -int lbs_execute_next_command(struct lbs_private *priv);
> -int lbs_process_event(struct lbs_private *priv, u32 event);
>  void lbs_queue_event(struct lbs_private *priv, u32 event);
>  void lbs_notify_command_response(struct lbs_private *priv, u8 resp_idx);
> -int lbs_set_deep_sleep(struct lbs_private *priv, int deep_sleep);
>  int lbs_enter_auto_deep_sleep(struct lbs_private *priv);
>  int lbs_exit_auto_deep_sleep(struct lbs_private *priv);
>  
> @@ -41,26 +31,17 @@
>  u8 lbs_data_rate_to_fw_index(u32 rate);
>  
>  /** The proc fs interface */
> -int lbs_process_command_response(struct lbs_private *priv, u8 *data, u32 len);
> -void lbs_complete_command(struct lbs_private *priv, struct cmd_ctrl_node *cmd,
> -			  int result);
>  netdev_tx_t lbs_hard_start_xmit(struct sk_buff *skb,
>  				struct net_device *dev);
>  int lbs_set_regiontable(struct lbs_private *priv, u8 region, u8 band);
>  
>  int lbs_process_rxed_packet(struct lbs_private *priv, struct sk_buff *);
>  
> -void lbs_ps_sleep(struct lbs_private *priv, int wait_option);
> -void lbs_ps_confirm_sleep(struct lbs_private *priv);
> -void lbs_ps_wakeup(struct lbs_private *priv, int wait_option);
> -
>  struct chan_freq_power *lbs_find_cfp_by_band_and_channel(
>  	struct lbs_private *priv,
>  	u8 band,
>  	u16 channel);
>  
> -void lbs_mac_event_disconnected(struct lbs_private *priv);
> -
>  void lbs_send_iwevcustom_event(struct lbs_private *priv, s8 *str);
>  
>  /* persistcfg.c */
> @@ -76,6 +57,5 @@
>  void lbs_stop_card(struct lbs_private *priv);
>  void lbs_host_to_card_done(struct lbs_private *priv);
>  
> -int lbs_update_channel(struct lbs_private *priv);
>  
>  #endif
> --- linux-wl.orig/drivers/net/wireless/libertas/host.h
> +++ linux-wl/drivers/net/wireless/libertas/host.h
> @@ -374,21 +374,6 @@
>  	__le16 result;
>  } __attribute__ ((packed));
>  
> -struct cmd_ctrl_node {
> -	struct list_head list;
> -	int result;
> -	/* command response */
> -	int (*callback)(struct lbs_private *,
> -			unsigned long,
> -			struct cmd_header *);
> -	unsigned long callback_arg;
> -	/* command data */
> -	struct cmd_header *cmdbuf;
> -	/* wait queue */
> -	u16 cmdwaitqwoken;
> -	wait_queue_head_t cmdwait_q;
> -};
> -
>  /* Generic structure to hold all key types. */
>  struct enc_key {
>  	u16 len;
> --- linux-wl.orig/drivers/net/wireless/libertas/cmdresp.c
> +++ linux-wl/drivers/net/wireless/libertas/cmdresp.c
> @@ -11,6 +11,7 @@
>  
>  #include "host.h"
>  #include "decl.h"
> +#include "cmd.h"
>  #include "defs.h"
>  #include "dev.h"
>  #include "assoc.h"
> --- linux-wl.orig/drivers/net/wireless/libertas/11d.c
> +++ linux-wl/drivers/net/wireless/libertas/11d.c
> @@ -6,6 +6,7 @@
>  #include <linux/wireless.h>
>  
>  #include "host.h"
> +#include "cmd.h"
>  #include "decl.h"
>  #include "11d.h"
>  #include "dev.h"
> 


^ permalink raw reply

* Re: [PATCH] libertas: make lbs_get_channel() static
From: Dan Williams @ 2009-10-16 16:29 UTC (permalink / raw)
  To: Holger Schurig; +Cc: linux-wireless, John Linville
In-Reply-To: <200910161733.56111.hs4233@mail.mn-solutions.de>

On Fri, 2009-10-16 at 17:33 +0200, Holger Schurig wrote:
> Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
> 

Acked-by: Dan Williams <dcbw@redhat.com>

> --- linux-wl.orig/drivers/net/wireless/libertas/cmd.c
> +++ linux-wl/drivers/net/wireless/libertas/cmd.c
> @@ -880,7 +880,7 @@
>   *
>   *  @return 	   	The channel on success, error on failure
>   */
> -int lbs_get_channel(struct lbs_private *priv)
> +static int lbs_get_channel(struct lbs_private *priv)
>  {
>  	struct cmd_ds_802_11_rf_channel cmd;
>  	int ret = 0;
> --- linux-wl.orig/drivers/net/wireless/libertas/cmd.h
> +++ linux-wl/drivers/net/wireless/libertas/cmd.h
> @@ -82,8 +82,6 @@
>  
>  int lbs_update_hw_spec(struct lbs_private *priv);
>  
> -int lbs_get_channel(struct lbs_private *priv);
> -
>  int lbs_set_channel(struct lbs_private *priv, u8 channel);
>  
>  int lbs_update_channel(struct lbs_private *priv);
> 


^ permalink raw reply

* Re: [PATCH] libertas: remove unused lbs_cmd_802_11_inactivity_timeout()
From: Dan Williams @ 2009-10-16 16:29 UTC (permalink / raw)
  To: Holger Schurig; +Cc: linux-wireless, John Linville
In-Reply-To: <200910161734.22840.hs4233@mail.mn-solutions.de>

On Fri, 2009-10-16 at 17:34 +0200, Holger Schurig wrote:
> Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>

We were going to use this at one point, but we haven't yet, so we can
add it back when we do.

Acked-by: Dan Williams <dcbw@redhat.com>

> --- linux-wl.orig/drivers/net/wireless/libertas/cmd.c
> +++ linux-wl/drivers/net/wireless/libertas/cmd.c
> @@ -273,33 +273,6 @@
>  	return 0;
>  }
>  
> -int lbs_cmd_802_11_inactivity_timeout(struct lbs_private *priv,
> -				      uint16_t cmd_action, uint16_t *timeout)
> -{
> -	struct cmd_ds_802_11_inactivity_timeout cmd;
> -	int ret;
> -
> -	lbs_deb_enter(LBS_DEB_CMD);
> -
> -	cmd.hdr.command = cpu_to_le16(CMD_802_11_INACTIVITY_TIMEOUT);
> -	cmd.hdr.size = cpu_to_le16(sizeof(cmd));
> -
> -	cmd.action = cpu_to_le16(cmd_action);
> -
> -	if (cmd_action == CMD_ACT_SET)
> -		cmd.timeout = cpu_to_le16(*timeout);
> -	else
> -		cmd.timeout = 0;
> -
> -	ret = lbs_cmd_with_response(priv, CMD_802_11_INACTIVITY_TIMEOUT, &cmd);
> -
> -	if (!ret)
> -		*timeout = le16_to_cpu(cmd.timeout);
> -
> -	lbs_deb_leave_args(LBS_DEB_CMD, "ret %d", ret);
> -	return 0;
> -}
> -
>  int lbs_cmd_802_11_sleep_params(struct lbs_private *priv, uint16_t cmd_action,
>  				struct sleep_params *sp)
>  {
> --- linux-wl.orig/drivers/net/wireless/libertas/cmd.h
> +++ linux-wl/drivers/net/wireless/libertas/cmd.h
> @@ -135,9 +135,6 @@
>  int lbs_cmd_802_11_rate_adapt_rateset(struct lbs_private *priv,
>  				      uint16_t cmd_action);
>  
> -int lbs_cmd_802_11_inactivity_timeout(struct lbs_private *priv,
> -				      uint16_t cmd_action, uint16_t *timeout);
> -
>  int lbs_cmd_802_11_set_wep(struct lbs_private *priv, uint16_t cmd_action,
>  			   struct assoc_request *assoc);
>  
> --- linux-wl.orig/drivers/net/wireless/libertas/host.h
> +++ linux-wl/drivers/net/wireless/libertas/host.h
> @@ -621,16 +621,6 @@
>  	__le16 reserved;
>  } __attribute__ ((packed));
>  
> -struct cmd_ds_802_11_inactivity_timeout {
> -	struct cmd_header hdr;
> -
> -	/* ACT_GET/ACT_SET */
> -	__le16 action;
> -
> -	/* Inactivity timeout in msec */
> -	__le16 timeout;
> -} __attribute__ ((packed));
> -
>  struct cmd_ds_802_11_rf_channel {
>  	struct cmd_header hdr;
>  
> 


^ permalink raw reply

* Re: [PATCH] mac80211: fixed injection in monitor mode
From: MatriX @ 2009-10-16 17:14 UTC (permalink / raw)
  To: Johannes Berg; +Cc: linux-wireless
In-Reply-To: <1255704382.4095.340.camel@johannes.local>

why is wrong?
there's another way to inject once packet?

2009/10/16, Johannes Berg <johannes@sipsolutions.net>:
> On Fri, 2009-10-16 at 04:09 +0200, Gabriele Gristina wrote:
>> I have a problem with mac80211 injection:
>> if i setup interface in monitor mode with iwconfig and i try to send a
>> custum 802.11 frame i see twice the packet in monitor interface.
>> The first packet is right, the second is different only in the radiotap
>> header: rtap len is fixed to 13 bytes...
>> If i setup interface with airmon-ng the packet is sended once but the
>> radiotap header is fixed to 13 bytes.
>
> This is correct. The patch is wrong.
>
> johannes
>

^ permalink raw reply

* Re: Current status of rt2800usb and staging/rt2870
From: Bartlomiej Zolnierkiewicz @ 2009-10-16 17:13 UTC (permalink / raw)
  To: Luis R. Rodriguez
  Cc: John W. Linville, Dan Williams, Ivo van Doorn,
	Ozan Çağlayan, linux-wireless, linux-kernel
In-Reply-To: <43e72e890910151206y59353608p5065f72eebd72ab@mail.gmail.com>

On Thursday 15 October 2009 21:06:55 Luis R. Rodriguez wrote:
> On Thu, Oct 15, 2009 at 7:47 AM, Bartlomiej Zolnierkiewicz
> <bzolnier@gmail.com> wrote:
> > On Wednesday 14 October 2009 18:55:23 Luis R. Rodriguez wrote:
> >
> >> I hear fishing in Poland is great this time of year.
> >
> > It got quite cold this week so I thought that I would try to fish
> > the commit that broke Atheros AR9285 in Linus' tree (works in 2.6.31)
> > and make recent kernels finally work on my laptop..
> >
> > Seems like there are two regressions actually:
> >
> > - later one making association/authentication impossible
> 
> And you reported this when and where?
> 
> > - earlier one making transfers stall
> 
> And you reported this when and where?
> 
> Curious how the issues you mention now spreading across sound and
> wireless do not get fixed or seriously addressed. Have you considered
> your tactics are perhaps not the best?

Please look closely at chosen examples and you'll see a lot of insight
telling you that users' experience is not granted by having clean code
or by having features which are not consider crucial instead of reliable
basic functionality.

I'm pretty sure that if you try F12 w/ AR9285 you will be able to reproduce
and fix at least some of above mentioned problems.  I just used the occasion
to raise them and make people aware of bugs before they hit users in final
2.6.32.

I'm not as much interested in fixing existing problems as in seeing why
they happened in the first place and how the process can be improved to
prevent them / making tracking of them easy for non-developers (so more
people can contribute to the project and developers have more time to
add new features).  I also don't have time to care about every single
Linux bug that I encounter (I hit quite a lot of them), bug-reporting
is a thankless and very time consuming work.

This is in no means trying to implicit that you're doing bad job.  Quite
the contrary -- I think that your work on Atheros support is much needed.

The point is that there is a lot of room for in release management process
of wireless/networking (it has been more-or-less unchanged for a long time
while other subsystems, i.e. x86, are constantly looking into improvements).

This is not something that you can change alone so please do not hesitate
to give feedback about this to your upstream maintainers so they are aware
of the need for improvements.

^ permalink raw reply

* Re: [PATCH] mac80211: fixed injection in monitor mode
From: Richard Farina @ 2009-10-16 17:19 UTC (permalink / raw)
  To: Johannes Berg; +Cc: Gabriele Gristina, linux-wireless
In-Reply-To: <1255704382.4095.340.camel@johannes.local>

Johannes Berg wrote:
> On Fri, 2009-10-16 at 04:09 +0200, Gabriele Gristina wrote:
>   
>> I have a problem with mac80211 injection:
>> if i setup interface in monitor mode with iwconfig and i try to send a
>> custum 802.11 frame i see twice the packet in monitor interface.
>> The first packet is right, the second is different only in the radiotap
>> header: rtap len is fixed to 13 bytes...
>> If i setup interface with airmon-ng the packet is sended once but the
>> radiotap header is fixed to 13 bytes.
>>     
>
> This is correct. The patch is wrong.
>
>   
I'm very stupid, could you please elaborate how seeing every single 
packets twice with different headers is "correct"?

Thanks,
Rick
> johannes
>   


^ permalink raw reply

* Re: [PATCH] mac80211: fix SME warning by removing stale BSS upon assoc failure
From: John W. Linville @ 2009-10-16 18:20 UTC (permalink / raw)
  To: Johannes Berg
  Cc: Luis R. Rodriguez, Luis Rodriguez, linux-wireless@vger.kernel.org,
	ic.felix@gmail.com
In-Reply-To: <1255685492.4095.309.camel@johannes.local>

On Fri, Oct 16, 2009 at 06:31:32PM +0900, Johannes Berg wrote:
> On Wed, 2009-10-14 at 16:35 -0700, Luis R. Rodriguez wrote:
> 
> > Well sure, but why do we want to keep the authentication present if
> > association failed? And as a matter of fact it lingers there forever.
> > Is that desired behaviour?
> 
> Yes, well, the SME is supposed to clean it up or try the association
> again (possibly with different parameters in the IEs, e.g. different WPA
> settings). The cfg80211 SME certainly does so (it deauthenticates).
> 
> > > > +++ b/net/mac80211/mlme.c
> > > > @@ -1463,11 +1463,11 @@ ieee80211_rx_mgmt_assoc_resp(struct ieee80211_sub_if_data *sdata,
> > > >  	if (status_code != WLAN_STATUS_SUCCESS) {
> > > >  		printk(KERN_DEBUG "%s: AP denied association (code=%d)\n",
> > > >  		       sdata->dev->name, status_code);
> > > >  		list_del(&wk->list);
> > > >  		kfree(wk);
> > > > -		return RX_MGMT_CFG80211_ASSOC;
> > > > +		return RX_MGMT_CFG80211_DEAUTH;
> > > 
> > > I'm sure this is correct. Maybe cfg80211 doesn't react properly to
> > > getting an assoc frame with non-zero status?
> > 
> > I see, will have to take a look when I get a chance then, not now though.
> 
> > Actually can you elaborate a little on the logic here as to why
> > we want to issue an association command with non-zero status to
> > cfg80211 instead of just knocking off the current authentication
> > and killing the BSS?
> 
> Is the above sufficient? Btw, please don't talk about "killing the BSS",
> you're not talking about a BSS struct but rather one of the mlme work
> structs.

So, should this patch be dropped?  It is currently in w-t...

John
-- 
John W. Linville		Someday the world will need a hero, and you
linville@tuxdriver.com			might be all we have.  Be ready.

^ permalink raw reply

* Re: [PATCH 03/16] iwmc3200wifi: WPS support
From: John W. Linville @ 2009-10-16 18:19 UTC (permalink / raw)
  To: Marcel Holtmann; +Cc: Zhu Yi, linux-wireless, Samuel Ortiz
In-Reply-To: <1255709887.31260.4.camel@localhost.localdomain>

On Fri, Oct 16, 2009 at 06:18:07PM +0200, Marcel Holtmann wrote:
> Hi Yi,
> 
> > From: Samuel Ortiz <sameo@linux.intel.com>
> > 
> > By setting the WSC profile flag, we now support WPS as an enrollee.
> > 
> > Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
> > Signed-off-by: Zhu Yi <yi.zhu@intel.com>
> > ---
> >  drivers/net/wireless/iwmc3200wifi/cfg80211.c |    7 +++++++
> >  drivers/net/wireless/iwmc3200wifi/commands.h |    3 +++
> >  2 files changed, 10 insertions(+), 0 deletions(-)
> > 
> > diff --git a/drivers/net/wireless/iwmc3200wifi/cfg80211.c b/drivers/net/wireless/iwmc3200wifi/cfg80211.c
> > index 0d2e719..a6d2f20 100644
> > --- a/drivers/net/wireless/iwmc3200wifi/cfg80211.c
> > +++ b/drivers/net/wireless/iwmc3200wifi/cfg80211.c
> > @@ -628,6 +628,13 @@ static int iwm_cfg80211_connect(struct wiphy *wiphy, struct net_device *dev,
> >  		iwm->default_key = sme->key_idx;
> >  	}
> >  
> > +	/* WPA and open AUTH type from wpa_s means WPS (a.k.a. WSC) */
> > +	if ((iwm->umac_profile->sec.flags &
> > +	     (UMAC_SEC_FLG_WPA_ON_MSK | UMAC_SEC_FLG_RSNA_ON_MSK)) &&
> > +	    iwm->umac_profile->sec.auth_type == UMAC_AUTH_TYPE_OPEN) {
> > +			iwm->umac_profile->sec.flags = UMAC_SEC_FLG_WSC_ON_MSK;
> > +	}
> > +
> 
> I don't wanna be picky, but what coding style are you following here?
> The indentation makes no sense and doesn't improve readability.

Given the length and complication of the conditions, the indentation
seems fine to me.  How would you do it?

John
-- 
John W. Linville		Someday the world will need a hero, and you
linville@tuxdriver.com			might be all we have.  Be ready.

^ permalink raw reply

* possible ath9k or wpa_supplicant bug
From: Jan Christoph Uhde @ 2009-10-16 19:01 UTC (permalink / raw)
  To: linux-wireless

[-- Attachment #1: Type: text/plain, Size: 537 bytes --]

Hi,
i bought a Samsung N140 with an AR9285 Wireless Network Adapter.
I am able to connect to my AP for a short time and then the connection is 
terminated. The Card works fine at other places. But everybody else seems to
be able to connect to my AP without problems.

Attached is:

- the setup of my netbook
- the log of iw
- the log of the wpa_supplicant since
- the hostap config of the AP
- the log of hostap

the logs are created at different times.
the iw event and hostapd log should be recorded simultaneously.

best regards,
jan

[-- Attachment #2: report --]
[-- Type: text/plain, Size: 42819 bytes --]

UNAME:#############################################
Linux spike 2.6.31-14-generic #47-Ubuntu SMP Thu Oct 15 02:08:08 UTC 2009 i686 GNU/Linux

LSPCI:#############################################
02:00.0 Network controller: Atheros Communications Inc. AR9285 Wireless Network Adapter (PCI-Express) (rev 01)
	Kernel driver in use: ath9k
	Kernel modules: ath9k

LSMOD:#############################################
Module                  Size  Used by
binfmt_misc             8356  1 
ppdev                   6688  0 
snd_hda_codec_realtek   203328  1 
lp                      8964  0 
parport                35340  2 ppdev,lp
snd_hda_intel          26920  0 
snd_hda_codec          75708  2 snd_hda_codec_realtek,snd_hda_intel
snd_hwdep               7200  1 snd_hda_codec
arc4                    1660  2 
snd_pcm_oss            37920  0 
bridge                 47952  0 
joydev                 10272  0 
snd_mixer_oss          16028  1 snd_pcm_oss
ecb                     2524  2 
snd_pcm                75296  3 snd_hda_intel,snd_hda_codec,snd_pcm_oss
stp                     2272  1 bridge
ath9k                  86308  0 
bnep                   12060  2 
snd_seq_dummy           2656  0 
ath9k_hw              224720  1 ath9k
mac80211              210152  1 ath9k
ath                     8828  2 ath9k,ath9k_hw
psmouse                56180  0 
uvcvideo               59080  0 
videodev               36736  1 uvcvideo
v4l1_compat            14496  2 uvcvideo,videodev
snd_seq_oss            28576  0 
serio_raw               5280  0 
snd_seq_midi            6432  0 
cfg80211              130248  3 ath9k,mac80211,ath
led_class               4096  1 ath9k
btusb                  11856  2 
snd_rawmidi            22208  1 snd_seq_midi
snd_seq_midi_event      6940  2 snd_seq_oss,snd_seq_midi
snd_seq                50224  6 snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_seq_midi_event
snd_timer              22276  2 snd_pcm,snd_seq
snd_seq_device          6920  5 snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_rawmidi,snd_seq
iptable_filter          3100  0 
snd                    59204  12 snd_hda_codec_realtek,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_seq_oss,snd_rawmidi,snd_seq,snd_timer,snd_seq_device
soundcore               7264  1 snd
snd_page_alloc          9156  2 snd_hda_intel,snd_pcm
ip_tables              11692  1 iptable_filter
x_tables               16544  1 ip_tables
fbcon                  36640  71 
tileblit                2460  1 fbcon
font                    8124  1 fbcon
bitblit                 5372  1 fbcon
softcursor              1756  1 bitblit
r8169                  32064  0 
mii                     5212  1 r8169
i915                  221064  2 
drm                   159584  2 i915
i2c_algo_bit            5760  1 i915
intel_agp              27484  2 i915
agpgart                34988  2 drm,intel_agp
video                  19380  1 i915
output                  2780  1 video

MODINFO:###########################################
filename:       /lib/modules/2.6.31-14-generic/updates/drivers/net/wireless/ath/ath9k/ath9k.ko
license:        Dual BSD/GPL
description:    Support for Atheros 802.11n wireless LAN cards.
author:         Atheros Communications
srcversion:     BE80DF2DE1248B206C66D1C
alias:          pci:v0000168Cd0000002Esv*sd*bc*sc*i*
alias:          pci:v0000168Cd0000002Dsv*sd*bc*sc*i*
alias:          pci:v0000168Cd0000002Bsv*sd*bc*sc*i*
alias:          pci:v0000168Cd0000002Asv*sd*bc*sc*i*
alias:          pci:v0000168Cd00000029sv*sd*bc*sc*i*
alias:          pci:v0000168Cd00000027sv*sd*bc*sc*i*
alias:          pci:v0000168Cd00000024sv*sd*bc*sc*i*
alias:          pci:v0000168Cd00000023sv*sd*bc*sc*i*
depends:        ath9k_hw,mac80211,led-class,ath,cfg80211
vermagic:       2.6.31-14-generic SMP mod_unload modversions 586 
parm:           nohwcrypt:Disable hardware encryption (int)
parm:           debug:uint
parm:           ath9k_debug:Debugging mask

wpa_supplicant:####################################
version:
ii  wpasupplicant                              0.6.9-3ubuntu1                             client support for WPA and WPA2 (IEEE 802.11
config:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev


network={
	key_mgmt=WPA-PSK
	#bssid=00:1f:1f:52::d6:b4
	group=TKIP
	pairwise=TKIP
	proto=WPA
	ssid="Halterlose Lederhosen"
	psk="fooo"
	id_str="home"
}

network={
	ssid="halterlose Netzstruempfe"
	psk="baaar"
	id_str="home"
}

/etc/network/interfaces:###########################
auto lo
iface lo inet loopback

auto dsl-provider
iface dsl-provider inet ppp
pre-up /sbin/ifconfig eth0 up # line maintained by pppoeconf
provider dsl-provider

auto eth0
iface eth0 inet manual

iface wlan2 inet manual
	#wpa-driver wext
	wpa-driver nl80211
	wpa-roam /etc/wpa_supplicant/wpa-roam.conf

iface home inet dhcp
	mtu 1412




wpa_supplicant log:################################
Fri Oct 16 12:20:44 CEST 2009
Initializing interface 'wlan2' conf '/etc/wpa_supplicant/wpa-roam.conf' driver 'nl80211' ctrl_interface 'N/A' bridge 'N/A'
Configuration file '/etc/wpa_supplicant/wpa-roam.conf' -> '/etc/wpa_supplicant/wpa-roam.conf'
Reading configuration file '/etc/wpa_supplicant/wpa-roam.conf'
ctrl_interface='DIR=/var/run/wpa_supplicant GROUP=netdev'
Line: 75 - start of a new network block
key_mgmt: 0x2
group: 0x8
pairwise: 0x8
proto: 0x1
ssid - hexdump_ascii(len=21):
     48 61 6c 74 65 72 6c 6f 73 65 20 4c 65 64 65 72   Halterlose Leder
     68 6f 73 65 6e                                    hosen           
PSK (ASCII passphrase) - hexdump_ascii(len=23): [REMOVED]
id_str - hexdump_ascii(len=4):
     68 6f 6d 65                                       home            
PSK (from passphrase) - hexdump(len=32): [REMOVED]
Line: 86 - start of a new network block
ssid - hexdump_ascii(len=24):
     68 61 6c 74 65 72 6c 6f 73 65 20 4e 65 74 7a 73   halterlose Netzs
     74 72 75 65 6d 70 66 65                           truempfe        
PSK (ASCII passphrase) - hexdump_ascii(len=20): [REMOVED]
id_str - hexdump_ascii(len=4):
     68 6f 6d 65                                       home            
PSK (from passphrase) - hexdump(len=32): [REMOVED]
Priority group 0
   id=0 ssid='Halterlose Lederhosen'
   id=1 ssid='halterlose Netzstruempfe'
Failed to set interface wlan2 mode
Could not configure driver to use managed mode
SIOCGIWRANGE: WE(compiled)=22 WE(source)=21 enc_capa=0xf
  capabilities: key_mgmt 0xf enc 0xf
WEXT: Operstate: linkmode=1, operstate=5
Own MAC address: 00:26:b6:11:62:20
wpa_driver_nl80211_set_wpa
wpa_driver_nl80211_set_key: alg=0 addr=0x80ba878 key_idx=0 set_tx=0 seq_len=0 key_len=0
nl80211: set_key failed; err=-67
wpa_driver_nl80211_set_key: alg=0 addr=0x80ba878 key_idx=1 set_tx=0 seq_len=0 key_len=0
nl80211: set_key failed; err=-67
wpa_driver_nl80211_set_key: alg=0 addr=0x80ba878 key_idx=2 set_tx=0 seq_len=0 key_len=0
nl80211: set_key failed; err=-67
wpa_driver_nl80211_set_key: alg=0 addr=0x80ba878 key_idx=3 set_tx=0 seq_len=0 key_len=0
nl80211: set_key failed; err=-67
wpa_driver_nl80211_set_countermeasures
wpa_driver_nl80211_set_drop_unencrypted
RSN: flushing PMKID list in the driver
Setting scan request: 0 sec 100000 usec
WPS: UUID based on MAC address - hexdump(len=16): e2 62 f4 1c e0 42 5f c8 ab fb 5a 26 e2 ac 9c 65
WPS: Build Beacon and Probe Response IEs
WPS:  * Version
WPS:  * Wi-Fi Protected Setup State (0)
WPS:  * Version
WPS:  * Wi-Fi Protected Setup State (0)
WPS:  * Response Type (2)
WPS:  * UUID-E
WPS:  * Manufacturer
WPS:  * Model Name
WPS:  * Model Number
WPS:  * Serial Number
WPS:  * Primary Device Type
WPS:  * Device Name
WPS:  * Config Methods (0)
WPS:  * RF Bands (3)
EAPOL: SUPP_PAE entering state DISCONNECTED
EAPOL: KEY_RX entering state NO_KEY_RECEIVE
EAPOL: SUPP_BE entering state INITIALIZE
EAP: EAP entering state DISABLED
ctrl_interface_group=112 (from group name 'netdev')
Added interface wlan2
CTRL_IFACE - wlan2 - wait for monitor to attach
CTRL_IFACE monitor attached - hexdump(len=21): 2f 74 6d 70 2f 77 70 61 5f 63 74 72 6c 5f 31 39 37 31 2d 31 00
RTM_NEWLINK: operstate=0 ifi_flags=0x1002 ()
RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan2' added
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan2' added
RTM_NEWLINK: operstate=0 ifi_flags=0x1002 ()
RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan2' added
RTM_NEWLINK: operstate=0 ifi_flags=0x1002 ()
RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan2' added
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan2' added
State: DISCONNECTED -> SCANNING
Starting AP scan (broadcast SSID)
Trying to get current scan results first without requesting a new scan to speed up initial association
Received scan results (0 BSSes)
Cached scan results are empty - not posting
Selecting BSS from priority group 0
Try to find WPA-enabled AP
Try to find non-WPA AP
No suitable AP found.
Setting scan request: 0 sec 0 usec
Starting AP scan (broadcast SSID)
Scan requested (ret=0) - scan timeout 10 seconds
nl80211: Event message available
nl80211: New scan results available
Received scan results (12 BSSes)
CTRL-EVENT-SCAN-RESULTS 
CTRL_IFACE monitor send - hexdump(len=21): 2f 74 6d 70 2f 77 70 61 5f 63 74 72 6c 5f 31 39 37 31 2d 31 00
WPS: attr type=0x104a len=1
WPS: attr type=0x1044 len=1
WPS: attr type=0x103b len=1
WPS: attr type=0x1047 len=16
WPS: attr type=0x1021 len=7
WPS: attr type=0x1023 len=15
WPS: attr type=0x1024 len=4
WPS: attr type=0x1042 len=4
WPS: attr type=0x1054 len=8
WPS: attr type=0x1011 len=5
WPS: attr type=0x1008 len=2
WPS: attr type=0x1041 len=1
WPS: attr type=0x104a len=1
WPS: attr type=0x1044 len=1
WPS: attr type=0x103b len=1
WPS: attr type=0x1047 len=16
WPS: attr type=0x1021 len=7
WPS: attr type=0x1023 len=15
WPS: attr type=0x1024 len=4
WPS: attr type=0x1042 len=4
WPS: attr type=0x1054 len=8
WPS: attr type=0x1011 len=5
WPS: attr type=0x1008 len=2
WPS: attr type=0x1041 len=1
WPS-AP-AVAILABLE 
CTRL_IFACE monitor send - hexdump(len=21): 2f 74 6d 70 2f 77 70 61 5f 63 74 72 6c 5f 31 39 37 31 2d 31 00
Selecting BSS from priority group 0
Try to find WPA-enabled AP
0: 00:1f:1f:52:d6:b4 ssid='Halterlose Lederhosen' wpa_ie_len=22 rsn_ie_len=0 caps=0x411
   selected based on WPA IE
   selected WPA AP 00:1f:1f:52:d6:b4 ssid='Halterlose Lederhosen'
Trying to associate with 00:1f:1f:52:d6:b4 (SSID='Halterlose Lederhosen' freq=2442 MHz)
CTRL_IFACE monitor send - hexdump(len=21): 2f 74 6d 70 2f 77 70 61 5f 63 74 72 6c 5f 31 39 37 31 2d 31 00
Cancelling scan request
WPA: clearing own WPA/RSN IE
Automatic auth_alg selection: 0x1
WPA: using IEEE 802.11i/D3.0
WPA: Selected cipher suites: group 8 pairwise 8 key_mgmt 2 proto 1
WPA: set AP WPA IE - hexdump(len=24): dd 16 00 50 f2 01 01 00 00 50 f2 02 01 00 00 50 f2 02 01 00 00 50 f2 02
WPA: clearing AP RSN IE
WPA: using GTK TKIP
WPA: using PTK TKIP
WPA: using KEY_MGMT WPA-PSK
WPA: not using MGMT group cipher
WPA: Set own WPA IE default - hexdump(len=24): dd 16 00 50 f2 01 01 00 00 50 f2 02 01 00 00 50 f2 02 01 00 00 50 f2 02
No keys have been configured - skip key clearing
wpa_driver_nl80211_set_drop_unencrypted
State: SCANNING -> ASSOCIATING
wpa_driver_nl80211_set_operstate: operstate 0->0 (DORMANT)
WEXT: Operstate: linkmode=-1, operstate=5
wpa_driver_nl80211_associate
Setting authentication timeout: 10 sec 0 usec
EAPOL: External notification - EAP success=0
EAPOL: External notification - EAP fail=0
EAPOL: External notification - portControl=Auto
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan2' added
Wireless event: cmd=0x8b19 len=8
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan2' added
Wireless event: cmd=0x8b04 len=12
RTM_NEWLINK: operstate=0 ifi_flags=0x11003 ([UP][LOWER_UP])
RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan2' added
Wireless event: cmd=0x8c08 len=24
AssocResp IE wireless event - hexdump(len=16): 01 08 82 84 8b 96 0c 12 18 24 32 04 30 48 60 6c
RTM_NEWLINK: operstate=0 ifi_flags=0x11003 ([UP][LOWER_UP])
RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan2' added
Wireless event: cmd=0x8b15 len=20
Wireless event: new AP: 00:1f:1f:52:d6:b4
Association info event
resp_ies - hexdump(len=16): 01 08 82 84 8b 96 0c 12 18 24 32 04 30 48 60 6c
State: ASSOCIATING -> ASSOCIATED
wpa_driver_nl80211_set_operstate: operstate 0->0 (DORMANT)
WEXT: Operstate: linkmode=-1, operstate=5
Associated to a new BSS: BSSID=00:1f:1f:52:d6:b4
No keys have been configured - skip key clearing
Associated with 00:1f:1f:52:d6:b4
CTRL_IFACE monitor send - hexdump(len=21): 2f 74 6d 70 2f 77 70 61 5f 63 74 72 6c 5f 31 39 37 31 2d 31 00
WPA: Association event - clear replay counter
WPA: Clear old PTK
EAPOL: External notification - portEnabled=0
EAPOL: External notification - portValid=0
EAPOL: External notification - EAP success=0
EAPOL: External notification - portEnabled=1
EAPOL: SUPP_PAE entering state CONNECTING
EAPOL: SUPP_BE entering state IDLE
Setting authentication timeout: 10 sec 0 usec
Cancelling scan request
RTM_NEWLINK: operstate=0 ifi_flags=0x11003 ([UP][LOWER_UP])
RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan2' added
RX EAPOL from 00:1f:1f:52:d6:b4
RX EAPOL - hexdump(len=99): 01 03 00 5f fe 00 89 00 20 00 00 00 00 00 00 00 01 e8 9f ba 86 27 1a a0 fa e7 fc 35 de 61 ae f0 59 84 df 01 b3 23 a2 58 ab 88 6a a2 c8 a1 51 4b 5a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Setting authentication timeout: 10 sec 0 usec
IEEE 802.1X RX: version=1 type=3 length=95
  EAPOL-Key type=254
  key_info 0x89 (ver=1 keyidx=0 rsvd=0 Pairwise Ack)
  key_length=32 key_data_length=0
  replay_counter - hexdump(len=8): 00 00 00 00 00 00 00 01
  key_nonce - hexdump(len=32): e8 9f ba 86 27 1a a0 fa e7 fc 35 de 61 ae f0 59 84 df 01 b3 23 a2 58 ab 88 6a a2 c8 a1 51 4b 5a
  key_iv - hexdump(len=16): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  key_rsc - hexdump(len=8): 00 00 00 00 00 00 00 00
  key_id (reserved) - hexdump(len=8): 00 00 00 00 00 00 00 00
  key_mic - hexdump(len=16): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
WPA: RX EAPOL-Key - hexdump(len=99): 01 03 00 5f fe 00 89 00 20 00 00 00 00 00 00 00 01 e8 9f ba 86 27 1a a0 fa e7 fc 35 de 61 ae f0 59 84 df 01 b3 23 a2 58 ab 88 6a a2 c8 a1 51 4b 5a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
State: ASSOCIATED -> 4WAY_HANDSHAKE
WPA: RX message 1 of 4-Way Handshake from 00:1f:1f:52:d6:b4 (ver=1)
WPA: Renewed SNonce - hexdump(len=32): c5 3a e3 cd e3 fb 04 c1 c9 c5 c7 6c f9 83 fb 93 71 3f 51 4a 75 59 07 68 dd 60 51 3a 81 02 68 56
WPA: PTK derivation - A1=00:26:b6:11:62:20 A2=00:1f:1f:52:d6:b4
WPA: PMK - hexdump(len=32): [REMOVED]
WPA: PTK - hexdump(len=64): [REMOVED]
WPA: WPA IE for msg 2/4 - hexdump(len=24): dd 16 00 50 f2 01 01 00 00 50 f2 02 01 00 00 50 f2 02 01 00 00 50 f2 02
WPA: Sending EAPOL-Key 2/4
WPA: TX EAPOL-Key - hexdump(len=123): 01 03 00 77 fe 01 09 00 20 00 00 00 00 00 00 00 01 c5 3a e3 cd e3 fb 04 c1 c9 c5 c7 6c f9 83 fb 93 71 3f 51 4a 75 59 07 68 dd 60 51 3a 81 02 68 56 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 34 9c 97 3f 94 61 f7 11 6b 0c d9 4f 72 2b 14 f9 00 18 dd 16 00 50 f2 01 01 00 00 50 f2 02 01 00 00 50 f2 02 01 00 00 50 f2 02
RX EAPOL from 00:1f:1f:52:d6:b4
RX EAPOL - hexdump(len=123): 01 03 00 77 fe 01 c9 00 20 00 00 00 00 00 00 00 02 e8 9f ba 86 27 1a a0 fa e7 fc 35 de 61 ae f0 59 84 df 01 b3 23 a2 58 ab 88 6a a2 c8 a1 51 4b 5a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d2 79 e0 2e 27 cf 35 6c fd f2 76 7b 28 13 c7 e7 00 18 dd 16 00 50 f2 01 01 00 00 50 f2 02 01 00 00 50 f2 02 01 00 00 50 f2 02
IEEE 802.1X RX: version=1 type=3 length=119
  EAPOL-Key type=254
  key_info 0x1c9 (ver=1 keyidx=0 rsvd=0 Pairwise Install Ack MIC)
  key_length=32 key_data_length=24
  replay_counter - hexdump(len=8): 00 00 00 00 00 00 00 02
  key_nonce - hexdump(len=32): e8 9f ba 86 27 1a a0 fa e7 fc 35 de 61 ae f0 59 84 df 01 b3 23 a2 58 ab 88 6a a2 c8 a1 51 4b 5a
  key_iv - hexdump(len=16): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  key_rsc - hexdump(len=8): 00 00 00 00 00 00 00 00
  key_id (reserved) - hexdump(len=8): 00 00 00 00 00 00 00 00
  key_mic - hexdump(len=16): d2 79 e0 2e 27 cf 35 6c fd f2 76 7b 28 13 c7 e7
WPA: RX EAPOL-Key - hexdump(len=123): 01 03 00 77 fe 01 c9 00 20 00 00 00 00 00 00 00 02 e8 9f ba 86 27 1a a0 fa e7 fc 35 de 61 ae f0 59 84 df 01 b3 23 a2 58 ab 88 6a a2 c8 a1 51 4b 5a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d2 79 e0 2e 27 cf 35 6c fd f2 76 7b 28 13 c7 e7 00 18 dd 16 00 50 f2 01 01 00 00 50 f2 02 01 00 00 50 f2 02 01 00 00 50 f2 02
State: 4WAY_HANDSHAKE -> 4WAY_HANDSHAKE
WPA: RX message 3 of 4-Way Handshake from 00:1f:1f:52:d6:b4 (ver=1)
WPA: IE KeyData - hexdump(len=24): dd 16 00 50 f2 01 01 00 00 50 f2 02 01 00 00 50 f2 02 01 00 00 50 f2 02
WPA: Sending EAPOL-Key 4/4
WPA: TX EAPOL-Key - hexdump(len=99): 01 03 00 5f fe 01 09 00 20 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 9f 9a cc db a6 e7 6c 67 e6 73 99 69 0b a4 e4 54 00 00
WPA: Installing PTK to the driver.
WPA: RSC - hexdump(len=6): 00 00 00 00 00 00
wpa_driver_nl80211_set_key: alg=2 addr=0x9279554 key_idx=0 set_tx=1 seq_len=6 key_len=32
   addr=00:1f:1f:52:d6:b4
State: 4WAY_HANDSHAKE -> GROUP_HANDSHAKE
RX EAPOL from 00:1f:1f:52:d6:b4
RX EAPOL - hexdump(len=131): 01 03 00 7f fe 03 91 00 20 00 00 00 00 00 00 00 03 e8 9f ba 86 27 1a a0 fa e7 fc 35 de 61 ae f0 59 84 df 01 b3 23 a2 58 ab 88 6a a2 c8 a1 51 4b 55 84 df 01 b3 23 a2 58 ab 88 6a a2 c8 a1 51 4b 5b 2d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1f 7a f7 83 c5 37 c2 8c 65 9e 7b b3 be d9 c8 3d 00 20 73 13 32 e5 60 df fb ea 62 77 6f b2 43 8b 1d b5 a2 b4 4e fe 67 32 50 63 fe 8e 47 1b ba be ad 1d
IEEE 802.1X RX: version=1 type=3 length=127
  EAPOL-Key type=254
  key_info 0x391 (ver=1 keyidx=1 rsvd=0 Group Ack MIC Secure)
  key_length=32 key_data_length=32
  replay_counter - hexdump(len=8): 00 00 00 00 00 00 00 03
  key_nonce - hexdump(len=32): e8 9f ba 86 27 1a a0 fa e7 fc 35 de 61 ae f0 59 84 df 01 b3 23 a2 58 ab 88 6a a2 c8 a1 51 4b 55
  key_iv - hexdump(len=16): 84 df 01 b3 23 a2 58 ab 88 6a a2 c8 a1 51 4b 5b
  key_rsc - hexdump(len=8): 2d 00 00 00 00 00 00 00
  key_id (reserved) - hexdump(len=8): 00 00 00 00 00 00 00 00
  key_mic - hexdump(len=16): 1f 7a f7 83 c5 37 c2 8c 65 9e 7b b3 be d9 c8 3d
WPA: RX EAPOL-Key - hexdump(len=131): 01 03 00 7f fe 03 91 00 20 00 00 00 00 00 00 00 03 e8 9f ba 86 27 1a a0 fa e7 fc 35 de 61 ae f0 59 84 df 01 b3 23 a2 58 ab 88 6a a2 c8 a1 51 4b 55 84 df 01 b3 23 a2 58 ab 88 6a a2 c8 a1 51 4b 5b 2d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1f 7a f7 83 c5 37 c2 8c 65 9e 7b b3 be d9 c8 3d 00 20 73 13 32 e5 60 df fb ea 62 77 6f b2 43 8b 1d b5 a2 b4 4e fe 67 32 50 63 fe 8e 47 1b ba be ad 1d
WPA: RX message 1 of Group Key Handshake from 00:1f:1f:52:d6:b4 (ver=1)
State: GROUP_HANDSHAKE -> GROUP_HANDSHAKE
WPA: Group Key - hexdump(len=32): [REMOVED]
WPA: Installing GTK to the driver (keyidx=1 tx=0 len=32).
WPA: RSC - hexdump(len=6): 2d 00 00 00 00 00
wpa_driver_nl80211_set_key: alg=2 addr=0x80ba878 key_idx=1 set_tx=0 seq_len=6 key_len=32
WPA: Sending EAPOL-Key 2/2
WPA: TX EAPOL-Key - hexdump(len=99): 01 03 00 5f fe 03 11 00 20 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ef d5 65 ad 8d 38 a0 8a 43 29 2f d7 1a 28 48 ff 00 00
WPA: Key negotiation completed with 00:1f:1f:52:d6:b4 [PTK=TKIP GTK=TKIP]
CTRL_IFACE monitor send - hexdump(len=21): 2f 74 6d 70 2f 77 70 61 5f 63 74 72 6c 5f 31 39 37 31 2d 31 00
Cancelling authentication timeout
State: GROUP_HANDSHAKE -> COMPLETED
CTRL-EVENT-CONNECTED - Connection to 00:1f:1f:52:d6:b4 completed (auth) [id=0 id_str=home]
CTRL_IFACE monitor send - hexdump(len=21): 2f 74 6d 70 2f 77 70 61 5f 63 74 72 6c 5f 31 39 37 31 2d 31 00
wpa_driver_nl80211_set_operstate: operstate 0->1 (UP)
WEXT: Operstate: linkmode=-1, operstate=6
EAPOL: External notification - portValid=1
EAPOL: External notification - EAP success=1
EAPOL: SUPP_PAE entering state AUTHENTICATING
EAPOL: SUPP_BE entering state SUCCESS
EAP: EAP entering state DISABLED
EAPOL: SUPP_PAE entering state AUTHENTICATED
EAPOL: SUPP_BE entering state IDLE
EAPOL authentication completed successfully
RTM_NEWLINK: operstate=1 ifi_flags=0x11043 ([UP][RUNNING][LOWER_UP])
RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan2' added
EAPOL: startWhen --> 0
EAPOL: disable timer tick
RX ctrl_iface - hexdump_ascii(len=4):
     50 49 4e 47                                       PING            
RX ctrl_iface - hexdump_ascii(len=4):
     50 49 4e 47                                       PING            
RX ctrl_iface - hexdump_ascii(len=4):
     50 49 4e 47                                       PING            
RX EAPOL from 00:1f:1f:52:d6:b4
RX EAPOL - hexdump(len=131): 01 03 00 7f fe 03 a1 00 20 00 00 00 00 00 00 00 04 e8 9f ba 86 27 1a a0 fa e7 fc 35 de 61 ae f0 59 84 df 01 b3 23 a2 58 ab 88 6a a2 c8 a1 51 4b 5c 84 df 01 b3 23 a2 58 ab 88 6a a2 c8 a1 51 4b 5d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 61 69 af 21 c7 0a fc ac 34 af 33 62 42 7c 41 b0 00 20 fa 0c 86 18 cd 56 6e ef 2b 64 23 a8 96 2c b2 08 eb 61 c8 87 58 0e 89 4d 84 f6 fc dd 9f ba 07 6c
IEEE 802.1X RX: version=1 type=3 length=127
  EAPOL-Key type=254
  key_info 0x3a1 (ver=1 keyidx=2 rsvd=0 Group Ack MIC Secure)
  key_length=32 key_data_length=32
  replay_counter - hexdump(len=8): 00 00 00 00 00 00 00 04
  key_nonce - hexdump(len=32): e8 9f ba 86 27 1a a0 fa e7 fc 35 de 61 ae f0 59 84 df 01 b3 23 a2 58 ab 88 6a a2 c8 a1 51 4b 5c
  key_iv - hexdump(len=16): 84 df 01 b3 23 a2 58 ab 88 6a a2 c8 a1 51 4b 5d
  key_rsc - hexdump(len=8): 00 00 00 00 00 00 00 00
  key_id (reserved) - hexdump(len=8): 00 00 00 00 00 00 00 00
  key_mic - hexdump(len=16): 61 69 af 21 c7 0a fc ac 34 af 33 62 42 7c 41 b0
WPA: RX EAPOL-Key - hexdump(len=131): 01 03 00 7f fe 03 a1 00 20 00 00 00 00 00 00 00 04 e8 9f ba 86 27 1a a0 fa e7 fc 35 de 61 ae f0 59 84 df 01 b3 23 a2 58 ab 88 6a a2 c8 a1 51 4b 5c 84 df 01 b3 23 a2 58 ab 88 6a a2 c8 a1 51 4b 5d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 61 69 af 21 c7 0a fc ac 34 af 33 62 42 7c 41 b0 00 20 fa 0c 86 18 cd 56 6e ef 2b 64 23 a8 96 2c b2 08 eb 61 c8 87 58 0e 89 4d 84 f6 fc dd 9f ba 07 6c
WPA: RX message 1 of Group Key Handshake from 00:1f:1f:52:d6:b4 (ver=1)
State: COMPLETED -> GROUP_HANDSHAKE
WPA: Group Key - hexdump(len=32): [REMOVED]
WPA: Installing GTK to the driver (keyidx=2 tx=0 len=32).
WPA: RSC - hexdump(len=6): 00 00 00 00 00 00
wpa_driver_nl80211_set_key: alg=2 addr=0x80ba878 key_idx=2 set_tx=0 seq_len=6 key_len=32
WPA: Sending EAPOL-Key 2/2
WPA: TX EAPOL-Key - hexdump(len=99): 01 03 00 5f fe 03 21 00 20 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b1 eb 43 9e 07 92 08 e0 f4 d8 82 85 72 02 b7 89 00 00
WPA: Group rekeying completed with 00:1f:1f:52:d6:b4 [GTK=TKIP]
CTRL_IFACE monitor send - hexdump(len=21): 2f 74 6d 70 2f 77 70 61 5f 63 74 72 6c 5f 31 39 37 31 2d 31 00
Cancelling authentication timeout
State: GROUP_HANDSHAKE -> COMPLETED
RX ctrl_iface - hexdump_ascii(len=4):
     50 49 4e 47                                       PING            
RX ctrl_iface - hexdump_ascii(len=4):
     50 49 4e 47                                       PING            
RX ctrl_iface - hexdump_ascii(len=4):
     50 49 4e 47                                       PING            
RX ctrl_iface - hexdump_ascii(len=4):
     50 49 4e 47                                       PING            
RX ctrl_iface - hexdump_ascii(len=4):
     50 49 4e 47                                       PING            
RX ctrl_iface - hexdump_ascii(len=4):
     50 49 4e 47                                       PING            
RX ctrl_iface - hexdump_ascii(len=4):
     50 49 4e 47                                       PING            
RX ctrl_iface - hexdump_ascii(len=4):
     50 49 4e 47                                       PING            
RX ctrl_iface - hexdump_ascii(len=4):
     50 49 4e 47                                       PING            
RX ctrl_iface - hexdump_ascii(len=4):
     50 49 4e 47                                       PING            
RX ctrl_iface - hexdump_ascii(len=4):
     50 49 4e 47                                       PING            
RX ctrl_iface - hexdump_ascii(len=6):
     53 54 41 54 55 53                                 STATUS          
RX ctrl_iface - hexdump_ascii(len=4):
     50 49 4e 47                                       PING            
RX ctrl_iface - hexdump_ascii(len=4):
     50 49 4e 47                                       PING            
RX ctrl_iface - hexdump_ascii(len=6):
     53 54 41 54 55 53                                 STATUS          
RX ctrl_iface - hexdump_ascii(len=6):
     53 54 41 54 55 53                                 STATUS          
RX ctrl_iface - hexdump_ascii(len=6):
     53 54 41 54 55 53                                 STATUS          
RX ctrl_iface - hexdump_ascii(len=6):
     53 54 41 54 55 53                                 STATUS          
RX ctrl_iface - hexdump_ascii(len=6):
     53 54 41 54 55 53                                 STATUS          
RX ctrl_iface - hexdump_ascii(len=6):
     53 54 41 54 55 53                                 STATUS          
RX ctrl_iface - hexdump_ascii(len=6):
     53 54 41 54 55 53                                 STATUS          
RX ctrl_iface - hexdump_ascii(len=6):
     53 54 41 54 55 53                                 STATUS          
RX ctrl_iface - hexdump_ascii(len=6):
     53 54 41 54 55 53                                 STATUS          
RX ctrl_iface - hexdump_ascii(len=6):
     53 54 41 54 55 53                                 STATUS          
RX ctrl_iface - hexdump_ascii(len=4):
     50 49 4e 47                                       PING            
RX ctrl_iface - hexdump_ascii(len=4):
     50 49 4e 47                                       PING            
RX ctrl_iface - hexdump_ascii(len=4):
     50 49 4e 47                                       PING            
CTRL-EVENT-TERMINATING - signal 2 received
CTRL_IFACE monitor send - hexdump(len=21): 2f 74 6d 70 2f 77 70 61 5f 63 74 72 6c 5f 31 39 37 31 2d 31 00
Removing interface wlan2
State: COMPLETED -> DISCONNECTED
wpa_driver_nl80211_set_operstate: operstate 1->0 (DORMANT)
WEXT: Operstate: linkmode=-1, operstate=5
wpa_driver_nl80211_deauthenticate
wpa_driver_nl80211_set_key: alg=0 addr=0x80ba878 key_idx=0 set_tx=0 seq_len=0 key_len=0
nl80211: set_key failed; err=-67
wpa_driver_nl80211_set_key: alg=0 addr=0x80ba878 key_idx=1 set_tx=0 seq_len=0 key_len=0
nl80211: set_key failed; err=-67
wpa_driver_nl80211_set_key: alg=0 addr=0x80ba878 key_idx=2 set_tx=0 seq_len=0 key_len=0
nl80211: set_key failed; err=-67
wpa_driver_nl80211_set_key: alg=0 addr=0x80ba878 key_idx=3 set_tx=0 seq_len=0 key_len=0
nl80211: set_key failed; err=-67
wpa_driver_nl80211_set_key: alg=0 addr=0x9277640 key_idx=0 set_tx=0 seq_len=0 key_len=0
   addr=00:1f:1f:52:d6:b4
nl80211: set_key failed; err=-67
EAPOL: External notification - portEnabled=0
EAPOL: SUPP_PAE entering state DISCONNECTED
EAPOL: SUPP_BE entering state INITIALIZE
EAPOL: External notification - portValid=0
wpa_driver_nl80211_set_wpa
wpa_driver_nl80211_set_drop_unencrypted
wpa_driver_nl80211_set_countermeasures
No keys have been configured - skip key clearing
CTRL_IFACE wait for attached monitors to receive messages
Cancelling scan request
Cancelling authentication timeout
WEXT: Operstate: linkmode=0, operstate=6

########iw event -t############################

1255718273.323149: wlan2 (phy #0): unknown event 33
1255718274.251310: wlan2 (phy #0): scan finished
1255718274.260481: wlan2 (phy #0): deauth 00:26:b6:11:62:20 -> 00:1f:1f:52:d6:b4 reason 3: Deauthenticated because sending station is leaving (or has left) the IBSS or ESS
1255718274.260690: wlan2 (phy #0): unknown event 46
1255718274.266322: wlan2 (phy #0): auth 00:1f:1f:52:d6:b4 -> 00:26:b6:11:62:20 status: 0: Successful
1255718274.269848: wlan2 (phy #0): assoc 00:1f:1f:52:d6:b4 -> 00:26:b6:11:62:20 status: 0: Successful
1255718274.269978: wlan2 (phy #0): unknown event 46

###############################################
#####################HOST######################
###############################################



interface=wlan0
driver=nl80211
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
dump_file=/tmp/hostapd.dump
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
ssid=Halterlose Lederhosen
country_code=DE
ieee80211d=1
hw_mode=g
channel=7
beacon_int=100
dtim_period=2
max_num_sta=255
rts_threshold=2347
fragm_threshold=2346
macaddr_acl=0
auth_algs=3
ignore_broadcast_ssid=0
wme_ac_bk_cwmin=4
wme_ac_bk_cwmax=10
wme_ac_bk_aifs=7
wme_ac_bk_txop_limit=0
wme_ac_bk_acm=0
wme_ac_be_aifs=3
wme_ac_be_cwmin=4
wme_ac_be_cwmax=10
wme_ac_be_txop_limit=0
wme_ac_be_acm=0
wme_ac_vi_aifs=2
wme_ac_vi_cwmin=3
wme_ac_vi_cwmax=4
wme_ac_vi_txop_limit=94
wme_ac_vi_acm=0
wme_ac_vo_aifs=2
wme_ac_vo_cwmin=2
wme_ac_vo_cwmax=3
wme_ac_vo_txop_limit=47
wme_ac_vo_acm=0
ieee8021x=0
eapol_version=1
own_ip_addr=127.0.0.1
wpa=2
wpa_psk=0fd9a61d096e97f59bda536d0d2f4bbe5fd186694b33060f113be9f4ebda146a
wpa_key_mgmt=WPA-PSK 
wpa_pairwise=TKIP 



###################hostapd.log#######################3
1255718250.071919: Configuration file: /etc/hostapd/hostapd.conf
1255718250.072410: ctrl_interface_group=0
1255718250.072519: eapol_version=1
1255718250.107587: Opening raw packet socket for ifindex 212
1255718250.107608: BSS count 1, BSSID mask ff:ff:ff:ff:ff:ff (0 bits)
1255718250.107635: SIOCGIWRANGE: WE(compiled)=22 WE(source)=21 enc_capa=0xf
1255718250.107699: nl80211: Added 802.11b mode based on 802.11g information
1255718250.107704: Allowed channel: mode=1 chan=1 freq=2412 MHz max_tx_power=16 dBm
1255718250.107707: Allowed channel: mode=1 chan=2 freq=2417 MHz max_tx_power=16 dBm
1255718250.107711: Allowed channel: mode=1 chan=3 freq=2422 MHz max_tx_power=15 dBm
1255718250.107713: Allowed channel: mode=1 chan=4 freq=2427 MHz max_tx_power=15 dBm
1255718250.107716: Allowed channel: mode=1 chan=5 freq=2432 MHz max_tx_power=15 dBm
1255718250.107719: Allowed channel: mode=1 chan=6 freq=2437 MHz max_tx_power=14 dBm
1255718250.107722: Allowed channel: mode=1 chan=7 freq=2442 MHz max_tx_power=14 dBm
1255718250.107725: Allowed channel: mode=1 chan=8 freq=2447 MHz max_tx_power=14 dBm
1255718250.107728: Allowed channel: mode=1 chan=9 freq=2452 MHz max_tx_power=13 dBm
1255718250.107731: Allowed channel: mode=1 chan=10 freq=2457 MHz max_tx_power=13 dBm
1255718250.107733: Allowed channel: mode=1 chan=11 freq=2462 MHz max_tx_power=13 dBm
1255718250.107736: Allowed channel: mode=0 chan=1 freq=2412 MHz max_tx_power=16 dBm
1255718250.107739: Allowed channel: mode=0 chan=2 freq=2417 MHz max_tx_power=16 dBm
1255718250.107742: Allowed channel: mode=0 chan=3 freq=2422 MHz max_tx_power=15 dBm
1255718250.107745: Allowed channel: mode=0 chan=4 freq=2427 MHz max_tx_power=15 dBm
1255718250.107748: Allowed channel: mode=0 chan=5 freq=2432 MHz max_tx_power=15 dBm
1255718250.107751: Allowed channel: mode=0 chan=6 freq=2437 MHz max_tx_power=14 dBm
1255718250.107754: Allowed channel: mode=0 chan=7 freq=2442 MHz max_tx_power=14 dBm
1255718250.107757: Allowed channel: mode=0 chan=8 freq=2447 MHz max_tx_power=14 dBm
1255718250.107760: Allowed channel: mode=0 chan=9 freq=2452 MHz max_tx_power=13 dBm
1255718250.107762: Allowed channel: mode=0 chan=10 freq=2457 MHz max_tx_power=13 dBm
1255718250.107765: Allowed channel: mode=0 chan=11 freq=2462 MHz max_tx_power=13 dBm
1255718250.107790: RATE[0] rate=10 flags=0x2
1255718250.107795: RATE[1] rate=20 flags=0x6
1255718250.107798: RATE[2] rate=55 flags=0x6
1255718250.107800: RATE[3] rate=110 flags=0x6
1255718250.107803: RATE[4] rate=60 flags=0x0
1255718250.107806: RATE[5] rate=90 flags=0x0
1255718250.107809: RATE[6] rate=120 flags=0x0
1255718250.107812: RATE[7] rate=180 flags=0x0
1255718250.107814: RATE[8] rate=240 flags=0x0
1255718250.107817: RATE[9] rate=360 flags=0x0
1255718250.107820: RATE[10] rate=480 flags=0x0
1255718250.107822: RATE[11] rate=540 flags=0x0
1255718250.107825: Passive scanning not supported
1255718250.107829: Flushing old station entries
1255718250.107845: Deauthenticate all stations
1255718250.107871: Mode: IEEE 802.11g  Channel: 7  Frequency: 2442 MHz
1255718250.115235: Using interface wlan0 with hwaddr 00:1f:1f:52:d6:b4 and ssid 'Halterlose Lederhosen'
1255718250.117332: WPA: group state machine entering state GTK_INIT (VLAN-ID 0)
1255718250.117347: GMK - hexdump(len=32): a7 08 73 55 06 6e dc cd 82 c8 d3 2c 15 a2 19 97 b0 44 f5 fc e9 de b1 ae ad d4 64 74 99 93 b3 aa
1255718250.117359: GTK - hexdump(len=32): c8 b4 96 8d c0 f1 0f 3b e1 48 3f 9d 40 28 72 9f 16 ef 4f 1c 31 c5 18 78 8c ec e6 3a c3 5e 6f ff
1255718250.117370: WPA: group state machine entering state SETKEYSDONE (VLAN-ID 0)
1255718250.117586: wlan0: Setup of interface done.
1255718250.117614: MGMT (TX callback) ACK
1255718259.405747: unknown vendor specific information element ignored (vendor OUI 00:10:18 len=9)
1255718259.405790: STA 00:21:00:0b:de:7d sent probe request for broadcast SSID
1255718259.407360: MGMT (TX callback) ACK
1255718259.407364: mgmt::proberesp cb
1255718259.425763: unknown vendor specific information element ignored (vendor OUI 00:10:18 len=9)
1255718259.425801: STA 00:21:00:0b:de:7d sent probe request for broadcast SSID
1255718259.427373: MGMT (TX callback) ACK
1255718259.427378: mgmt::proberesp cb
1255718262.601297: unknown vendor specific information element ignored (vendor OUI 00:03:47 len=7)
1255718262.601990: unknown vendor specific information element ignored (vendor OUI 00:03:47 len=7)
1255718262.602022: STA 00:1f:3c:c3:c4:22 sent probe request for broadcast SSID
1255718262.615549: MGMT (TX callback) ACK
1255718262.615560: mgmt::proberesp cb
1255718274.172523: STA 00:26:b6:11:62:20 sent probe request for broadcast SSID
1255718274.174090: MGMT (TX callback) ACK
1255718274.174094: mgmt::proberesp cb
1255718274.614193: MGMT
1255718274.614204: mgmt::deauth
1255718274.614207: deauthentication: STA=00:26:b6:11:62:20 reason_code=3
Station 00:26:b6:11:62:20 trying to deauthenticate, but it is not authenticated.
1255718274.615521: STA 00:26:b6:11:62:20 sent probe request for our SSID
1255718274.617089: MGMT (TX callback) ACK
1255718274.617093: mgmt::proberesp cb
1255718274.617870: MGMT
1255718274.617873: mgmt::auth
1255718274.617875: authentication: STA=00:26:b6:11:62:20 auth_alg=0 auth_transaction=1 status_code=0 wep=0
1255718274.617887:   New STA
1255718274.617906: wlan0: STA 00:26:b6:11:62:20 IEEE 802.11: authentication OK (open system)
1255718274.617917: wlan0: STA 00:26:b6:11:62:20 MLME: MLME-AUTHENTICATE.indication(00:26:b6:11:62:20, OPEN_SYSTEM)
1255718274.617924: wlan0: STA 00:26:b6:11:62:20 MLME: MLME-DELETEKEYS.request(00:26:b6:11:62:20)
1255718274.617927: authentication reply: STA=00:26:b6:11:62:20 auth_alg=0 auth_transaction=2 resp=0 (IE len=0)
1255718274.619203: MGMT (TX callback) ACK
1255718274.619207: mgmt::auth cb
1255718274.619214: wlan0: STA 00:26:b6:11:62:20 IEEE 802.11: authenticated
1255718274.620545: MGMT
1255718274.620550: mgmt::assoc_req
1255718274.620553: association request: STA=00:26:b6:11:62:20 capab_info=0x431 listen_interval=10
1255718274.620566:   new AID 1
1255718274.620573: wlan0: STA 00:26:b6:11:62:20 IEEE 802.11: association OK (aid 1)
1255718274.621913: MGMT (TX callback) ACK
1255718274.621916: mgmt::assoc_resp cb
1255718274.621922: wlan0: STA 00:26:b6:11:62:20 IEEE 802.11: associated (aid 1)
1255718274.622008: wlan0: STA 00:26:b6:11:62:20 MLME: MLME-ASSOCIATE.indication(00:26:b6:11:62:20)
1255718274.622015: wlan0: STA 00:26:b6:11:62:20 MLME: MLME-DELETEKEYS.request(00:26:b6:11:62:20)
1255718274.622405: wlan0: STA 00:26:b6:11:62:20 WPA: event 1 notification
1255718274.622441: wlan0: STA 00:26:b6:11:62:20 WPA: start authentication
1255718274.622444: WPA: 00:26:b6:11:62:20 WPA_PTK entering state INITIALIZE
1255718274.622479: wlan0: STA 00:26:b6:11:62:20 IEEE 802.1X: unauthorizing port
1255718274.622482: WPA: 00:26:b6:11:62:20 WPA_PTK_GROUP entering state IDLE
1255718274.622486: WPA: 00:26:b6:11:62:20 WPA_PTK entering state AUTHENTICATION
1255718274.622490: WPA: 00:26:b6:11:62:20 WPA_PTK entering state AUTHENTICATION2
1255718274.622494: WPA: 00:26:b6:11:62:20 WPA_PTK entering state INITPSK
1255718274.622498: WPA: 00:26:b6:11:62:20 WPA_PTK entering state PTKSTART
1255718274.622504: wlan0: STA 00:26:b6:11:62:20 WPA: sending 1/4 msg of 4-Way Handshake
1255718274.622507: WPA: Send EAPOL(version=1 secure=0 mic=0 ack=1 install=0 pairwise=8 kde_len=0 keyidx=0 encr=0)
1255718274.624154: IEEE 802.1X: 00:26:b6:11:62:20 TX status - version=1 type=3 length=95 - ack=1
1255718274.659106: IEEE 802.1X: 123 bytes from 00:26:b6:11:62:20
1255718274.659118:    IEEE 802.1X: version=1 type=3 length=119
1255718274.659132: wlan0: STA 00:26:b6:11:62:20 WPA: received EAPOL-Key frame (2/4 Pairwise)
1255718274.659138: WPA: 00:26:b6:11:62:20 WPA_PTK entering state PTKCALCNEGOTIATING
1255718274.659163: WPA: PTK derivation - A1=00:1f:1f:52:d6:b4 A2=00:26:b6:11:62:20
1255718274.659168: WPA: PMK - hexdump(len=32): 0f d9 a6 1d 09 6e 97 f5 9b da 53 6d 0d 2f 4b be 5f d1 86 69 4b 33 06 0f 11 3b e9 f4 eb da 14 6a
1255718274.659178: WPA: PTK - hexdump(len=64): 92 d6 dc 74 95 94 d2 aa f8 f6 8e b2 93 1d 11 fb 5b 60 ed 91 1f c7 cf 9d 22 88 4a bc b0 23 07 59 c8 66 e4 19 44 40 d1 30 e8 49 59 08 0c 55 4b 18 53 72 1b 1d e2 ac 4c 0c 54 05 b5 d0 61 56 73 b8
1255718274.659279: WPA: 00:26:b6:11:62:20 WPA_PTK entering state PTKCALCNEGOTIATING2
1255718274.659283: WPA: 00:26:b6:11:62:20 WPA_PTK entering state PTKINITNEGOTIATING
1255718274.659356: wlan0: STA 00:26:b6:11:62:20 WPA: sending 3/4 msg of 4-Way Handshake
1255718274.659359: WPA: Send EAPOL(version=1 secure=0 mic=1 ack=1 install=1 pairwise=8 kde_len=24 keyidx=0 encr=0)
1255718274.661229: IEEE 802.1X: 00:26:b6:11:62:20 TX status - version=1 type=3 length=119 - ack=1
1255718274.661712: IEEE 802.1X: 99 bytes from 00:26:b6:11:62:20
1255718274.661716:    IEEE 802.1X: version=1 type=3 length=95
1255718274.661727: wlan0: STA 00:26:b6:11:62:20 WPA: received EAPOL-Key frame (4/4 Pairwise)
1255718274.661736: WPA: 00:26:b6:11:62:20 WPA_PTK entering state PTKINITDONE
1255718274.661799: wlan0: STA 00:26:b6:11:62:20 IEEE 802.1X: authorizing port
1255718274.661805: wlan0: STA 00:26:b6:11:62:20 RADIUS: starting accounting session 4AD8BD6A-00000000
1255718274.661960: wlan0: STA 00:26:b6:11:62:20 WPA: pairwise key handshake completed (WPA)
1255718274.662036: WPA: 00:26:b6:11:62:20 WPA_PTK_GROUP entering state REKEYNEGOTIATING
1255718274.662076: wlan0: STA 00:26:b6:11:62:20 WPA: sending 1/2 msg of Group Key Handshake
1255718274.662079: WPA: Send EAPOL(version=1 secure=1 mic=1 ack=1 install=0 pairwise=0 kde_len=32 keyidx=1 encr=1)
1255718274.662085: Plaintext EAPOL-Key Key Data - hexdump(len=32): c8 b4 96 8d c0 f1 0f 3b e1 48 3f 9d 40 28 72 9f 16 ef 4f 1c 31 c5 18 78 8c ec e6 3a c3 5e 6f ff
1255718274.664818: IEEE 802.1X: 99 bytes from 00:26:b6:11:62:20
1255718274.664823:    IEEE 802.1X: version=1 type=3 length=95
1255718274.664830: wlan0: STA 00:26:b6:11:62:20 WPA: received EAPOL-Key frame (2/2 Group)
1255718274.664836: WPA: 00:26:b6:11:62:20 WPA_PTK_GROUP entering state REKEYESTABLISHED
1255718274.664843: wlan0: STA 00:26:b6:11:62:20 WPA: group key handshake completed (WPA)
1255718274.664919: WPA: 00:26:b6:11:62:20 WPA_PTK_GROUP entering state IDLE
1255718282.647676: unknown vendor specific information element ignored (vendor OUI 00:10:18 len=9)
1255718282.647718: STA 04:1e:64:28:6e:e8 sent probe request for broadcast SSID
1255718282.656881: MGMT (TX callback) fail
1255718282.656886: mgmt::proberesp cb
1255718282.689270: unknown vendor specific information element ignored (vendor OUI 00:10:18 len=9)
1255718282.689290: STA 04:1e:64:28:6e:e8 sent probe request for broadcast SSID
1255718282.699478: MGMT (TX callback) ACK
1255718282.699483: mgmt::proberesp cb
1255718282.707754: unknown vendor specific information element ignored (vendor OUI 00:10:18 len=9)
1255718282.707782: STA 04:1e:64:28:6e:e8 sent probe request for broadcast SSID
1255718282.721864: MGMT (TX callback) fail
1255718282.721868: mgmt::proberesp cb
1255718290.622949: STA 00:18:de:38:a2:48 sent probe request for broadcast SSID
1255718290.632630: MGMT (TX callback) fail
1255718290.632635: mgmt::proberesp cb
1255718295.230991: unknown vendor specific information element ignored (vendor OUI 00:10:18 len=9)
1255718295.231038: STA 04:1e:64:28:6e:e8 sent probe request for broadcast SSID
1255718295.232715: MGMT (TX callback) ACK
1255718295.232721: mgmt::proberesp cb
1255718319.406397: unknown vendor specific information element ignored (vendor OUI 00:10:18 len=9)
1255718319.406441: STA 00:21:00:0b:de:7d sent probe request for broadcast SSID
1255718319.421003: MGMT (TX callback) fail
1255718319.421008: mgmt::proberesp cb
1255718329.898488: unknown vendor specific information element ignored (vendor OUI 00:03:47 len=7)
1255718329.898529: STA 00:1f:3c:c3:c4:22 sent probe request for broadcast SSID
1255718329.912168: MGMT (TX callback) fail
1255718329.912172: mgmt::proberesp cb
1255718356.190102: STA 00:18:de:38:a2:48 sent probe request for broadcast SSID
1255718356.193219: MGMT (TX callback) ACK
1255718356.193225: mgmt::proberesp cb
1255718363.068709: unknown vendor specific information element ignored (vendor OUI 00:10:18 len=9)
1255718363.068751: STA 00:16:ce:29:88:30 sent probe request for broadcast SSID
1255718363.073412: MGMT (TX callback) ACK
1255718363.073417: mgmt::proberesp cb
1255718363.079184: unknown vendor specific information element ignored (vendor OUI 00:10:18 len=9)
1255718363.079203: STA 00:16:ce:29:88:30 sent probe request for broadcast SSID
1255718363.080769: MGMT (TX callback) ACK
1255718363.080773: mgmt::proberesp cb
1255718378.686695: Signal 2 received - terminating
1255718378.686719: wlan0: STA 00:26:b6:11:62:20 MLME: MLME-DEAUTHENTICATE.indication(00:26:b6:11:62:20, 1)
1255718378.686726: wlan0: STA 00:26:b6:11:62:20 MLME: MLME-DELETEKEYS.request(00:26:b6:11:62:20)
1255718378.686793: Removing station 00:26:b6:11:62:20
1255718378.686825: Flushing old station entries
1255718378.686841: Deauthenticate all stations

^ permalink raw reply

* Re: BUG: endianness issues with libertas if_spi.c
From: Andrey Yurovsky @ 2009-10-16 19:08 UTC (permalink / raw)
  To: Holger Schurig; +Cc: linux-wireless
In-Reply-To: <200910161741.19731.hs4233@mail.mn-solutions.de>

Hi Holger.  Thanks for checking these and for all your recent work
with Libertas!

On Fri, Oct 16, 2009 at 8:41 AM, Holger Schurig
<hs4233@mail.mn-solutions.de> wrote:
> Andrey, can you fix this?  I don't have SPI hardware and wouldn't
> be able to check the functionality after the fixes. However, some
> things are obvious, e.g.
>
>
> u16 reg_out = cpu_to_le16(reg | IF_SPI_WRITE_OPERATION_MASK);
>
> should either be
>
>  reg_out = reg | IF_SPI_WRITE_OPERATION_MASK;
>
> or
>
>  __le16 reg_out = cpu_to_le16(reg | IF_SPI_WRITE_OPERATION_MASK);

It used to be as per your first suggestion but Sebastian changed it to
the current version in commit f488b72d (he was using a PowerPC-based
SoC and was thus on a BE architecture vs. our LE systems, so it was a
good catch).  Changing it to be a __le16 sounds reasonable.  Are you
in a position to go ahead and make these changes and have me quickly
test your patch (on LE hardware though, unless Sebastian can chime in
and help us)?  I have time to apply and test a patch but unfortunately
I don't have time to nail down all of the sparse warnings you posted
this week.

> Here's a run with sparse:
>
> $ make -C /usr/src/linux-wl/ modules SUBDIRS=drivers/net/wireless/libertas C=2 CF=-D__CHECK_ENDIAN__
> drivers/net/wireless/libertas/if_spi.c:137:16: warning: incorrect type in initializer (different base types)
> drivers/net/wireless/libertas/if_spi.c:137:16:    expected unsigned short [unsigned] [usertype] reg_out
> drivers/net/wireless/libertas/if_spi.c:137:16:    got restricted __le16 [usertype] <noident>
> drivers/net/wireless/libertas/if_spi.c:191:16: warning: incorrect type in initializer (different base types)
> drivers/net/wireless/libertas/if_spi.c:191:16:    expected unsigned short [unsigned] [usertype] reg_out
> drivers/net/wireless/libertas/if_spi.c:191:16:    got restricted __le16 [usertype] <noident>
> drivers/net/wireless/libertas/if_spi.c:256:24: warning: incorrect type in argument 1 (different base types)
> drivers/net/wireless/libertas/if_spi.c:256:24:    expected restricted __le32 const [usertype] *p
> drivers/net/wireless/libertas/if_spi.c:256:24:    got unsigned int *<noident>
> drivers/net/wireless/libertas/if_spi.c:243:24: warning: incorrect type in argument 1 (different base types)
> drivers/net/wireless/libertas/if_spi.c:243:24:    expected restricted __le16 const [usertype] *p
> drivers/net/wireless/libertas/if_spi.c:243:24:    got unsigned short *<noident>
> drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
> drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
> drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
> drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
> drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
> drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
> drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
> drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
> drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
> drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
> drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
> drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
> drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
> drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
> drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
> drivers/net/wireless/libertas/if_spi.c:243:24: warning: incorrect type in argument 1 (different base types)
> drivers/net/wireless/libertas/if_spi.c:243:24:    expected restricted __le16 const [usertype] *p
> drivers/net/wireless/libertas/if_spi.c:243:24:    got unsigned short *<noident>
> drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
> drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
> drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
> drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
> drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
> drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
> drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
> drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
> drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
> drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
> drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
> drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
> drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
> drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
> drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
> drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
> drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
> drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
> drivers/net/wireless/libertas/if_spi.c:243:24: warning: incorrect type in argument 1 (different base types)
> drivers/net/wireless/libertas/if_spi.c:243:24:    expected restricted __le16 const [usertype] *p
> drivers/net/wireless/libertas/if_spi.c:243:24:    got unsigned short *<noident>
> drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
> drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
> drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
> drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
> drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
> drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
> drivers/net/wireless/libertas/if_spi.c:243:24: warning: incorrect type in argument 1 (different base types)
> drivers/net/wireless/libertas/if_spi.c:243:24:    expected restricted __le16 const [usertype] *p
> drivers/net/wireless/libertas/if_spi.c:243:24:    got unsigned short *<noident>
> drivers/net/wireless/libertas/if_spi.c:243:24: warning: incorrect type in argument 1 (different base types)
> drivers/net/wireless/libertas/if_spi.c:243:24:    expected restricted __le16 const [usertype] *p
> drivers/net/wireless/libertas/if_spi.c:243:24:    got unsigned short *<noident>
> drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
> drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
> drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
> drivers/net/wireless/libertas/if_spi.c:171:7: warning: incorrect type in assignment (different base types)
> drivers/net/wireless/libertas/if_spi.c:171:7:    expected unsigned short [unsigned] [usertype] buff
> drivers/net/wireless/libertas/if_spi.c:171:7:    got restricted __le16 [usertype] <noident>
> drivers/net/wireless/libertas/if_spi.c:243:24: warning: incorrect type in argument 1 (different base types)
> drivers/net/wireless/libertas/if_spi.c:243:24:    expected restricted __le16 const [usertype] *p
> drivers/net/wireless/libertas/if_spi.c:243:24:    got unsigned short *<noident>
> --
> http://www.holgerschurig.de
>

^ permalink raw reply

* Re: [PATCH 03/16] iwmc3200wifi: WPS support
From: Marcel Holtmann @ 2009-10-16 20:25 UTC (permalink / raw)
  To: John W. Linville; +Cc: Zhu Yi, linux-wireless, Samuel Ortiz
In-Reply-To: <20091016181930.GB6438@tuxdriver.com>

Hi John,

> > > From: Samuel Ortiz <sameo@linux.intel.com>
> > > 
> > > By setting the WSC profile flag, we now support WPS as an enrollee.
> > > 
> > > Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
> > > Signed-off-by: Zhu Yi <yi.zhu@intel.com>
> > > ---
> > >  drivers/net/wireless/iwmc3200wifi/cfg80211.c |    7 +++++++
> > >  drivers/net/wireless/iwmc3200wifi/commands.h |    3 +++
> > >  2 files changed, 10 insertions(+), 0 deletions(-)
> > > 
> > > diff --git a/drivers/net/wireless/iwmc3200wifi/cfg80211.c b/drivers/net/wireless/iwmc3200wifi/cfg80211.c
> > > index 0d2e719..a6d2f20 100644
> > > --- a/drivers/net/wireless/iwmc3200wifi/cfg80211.c
> > > +++ b/drivers/net/wireless/iwmc3200wifi/cfg80211.c
> > > @@ -628,6 +628,13 @@ static int iwm_cfg80211_connect(struct wiphy *wiphy, struct net_device *dev,
> > >  		iwm->default_key = sme->key_idx;
> > >  	}
> > >  
> > > +	/* WPA and open AUTH type from wpa_s means WPS (a.k.a. WSC) */
> > > +	if ((iwm->umac_profile->sec.flags &
> > > +	     (UMAC_SEC_FLG_WPA_ON_MSK | UMAC_SEC_FLG_RSNA_ON_MSK)) &&
> > > +	    iwm->umac_profile->sec.auth_type == UMAC_AUTH_TYPE_OPEN) {
> > > +			iwm->umac_profile->sec.flags = UMAC_SEC_FLG_WSC_ON_MSK;
> > > +	}
> > > +
> > 
> > I don't wanna be picky, but what coding style are you following here?
> > The indentation makes no sense and doesn't improve readability.
> 
> Given the length and complication of the conditions, the indentation
> seems fine to me.  How would you do it?

it is double indentation of iwm->umac_profile... and (UMAC... and
iwm->uwm_profile are not even on the same vertical. If I stare long
enough at it, I can see a certain reasoning for it, but it is an ugly
block. Some extra macros might make this more readable. However if you
are fine with it, then that is good enough. I just mentioned it, because
I read the if clause wrongly when reviewing the patches.

Regards

Marcel



^ permalink raw reply

* Re: [Regression] - 2.6.32-rc5 hangs using rfkill on an eeePC
From: Frans Pop @ 2009-10-16 20:46 UTC (permalink / raw)
  To: Fabio Comolli; +Cc: linux-kernel, rjw, Darren Salt, linux-wireless
In-Reply-To: <b637ec0b0910161253y60eb6b4fl3e49e5b9129d81ac@mail.gmail.com>

Fabio Comolli wrote:
> Pressing rfkill button on my eeePC 900 to disable wireless hangs the
> system.
> 
> In console I can see (warning: what follows is copied by hand):
> 
> acpid: client 148[6:100] has disconnected
> ACPI group/action not found: hotkey / ATKD
> unregister netdevice: waiting for wlan0 to become free; usage count=1
> (last line repeats forever). Hard reset is needed.
>
> With any previous kernel version (I'm running -rc4 right now) everything
> works:
>
> ACPI group/action undefined: hotkey / ATKD
> ath5k 0000:01:00.0: PCI INT A disabled

AFAICT there are only two commits since -rc4 that are likely candidates:

commit b56ab33d68638e6aafdbfc694025e8354a628f49
Author: Darren Salt <linux@youmustbejoking.demon.co.uk>
Date:   Tue Oct 13 00:13:33 2009 +0200
    eeepc-laptop: Prevent a panic when disabling RT2860 wireless when
		  associated

commit 0af49167b1e5ba154e90d2c454bf4624ee47df80
Author: Darren Salt <linux@youmustbejoking.demon.co.uk>
Date:   Wed Oct 14 02:19:22 2009 +0100
    Staging: rt2860sta: prevent a panic when disabling when associated

They look related and which one is relevant for you probably depends on 
which driver you're using.

Could you try reverting them both to see if that solves the problem?

Cheers,
FJP

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox