Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wirel...
David S. Miller [Fri, 23 Jul 2010 21:03:38 +0000 (14:03 -0700)]
Conflicts:
drivers/net/wireless/iwlwifi/iwl-commands.h

1  2 
drivers/net/wireless/airo.c
drivers/net/wireless/ipw2x00/ipw2100.c
drivers/net/wireless/iwlwifi/iwl-commands.h
drivers/net/wireless/libertas/host.h
drivers/net/wireless/mwl8k.c
drivers/net/wireless/orinoco/orinoco_usb.c
include/net/cfg80211.h
include/net/mac80211.h
net/mac80211/cfg.c
net/mac80211/ieee80211_i.h

@@@ -506,20 -506,20 +506,20 @@@ struct WepKeyRid 
        u8 mac[ETH_ALEN];
        __le16 klen;
        u8 key[16];
 -} __attribute__ ((packed));
 +} __packed;
  
  /* These structures are from the Aironet's PC4500 Developers Manual */
  typedef struct Ssid Ssid;
  struct Ssid {
        __le16 len;
        u8 ssid[32];
 -} __attribute__ ((packed));
 +} __packed;
  
  typedef struct SsidRid SsidRid;
  struct SsidRid {
        __le16 len;
        Ssid ssids[3];
 -} __attribute__ ((packed));
 +} __packed;
  
  typedef struct ModulationRid ModulationRid;
  struct ModulationRid {
  #define MOD_DEFAULT cpu_to_le16(0)
  #define MOD_CCK cpu_to_le16(1)
  #define MOD_MOK cpu_to_le16(2)
 -} __attribute__ ((packed));
 +} __packed;
  
  typedef struct ConfigRid ConfigRid;
  struct ConfigRid {
  #define MAGIC_STAY_IN_CAM (1<<10)
        u8 magicControl;
        __le16 autoWake;
 -} __attribute__ ((packed));
 +} __packed;
  
  typedef struct StatusRid StatusRid;
  struct StatusRid {
  #define STAT_LEAPFAILED 91
  #define STAT_LEAPTIMEDOUT 92
  #define STAT_LEAPCOMPLETE 93
 -} __attribute__ ((packed));
 +} __packed;
  
  typedef struct StatsRid StatsRid;
  struct StatsRid {
        __le16 len;
        __le16 spacer;
        __le32 vals[100];
 -} __attribute__ ((packed));
 +} __packed;
  
  typedef struct APListRid APListRid;
  struct APListRid {
        __le16 len;
        u8 ap[4][ETH_ALEN];
 -} __attribute__ ((packed));
 +} __packed;
  
  typedef struct CapabilityRid CapabilityRid;
  struct CapabilityRid {
        __le16 bootBlockVer;
        __le16 requiredHard;
        __le16 extSoftCap;
 -} __attribute__ ((packed));
 +} __packed;
  
  /* Only present on firmware >= 5.30.17 */
  typedef struct BSSListRidExtra BSSListRidExtra;
@@@ -762,7 -762,7 +762,7 @@@ struct BSSListRidExtra 
    __le16 unknown[4];
    u8 fixed[12]; /* WLAN management frame */
    u8 iep[624];
 -} __attribute__ ((packed));
 +} __packed;
  
  typedef struct BSSListRid BSSListRid;
  struct BSSListRid {
  
    /* Only present on firmware >= 5.30.17 */
    BSSListRidExtra extra;
 -} __attribute__ ((packed));
 +} __packed;
  
  typedef struct {
    BSSListRid bss;
@@@ -807,13 -807,13 +807,13 @@@ typedef struct tdsRssiEntry tdsRssiEntr
  struct tdsRssiEntry {
    u8 rssipct;
    u8 rssidBm;
 -} __attribute__ ((packed));
 +} __packed;
  
  typedef struct tdsRssiRid tdsRssiRid;
  struct tdsRssiRid {
    u16 len;
    tdsRssiEntry x[256];
 -} __attribute__ ((packed));
 +} __packed;
  
  typedef struct MICRid MICRid;
  struct MICRid {
        u8  multicast[16];
        __le16 unicastValid;
        u8  unicast[16];
 -} __attribute__ ((packed));
 +} __packed;
  
  typedef struct MICBuffer MICBuffer;
  struct MICBuffer {
        } u;
        __be32 mic;
        __be32 seq;
 -} __attribute__ ((packed));
 +} __packed;
  
  typedef struct {
        u8 da[ETH_ALEN];
@@@ -996,7 -996,7 +996,7 @@@ struct rx_hdr 
        u8 rate;
        u8 freq;
        __le16 tmp[4];
 -} __attribute__ ((packed));
 +} __packed;
  
  typedef struct {
        unsigned int  ctl: 15;
@@@ -2931,8 -2931,8 +2931,8 @@@ err_out_res
                release_region( dev->base_addr, 64 );
  err_out_nets:
        airo_networks_free(ai);
-       del_airo_dev(ai);
  err_out_free:
+       del_airo_dev(ai);
        free_netdev(dev);
        return NULL;
  }
@@@ -4657,7 -4657,7 +4657,7 @@@ static ssize_t proc_write( struct file 
                           loff_t *offset )
  {
        loff_t pos = *offset;
-       struct proc_data *priv = (struct proc_data*)file->private_data;
+       struct proc_data *priv = file->private_data;
  
        if (!priv->wbuffer)
                return -EINVAL;
@@@ -4689,7 -4689,7 +4689,7 @@@ static int proc_status_open(struct inod
  
        if ((file->private_data = kzalloc(sizeof(struct proc_data ), GFP_KERNEL)) == NULL)
                return -ENOMEM;
-       data = (struct proc_data *)file->private_data;
+       data = file->private_data;
        if ((data->rbuffer = kmalloc( 2048, GFP_KERNEL )) == NULL) {
                kfree (file->private_data);
                return -ENOMEM;
@@@ -4772,7 -4772,7 +4772,7 @@@ static int proc_stats_rid_open( struct 
  
        if ((file->private_data = kzalloc(sizeof(struct proc_data ), GFP_KERNEL)) == NULL)
                return -ENOMEM;
-       data = (struct proc_data *)file->private_data;
+       data = file->private_data;
        if ((data->rbuffer = kmalloc( 4096, GFP_KERNEL )) == NULL) {
                kfree (file->private_data);
                return -ENOMEM;
@@@ -5045,7 -5045,7 +5045,7 @@@ static int proc_config_open(struct inod
  
        if ((file->private_data = kzalloc(sizeof(struct proc_data ), GFP_KERNEL)) == NULL)
                return -ENOMEM;
-       data = (struct proc_data *)file->private_data;
+       data = file->private_data;
        if ((data->rbuffer = kmalloc( 2048, GFP_KERNEL )) == NULL) {
                kfree (file->private_data);
                return -ENOMEM;
  
  static void proc_SSID_on_close(struct inode *inode, struct file *file)
  {
-       struct proc_data *data = (struct proc_data *)file->private_data;
+       struct proc_data *data = file->private_data;
        struct proc_dir_entry *dp = PDE(inode);
        struct net_device *dev = dp->data;
        struct airo_info *ai = dev->ml_priv;
        enable_MAC(ai, 1);
  }
  
 -static inline u8 hexVal(char c) {
 -      if (c>='0' && c<='9') return c -= '0';
 -      if (c>='a' && c<='f') return c -= 'a'-10;
 -      if (c>='A' && c<='F') return c -= 'A'-10;
 -      return 0;
 -}
 -
  static void proc_APList_on_close( struct inode *inode, struct file *file ) {
-       struct proc_data *data = (struct proc_data *)file->private_data;
+       struct proc_data *data = file->private_data;
        struct proc_dir_entry *dp = PDE(inode);
        struct net_device *dev = dp->data;
        struct airo_info *ai = dev->ml_priv;
                        switch(j%3) {
                        case 0:
                                APList_rid.ap[i][j/3]=
 -                                      hexVal(data->wbuffer[j+i*6*3])<<4;
 +                                      hex_to_bin(data->wbuffer[j+i*6*3])<<4;
                                break;
                        case 1:
                                APList_rid.ap[i][j/3]|=
 -                                      hexVal(data->wbuffer[j+i*6*3]);
 +                                      hex_to_bin(data->wbuffer[j+i*6*3]);
                                break;
                        }
                }
@@@ -5309,7 -5316,7 +5309,7 @@@ static void proc_wepkey_on_close( struc
  
        memset(key, 0, sizeof(key));
  
-       data = (struct proc_data *)file->private_data;
+       data = file->private_data;
        if ( !data->writelen ) return;
  
        if (data->wbuffer[0] >= '0' && data->wbuffer[0] <= '3' &&
        for( i = 0; i < 16*3 && data->wbuffer[i+j]; i++ ) {
                switch(i%3) {
                case 0:
 -                      key[i/3] = hexVal(data->wbuffer[i+j])<<4;
 +                      key[i/3] = hex_to_bin(data->wbuffer[i+j])<<4;
                        break;
                case 1:
 -                      key[i/3] |= hexVal(data->wbuffer[i+j]);
 +                      key[i/3] |= hex_to_bin(data->wbuffer[i+j]);
                        break;
                }
        }
@@@ -5363,7 -5370,7 +5363,7 @@@ static int proc_wepkey_open( struct ino
        if ((file->private_data = kzalloc(sizeof(struct proc_data ), GFP_KERNEL)) == NULL)
                return -ENOMEM;
        memset(&wkr, 0, sizeof(wkr));
-       data = (struct proc_data *)file->private_data;
+       data = file->private_data;
        if ((data->rbuffer = kzalloc( 180, GFP_KERNEL )) == NULL) {
                kfree (file->private_data);
                return -ENOMEM;
@@@ -5409,7 -5416,7 +5409,7 @@@ static int proc_SSID_open(struct inode 
  
        if ((file->private_data = kzalloc(sizeof(struct proc_data ), GFP_KERNEL)) == NULL)
                return -ENOMEM;
-       data = (struct proc_data *)file->private_data;
+       data = file->private_data;
        if ((data->rbuffer = kmalloc( 104, GFP_KERNEL )) == NULL) {
                kfree (file->private_data);
                return -ENOMEM;
@@@ -5453,7 -5460,7 +5453,7 @@@ static int proc_APList_open( struct ino
  
        if ((file->private_data = kzalloc(sizeof(struct proc_data ), GFP_KERNEL)) == NULL)
                return -ENOMEM;
-       data = (struct proc_data *)file->private_data;
+       data = file->private_data;
        if ((data->rbuffer = kmalloc( 104, GFP_KERNEL )) == NULL) {
                kfree (file->private_data);
                return -ENOMEM;
@@@ -5495,7 -5502,7 +5495,7 @@@ static int proc_BSSList_open( struct in
  
        if ((file->private_data = kzalloc(sizeof(struct proc_data ), GFP_KERNEL)) == NULL)
                return -ENOMEM;
-       data = (struct proc_data *)file->private_data;
+       data = file->private_data;
        if ((data->rbuffer = kmalloc( 1024, GFP_KERNEL )) == NULL) {
                kfree (file->private_data);
                return -ENOMEM;
@@@ -174,7 -174,7 +174,7 @@@ that only one external action is invoke
  #define DRV_DESCRIPTION       "Intel(R) PRO/Wireless 2100 Network Driver"
  #define DRV_COPYRIGHT "Copyright(c) 2003-2006 Intel Corporation"
  
- struct pm_qos_request_list *ipw2100_pm_qos_req;
+ static struct pm_qos_request_list *ipw2100_pm_qos_req;
  
  /* Debugging stuff */
  #ifdef CONFIG_IPW2100_DEBUG
@@@ -5229,7 -5229,7 +5229,7 @@@ struct security_info_params 
        u8 auth_mode;
        u8 replay_counters_number;
        u8 unicast_using_group;
 -} __attribute__ ((packed));
 +} __packed;
  
  static int ipw2100_set_security_information(struct ipw2100_priv *priv,
                                            int auth_mode,
@@@ -8471,7 -8471,7 +8471,7 @@@ struct ipw2100_fw_header 
        short mode;
        unsigned int fw_size;
        unsigned int uc_size;
 -} __attribute__ ((packed));
 +} __packed;
  
  static int ipw2100_mod_firmware_load(struct ipw2100_fw *fw)
  {
@@@ -228,7 -228,7 +228,7 @@@ struct iwl_cmd_header 
  
        /* command or response/notification data follows immediately */
        u8 data[0];
 -} __attribute__ ((packed));
 +} __packed;
  
  
  /**
  struct iwl3945_tx_power {
        u8 tx_gain;             /* gain for analog radio */
        u8 dsp_atten;           /* gain for DSP */
 -} __attribute__ ((packed));
 +} __packed;
  
  /**
   * struct iwl3945_power_per_rate
@@@ -259,7 -259,7 +259,7 @@@ struct iwl3945_power_per_rate 
        u8 rate;                /* plcp */
        struct iwl3945_tx_power tpc;
        u8 reserved;
 -} __attribute__ ((packed));
 +} __packed;
  
  /**
   * iwlagn rate_n_flags bit fields
@@@ -390,7 -390,7 +390,7 @@@ union iwl4965_tx_power_dual_stream 
   */
  struct tx_power_dual_stream {
        __le32 dw;
 -} __attribute__ ((packed));
 +} __packed;
  
  /**
   * struct iwl4965_tx_power_db
   */
  struct iwl4965_tx_power_db {
        struct tx_power_dual_stream power_tbl[POWER_TABLE_NUM_ENTRIES];
 -} __attribute__ ((packed));
 +} __packed;
  
  /**
   * Command REPLY_TX_POWER_DBM_CMD = 0x98
@@@ -413,7 -413,7 +413,7 @@@ struct iwl5000_tx_power_dbm_cmd 
        u8 flags;
        s8 srv_chan_lmt; /*in half-dBm (e.g. 30 = 15 dBm) */
        u8 reserved;
 -} __attribute__ ((packed));
 +} __packed;
  
  /**
   * Command TX_ANT_CONFIGURATION_CMD = 0x98
   */
  struct iwl_tx_ant_config_cmd {
        __le32 valid;
 -} __attribute__ ((packed));
 +} __packed;
  
  /******************************************************************************
   * (0a)
@@@ -479,7 -479,7 +479,7 @@@ struct iwl_init_alive_resp 
        __le32 therm_r4[2];     /* signed */
        __le32 tx_atten[5][2];  /* signed MIMO gain comp, 5 freq groups,
                                 * 2 Tx chains */
 -} __attribute__ ((packed));
 +} __packed;
  
  
  /**
@@@ -571,7 -571,7 +571,7 @@@ struct iwl_alive_resp 
        __le32 error_event_table_ptr;   /* SRAM address for error log */
        __le32 timestamp;
        __le32 is_valid;
 -} __attribute__ ((packed));
 +} __packed;
  
  /*
   * REPLY_ERROR = 0x2 (response only, not a command)
@@@ -583,7 -583,7 +583,7 @@@ struct iwl_error_resp 
        __le16 bad_cmd_seq_num;
        __le32 error_info;
        __le64 timestamp;
 -} __attribute__ ((packed));
 +} __packed;
  
  /******************************************************************************
   * (1)
@@@ -719,7 -719,7 +719,7 @@@ struct iwl3945_rxon_cmd 
        __le32 filter_flags;
        __le16 channel;
        __le16 reserved5;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct iwl4965_rxon_cmd {
        u8 node_addr[6];
        __le16 channel;
        u8 ofdm_ht_single_stream_basic_rates;
        u8 ofdm_ht_dual_stream_basic_rates;
 -} __attribute__ ((packed));
 +} __packed;
  
  /* 5000 HW just extend this command */
  struct iwl_rxon_cmd {
        u8 reserved5;
        __le16 acquisition_data;
        __le16 reserved6;
 -} __attribute__ ((packed));
 +} __packed;
  
  /*
   * REPLY_RXON_ASSOC = 0x11 (command, has simple generic response)
@@@ -775,7 -775,7 +775,7 @@@ struct iwl3945_rxon_assoc_cmd 
        u8 ofdm_basic_rates;
        u8 cck_basic_rates;
        __le16 reserved;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct iwl4965_rxon_assoc_cmd {
        __le32 flags;
        u8 ofdm_ht_dual_stream_basic_rates;
        __le16 rx_chain_select_flags;
        __le16 reserved;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct iwl5000_rxon_assoc_cmd {
        __le32 flags;
        __le16 rx_chain_select_flags;
        __le16 acquisition_data;
        __le32 reserved3;
 -} __attribute__ ((packed));
 +} __packed;
  
  #define IWL_CONN_MAX_LISTEN_INTERVAL  10
  #define IWL_MAX_UCODE_BEACON_INTERVAL 4 /* 4096 */
@@@ -817,7 -817,7 +817,7 @@@ struct iwl_rxon_time_cmd 
        __le32 beacon_init_val;
        __le16 listen_interval;
        __le16 reserved;
 -} __attribute__ ((packed));
 +} __packed;
  
  /*
   * REPLY_CHANNEL_SWITCH = 0x72 (command, has simple generic response)
@@@ -830,7 -830,7 +830,7 @@@ struct iwl3945_channel_switch_cmd 
        __le32 rxon_filter_flags;
        __le32 switch_time;
        struct iwl3945_power_per_rate power[IWL_MAX_RATES];
 -} __attribute__ ((packed));
 +} __packed;
  
  struct iwl4965_channel_switch_cmd {
        u8 band;
        __le32 rxon_filter_flags;
        __le32 switch_time;
        struct iwl4965_tx_power_db tx_power;
 -} __attribute__ ((packed));
 +} __packed;
  
  /**
   * struct iwl5000_channel_switch_cmd
@@@ -861,7 -861,7 +861,7 @@@ struct iwl5000_channel_switch_cmd 
        __le32 rxon_filter_flags;
        __le32 switch_time;
        __le32 reserved[2][IWL_PWR_NUM_HT_OFDM_ENTRIES + IWL_PWR_CCK_ENTRIES];
 -} __attribute__ ((packed));
 +} __packed;
  
  /**
   * struct iwl6000_channel_switch_cmd
@@@ -882,7 -882,7 +882,7 @@@ struct iwl6000_channel_switch_cmd 
        __le32 rxon_filter_flags;
        __le32 switch_time;
        __le32 reserved[3][IWL_PWR_NUM_HT_OFDM_ENTRIES + IWL_PWR_CCK_ENTRIES];
 -} __attribute__ ((packed));
 +} __packed;
  
  /*
   * CHANNEL_SWITCH_NOTIFICATION = 0x73 (notification only, not a command)
@@@ -891,7 -891,7 +891,7 @@@ struct iwl_csa_notification 
        __le16 band;
        __le16 channel;
        __le32 status;          /* 0 - OK, 1 - fail */
 -} __attribute__ ((packed));
 +} __packed;
  
  /******************************************************************************
   * (2)
@@@ -921,7 -921,7 +921,7 @@@ struct iwl_ac_qos 
        u8 aifsn;
        u8 reserved1;
        __le16 edca_txop;
 -} __attribute__ ((packed));
 +} __packed;
  
  /* QoS flags defines */
  #define QOS_PARAM_FLG_UPDATE_EDCA_MSK cpu_to_le32(0x01)
  struct iwl_qosparam_cmd {
        __le32 qos_flags;
        struct iwl_ac_qos ac[AC_NUM];
 -} __attribute__ ((packed));
 +} __packed;
  
  /******************************************************************************
   * (3)
@@@ -1015,7 -1015,7 +1015,7 @@@ struct iwl4965_keyinfo 
        u8 key_offset;
        u8 reserved2;
        u8 key[16];             /* 16-byte unicast decryption key */
 -} __attribute__ ((packed));
 +} __packed;
  
  /* 5000 */
  struct iwl_keyinfo {
        __le64 tx_secur_seq_cnt;
        __le64 hw_tkip_mic_rx_key;
        __le64 hw_tkip_mic_tx_key;
 -} __attribute__ ((packed));
 +} __packed;
  
  /**
   * struct sta_id_modify
@@@ -1049,7 -1049,7 +1049,7 @@@ struct sta_id_modify 
        u8 sta_id;
        u8 modify_mask;
        __le16 reserved2;
 -} __attribute__ ((packed));
 +} __packed;
  
  /*
   * REPLY_ADD_STA = 0x18 (command)
@@@ -1103,7 -1103,7 +1103,7 @@@ struct iwl3945_addsta_cmd 
        /* Starting Sequence Number for added block-ack support.
         * Set modify_mask bit STA_MODIFY_ADDBA_TID_MSK to use this field. */
        __le16 add_immediate_ba_ssn;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct iwl4965_addsta_cmd {
        u8 mode;                /* 1: modify existing, 0: add new station */
        __le16 sleep_tx_count;
  
        __le16 reserved2;
 -} __attribute__ ((packed));
 +} __packed;
  
  /* 5000 */
  struct iwl_addsta_cmd {
        __le16 sleep_tx_count;
  
        __le16 reserved2;
 -} __attribute__ ((packed));
 +} __packed;
  
  
  #define ADD_STA_SUCCESS_MSK           0x1
   */
  struct iwl_add_sta_resp {
        u8 status;      /* ADD_STA_* */
 -} __attribute__ ((packed));
 +} __packed;
  
  #define REM_STA_SUCCESS_MSK              0x1
  /*
   */
  struct iwl_rem_sta_resp {
        u8 status;
 -} __attribute__ ((packed));
 +} __packed;
  
  /*
   *  REPLY_REM_STA = 0x19 (command)
@@@ -1208,7 -1208,7 +1208,7 @@@ struct iwl_rem_sta_cmd 
        u8 reserved[3];
        u8 addr[ETH_ALEN]; /* MAC addr of the first station */
        u8 reserved2[2];
 -} __attribute__ ((packed));
 +} __packed;
  
  #define IWL_TX_FIFO_BK_MSK            cpu_to_le32(BIT(0))
  #define IWL_TX_FIFO_BE_MSK            cpu_to_le32(BIT(1))
@@@ -1245,7 -1245,7 +1245,7 @@@ struct iwl_txfifo_flush_cmd 
        __le32 fifo_control;
        __le16 flush_control;
        __le16 reserved;
- } __attribute__ ((packed));
+ } __packed;
  
  /*
   * REPLY_WEP_KEY = 0x20
@@@ -1257,7 -1257,7 +1257,7 @@@ struct iwl_wep_key 
        u8 key_size;
        u8 reserved2[3];
        u8 key[16];
 -} __attribute__ ((packed));
 +} __packed;
  
  struct iwl_wep_cmd {
        u8 num_keys;
        u8 flags;
        u8 reserved;
        struct iwl_wep_key key[0];
 -} __attribute__ ((packed));
 +} __packed;
  
  #define WEP_KEY_WEP_TYPE 1
  #define WEP_KEYS_MAX 4
@@@ -1319,7 -1319,7 +1319,7 @@@ struct iwl3945_rx_frame_stats 
        __le16 sig_avg;
        __le16 noise_diff;
        u8 payload[0];
 -} __attribute__ ((packed));
 +} __packed;
  
  struct iwl3945_rx_frame_hdr {
        __le16 channel;
        u8 rate;
        __le16 len;
        u8 payload[0];
 -} __attribute__ ((packed));
 +} __packed;
  
  struct iwl3945_rx_frame_end {
        __le32 status;
        __le64 timestamp;
        __le32 beacon_timestamp;
 -} __attribute__ ((packed));
 +} __packed;
  
  /*
   * REPLY_3945_RX = 0x1b (response only, not a command)
@@@ -1348,7 -1348,7 +1348,7 @@@ struct iwl3945_rx_frame 
        struct iwl3945_rx_frame_stats stats;
        struct iwl3945_rx_frame_hdr hdr;
        struct iwl3945_rx_frame_end end;
 -} __attribute__ ((packed));
 +} __packed;
  
  #define IWL39_RX_FRAME_SIZE   (4 + sizeof(struct iwl3945_rx_frame))
  
@@@ -1364,7 -1364,7 +1364,7 @@@ struct iwl4965_rx_non_cfg_phy 
        __le16 agc_info;        /* agc code 0:6, agc dB 7:13, reserved 14:15 */
        u8 rssi_info[6];        /* we use even entries, 0/2/4 for A/B/C rssi */
        u8 pad[0];
 -} __attribute__ ((packed));
 +} __packed;
  
  
  #define IWL50_RX_RES_PHY_CNT 8
  
  struct iwl5000_non_cfg_phy {
        __le32 non_cfg_phy[IWL50_RX_RES_PHY_CNT];  /* up to 8 phy entries */
 -} __attribute__ ((packed));
 +} __packed;
  
  
  /*
@@@ -1402,12 -1402,12 +1402,12 @@@ struct iwl_rx_phy_res 
        __le32 rate_n_flags;    /* RATE_MCS_* */
        __le16 byte_count;      /* frame's byte-count */
        __le16 reserved3;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct iwl_rx_mpdu_res_start {
        __le16 byte_count;
        __le16 reserved;
 -} __attribute__ ((packed));
 +} __packed;
  
  
  /******************************************************************************
@@@ -1606,7 -1606,7 +1606,7 @@@ struct iwl3945_tx_cmd 
         */
        u8 payload[0];
        struct ieee80211_hdr hdr[0];
 -} __attribute__ ((packed));
 +} __packed;
  
  /*
   * REPLY_TX = 0x1c (response)
@@@ -1618,7 -1618,7 +1618,7 @@@ struct iwl3945_tx_resp 
        u8 rate;
        __le32 wireless_media_time;
        __le32 status;          /* TX status */
 -} __attribute__ ((packed));
 +} __packed;
  
  
  /*
@@@ -1630,7 -1630,7 +1630,7 @@@ struct iwl_dram_scratch 
        u8 try_cnt;             /* Tx attempts */
        u8 bt_kill_cnt;         /* Tx attempts blocked by Bluetooth device */
        __le16 reserved;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct iwl_tx_cmd {
        /*
         */
        u8 payload[0];
        struct ieee80211_hdr hdr[0];
 -} __attribute__ ((packed));
 +} __packed;
  
  /* TX command response is sent after *3945* transmission attempts.
   *
@@@ -1875,7 -1875,7 +1875,7 @@@ enum 
  struct agg_tx_status {
        __le16 status;
        __le16 sequence;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct iwl4965_tx_resp {
        u8 frame_count;         /* 1 no aggregation, >1 aggregation */
                __le32 status;
                struct agg_tx_status agg_status[0]; /* for each agg frame */
        } u;
 -} __attribute__ ((packed));
 +} __packed;
  
  /*
   * definitions for initial rate index field
@@@ -1976,7 -1976,7 +1976,7 @@@ struct iwl5000_tx_resp 
         */
        struct agg_tx_status status;    /* TX status (in aggregation -
                                         * status of 1st frame) */
 -} __attribute__ ((packed));
 +} __packed;
  /*
   * REPLY_COMPRESSED_BA = 0xc5 (response only, not a command)
   *
@@@ -1994,7 -1994,7 +1994,7 @@@ struct iwl_compressed_ba_resp 
        __le64 bitmap;
        __le16 scd_flow;
        __le16 scd_ssn;
 -} __attribute__ ((packed));
 +} __packed;
  
  /*
   * REPLY_TX_PWR_TABLE_CMD = 0x97 (command, has simple generic response)
@@@ -2007,14 -2007,14 +2007,14 @@@ struct iwl3945_txpowertable_cmd 
        u8 reserved;
        __le16 channel;
        struct iwl3945_power_per_rate power[IWL_MAX_RATES];
 -} __attribute__ ((packed));
 +} __packed;
  
  struct iwl4965_txpowertable_cmd {
        u8 band;                /* 0: 5 GHz, 1: 2.4 GHz */
        u8 reserved;
        __le16 channel;
        struct iwl4965_tx_power_db tx_power;
 -} __attribute__ ((packed));
 +} __packed;
  
  
  /**
@@@ -2036,13 -2036,13 +2036,13 @@@ struct iwl3945_rate_scaling_info 
        __le16 rate_n_flags;
        u8 try_cnt;
        u8 next_rate_index;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct iwl3945_rate_scaling_cmd {
        u8 table_id;
        u8 reserved[3];
        struct iwl3945_rate_scaling_info table[IWL_MAX_RATES];
 -} __attribute__ ((packed));
 +} __packed;
  
  
  /*RS_NEW_API: only TLC_RTS remains and moved to bit 0 */
@@@ -2089,7 -2089,7 +2089,7 @@@ struct iwl_link_qual_general_params 
         * TX FIFOs above 3 use same value (typically 0) as TX FIFO 3.
         */
        u8 start_rate_index[LINK_QUAL_AC_NUM];
 -} __attribute__ ((packed));
 +} __packed;
  
  #define LINK_QUAL_AGG_TIME_LIMIT_DEF  (4000) /* 4 milliseconds */
  #define LINK_QUAL_AGG_TIME_LIMIT_MAX  (65535)
@@@ -2130,7 -2130,7 +2130,7 @@@ struct iwl_link_qual_agg_params 
        u8 agg_frame_cnt_limit;
  
        __le32 reserved;
 -} __attribute__ ((packed));
 +} __packed;
  
  /*
   * REPLY_TX_LINK_QUALITY_CMD = 0x4e (command, has simple generic response)
@@@ -2336,7 -2336,7 +2336,7 @@@ struct iwl_link_quality_cmd 
                __le32 rate_n_flags;    /* RATE_MCS_*, IWL_RATE_* */
        } rs_table[LINK_QUAL_MAX_RETRY_NUM];
        __le32 reserved2;
 -} __attribute__ ((packed));
 +} __packed;
  
  /*
   * BT configuration enable flags:
@@@ -2377,7 -2377,7 +2377,7 @@@ struct iwl_bt_cmd 
        u8 reserved;
        __le32 kill_ack_mask;
        __le32 kill_cts_mask;
 -} __attribute__ ((packed));
 +} __packed;
  
  /******************************************************************************
   * (6)
@@@ -2402,7 -2402,7 +2402,7 @@@ struct iwl_measure_channel 
        u8 channel;             /* channel to measure */
        u8 type;                /* see enum iwl_measure_type */
        __le16 reserved;
 -} __attribute__ ((packed));
 +} __packed;
  
  /*
   * REPLY_SPECTRUM_MEASUREMENT_CMD = 0x74 (command)
@@@ -2421,7 -2421,7 +2421,7 @@@ struct iwl_spectrum_cmd 
        __le16 channel_count;   /* minimum 1, maximum 10 */
        __le16 reserved3;
        struct iwl_measure_channel channels[10];
 -} __attribute__ ((packed));
 +} __packed;
  
  /*
   * REPLY_SPECTRUM_MEASUREMENT_CMD = 0x74 (response)
@@@ -2432,7 -2432,7 +2432,7 @@@ struct iwl_spectrum_resp 
        __le16 status;          /* 0 - command will be handled
                                 * 1 - cannot handle (conflicts with another
                                 *     measurement) */
 -} __attribute__ ((packed));
 +} __packed;
  
  enum iwl_measurement_state {
        IWL_MEASUREMENT_START = 0,
@@@ -2455,13 -2455,13 +2455,13 @@@ enum iwl_measurement_status 
  struct iwl_measurement_histogram {
        __le32 ofdm[NUM_ELEMENTS_IN_HISTOGRAM]; /* in 0.8usec counts */
        __le32 cck[NUM_ELEMENTS_IN_HISTOGRAM];  /* in 1usec counts */
 -} __attribute__ ((packed));
 +} __packed;
  
  /* clear channel availability counters */
  struct iwl_measurement_cca_counters {
        __le32 ofdm;
        __le32 cck;
 -} __attribute__ ((packed));
 +} __packed;
  
  enum iwl_measure_type {
        IWL_MEASURE_BASIC = (1 << 0),
@@@ -2497,7 -2497,7 +2497,7 @@@ struct iwl_spectrum_notification 
        struct iwl_measurement_histogram histogram;
        __le32 stop_time;       /* lower 32-bits of TSF */
        __le32 status;          /* see iwl_measurement_status */
 -} __attribute__ ((packed));
 +} __packed;
  
  /******************************************************************************
   * (7)
@@@ -2553,7 -2553,7 +2553,7 @@@ struct iwl3945_powertable_cmd 
        __le32 rx_data_timeout;
        __le32 tx_data_timeout;
        __le32 sleep_interval[IWL_POWER_VEC_SIZE];
 -} __attribute__ ((packed));
 +} __packed;
  
  struct iwl_powertable_cmd {
        __le16 flags;
        __le32 tx_data_timeout;
        __le32 sleep_interval[IWL_POWER_VEC_SIZE];
        __le32 keep_alive_beacons;
 -} __attribute__ ((packed));
 +} __packed;
  
  /*
   * PM_SLEEP_NOTIFICATION = 0x7A (notification only, not a command)
@@@ -2576,7 -2576,7 +2576,7 @@@ struct iwl_sleep_notification 
        __le32 sleep_time;
        __le32 tsf_low;
        __le32 bcon_timer;
 -} __attribute__ ((packed));
 +} __packed;
  
  /* Sleep states.  3945 and 4965 identical. */
  enum {
  #define CARD_STATE_CMD_HALT    0x02   /* Power down permanently */
  struct iwl_card_state_cmd {
        __le32 status;          /* CARD_STATE_CMD_* request new power state */
 -} __attribute__ ((packed));
 +} __packed;
  
  /*
   * CARD_STATE_NOTIFICATION = 0xa1 (notification only, not a command)
   */
  struct iwl_card_state_notif {
        __le32 flags;
 -} __attribute__ ((packed));
 +} __packed;
  
  #define HW_CARD_DISABLED   0x01
  #define SW_CARD_DISABLED   0x02
@@@ -2619,14 -2619,14 +2619,14 @@@ struct iwl_ct_kill_config 
        __le32   reserved;
        __le32   critical_temperature_M;
        __le32   critical_temperature_R;
 -}  __attribute__ ((packed));
 +}  __packed;
  
  /* 1000, and 6x00 */
  struct iwl_ct_kill_throttling_config {
        __le32   critical_temperature_exit;
        __le32   reserved;
        __le32   critical_temperature_enter;
 -}  __attribute__ ((packed));
 +}  __packed;
  
  /******************************************************************************
   * (8)
@@@ -2671,7 -2671,7 +2671,7 @@@ struct iwl3945_scan_channel 
        struct iwl3945_tx_power tpc;
        __le16 active_dwell;    /* in 1024-uSec TU (time units), typ 5-50 */
        __le16 passive_dwell;   /* in 1024-uSec TU (time units), typ 20-500 */
 -} __attribute__ ((packed));
 +} __packed;
  
  /* set number of direct probes u8 type */
  #define IWL39_SCAN_PROBE_MASK(n) ((BIT(n) | (BIT(n) - BIT(1))))
@@@ -2690,7 -2690,7 +2690,7 @@@ struct iwl_scan_channel 
        u8 dsp_atten;           /* gain for DSP */
        __le16 active_dwell;    /* in 1024-uSec TU (time units), typ 5-50 */
        __le16 passive_dwell;   /* in 1024-uSec TU (time units), typ 20-500 */
 -} __attribute__ ((packed));
 +} __packed;
  
  /* set number of direct probes __le32 type */
  #define IWL_SCAN_PROBE_MASK(n)        cpu_to_le32((BIT(n) | (BIT(n) - BIT(1))))
@@@ -2707,7 -2707,7 +2707,7 @@@ struct iwl_ssid_ie 
        u8 id;
        u8 len;
        u8 ssid[32];
 -} __attribute__ ((packed));
 +} __packed;
  
  #define PROBE_OPTION_MAX_3945         4
  #define PROBE_OPTION_MAX              20
@@@ -2813,7 -2813,7 +2813,7 @@@ struct iwl3945_scan_cmd 
         * before requesting another scan.
         */
        u8 data[0];
 -} __attribute__ ((packed));
 +} __packed;
  
  struct iwl_scan_cmd {
        __le16 len;
         * before requesting another scan.
         */
        u8 data[0];
 -} __attribute__ ((packed));
 +} __packed;
  
  /* Can abort will notify by complete notification with abort status. */
  #define CAN_ABORT_STATUS      cpu_to_le32(0x1)
   */
  struct iwl_scanreq_notification {
        __le32 status;          /* 1: okay, 2: cannot fulfill request */
 -} __attribute__ ((packed));
 +} __packed;
  
  /*
   * SCAN_START_NOTIFICATION = 0x82 (notification only, not a command)
@@@ -2882,7 -2882,7 +2882,7 @@@ struct iwl_scanstart_notification 
        u8 band;
        u8 reserved[2];
        __le32 status;
 -} __attribute__ ((packed));
 +} __packed;
  
  #define  SCAN_OWNER_STATUS 0x1;
  #define  MEASURE_OWNER_STATUS 0x2;
@@@ -2898,7 -2898,7 +2898,7 @@@ struct iwl_scanresults_notification 
        __le32 tsf_low;
        __le32 tsf_high;
        __le32 statistics[NUMBER_OF_STATISTICS];
 -} __attribute__ ((packed));
 +} __packed;
  
  /*
   * SCAN_COMPLETE_NOTIFICATION = 0x84 (notification only, not a command)
@@@ -2910,7 -2910,7 +2910,7 @@@ struct iwl_scancomplete_notification 
        u8 last_channel;
        __le32 tsf_low;
        __le32 tsf_high;
 -} __attribute__ ((packed));
 +} __packed;
  
  
  /******************************************************************************
@@@ -2928,14 -2928,14 +2928,14 @@@ struct iwl3945_beacon_notif 
        __le32 low_tsf;
        __le32 high_tsf;
        __le32 ibss_mgr_status;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct iwl4965_beacon_notif {
        struct iwl4965_tx_resp beacon_notify_hdr;
        __le32 low_tsf;
        __le32 high_tsf;
        __le32 ibss_mgr_status;
 -} __attribute__ ((packed));
 +} __packed;
  
  /*
   * REPLY_TX_BEACON = 0x91 (command, has simple generic response)
@@@ -2947,7 -2947,7 +2947,7 @@@ struct iwl3945_tx_beacon_cmd 
        u8 tim_size;
        u8 reserved1;
        struct ieee80211_hdr frame[0];  /* beacon frame */
 -} __attribute__ ((packed));
 +} __packed;
  
  struct iwl_tx_beacon_cmd {
        struct iwl_tx_cmd tx;
        u8 tim_size;
        u8 reserved1;
        struct ieee80211_hdr frame[0];  /* beacon frame */
 -} __attribute__ ((packed));
 +} __packed;
  
  /******************************************************************************
   * (10)
@@@ -2981,7 -2981,7 +2981,7 @@@ struct rate_histogram 
                __le32 b[SUP_RATE_11B_MAX_NUM_CHANNELS];
                __le32 g[SUP_RATE_11G_MAX_NUM_CHANNELS];
        } failed;
 -} __attribute__ ((packed));
 +} __packed;
  
  /* statistics command response */
  
@@@ -3001,7 -3001,7 +3001,7 @@@ struct iwl39_statistics_rx_phy 
        __le32 rxe_frame_limit_overrun;
        __le32 sent_ack_cnt;
        __le32 sent_cts_cnt;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct iwl39_statistics_rx_non_phy {
        __le32 bogus_cts;       /* CTS received when not expecting CTS */
                                 * filtering process */
        __le32 non_channel_beacons;     /* beacons with our bss id but not on
                                         * our serving channel */
 -} __attribute__ ((packed));
 +} __packed;
  
  struct iwl39_statistics_rx {
        struct iwl39_statistics_rx_phy ofdm;
        struct iwl39_statistics_rx_phy cck;
        struct iwl39_statistics_rx_non_phy general;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct iwl39_statistics_tx {
        __le32 preamble_cnt;
        __le32 ack_timeout;
        __le32 expected_ack_cnt;
        __le32 actual_ack_cnt;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct statistics_dbg {
        __le32 burst_check;
        __le32 burst_count;
-       __le32 reserved[4];
+       __le32 wait_for_silence_timeout_cnt;
+       __le32 reserved[3];
 -} __attribute__ ((packed));
 +} __packed;
  
  struct iwl39_statistics_div {
        __le32 tx_on_a;
        __le32 tx_on_b;
        __le32 exec_time;
        __le32 probe_time;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct iwl39_statistics_general {
        __le32 temperature;
        __le32 slots_idle;
        __le32 ttl_timestamp;
        struct iwl39_statistics_div div;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct statistics_rx_phy {
        __le32 ina_cnt;
        __le32 mh_format_err;
        __le32 re_acq_main_rssi_sum;
        __le32 reserved3;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct statistics_rx_ht_phy {
        __le32 plcp_err;
        __le32 agg_mpdu_cnt;
        __le32 agg_cnt;
        __le32 unsupport_mcs;
 -} __attribute__ ((packed));
 +} __packed;
  
  #define INTERFERENCE_DATA_AVAILABLE      cpu_to_le32(1)
  
@@@ -3124,14 -3125,14 +3125,14 @@@ struct statistics_rx_non_phy 
        __le32 beacon_energy_a;
        __le32 beacon_energy_b;
        __le32 beacon_energy_c;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct statistics_rx {
        struct statistics_rx_phy ofdm;
        struct statistics_rx_phy cck;
        struct statistics_rx_non_phy general;
        struct statistics_rx_ht_phy ofdm_ht;
 -} __attribute__ ((packed));
 +} __packed;
  
  /**
   * struct statistics_tx_power - current tx power
@@@ -3145,7 -3146,7 +3146,7 @@@ struct statistics_tx_power 
        u8 ant_b;
        u8 ant_c;
        u8 reserved;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct statistics_tx_non_phy_agg {
        __le32 ba_timeout;
        __le32 underrun;
        __le32 bt_prio_kill;
        __le32 rx_ba_rsp_cnt;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct statistics_tx {
        __le32 preamble_cnt;
         */
        struct statistics_tx_power tx_power;
        __le32 reserved1;
 -} __attribute__ ((packed));
 +} __packed;
  
  
  struct statistics_div {
        __le32 probe_time;
        __le32 reserved1;
        __le32 reserved2;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct statistics_general {
        __le32 temperature;   /* radio temperature */
        __le32 num_of_sos_states;
        __le32 reserved2;
        __le32 reserved3;
 -} __attribute__ ((packed));
 +} __packed;
  
  #define UCODE_STATISTICS_CLEAR_MSK            (0x1 << 0)
  #define UCODE_STATISTICS_FREQUENCY_MSK                (0x1 << 1)
  #define IWL_STATS_CONF_DISABLE_NOTIF cpu_to_le32(0x2)/* see above */
  struct iwl_statistics_cmd {
        __le32 configuration_flags;     /* IWL_STATS_CONF_* */
 -} __attribute__ ((packed));
 +} __packed;
  
  /*
   * STATISTICS_NOTIFICATION = 0x9d (notification only, not a command)
@@@ -3263,14 -3264,14 +3264,14 @@@ struct iwl3945_notif_statistics 
        struct iwl39_statistics_rx rx;
        struct iwl39_statistics_tx tx;
        struct iwl39_statistics_general general;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct iwl_notif_statistics {
        __le32 flag;
        struct statistics_rx rx;
        struct statistics_tx tx;
        struct statistics_general general;
 -} __attribute__ ((packed));
 +} __packed;
  
  
  /*
@@@ -3302,7 -3303,7 +3303,7 @@@ struct iwl_missed_beacon_notif 
        __le32 total_missed_becons;
        __le32 num_expected_beacons;
        __le32 num_recvd_beacons;
 -} __attribute__ ((packed));
 +} __packed;
  
  
  /******************************************************************************
  struct iwl_sensitivity_cmd {
        __le16 control;                 /* always use "1" */
        __le16 table[HD_TABLE_SIZE];    /* use HD_* as index */
 -} __attribute__ ((packed));
 +} __packed;
  
  /*
   *
  struct iwl_enhance_sensitivity_cmd {
        __le16 control;                 /* always use "1" */
        __le16 enhance_table[ENHANCE_HD_TABLE_SIZE];    /* use HD_* as index */
- } __attribute__ ((packed));
+ } __packed;
  
  
  /**
@@@ -3628,31 -3629,31 +3629,31 @@@ struct iwl_calib_cfg_elmnt_s 
        __le32 send_res;
        __le32 apply_res;
        __le32 reserved;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct iwl_calib_cfg_status_s {
        struct iwl_calib_cfg_elmnt_s once;
        struct iwl_calib_cfg_elmnt_s perd;
        __le32 flags;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct iwl_calib_cfg_cmd {
        struct iwl_calib_cfg_status_s ucd_calib_cfg;
        struct iwl_calib_cfg_status_s drv_calib_cfg;
        __le32 reserved1;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct iwl_calib_hdr {
        u8 op_code;
        u8 first_group;
        u8 groups_num;
        u8 data_valid;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct iwl_calib_cmd {
        struct iwl_calib_hdr hdr;
        u8 data[0];
 -} __attribute__ ((packed));
 +} __packed;
  
  /* IWL_PHY_CALIBRATE_DIFF_GAIN_CMD (7) */
  struct iwl_calib_diff_gain_cmd {
        s8 diff_gain_b;
        s8 diff_gain_c;
        u8 reserved1;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct iwl_calib_xtal_freq_cmd {
        struct iwl_calib_hdr hdr;
        u8 cap_pin1;
        u8 cap_pin2;
        u8 pad[2];
 -} __attribute__ ((packed));
 +} __packed;
  
  /* IWL_PHY_CALIBRATE_CHAIN_NOISE_RESET_CMD */
  struct iwl_calib_chain_noise_reset_cmd {
@@@ -3682,7 -3683,7 +3683,7 @@@ struct iwl_calib_chain_noise_gain_cmd 
        u8 delta_gain_1;
        u8 delta_gain_2;
        u8 pad[2];
 -} __attribute__ ((packed));
 +} __packed;
  
  /******************************************************************************
   * (12)
@@@ -3705,7 -3706,7 +3706,7 @@@ struct iwl_led_cmd 
        u8 on;                  /* # intervals on while blinking;
                                 * "0", regardless of "off", turns LED off */
        u8 reserved;
 -} __attribute__ ((packed));
 +} __packed;
  
  /*
   * station priority table entries
@@@ -3841,7 -3842,7 +3842,7 @@@ struct iwl_wimax_coex_event_entry 
        u8 win_medium_prio;
        u8 reserved;
        u8 flags;
 -} __attribute__ ((packed));
 +} __packed;
  
  /* COEX flag masks */
  
@@@ -3858,7 -3859,7 +3859,7 @@@ struct iwl_wimax_coex_cmd 
        u8 flags;
        u8 reserved[3];
        struct iwl_wimax_coex_event_entry sta_prio[COEX_NUM_OF_EVENTS];
 -} __attribute__ ((packed));
 +} __packed;
  
  /*
   * Coexistence MEDIUM NOTIFICATION
  struct iwl_coex_medium_notification {
        __le32 status;
        __le32 events;
 -} __attribute__ ((packed));
 +} __packed;
  
  /*
   * Coexistence EVENT  Command
@@@ -3902,11 -3903,11 +3903,11 @@@ struct iwl_coex_event_cmd 
        u8 flags;
        u8 event;
        __le16 reserved;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct iwl_coex_event_resp {
        __le32 status;
 -} __attribute__ ((packed));
 +} __packed;
  
  
  /******************************************************************************
@@@ -3950,7 -3951,7 +3951,7 @@@ struct iwl_rx_packet 
                __le32 status;
                u8 raw[0];
        } u;
 -} __attribute__ ((packed));
 +} __packed;
  
  int iwl_agn_check_rxon_cmd(struct iwl_priv *priv);
  
@@@ -326,7 -326,7 +326,7 @@@ struct txpd 
        u8 pktdelay_2ms;
        /* reserved */
        u8 reserved1;
 -} __attribute__ ((packed));
 +} __packed;
  
  /* RxPD Descriptor */
  struct rxpd {
                        u8 bss_type;
                        /* BSS number */
                        u8 bss_num;
 -              } __attribute__ ((packed)) bss;
 -      } __attribute__ ((packed)) u;
 +              } __packed bss;
 +      } __packed u;
  
        /* SNR */
        u8 snr;
        /* Pkt Priority */
        u8 priority;
        u8 reserved[3];
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_header {
        __le16 command;
        __le16 size;
        __le16 seqnum;
        __le16 result;
 -} __attribute__ ((packed));
 +} __packed;
  
  /* Generic structure to hold all key types. */
  struct enc_key {
  struct lbs_offset_value {
        u32 offset;
        u32 value;
 -} __attribute__ ((packed));
 +} __packed;
  
  #define MRVDRV_MAX_TRIPLET_802_11D              83
  
@@@ -398,12 -398,12 +398,12 @@@ struct mrvl_ie_domain_param_set 
  
        u8 countrycode[COUNTRY_CODE_LEN];
        struct ieee80211_country_ie_triplet triplet[1];
- } __attribute__ ((packed));
+ } __packed;
  
  struct cmd_ds_802_11d_domain_info {
        __le16 action;
        struct mrvl_ie_domain_param_set domain;
- } __attribute__ ((packed));
+ } __packed;
  
  struct lbs_802_11d_domain_reg {
        /** Country code*/
        /** No. of triplet*/
        u8 no_triplet;
        struct ieee80211_country_ie_triplet triplet[MRVDRV_MAX_TRIPLET_802_11D];
- } __attribute__ ((packed));
+ } __packed;
  
  /*
   * Define data structure for CMD_GET_HW_SPEC
@@@ -450,7 -450,7 +450,7 @@@ struct cmd_ds_get_hw_spec 
  
        /*FW/HW capability */
        __le32 fwcapinfo;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_802_11_subscribe_event {
        struct cmd_header hdr;
         * bump this up a bit.
         */
        uint8_t tlv[128];
 -} __attribute__ ((packed));
 +} __packed;
  
  /*
   * This scan handle Country Information IE(802.11d compliant)
@@@ -476,7 -476,7 +476,7 @@@ struct cmd_ds_802_11_scan 
        uint8_t bsstype;
        uint8_t bssid[ETH_ALEN];
        uint8_t tlvbuffer[0];
 -} __attribute__ ((packed));
 +} __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));
 +} __packed;
  
  struct cmd_ds_802_11_get_log {
        struct cmd_header hdr;
        __le32 fcserror;
        __le32 txframe;
        __le32 wepundecryptable;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_mac_control {
        struct cmd_header hdr;
        __le16 action;
        u16 reserved;
 -} __attribute__ ((packed));
 +} __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));
 +} __packed;
  
  struct cmd_ds_802_11_authenticate {
        struct cmd_header hdr;
        u8 bssid[ETH_ALEN];
        u8 authtype;
        u8 reserved[10];
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_802_11_deauthenticate {
        struct cmd_header hdr;
  
        u8 macaddr[ETH_ALEN];
        __le16 reasoncode;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_802_11_associate {
        struct cmd_header hdr;
        __le16 bcnperiod;
        u8 dtimperiod;
        u8 iebuf[512];    /* Enough for required and most optional IEs */
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_802_11_associate_response {
        struct cmd_header hdr;
        __le16 statuscode;
        __le16 aid;
        u8 iebuf[512];
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_802_11_set_wep {
        struct cmd_header hdr;
        /* 40, 128bit or TXWEP */
        uint8_t keytype[4];
        uint8_t keymaterial[4][16];
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_802_11_snmp_mib {
        struct cmd_header hdr;
        __le16 oid;
        __le16 bufsize;
        u8 value[128];
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_mac_reg_access {
        __le16 action;
        __le16 offset;
        __le32 value;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_bbp_reg_access {
        __le16 action;
        __le16 offset;
        u8 value;
        u8 reserved[3];
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_rf_reg_access {
        __le16 action;
        __le16 offset;
        u8 value;
        u8 reserved[3];
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_802_11_radio_control {
        struct cmd_header hdr;
  
        __le16 action;
        __le16 control;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_802_11_beacon_control {
        __le16 action;
        __le16 beacon_enable;
        __le16 beacon_period;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_802_11_sleep_params {
        struct cmd_header hdr;
  
        /* reserved field, should be set to zero */
        __le16 reserved;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_802_11_rf_channel {
        struct cmd_header hdr;
        __le16 rftype;      /* unused */
        __le16 reserved;    /* unused */
        u8 channellist[32]; /* unused */
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_802_11_rssi {
        /* weighting factor */
        __le16 reserved_0;
        __le16 reserved_1;
        __le16 reserved_2;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_802_11_rssi_rsp {
        __le16 SNR;
        __le16 noisefloor;
        __le16 avgSNR;
        __le16 avgnoisefloor;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_802_11_mac_address {
        struct cmd_header hdr;
  
        __le16 action;
        u8 macadd[ETH_ALEN];
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_802_11_rf_tx_power {
        struct cmd_header hdr;
        __le16 curlevel;
        s8 maxlevel;
        s8 minlevel;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_802_11_monitor_mode {
        __le16 action;
        __le16 mode;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_set_boot2_ver {
        struct cmd_header hdr;
  
        __le16 action;
        __le16 version;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_802_11_fw_wake_method {
        struct cmd_header hdr;
  
        __le16 action;
        __le16 method;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_802_11_ps_mode {
        __le16 action;
        __le16 multipledtim;
        __le16 reserved;
        __le16 locallisteninterval;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_confirm_sleep {
        struct cmd_header hdr;
        __le16 multipledtim;
        __le16 reserved;
        __le16 locallisteninterval;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_802_11_data_rate {
        struct cmd_header hdr;
        __le16 action;
        __le16 reserved;
        u8 rates[MAX_RATES];
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_802_11_rate_adapt_rateset {
        struct cmd_header hdr;
        __le16 action;
        __le16 enablehwauto;
        __le16 bitmap;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_802_11_ad_hoc_start {
        struct cmd_header hdr;
        __le16 capability;
        u8 rates[MAX_RATES];
        u8 tlv_memory_size_pad[100];
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_802_11_ad_hoc_result {
        struct cmd_header hdr;
  
        u8 pad[3];
        u8 bssid[ETH_ALEN];
 -} __attribute__ ((packed));
 +} __packed;
  
  struct adhoc_bssdesc {
        u8 bssid[ETH_ALEN];
         * Adhoc join command and will cause a binary layout mismatch with
         * the firmware
         */
 -} __attribute__ ((packed));
 +} __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));
 +} __packed;
  
  struct cmd_ds_802_11_ad_hoc_stop {
        struct cmd_header hdr;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_802_11_enable_rsn {
        struct cmd_header hdr;
  
        __le16 action;
        __le16 enable;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct MrvlIEtype_keyParamSet {
        /* type ID */
  
        /* key material of size keylen */
        u8 key[32];
 -} __attribute__ ((packed));
 +} __packed;
  
  #define MAX_WOL_RULES                 16
  
@@@ -821,7 -821,7 +821,7 @@@ struct host_wol_rule 
        __le16 reserve;
        __be32 sig_mask;
        __be32 signature;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct wol_config {
        uint8_t action;
        uint8_t no_rules_in_cmd;
        uint8_t result;
        struct host_wol_rule rule[MAX_WOL_RULES];
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_host_sleep {
        struct cmd_header hdr;
        uint8_t gpio;
        uint16_t gap;
        struct wol_config wol_conf;
 -} __attribute__ ((packed));
 +} __packed;
  
  
  
@@@ -846,7 -846,7 +846,7 @@@ struct cmd_ds_802_11_key_material 
  
        __le16 action;
        struct MrvlIEtype_keyParamSet keyParamSet[2];
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_802_11_eeprom_access {
        struct cmd_header hdr;
        /* firmware says it returns a maximum of 20 bytes */
  #define LBS_EEPROM_READ_LEN 20
        u8 value[LBS_EEPROM_READ_LEN];
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_802_11_tpc_cfg {
        struct cmd_header hdr;
        int8_t P1;
        int8_t P2;
        uint8_t usesnr;
 -} __attribute__ ((packed));
 +} __packed;
  
  
  struct cmd_ds_802_11_pa_cfg {
        int8_t P0;
        int8_t P1;
        int8_t P2;
 -} __attribute__ ((packed));
 +} __packed;
  
  
  struct cmd_ds_802_11_led_ctrl {
        __le16 action;
        __le16 numled;
        u8 data[256];
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_802_11_afc {
        __le16 afc_auto;
                        __le16 carrier_offset; /* signed */
                };
        };
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_tx_rate_query {
        __le16 txrate;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_get_tsf {
        __le64 tsfvalue;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_bt_access {
        __le16 action;
        __le32 id;
        u8 addr1[ETH_ALEN];
        u8 addr2[ETH_ALEN];
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_fwt_access {
        __le16 action;
        __le32 snr;
        __le32 references;
        u8 prec[ETH_ALEN];
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_mesh_config {
        struct cmd_header hdr;
        __le16 type;
        __le16 length;
        u8 data[128];   /* last position reserved */
 -} __attribute__ ((packed));
 +} __packed;
  
  struct cmd_ds_mesh_access {
        struct cmd_header hdr;
  
        __le16 action;
        __le32 data[32];        /* last position reserved */
 -} __attribute__ ((packed));
 +} __packed;
  
  /* Number of stats counters returned by the firmware */
  #define MESH_STATS_NUM 8
@@@ -984,5 -984,5 +984,5 @@@ struct cmd_ds_command 
                struct cmd_ds_fwt_access fwt;
                struct cmd_ds_802_11_beacon_control bcn_ctrl;
        } params;
 -} __attribute__ ((packed));
 +} __packed;
  #endif
@@@ -314,13 -314,15 +314,15 @@@ static const struct ieee80211_rate mwl8
  #define MWL8K_CMD_SET_NEW_STN         0x1111          /* per-vif */
  #define MWL8K_CMD_UPDATE_STADB                0x1123
  
- static const char *mwl8k_cmd_name(u16 cmd, char *buf, int bufsize)
+ static const char *mwl8k_cmd_name(__le16 cmd, char *buf, int bufsize)
  {
+       u16 command = le16_to_cpu(cmd);
  #define MWL8K_CMDNAME(x)      case MWL8K_CMD_##x: do {\
                                        snprintf(buf, bufsize, "%s", #x);\
                                        return buf;\
                                        } while (0)
-       switch (cmd & ~0x8000) {
+       switch (command & ~0x8000) {
                MWL8K_CMDNAME(CODE_DNLD);
                MWL8K_CMDNAME(GET_HW_SPEC);
                MWL8K_CMDNAME(SET_HW_SPEC);
@@@ -426,7 -428,7 +428,7 @@@ struct mwl8k_cmd_pkt 
        __u8    macid;
        __le16  result;
        char    payload[0];
 -} __attribute__((packed));
 +} __packed;
  
  /*
   * Firmware loading.
@@@ -632,7 -634,7 +634,7 @@@ struct mwl8k_dma_data 
        __le16 fwlen;
        struct ieee80211_hdr wh;
        char data[0];
 -} __attribute__((packed));
 +} __packed;
  
  /* Routines to add/remove DMA header from skb.  */
  static inline void mwl8k_remove_dma_header(struct sk_buff *skb, __le16 qos)
@@@ -711,7 -713,7 +713,7 @@@ struct mwl8k_rxd_8366_ap 
        __u8 rx_status;
        __u8 channel;
        __u8 rx_ctrl;
 -} __attribute__((packed));
 +} __packed;
  
  #define MWL8K_8366_AP_RATE_INFO_MCS_FORMAT    0x80
  #define MWL8K_8366_AP_RATE_INFO_40MHZ         0x40
@@@ -806,7 -808,7 +808,7 @@@ struct mwl8k_rxd_sta 
        __u8 rx_ctrl;
        __u8 rx_status;
        __u8 pad2[2];
 -} __attribute__((packed));
 +} __packed;
  
  #define MWL8K_STA_RATE_INFO_SHORTPRE          0x8000
  #define MWL8K_STA_RATE_INFO_ANTSELECT(x)      (((x) >> 11) & 0x3)
@@@ -1120,7 -1122,7 +1122,7 @@@ struct mwl8k_tx_desc 
        __le16 rate_info;
        __u8 peer_id;
        __u8 tx_frag_cnt;
 -} __attribute__((packed));
 +} __packed;
  
  #define MWL8K_TX_DESCS                128
  
@@@ -1538,7 -1540,7 +1540,7 @@@ static int mwl8k_post_cmd(struct ieee80
        unsigned long timeout = 0;
        u8 buf[32];
  
-       cmd->result = 0xffff;
+       cmd->result = (__force __le16) 0xffff;
        dma_size = le16_to_cpu(cmd->length);
        dma_addr = pci_map_single(priv->pdev, cmd, dma_size,
                                  PCI_DMA_BIDIRECTIONAL);
@@@ -1666,7 -1668,7 +1668,7 @@@ struct mwl8k_cmd_get_hw_spec_sta 
        __le32 caps2;
        __le32 num_tx_desc_per_queue;
        __le32 total_rxd;
 -} __attribute__((packed));
 +} __packed;
  
  #define MWL8K_CAP_MAX_AMSDU           0x20000000
  #define MWL8K_CAP_GREENFIELD          0x08000000
@@@ -1810,7 -1812,7 +1812,7 @@@ struct mwl8k_cmd_get_hw_spec_ap 
        __le32 wcbbase1;
        __le32 wcbbase2;
        __le32 wcbbase3;
 -} __attribute__((packed));
 +} __packed;
  
  static int mwl8k_cmd_get_hw_spec_ap(struct ieee80211_hw *hw)
  {
                priv->sta_macids_supported = 0x00000000;
  
                off = le32_to_cpu(cmd->wcbbase0) & 0xffff;
-               iowrite32(cpu_to_le32(priv->txq[0].txd_dma), priv->sram + off);
+               iowrite32(priv->txq[0].txd_dma, priv->sram + off);
  
                off = le32_to_cpu(cmd->rxwrptr) & 0xffff;
-               iowrite32(cpu_to_le32(priv->rxq[0].rxd_dma), priv->sram + off);
+               iowrite32(priv->rxq[0].rxd_dma, priv->sram + off);
  
                off = le32_to_cpu(cmd->rxrdptr) & 0xffff;
-               iowrite32(cpu_to_le32(priv->rxq[0].rxd_dma), priv->sram + off);
+               iowrite32(priv->rxq[0].rxd_dma, priv->sram + off);
  
                off = le32_to_cpu(cmd->wcbbase1) & 0xffff;
-               iowrite32(cpu_to_le32(priv->txq[1].txd_dma), priv->sram + off);
+               iowrite32(priv->txq[1].txd_dma, priv->sram + off);
  
                off = le32_to_cpu(cmd->wcbbase2) & 0xffff;
-               iowrite32(cpu_to_le32(priv->txq[2].txd_dma), priv->sram + off);
+               iowrite32(priv->txq[2].txd_dma, priv->sram + off);
  
                off = le32_to_cpu(cmd->wcbbase3) & 0xffff;
-               iowrite32(cpu_to_le32(priv->txq[3].txd_dma), priv->sram + off);
+               iowrite32(priv->txq[3].txd_dma, priv->sram + off);
        }
  
        kfree(cmd);
@@@ -1883,7 -1885,7 +1885,7 @@@ struct mwl8k_cmd_set_hw_spec 
        __le32 flags;
        __le32 num_tx_desc_per_queue;
        __le32 total_rxd;
 -} __attribute__((packed));
 +} __packed;
  
  #define MWL8K_SET_HW_SPEC_FLAG_HOST_DECR_MGMT         0x00000080
  #define MWL8K_SET_HW_SPEC_FLAG_HOSTFORM_PROBERESP     0x00000020
@@@ -1985,7 -1987,7 +1987,7 @@@ __mwl8k_cmd_mac_multicast_adr(struct ie
  struct mwl8k_cmd_get_stat {
        struct mwl8k_cmd_pkt header;
        __le32 stats[64];
 -} __attribute__((packed));
 +} __packed;
  
  #define MWL8K_STAT_ACK_FAILURE        9
  #define MWL8K_STAT_RTS_FAILURE        12
@@@ -2029,7 -2031,7 +2031,7 @@@ struct mwl8k_cmd_radio_control 
        __le16 action;
        __le16 control;
        __le16 radio_on;
 -} __attribute__((packed));
 +} __packed;
  
  static int
  mwl8k_cmd_radio_control(struct ieee80211_hw *hw, bool enable, bool force)
@@@ -2092,7 -2094,7 +2094,7 @@@ struct mwl8k_cmd_rf_tx_power 
        __le16 current_level;
        __le16 reserved;
        __le16 power_level_list[MWL8K_TX_POWER_LEVEL_TOTAL];
 -} __attribute__((packed));
 +} __packed;
  
  static int mwl8k_cmd_rf_tx_power(struct ieee80211_hw *hw, int dBm)
  {
@@@ -2121,7 -2123,7 +2123,7 @@@ struct mwl8k_cmd_rf_antenna 
        struct mwl8k_cmd_pkt header;
        __le16 antenna;
        __le16 mode;
 -} __attribute__((packed));
 +} __packed;
  
  #define MWL8K_RF_ANTENNA_RX           1
  #define MWL8K_RF_ANTENNA_TX           2
@@@ -2182,7 -2184,7 +2184,7 @@@ static int mwl8k_cmd_set_beacon(struct 
   */
  struct mwl8k_cmd_set_pre_scan {
        struct mwl8k_cmd_pkt header;
 -} __attribute__((packed));
 +} __packed;
  
  static int mwl8k_cmd_set_pre_scan(struct ieee80211_hw *hw)
  {
@@@ -2209,7 -2211,7 +2211,7 @@@ struct mwl8k_cmd_set_post_scan 
        struct mwl8k_cmd_pkt header;
        __le32 isibss;
        __u8 bssid[ETH_ALEN];
 -} __attribute__((packed));
 +} __packed;
  
  static int
  mwl8k_cmd_set_post_scan(struct ieee80211_hw *hw, const __u8 *mac)
@@@ -2240,7 -2242,7 +2242,7 @@@ struct mwl8k_cmd_set_rf_channel 
        __le16 action;
        __u8 current_channel;
        __le32 channel_flags;
 -} __attribute__((packed));
 +} __packed;
  
  static int mwl8k_cmd_set_rf_channel(struct ieee80211_hw *hw,
                                    struct ieee80211_conf *conf)
@@@ -2293,7 -2295,7 +2295,7 @@@ struct mwl8k_cmd_update_set_aid 
        __u8    bssid[ETH_ALEN];
        __le16  protection_mode;
        __u8    supp_rates[14];
 -} __attribute__((packed));
 +} __packed;
  
  static void legacy_rate_mask_to_array(u8 *rates, u32 mask)
  {
@@@ -2364,7 -2366,7 +2366,7 @@@ struct mwl8k_cmd_set_rate 
        /* Bitmap for supported MCS codes.  */
        __u8    mcs_set[16];
        __u8    reserved[16];
 -} __attribute__((packed));
 +} __packed;
  
  static int
  mwl8k_cmd_set_rate(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
@@@ -2397,7 -2399,7 +2399,7 @@@ struct mwl8k_cmd_finalize_join 
        struct mwl8k_cmd_pkt header;
        __le32 sleep_interval;  /* Number of beacon periods to sleep */
        __u8 beacon_data[MWL8K_FJ_BEACON_MAXLEN];
 -} __attribute__((packed));
 +} __packed;
  
  static int mwl8k_cmd_finalize_join(struct ieee80211_hw *hw, void *frame,
                                   int framelen, int dtim)
@@@ -2436,7 -2438,7 +2438,7 @@@ struct mwl8k_cmd_set_rts_threshold 
        struct mwl8k_cmd_pkt header;
        __le16 action;
        __le16 threshold;
 -} __attribute__((packed));
 +} __packed;
  
  static int
  mwl8k_cmd_set_rts_threshold(struct ieee80211_hw *hw, int rts_thresh)
@@@ -2466,7 -2468,7 +2468,7 @@@ struct mwl8k_cmd_set_slot 
        struct mwl8k_cmd_pkt header;
        __le16 action;
        __u8 short_slot;
 -} __attribute__((packed));
 +} __packed;
  
  static int mwl8k_cmd_set_slot(struct ieee80211_hw *hw, bool short_slot_time)
  {
@@@ -2528,7 -2530,7 +2530,7 @@@ struct mwl8k_cmd_set_edca_params 
                        __u8 txq;
                } sta;
        };
 -} __attribute__((packed));
 +} __packed;
  
  #define MWL8K_SET_EDCA_CW     0x01
  #define MWL8K_SET_EDCA_TXOP   0x02
@@@ -2579,7 -2581,7 +2581,7 @@@ mwl8k_cmd_set_edca_params(struct ieee80
  struct mwl8k_cmd_set_wmm_mode {
        struct mwl8k_cmd_pkt header;
        __le16 action;
 -} __attribute__((packed));
 +} __packed;
  
  static int mwl8k_cmd_set_wmm_mode(struct ieee80211_hw *hw, bool enable)
  {
@@@ -2612,7 -2614,7 +2614,7 @@@ struct mwl8k_cmd_mimo_config 
        __le32 action;
        __u8 rx_antenna_map;
        __u8 tx_antenna_map;
 -} __attribute__((packed));
 +} __packed;
  
  static int mwl8k_cmd_mimo_config(struct ieee80211_hw *hw, __u8 rx, __u8 tx)
  {
@@@ -2652,7 -2654,7 +2654,7 @@@ struct mwl8k_cmd_use_fixed_rate_sta 
        __le32 rate_type;
        __le32 reserved1;
        __le32 reserved2;
 -} __attribute__((packed));
 +} __packed;
  
  #define MWL8K_USE_AUTO_RATE   0x0002
  #define MWL8K_UCAST_RATE      0
@@@ -2694,7 -2696,7 +2696,7 @@@ struct mwl8k_cmd_use_fixed_rate_ap 
        u8 multicast_rate;
        u8 multicast_rate_type;
        u8 management_rate;
 -} __attribute__((packed));
 +} __packed;
  
  static int
  mwl8k_cmd_use_fixed_rate_ap(struct ieee80211_hw *hw, int mcast, int mgmt)
  struct mwl8k_cmd_enable_sniffer {
        struct mwl8k_cmd_pkt header;
        __le32 action;
 -} __attribute__((packed));
 +} __packed;
  
  static int mwl8k_cmd_enable_sniffer(struct ieee80211_hw *hw, bool enable)
  {
@@@ -2757,7 -2759,7 +2759,7 @@@ struct mwl8k_cmd_set_mac_addr 
                } mbss;
                __u8 mac_addr[ETH_ALEN];
        };
 -} __attribute__((packed));
 +} __packed;
  
  #define MWL8K_MAC_TYPE_PRIMARY_CLIENT         0
  #define MWL8K_MAC_TYPE_SECONDARY_CLIENT               1
@@@ -2812,7 -2814,7 +2814,7 @@@ struct mwl8k_cmd_set_rate_adapt_mode 
        struct mwl8k_cmd_pkt header;
        __le16 action;
        __le16 mode;
 -} __attribute__((packed));
 +} __packed;
  
  static int mwl8k_cmd_set_rateadapt_mode(struct ieee80211_hw *hw, __u16 mode)
  {
  struct mwl8k_cmd_bss_start {
        struct mwl8k_cmd_pkt header;
        __le32 enable;
 -} __attribute__((packed));
 +} __packed;
  
  static int mwl8k_cmd_bss_start(struct ieee80211_hw *hw,
                               struct ieee80211_vif *vif, int enable)
@@@ -2885,7 -2887,7 +2887,7 @@@ struct mwl8k_cmd_set_new_stn 
        __u8 add_qos_info;
        __u8 is_qos_sta;
        __le32 fw_sta_ptr;
 -} __attribute__((packed));
 +} __packed;
  
  #define MWL8K_STA_ACTION_ADD          0
  #define MWL8K_STA_ACTION_REMOVE               2
@@@ -2978,7 -2980,7 +2980,7 @@@ struct ewc_ht_info 
        __le16  control1;
        __le16  control2;
        __le16  control3;
 -} __attribute__((packed));
 +} __packed;
  
  struct peer_capability_info {
        /* Peer type - AP vs. STA.  */
        __u8    pad2;
        __u8    station_id;
        __le16  amsdu_enabled;
 -} __attribute__((packed));
 +} __packed;
  
  struct mwl8k_cmd_update_stadb {
        struct mwl8k_cmd_pkt header;
  
        /* Peer info - valid during add/update.  */
        struct peer_capability_info     peer_info;
 -} __attribute__((packed));
 +} __packed;
  
  #define MWL8K_STA_DB_MODIFY_ENTRY     1
  #define MWL8K_STA_DB_DEL_ENTRY                2
@@@ -3052,7 -3054,7 +3054,7 @@@ static int mwl8k_cmd_update_stadb_add(s
        p->peer_type = MWL8K_PEER_TYPE_ACCESSPOINT;
        p->basic_caps = cpu_to_le16(vif->bss_conf.assoc_capability);
        p->ht_support = sta->ht_cap.ht_supported;
-       p->ht_caps = sta->ht_cap.cap;
+       p->ht_caps = cpu_to_le16(sta->ht_cap.cap);
        p->extended_ht_caps = (sta->ht_cap.ampdu_factor & 3) |
                ((sta->ht_cap.ampdu_density & 7) << 2);
        if (hw->conf.channel->band == IEEE80211_BAND_2GHZ)
@@@ -90,7 -90,7 +90,7 @@@ struct header_struct 
        /* SNAP */
        u8 oui[3];
        __be16 ethertype;
 -} __attribute__ ((packed));
 +} __packed;
  
  struct ez_usb_fw {
        u16 size;
@@@ -222,7 -222,7 +222,7 @@@ struct ezusb_packet 
        __le16 hermes_len;
        __le16 hermes_rid;
        u8 data[0];
 -} __attribute__ ((packed));
 +} __packed;
  
  /* Table of devices that work or may work with this driver */
  static struct usb_device_id ezusb_table[] = {
@@@ -1502,16 -1502,16 +1502,16 @@@ static inline void ezusb_delete(struct 
            ezusb_ctx_complete(list_entry(item,
                                          struct request_context, list));
  
-       if (upriv->read_urb->status == -EINPROGRESS)
+       if (upriv->read_urb && upriv->read_urb->status == -EINPROGRESS)
                printk(KERN_ERR PFX "Some URB in progress\n");
  
        mutex_unlock(&upriv->mtx);
  
-       kfree(upriv->read_urb->transfer_buffer);
-       if (upriv->bap_buf != NULL)
-               kfree(upriv->bap_buf);
-       if (upriv->read_urb != NULL)
+       if (upriv->read_urb) {
+               kfree(upriv->read_urb->transfer_buffer);
                usb_free_urb(upriv->read_urb);
+       }
+       kfree(upriv->bap_buf);
        if (upriv->dev) {
                struct orinoco_private *priv = ndev_priv(upriv->dev);
                orinoco_if_del(priv);
diff --combined include/net/cfg80211.h
@@@ -1358,15 -1358,26 +1358,15 @@@ struct wiphy 
        char priv[0] __attribute__((__aligned__(NETDEV_ALIGN)));
  };
  
 -#ifdef CONFIG_NET_NS
  static inline struct net *wiphy_net(struct wiphy *wiphy)
  {
 -      return wiphy->_net;
 +      return read_pnet(&wiphy->_net);
  }
  
  static inline void wiphy_net_set(struct wiphy *wiphy, struct net *net)
  {
 -      wiphy->_net = net;
 +      write_pnet(&wiphy->_net, net);
  }
 -#else
 -static inline struct net *wiphy_net(struct wiphy *wiphy)
 -{
 -      return &init_net;
 -}
 -
 -static inline void wiphy_net_set(struct wiphy *wiphy, struct net *net)
 -{
 -}
 -#endif
  
  /**
   * wiphy_priv - return priv from wiphy
@@@ -1952,6 -1963,10 +1952,10 @@@ int cfg80211_wext_giwap(struct net_devi
                        struct iw_request_info *info,
                        struct sockaddr *ap_addr, char *extra);
  
+ int cfg80211_wext_siwpmksa(struct net_device *dev,
+                          struct iw_request_info *info,
+                          struct iw_point *data, char *extra);
  /*
   * callbacks for asynchronous cfg80211 methods, notification
   * functions and BSS handling helpers
diff --combined include/net/mac80211.h
@@@ -147,6 -147,8 +147,8 @@@ struct ieee80211_low_level_stats 
   * @BSS_CHANGED_CQM: Connection quality monitor config changed
   * @BSS_CHANGED_IBSS: IBSS join status changed
   * @BSS_CHANGED_ARP_FILTER: Hardware ARP filter address list or state changed.
+  * @BSS_CHANGED_QOS: QoS for this association was enabled/disabled. Note
+  *    that it is only ever disabled for station mode.
   */
  enum ieee80211_bss_change {
        BSS_CHANGED_ASSOC               = 1<<0,
        BSS_CHANGED_CQM                 = 1<<10,
        BSS_CHANGED_IBSS                = 1<<11,
        BSS_CHANGED_ARP_FILTER          = 1<<12,
+       BSS_CHANGED_QOS                 = 1<<13,
  
        /* when adding here, make sure to change ieee80211_reconfig */
  };
   *    filter ARP queries based on the @arp_addr_list, if disabled, the
   *    hardware must not perform any ARP filtering. Note, that the filter will
   *    be enabled also in promiscuous mode.
+  * @qos: This is a QoS-enabled BSS.
   */
  struct ieee80211_bss_conf {
        const u8 *bssid;
        __be32 arp_addr_list[IEEE80211_BSS_ARP_ADDR_LIST_LEN];
        u8 arp_addr_cnt;
        bool arp_filter_enabled;
+       bool qos;
  };
  
  /**
@@@ -412,7 -417,7 +417,7 @@@ struct ieee80211_tx_rate 
        s8 idx;
        u8 count;
        u8 flags;
 -} __attribute__((packed));
 +} __packed;
  
  /**
   * struct ieee80211_tx_info - skb transmit information
@@@ -620,15 -625,11 +625,11 @@@ struct ieee80211_rx_status 
   *    may turn the device off as much as possible. Typically, this flag will
   *    be set when an interface is set UP but not associated or scanning, but
   *    it can also be unset in that case when monitor interfaces are active.
-  * @IEEE80211_CONF_QOS: Enable 802.11e QoS also know as WMM (Wireless
-  *      Multimedia). On some drivers (iwlwifi is one of know) we have
-  *      to enable/disable QoS explicitly.
   */
  enum ieee80211_conf_flags {
        IEEE80211_CONF_MONITOR          = (1<<0),
        IEEE80211_CONF_PS               = (1<<1),
        IEEE80211_CONF_IDLE             = (1<<2),
-       IEEE80211_CONF_QOS              = (1<<3),
  };
  
  
   * @IEEE80211_CONF_CHANGE_RETRY_LIMITS: retry limits changed
   * @IEEE80211_CONF_CHANGE_IDLE: Idle flag changed
   * @IEEE80211_CONF_CHANGE_SMPS: Spatial multiplexing powersave mode changed
-  * @IEEE80211_CONF_CHANGE_QOS: Quality of service was enabled or disabled
   */
  enum ieee80211_conf_changed {
        IEEE80211_CONF_CHANGE_SMPS              = BIT(1),
        IEEE80211_CONF_CHANGE_CHANNEL           = BIT(6),
        IEEE80211_CONF_CHANGE_RETRY_LIMITS      = BIT(7),
        IEEE80211_CONF_CHANGE_IDLE              = BIT(8),
-       IEEE80211_CONF_CHANGE_QOS               = BIT(9),
  };
  
  /**
diff --combined net/mac80211/cfg.c
@@@ -600,7 -600,7 +600,7 @@@ struct iapp_layer2_update 
        u8 ssap;                /* 0 */
        u8 control;
        u8 xid_info[3];
 -} __attribute__ ((packed));
 +} __packed;
  
  static void ieee80211_send_layer2_update(struct sta_info *sta)
  {
@@@ -1154,10 -1154,6 +1154,6 @@@ static int ieee80211_set_txq_params(str
                return -EINVAL;
        }
  
-       /* enable WMM or activate new settings */
-       local->hw.conf.flags |= IEEE80211_CONF_QOS;
-       drv_config(local, IEEE80211_CONF_CHANGE_QOS);
        return 0;
  }
  
@@@ -377,14 -377,11 +377,11 @@@ struct ieee80211_if_managed 
        int last_cqm_event_signal;
  };
  
  struct ieee80211_if_ibss {
        struct timer_list timer;
  
-       unsigned long request;
+       struct mutex mtx;
        unsigned long last_scan_completed;
  
        u32 basic_rates;
@@@ -1093,7 -1090,7 +1090,7 @@@ struct ieee80211_tx_status_rtap_hdr 
        u8 padding_for_rate;
        __le16 tx_flags;
        u8 data_retries;
 -} __attribute__ ((packed));
 +} __packed;
  
  
  /* HT */