]> Pileus Git - ~andy/linux/commitdiff
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluet...
authorJohn W. Linville <linville@tuxdriver.com>
Tue, 27 Jul 2010 15:59:19 +0000 (11:59 -0400)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 27 Jul 2010 15:59:19 +0000 (11:59 -0400)
Conflicts:
drivers/net/wireless/iwlwifi/iwl-commands.h

16 files changed:
1  2 
MAINTAINERS
drivers/net/wireless/airo.c
drivers/net/wireless/ipw2x00/ipw2100.c
drivers/net/wireless/ipw2x00/libipw.h
drivers/net/wireless/iwlwifi/iwl-commands.h
drivers/net/wireless/iwlwifi/iwl-dev.h
drivers/net/wireless/iwlwifi/iwl-eeprom.h
drivers/net/wireless/libertas/host.h
drivers/net/wireless/mwl8k.c
drivers/net/wireless/orinoco/orinoco_usb.c
drivers/net/wireless/rtl818x/rtl818x.h
drivers/net/wireless/wl12xx/wl1251_cmd.h
drivers/net/wireless/wl12xx/wl1251_tx.h
include/net/cfg80211.h
net/mac80211/cfg.c
net/mac80211/ieee80211_i.h

diff --combined MAINTAINERS
index 0fb00a2842ad62c7a7d446c15de1971fd1a80364,aa73c9a2c11b86a726410e748055f0b0155300a1..541bfc80496c8a5af5c9b3a2b4275167072e36fb
@@@ -131,19 -131,12 +131,12 @@@ L:      netdev@vger.kernel.or
  S:    Maintained
  F:    drivers/net/typhoon*
  
- 3W-9XXX SATA-RAID CONTROLLER DRIVER
- M:    Adam Radford <linuxraid@amcc.com>
+ 3WARE SAS/SATA-RAID SCSI DRIVERS (3W-XXXX, 3W-9XXX, 3W-SAS)
+ M:    Adam Radford <linuxraid@lsi.com>
  L:    linux-scsi@vger.kernel.org
- W:    http://www.amcc.com
+ W:    http://www.lsi.com
  S:    Supported
- F:    drivers/scsi/3w-9xxx*
- 3W-XXXX ATA-RAID CONTROLLER DRIVER
- M:    Adam Radford <linuxraid@amcc.com>
- L:    linux-scsi@vger.kernel.org
- W:    http://www.amcc.com
- S:    Supported
- F:    drivers/scsi/3w-xxxx*
+ F:    drivers/scsi/3w-*
  
  53C700 AND 53C700-66 SCSI DRIVER
  M:    "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
@@@ -974,6 -967,18 +967,18 @@@ M:       Wan ZongShun <mcuos.com@gmail.com
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  W:    http://www.mcuos.com
  S:    Maintained
+ F:    arch/arm/mach-w90x900/
+ F:    arch/arm/mach-nuc93x/
+ F:    drivers/input/keyboard/w90p910_keypad.c
+ F:    drivers/input/touchscreen/w90p910_ts.c
+ F:    drivers/watchdog/nuc900_wdt.c
+ F:    drivers/net/arm/w90p910_ether.c
+ F:    drivers/mtd/nand/w90p910_nand.c
+ F:    drivers/rtc/rtc-nuc900.c
+ F:    drivers/spi/spi_nuc900.c
+ F:    drivers/usb/host/ehci-w90x900.c
+ F:    drivers/video/nuc900fb.c
+ F:    drivers/sound/soc/nuc900/
  
  ARM/U300 MACHINE SUPPORT
  M:    Linus Walleij <linus.walleij@stericsson.com>
@@@ -1762,6 -1767,13 +1767,13 @@@ W:    http://www.openfabrics.or
  S:    Supported
  F:    drivers/infiniband/hw/cxgb4/
  
+ CXGB4VF ETHERNET DRIVER (CXGB4VF)
+ M:    Casey Leedom <leedom@chelsio.com>
+ L:    netdev@vger.kernel.org
+ W:    http://www.chelsio.com
+ S:    Supported
+ F:    drivers/net/cxgb4vf/
  CYBERPRO FB DRIVER
  M:    Russell King <linux@arm.linux.org.uk>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -2880,6 -2892,13 +2892,13 @@@ T:    git git://git.kernel.org/pub/scm/lin
  S:    Maintained
  F:    drivers/input/
  
+ INTEL IDLE DRIVER
+ M:    Len Brown <lenb@kernel.org>
+ L:    linux-pm@lists.linux-foundation.org
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-idle-2.6.git
+ S:    Supported
+ F:    drivers/idle/intel_idle.c
  INTEL FRAMEBUFFER DRIVER (excluding 810 and 815)
  M:    Maik Broemme <mbroemme@plusserver.de>
  L:    linux-fbdev@vger.kernel.org
@@@ -3315,15 -3334,17 +3334,17 @@@ F:   include/linux/key-type.
  F:    include/keys/
  F:    security/keys/
  
- KGDB
+ KGDB / KDB /debug_core
  M:    Jason Wessel <jason.wessel@windriver.com>
+ W:    http://kgdb.wiki.kernel.org/
  L:    kgdb-bugreport@lists.sourceforge.net
  S:    Maintained
  F:    Documentation/DocBook/kgdb.tmpl
  F:    drivers/misc/kgdbts.c
  F:    drivers/serial/kgdboc.c
+ F:    include/linux/kdb.h
  F:    include/linux/kgdb.h
- F:    kernel/kgdb.c
+ F:    kernel/debug/
  
  KMEMCHECK
  M:    Vegard Nossum <vegardno@ifi.uio.no>
@@@ -3879,17 -3900,19 +3900,19 @@@ L:   netem@lists.linux-foundation.or
  S:    Maintained
  F:    net/sched/sch_netem.c
  
- NETERION (S2IO) 10GbE DRIVER (xframe/vxge)
- M:    Ramkrishna Vepa <ram.vepa@neterion.com>
- M:    Rastapur Santosh <santosh.rastapur@neterion.com>
- M:    Sivakumar Subramani <sivakumar.subramani@neterion.com>
- M:    Sreenivasa Honnur <sreenivasa.honnur@neterion.com>
+ NETERION 10GbE DRIVERS (s2io/vxge)
+ M:    Ramkrishna Vepa <ramkrishna.vepa@exar.com>
+ M:    Sivakumar Subramani <sivakumar.subramani@exar.com>
+ M:    Sreenivasa Honnur <sreenivasa.honnur@exar.com>
+ M:    Jon Mason <jon.mason@exar.com>
  L:    netdev@vger.kernel.org
  W:    http://trac.neterion.com/cgi-bin/trac.cgi/wiki/Linux?Anonymous
  W:    http://trac.neterion.com/cgi-bin/trac.cgi/wiki/X3100Linux?Anonymous
  S:    Supported
  F:    Documentation/networking/s2io.txt
  F:    drivers/net/s2io*
+ F:    Documentation/networking/vxge.txt
+ F:    drivers/net/vxge/
  
  NETFILTER/IPTABLES/IPCHAINS
  P:    Rusty Russell
@@@ -4499,7 -4522,7 +4522,7 @@@ PRISM54 WIRELESS DRIVE
  M:    "Luis R. Rodriguez" <mcgrof@gmail.com>
  L:    linux-wireless@vger.kernel.org
  W:    http://prism54.org
 -S:    Maintained
 +S:    Obsolete
  F:    drivers/net/wireless/prism54/
  
  PROMISE DC4030 CACHING DISK CONTROLLER DRIVER
@@@ -4609,6 -4632,14 +4632,14 @@@ S:    Supporte
  F:    Documentation/scsi/LICENSE.qla2xxx
  F:    drivers/scsi/qla2xxx/
  
+ QLOGIC QLA4XXX iSCSI DRIVER
+ M:    Ravi Anand <ravi.anand@qlogic.com>
+ M:    Vikas Chaudhary <vikas.chaudhary@qlogic.com>
+ M:    iscsi-driver@qlogic.com
+ L:    linux-scsi@vger.kernel.org
+ S:    Supported
+ F:    drivers/scsi/qla4xxx/
  QLOGIC QLA3XXX NETWORK DRIVER
  M:    Ron Mercer <ron.mercer@qlogic.com>
  M:    linux-driver@qlogic.com
@@@ -4681,8 -4712,9 +4712,8 @@@ S:      Maintaine
  F:    drivers/rapidio/
  
  RAYLINK/WEBGEAR 802.11 WIRELESS LAN DRIVER
 -M:    Corey Thomas <coreythomas@charter.net>
  L:    linux-wireless@vger.kernel.org
 -S:    Maintained
 +S:    Orphan
  F:    drivers/net/wireless/ray*
  
  RCUTORTURE MODULE
@@@ -4748,6 -4780,12 +4779,12 @@@ S:    Maintaine
  F:    Documentation/rfkill.txt
  F:    net/rfkill/
  
+ RICOH SMARTMEDIA/XD DRIVER
+ M:    Maxim Levitsky <maximlevitsky@gmail.com>
+ S:    Maintained
+ F:    drivers/mtd/nand/r822.c
+ F:    drivers/mtd/nand/r822.h
  RISCOM8 DRIVER
  S:    Orphan
  F:    Documentation/serial/riscom8.txt
@@@ -4802,6 -4840,9 +4839,9 @@@ W:      http://www.ibm.com/developerworks/li
  S:    Supported
  F:    arch/s390/
  F:    drivers/s390/
+ F:    fs/partitions/ibm.c
+ F:    Documentation/s390/
+ F:    Documentation/DocBook/s390*
  
  S390 NETWORK DRIVERS
  M:    Ursula Braun <ursula.braun@de.ibm.com>
@@@ -4970,6 -5011,12 +5010,12 @@@ L:    linux-mmc@vger.kernel.or
  S:    Maintained
  F:    drivers/mmc/host/sdhci-s3c.c
  
+ SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) ST SPEAR DRIVER
+ M:    Viresh Kumar <viresh.kumar@st.com>
+ L:    linux-mmc@vger.kernel.org
+ S:    Maintained
+ F:    drivers/mmc/host/sdhci-spear.c
  SECURITY SUBSYSTEM
  M:    James Morris <jmorris@namei.org>
  L:    linux-security-module@vger.kernel.org (suggested Cc:)
@@@ -5990,9 -6037,10 +6036,9 @@@ F:     Documentation/video4linux/zc0301.tx
  F:    drivers/media/video/zc0301/
  
  USB ZD1201 DRIVER
 -M:    Jeroen Vreeken <pe1rxq@amsat.org>
 -L:    linux-usb@vger.kernel.org
 +L:    linux-wireless@vger.kernel.org
  W:    http://linux-lc100020.sourceforge.net
 -S:    Maintained
 +S:    Orphan
  F:    drivers/net/wireless/zd1201.*
  
  USB ZR364XX DRIVER
@@@ -6178,6 -6226,14 +6224,6 @@@ F:     Documentation/watchdog
  F:    drivers/watchdog/
  F:    include/linux/watchdog.h
  
 -WAVELAN NETWORK DRIVER & WIRELESS EXTENSIONS
 -M:    Jean Tourrilhes <jt@hpl.hp.com>
 -L:    linux-wireless@vger.kernel.org
 -W:    http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/
 -S:    Maintained
 -F:    Documentation/networking/wavelan.txt
 -F:    drivers/staging/wavelan/
 -
  WD7000 SCSI DRIVER
  M:    Miroslav Zagorac <zaga@fly.cc.fer.hr>
  L:    linux-scsi@vger.kernel.org
index 053f90c7aa1b47f5b471f2717f5d1e816fb1c808,6b605df8a9238f3165c8444baf874b012f5dc04e..1d05445d4ba397cb04545d1ba105e1040c864176
@@@ -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;
                        }
                }
@@@ -5316,7 -5309,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;
                }
        }
@@@ -5370,7 -5363,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;
@@@ -5416,7 -5409,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;
@@@ -5460,7 -5453,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;
@@@ -5502,7 -5495,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;
index 5165db9b1b329c296bb48eb1eade2cceded24d22,56350d571960ce069c0e01bf6f22c08117e47297..5bbff4c5a4895b51acc66351bfcf18b212eeea3d
@@@ -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)
  {
index 7b9539a1b54af799e248d90c2773e8243f5bdd44,4736861bc4f8d43b80088ce328a701ba979f7c23..70f5586d96bdeb060195763d8409fb4f64c27458
@@@ -154,7 -154,7 +154,7 @@@ struct libipw_snap_hdr 
        u8 ctrl;                /* always 0x03 */
        u8 oui[P80211_OUI_LEN]; /* organizational universal id */
  
- } __attribute__ ((packed));
+ } __packed;
  
  #define SNAP_SIZE sizeof(struct libipw_snap_hdr)
  
@@@ -323,7 -323,7 +323,7 @@@ struct libipw_security 
        u8 keys[WEP_KEYS][SCM_KEY_LEN];
        u8 level;
        u16 flags;
- } __attribute__ ((packed));
+ } __packed;
  
  /*
  
@@@ -347,7 -347,7 +347,7 @@@ struct libipw_hdr_1addr 
        __le16 duration_id;
        u8 addr1[ETH_ALEN];
        u8 payload[0];
- } __attribute__ ((packed));
+ } __packed;
  
  struct libipw_hdr_2addr {
        __le16 frame_ctl;
        u8 addr1[ETH_ALEN];
        u8 addr2[ETH_ALEN];
        u8 payload[0];
- } __attribute__ ((packed));
+ } __packed;
  
  struct libipw_hdr_3addr {
        __le16 frame_ctl;
        u8 addr3[ETH_ALEN];
        __le16 seq_ctl;
        u8 payload[0];
- } __attribute__ ((packed));
+ } __packed;
  
  struct libipw_hdr_4addr {
        __le16 frame_ctl;
        __le16 seq_ctl;
        u8 addr4[ETH_ALEN];
        u8 payload[0];
- } __attribute__ ((packed));
+ } __packed;
  
  struct libipw_hdr_3addrqos {
        __le16 frame_ctl;
        __le16 seq_ctl;
        u8 payload[0];
        __le16 qos_ctl;
- } __attribute__ ((packed));
+ } __packed;
  
  struct libipw_info_element {
        u8 id;
        u8 len;
        u8 data[0];
- } __attribute__ ((packed));
+ } __packed;
  
  /*
   * These are the data types that can make up management packets
        u16 listen_interval;
        struct {
                u16 association_id:14, reserved:2;
-       } __attribute__ ((packed));
+       } __packed;
        u32 time_stamp[2];
        u16 reason;
        u16 status;
@@@ -419,7 -419,7 +419,7 @@@ struct libipw_auth 
        __le16 status;
        /* challenge */
        struct libipw_info_element info_element[0];
- } __attribute__ ((packed));
+ } __packed;
  
  struct libipw_channel_switch {
        u8 id;
        u8 mode;
        u8 channel;
        u8 count;
- } __attribute__ ((packed));
+ } __packed;
  
  struct libipw_action {
        struct libipw_hdr_3addr header;
                struct libipw_channel_switch channel_switch;
  
        } format;
- } __attribute__ ((packed));
+ } __packed;
  
  struct libipw_disassoc {
        struct libipw_hdr_3addr header;
        __le16 reason;
- } __attribute__ ((packed));
+ } __packed;
  
  /* Alias deauth for disassoc */
  #define libipw_deauth libipw_disassoc
@@@ -455,7 -455,7 +455,7 @@@ struct libipw_probe_request 
        struct libipw_hdr_3addr header;
        /* SSID, supported rates */
        struct libipw_info_element info_element[0];
- } __attribute__ ((packed));
+ } __packed;
  
  struct libipw_probe_response {
        struct libipw_hdr_3addr header;
        /* SSID, supported rates, FH params, DS params,
         * CF params, IBSS params, TIM (if beacon), RSN */
        struct libipw_info_element info_element[0];
- } __attribute__ ((packed));
+ } __packed;
  
  /* Alias beacon for probe_response */
  #define libipw_beacon libipw_probe_response
@@@ -476,7 -476,7 +476,7 @@@ struct libipw_assoc_request 
        __le16 listen_interval;
        /* SSID, supported rates, RSN */
        struct libipw_info_element info_element[0];
- } __attribute__ ((packed));
+ } __packed;
  
  struct libipw_reassoc_request {
        struct libipw_hdr_3addr header;
        __le16 listen_interval;
        u8 current_ap[ETH_ALEN];
        struct libipw_info_element info_element[0];
- } __attribute__ ((packed));
+ } __packed;
  
  struct libipw_assoc_response {
        struct libipw_hdr_3addr header;
        __le16 aid;
        /* supported rates */
        struct libipw_info_element info_element[0];
- } __attribute__ ((packed));
+ } __packed;
  
  struct libipw_txb {
        u8 nr_frags;
@@@ -555,19 -555,19 +555,19 @@@ struct libipw_qos_information_element 
        u8 qui_subtype;
        u8 version;
        u8 ac_info;
- } __attribute__ ((packed));
+ } __packed;
  
  struct libipw_qos_ac_parameter {
        u8 aci_aifsn;
        u8 ecw_min_max;
        __le16 tx_op_limit;
- } __attribute__ ((packed));
+ } __packed;
  
  struct libipw_qos_parameter_info {
        struct libipw_qos_information_element info_element;
        u8 reserved;
        struct libipw_qos_ac_parameter ac_params_record[QOS_QUEUE_NUM];
- } __attribute__ ((packed));
+ } __packed;
  
  struct libipw_qos_parameters {
        __le16 cw_min[QOS_QUEUE_NUM];
        u8 aifs[QOS_QUEUE_NUM];
        u8 flag[QOS_QUEUE_NUM];
        __le16 tx_op_limit[QOS_QUEUE_NUM];
- } __attribute__ ((packed));
+ } __packed;
  
  struct libipw_qos_data {
        struct libipw_qos_parameters parameters;
  struct libipw_tim_parameters {
        u8 tim_count;
        u8 tim_period;
- } __attribute__ ((packed));
+ } __packed;
  
  /*******************************************************/
  
@@@ -606,7 -606,7 +606,7 @@@ struct libipw_basic_report 
        __le64 start_time;
        __le16 duration;
        u8 map;
- } __attribute__ ((packed));
+ } __packed;
  
  enum {                                /* libipw_measurement_request.mode */
        /* Bit 0 is reserved */
@@@ -627,7 -627,7 +627,7 @@@ struct libipw_measurement_params 
        u8 channel;
        __le64 start_time;
        __le16 duration;
- } __attribute__ ((packed));
+ } __packed;
  
  struct libipw_measurement_request {
        struct libipw_info_element ie;
        u8 mode;
        u8 type;
        struct libipw_measurement_params params[0];
- } __attribute__ ((packed));
+ } __packed;
  
  struct libipw_measurement_report {
        struct libipw_info_element ie;
        union {
                struct libipw_basic_report basic[0];
        } u;
- } __attribute__ ((packed));
+ } __packed;
  
  struct libipw_tpc_report {
        u8 transmit_power;
        u8 link_margin;
- } __attribute__ ((packed));
+ } __packed;
  
  struct libipw_channel_map {
        u8 channel;
        u8 map;
- } __attribute__ ((packed));
+ } __packed;
  
  struct libipw_ibss_dfs {
        struct libipw_info_element ie;
@@@ -668,14 -668,14 +668,14 @@@ struct libipw_csa 
        u8 mode;
        u8 channel;
        u8 count;
- } __attribute__ ((packed));
+ } __packed;
  
  struct libipw_quiet {
        u8 count;
        u8 period;
        u8 duration;
        u8 offset;
- } __attribute__ ((packed));
+ } __packed;
  
  struct libipw_network {
        /* These entries are used to identify a unique network */
@@@ -828,6 -828,7 +828,6 @@@ struct libipw_device 
        int host_strip_iv_icv;
  
        int host_open_frag;
 -      int host_build_iv;
        int ieee802_1x;         /* is IEEE 802.1X used */
  
        /* WPA data */
index 9c44ab504dfe55bd7581f210f0b878d67756631d,8d2db9d22045260d7ae1d53ba0dec3344be88b48..60725a5c1b694b689d42fe6e782c9c141a47ac74
@@@ -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)
  #define       IWL_STATION_COUNT       32      /* MAX(3945,4965)*/
  #define       IWL_INVALID_STATION     255
  
 -#define STA_FLG_TX_RATE_MSK           cpu_to_le32(1 << 2);
 -#define STA_FLG_PWR_SAVE_MSK          cpu_to_le32(1 << 8);
 +#define STA_FLG_TX_RATE_MSK           cpu_to_le32(1 << 2)
 +#define STA_FLG_PWR_SAVE_MSK          cpu_to_le32(1 << 8)
  #define STA_FLG_RTS_MIMO_PROT_MSK     cpu_to_le32(1 << 17)
  #define STA_FLG_AGG_MPDU_8US_MSK      cpu_to_le32(1 << 18)
  #define STA_FLG_MAX_AGG_SIZE_POS      (19)
@@@ -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)
  
@@@ -3125,29 -3124,15 +3125,29 @@@ struct statistics_rx_non_phy 
        __le32 beacon_energy_a;
        __le32 beacon_energy_b;
        __le32 beacon_energy_c;
- } __attribute__ ((packed));
+ } __packed;
  
 +struct statistics_rx_non_phy_bt {
 +      struct statistics_rx_non_phy common;
 +      /* additional stats for bt */
 +      __le32 num_bt_kills;
 +      __le32 reserved[2];
 +} __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_rx_bt {
 +      struct statistics_rx_phy ofdm;
 +      struct statistics_rx_phy cck;
 +      struct statistics_rx_non_phy_bt general;
 +      struct statistics_rx_ht_phy ofdm_ht;
 +} __packed;
 +
  /**
   * struct statistics_tx_power - current tx power
   *
@@@ -3160,7 -3145,7 +3160,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 {
 +struct statistics_general_common {
        __le32 temperature;   /* radio temperature */
        __le32 temperature_m; /* for 5000 and up, this is radio voltage */
        struct statistics_dbg dbg;
         *  in order to get out of bad PHY status
         */
        __le32 num_of_sos_states;
 +} __packed;
 +
 +struct statistics_bt_activity {
 +      /* Tx statistics */
 +      __le32 hi_priority_tx_req_cnt;
 +      __le32 hi_priority_tx_denied_cnt;
 +      __le32 lo_priority_tx_req_cnt;
 +      __le32 lo_priority_tx_denied_cnt;
 +      /* Rx statistics */
 +      __le32 hi_priority_rx_req_cnt;
 +      __le32 hi_priority_rx_denied_cnt;
 +      __le32 lo_priority_rx_req_cnt;
 +      __le32 lo_priority_rx_denied_cnt;
 +} __packed;
 +
 +struct statistics_general {
 +      struct statistics_general_common common;
 +      __le32 reserved2;
 +      __le32 reserved3;
 +} __packed;
 +
 +struct statistics_general_bt {
 +      struct statistics_general_common common;
 +      struct statistics_bt_activity activity;
        __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)
@@@ -3302,21 -3263,15 +3302,21 @@@ 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;
  
 +struct iwl_bt_notif_statistics {
 +      __le32 flag;
 +      struct statistics_rx_bt rx;
 +      struct statistics_tx tx;
 +      struct statistics_general_bt general;
 +} __packed;
  
  /*
   * MISSED_BEACONS_NOTIFICATION = 0xa2 (notification only, not a command)
@@@ -3347,7 -3302,7 +3347,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;
  
  
  /**
@@@ -3660,10 -3615,10 +3660,10 @@@ enum 
        IWL_PHY_CALIBRATE_CRYSTAL_FRQ_CMD       = 15,
        IWL_PHY_CALIBRATE_BASE_BAND_CMD         = 16,
        IWL_PHY_CALIBRATE_TX_IQ_PERD_CMD        = 17,
 -      IWL_PHY_CALIBRATE_CHAIN_NOISE_RESET_CMD = 18,
 -      IWL_PHY_CALIBRATE_CHAIN_NOISE_GAIN_CMD  = 19,
 +      IWL_MAX_STANDARD_PHY_CALIBRATE_TBL_SIZE = 18,
  };
  
 +#define IWL_MAX_PHY_CALIBRATE_TBL_SIZE                (253)
  
  #define IWL_CALIB_INIT_CFG_ALL        cpu_to_le32(0xffffffff)
  
@@@ -3673,31 -3628,31 +3673,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 {
@@@ -3727,7 -3682,7 +3727,7 @@@ struct iwl_calib_chain_noise_gain_cmd 
        u8 delta_gain_1;
        u8 delta_gain_2;
        u8 pad[2];
- } __attribute__ ((packed));
+ } __packed;
  
  /******************************************************************************
   * (12)
@@@ -3750,7 -3705,7 +3750,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
@@@ -3886,7 -3841,7 +3886,7 @@@ struct iwl_wimax_coex_event_entry 
        u8 win_medium_prio;
        u8 reserved;
        u8 flags;
- } __attribute__ ((packed));
+ } __packed;
  
  /* COEX flag masks */
  
@@@ -3903,7 -3858,7 +3903,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
@@@ -3947,11 -3902,11 +3947,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;
  
  
  /******************************************************************************
@@@ -3988,7 -3943,6 +3988,7 @@@ struct iwl_rx_packet 
                struct iwl_sleep_notification sleep_notif;
                struct iwl_spectrum_resp spectrum;
                struct iwl_notif_statistics stats;
 +              struct iwl_bt_notif_statistics stats_bt;
                struct iwl_compressed_ba_resp compressed_ba;
                struct iwl_missed_beacon_notif missed_beacon;
                struct iwl_coex_medium_notification coex_medium_notif;
                __le32 status;
                u8 raw[0];
        } u;
- } __attribute__ ((packed));
+ } __packed;
  
  int iwl_agn_check_rxon_cmd(struct iwl_priv *priv);
  
index 5e4745db5dc6bff43e900f179a51826e51667f42,c4dba62b74af89557ef8e85207015921089c1f47..f35bcad56e36bd68779edb3acf930d6b7595359a
@@@ -138,7 -138,7 +138,7 @@@ struct iwl_queue 
                                * space more than this */
        int high_mark;         /* high watermark, stop queue if free
                                * space less than this */
- } __attribute__ ((packed));
+ } __packed;
  
  /* One for each TFD */
  struct iwl_tx_info {
@@@ -324,8 -324,8 +324,8 @@@ struct iwl_device_cmd 
                struct iwl_tx_cmd tx;
                struct iwl6000_channel_switch_cmd chswitch;
                u8 payload[DEF_CMD_PAYLOAD_SIZE];
-       } __attribute__ ((packed)) cmd;
- } __attribute__ ((packed));
+       } __packed cmd;
+ } __packed;
  
  #define TFD_MAX_PAYLOAD_SIZE (sizeof(struct iwl_device_cmd))
  
@@@ -571,7 -571,6 +571,7 @@@ enum iwl_ucode_tlv_type 
        IWL_UCODE_TLV_INIT_EVTLOG_SIZE  = 12,
        IWL_UCODE_TLV_INIT_ERRLOG_PTR   = 13,
        IWL_UCODE_TLV_ENHANCE_SENS_TBL  = 14,
 +      IWL_UCODE_TLV_PHY_CALIBRATION_SIZE = 15,
  };
  
  struct iwl_ucode_tlv {
        __le16 alternative;     /* see comment */
        __le32 length;          /* not including type/length fields */
        u8 data[0];
- } __attribute__ ((packed));
+ } __packed;
  
  #define IWL_TLV_UCODE_MAGIC   0x0a4c5749
  
@@@ -1154,9 -1153,6 +1154,9 @@@ struct iwl_priv 
        u32  hw_wa_rev;
        u8   rev_id;
  
 +      /* EEPROM MAC addresses */
 +      struct mac_address addresses[2];
 +
        /* uCode images, save to reload in case of failure */
        int fw_index;                   /* firmware we're trying to load */
        u32 ucode_ver;                  /* version of ucode, copy of
                        u32 init_evtlog_ptr, init_evtlog_size, init_errlog_ptr;
                        u32 inst_evtlog_ptr, inst_evtlog_size, inst_errlog_ptr;
  
 +                      /*
 +                       * chain noise reset and gain commands are the
 +                       * two extra calibration commands follows the standard
 +                       * phy calibration commands
 +                       */
 +                      u8 phy_calib_chain_noise_reset_cmd;
 +                      u8 phy_calib_chain_noise_gain_cmd;
 +
                        struct iwl_notif_statistics statistics;
 +                      struct iwl_bt_notif_statistics statistics_bt;
  #ifdef CONFIG_IWLWIFI_DEBUGFS
                        struct iwl_notif_statistics accum_statistics;
                        struct iwl_notif_statistics delta_statistics;
                        struct iwl_notif_statistics max_delta;
 +                      struct iwl_bt_notif_statistics accum_statistics_bt;
 +                      struct iwl_bt_notif_statistics delta_statistics_bt;
 +                      struct iwl_bt_notif_statistics max_delta_bt;
  #endif
                } _agn;
  #endif
index 3209b37997b64e338ac74e000c1ab2cc76f9e1ed,3452dfa7b571b469c6c416a54d3a99dcb0ba4491..a4772aff51fe0479fc5e522a4a1c59df18a68de2
@@@ -118,7 -118,7 +118,7 @@@ enum 
  struct iwl_eeprom_channel {
        u8 flags;               /* EEPROM_CHANNEL_* flags copied from EEPROM */
        s8 max_power_avg;       /* max power (dBm) on this chnl, limit 31 */
- } __attribute__ ((packed));
+ } __packed;
  
  /**
   * iwl_eeprom_enhanced_txpwr structure
@@@ -144,7 -144,7 +144,7 @@@ struct iwl_eeprom_enhanced_txpwr 
        s8 reserved;
        s8 mimo2_max;
        s8 mimo3_max;
- } __attribute__ ((packed));
+ } __packed;
  
  /* 3945 Specific */
  #define EEPROM_3945_EEPROM_VERSION    (0x2f)
@@@ -316,7 -316,7 +316,7 @@@ struct iwl_eeprom_calib_measure 
        u8 gain_idx;            /* Index into gain table */
        u8 actual_pow;          /* Measured RF output power, half-dBm */
        s8 pa_det;              /* Power amp detector level (not used) */
- } __attribute__ ((packed));
+ } __packed;
  
  
  /*
@@@ -332,7 -332,7 +332,7 @@@ struct iwl_eeprom_calib_ch_info 
        struct iwl_eeprom_calib_measure
                measurements[EEPROM_TX_POWER_TX_CHAINS]
                        [EEPROM_TX_POWER_MEASUREMENTS];
- } __attribute__ ((packed));
+ } __packed;
  
  /*
   * txpower subband info.
@@@ -349,7 -349,7 +349,7 @@@ struct iwl_eeprom_calib_subband_info 
        u8 ch_to;       /* channel number of highest channel in subband */
        struct iwl_eeprom_calib_ch_info ch1;
        struct iwl_eeprom_calib_ch_info ch2;
- } __attribute__ ((packed));
+ } __packed;
  
  
  /*
@@@ -378,7 -378,7 +378,7 @@@ struct iwl_eeprom_calib_info 
        __le16 voltage;         /* signed */
        struct iwl_eeprom_calib_subband_info
                band_info[EEPROM_TX_POWER_BANDS];
- } __attribute__ ((packed));
+ } __packed;
  
  
  #define ADDRESS_MSK                 0x0000FFFF
  #define EEPROM_WOWLAN_MODE                  (2*0x47)  /* 2  bytes */
  #define EEPROM_RADIO_CONFIG                 (2*0x48)  /* 2  bytes */
  #define EEPROM_3945_M_VERSION               (2*0x4A)  /* 1  bytes */
 +#define EEPROM_NUM_MAC_ADDRESS              (2*0x4C)  /* 2  bytes */
  
  /* The following masks are to be applied on EEPROM_RADIO_CONFIG */
  #define EEPROM_RF_CFG_TYPE_MSK(x)   (x & 0x3)         /* bits 0-1   */
index d70355cff90842cb3ceb51bfc07723b2a21a5c19,db8e209878c1ec3054d495d56d33dd4ba9b21bb8..43d020cd7403cd8b74cb22c81996af1206001735
@@@ -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
index e3f130c4eaff8beb6ed8167baca4104675873f96,c019fdc131c0a0f24ed382607044d398c0abedb2..0e34260b22b16bad413f0826a014a36b88084fe8
@@@ -314,15 -314,13 +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);
@@@ -428,7 -426,7 +428,7 @@@ struct mwl8k_cmd_pkt 
        __u8    macid;
        __le16  result;
        char    payload[0];
- } __attribute__((packed));
+ } __packed;
  
  /*
   * Firmware loading.
@@@ -634,7 -632,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)
@@@ -713,7 -711,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
@@@ -808,7 -806,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)
@@@ -1122,7 -1120,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
  
@@@ -1540,7 -1538,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);
@@@ -1668,7 -1666,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
@@@ -1812,7 -1810,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);
@@@ -1885,7 -1883,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
@@@ -1987,7 -1985,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
@@@ -2031,7 -2029,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)
@@@ -2094,7 -2092,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)
  {
@@@ -2123,7 -2121,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
@@@ -2184,7 -2182,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)
  {
@@@ -2211,7 -2209,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)
@@@ -2242,7 -2240,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)
@@@ -2295,7 -2293,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)
  {
@@@ -2366,7 -2364,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,
@@@ -2399,7 -2397,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)
@@@ -2438,7 -2436,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)
@@@ -2468,7 -2466,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)
  {
@@@ -2530,7 -2528,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
@@@ -2581,7 -2579,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)
  {
@@@ -2614,7 -2612,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)
  {
@@@ -2654,7 -2652,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
@@@ -2696,7 -2694,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)
  {
@@@ -2759,7 -2757,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
@@@ -2814,7 -2812,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)
@@@ -2887,7 -2885,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
@@@ -2980,7 -2978,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
@@@ -3054,7 -3052,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)
index b7864001e7e1659471d2426b2742a8488e51fbed,1558381998eed67f6e540e60cbfd87f8125b9f7a..a38a7bd25f1916431bcf607a89bf4a0c126d5f8a
@@@ -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);
index 22d938414f0d97ab7f43c3dfceb8dd97fcfe04ee,978519d1ff4cd780f4a00280a8c4242b43c96cfc..1615f63b02f6128f781364f86a8780b7bdaf9c21
@@@ -185,7 -185,7 +185,7 @@@ struct rtl818x_csr 
        u8      reserved_22[4];
        __le16  TALLY_CNT;
        u8      TALLY_SEL;
- } __attribute__((packed));
+ } __packed;
  
  struct rtl818x_rf_ops {
        char *name;
        void (*stop)(struct ieee80211_hw *);
        void (*set_chan)(struct ieee80211_hw *, struct ieee80211_conf *);
        void (*conf_erp)(struct ieee80211_hw *, struct ieee80211_bss_conf *);
 +      u8 (*calc_rssi)(u8 agc, u8 sq);
  };
  
  /**
index ca1cb24d663f1faf9e957487c913351e93f4865d,7e70dd5a21b804a84d8b36d2f9d706b14f3c2b9f..a9e4991369be5d47d3a1de2f9029649476b324f0
@@@ -106,7 -106,7 +106,7 @@@ struct wl1251_cmd_header 
        u16 status;
        /* payload */
        u8 data[0];
- } __attribute__ ((packed));
+ } __packed;
  
  struct  wl1251_command {
        struct wl1251_cmd_header header;
@@@ -175,8 -175,8 +175,8 @@@ struct cmd_read_write_memory 
  #define WL1251_SCAN_NUM_PROBES 3
  
  struct wl1251_scan_parameters {
 -      u32 rx_config_options;
 -      u32 rx_filter_options;
 +      __le32 rx_config_options;
 +      __le32 rx_filter_options;
  
        /*
         * Scan options:
         * bit 2: voice mode, 0 for normal scan.
         * bit 3: scan priority, 1 for high priority.
         */
 -      u16 scan_options;
 +      __le16 scan_options;
  
        /* Number of channels to scan */
        u8 num_channels;
        u8 num_probe_requests;
  
        /* Rate and modulation for probe requests */
 -      u16 tx_rate;
 +      __le16 tx_rate;
  
        u8 tid_trigger;
        u8 ssid_len;
        u8 ssid[32];
  
- } __attribute__ ((packed));
+ } __packed;
  
  struct wl1251_scan_ch_parameters {
 -      u32 min_duration; /* in TU */
 -      u32 max_duration; /* in TU */
 +      __le32 min_duration; /* in TU */
 +      __le32 max_duration; /* in TU */
        u32 bssid_lsb;
        u16 bssid_msb;
  
        u8 tx_power_att;
        u8 channel;
        u8 pad[3];
- } __attribute__ ((packed));
+ } __packed;
  
  /* SCAN parameters */
  #define SCAN_MAX_NUM_OF_CHANNELS 16
@@@ -228,7 -228,7 +228,7 @@@ struct wl1251_cmd_scan 
  
        struct wl1251_scan_parameters params;
        struct wl1251_scan_ch_parameters channels[SCAN_MAX_NUM_OF_CHANNELS];
- } __attribute__ ((packed));
+ } __packed;
  
  enum {
        BSS_TYPE_IBSS = 0,
@@@ -276,14 -276,14 +276,14 @@@ struct cmd_join 
        u8 tx_mgt_frame_rate; /* OBSOLETE */
        u8 tx_mgt_frame_mod;  /* OBSOLETE */
        u8 reserved;
- } __attribute__ ((packed));
+ } __packed;
  
  struct cmd_enabledisable_path {
        struct wl1251_cmd_header header;
  
        u8 channel;
        u8 padding[3];
- } __attribute__ ((packed));
+ } __packed;
  
  #define WL1251_MAX_TEMPLATE_SIZE 300
  
@@@ -292,7 -292,7 +292,7 @@@ struct wl1251_cmd_packet_template 
  
        __le16 size;
        u8 data[0];
- } __attribute__ ((packed));
+ } __packed;
  
  #define TIM_ELE_ID    5
  #define PARTIAL_VBM_MAX    251
@@@ -304,7 -304,7 +304,7 @@@ struct wl1251_tim 
        u8 dtim_period;
        u8 bitmap_ctrl;
        u8 pvb_field[PARTIAL_VBM_MAX]; /* Partial Virtual Bitmap */
- } __attribute__ ((packed));
+ } __packed;
  
  /* Virtual Bit Map update */
  struct wl1251_cmd_vbm_update {
        __le16 len;
        u8  padding[2];
        struct wl1251_tim tim;
- } __attribute__ ((packed));
+ } __packed;
  
  enum wl1251_cmd_ps_mode {
        STATION_ACTIVE_MODE,
@@@ -333,7 -333,7 +333,7 @@@ struct wl1251_cmd_ps_params 
        u8 hang_over_period;
        u16 null_data_rate;
        u8 pad[2];
- } __attribute__ ((packed));
+ } __packed;
  
  struct wl1251_cmd_trigger_scan_to {
        struct wl1251_cmd_header header;
@@@ -411,7 -411,7 +411,7 @@@ struct wl1251_cmd_set_keys 
        u8 key[MAX_KEY_SIZE];
        u16 ac_seq_num16[NUM_ACCESS_CATEGORIES_COPY];
        u32 ac_seq_num32[NUM_ACCESS_CATEGORIES_COPY];
- } __attribute__ ((packed));
+ } __packed;
  
  
  #endif /* __WL1251_CMD_H__ */
index dff127f4fa8a3c323288a94f167355ce00a7ec93,65c4be8c2e80374bb204d7eb75b5be7a0f51b7bd..f40eeb37f5aaf590a84a989a3bfdd93636fe5205
@@@ -109,12 -109,12 +109,12 @@@ struct tx_control 
        unsigned xfer_pad:1;
  
        unsigned reserved:7;
- } __attribute__ ((packed));
+ } __packed;
  
  
  struct tx_double_buffer_desc {
        /* Length of payload, including headers. */
 -      u16 length;
 +      __le16 length;
  
        /*
         * A bit mask that specifies the initial rate to be used
         * 0x0800 - 48Mbits
         * 0x1000 - 54Mbits
         */
 -      u16 rate;
 +      __le16 rate;
  
        /* Time in us that a packet can spend in the target */
 -      u32 expiry_time;
 +      __le32 expiry_time;
  
        /* index of the TX queue used for this packet */
        u8 xmit_queue;
         * The FW should cut the packet into fragments
         * of this size.
         */
 -      u16 frag_threshold;
 +      __le16 frag_threshold;
  
        /* Numbers of HW queue blocks to be allocated */
        u8 num_mem_blocks;
  
        u8 reserved;
- } __attribute__ ((packed));
+ } __packed;
  
  enum {
        TX_SUCCESS              = 0,
@@@ -208,7 -208,7 +208,7 @@@ struct tx_result 
  
        /* See done_1 */
        u8 done_2;
- } __attribute__ ((packed));
+ } __packed;
  
  static inline int wl1251_tx_get_queue(int queue)
  {
diff --combined include/net/cfg80211.h
index f68ae54cdae66143a0d8839fa8eb3fcc4bb3c132,168fe530b214dfd0a301017fd3988b359b55301b..4d1f19d70798b2a6521eb2fcab142a993751732a
@@@ -1358,26 -1358,15 +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
@@@ -1963,10 -1952,6 +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 net/mac80211/cfg.c
index db82da90df76c8802ba3f5ce841183833101212d,5e56e91c92c47f7b7ff97b0117ca5a9654cb5997..b769567949be506586809570c2d92827f5912b67
@@@ -324,10 -324,15 +324,10 @@@ static int ieee80211_config_default_mgm
                                             struct net_device *dev,
                                             u8 key_idx)
  {
 -      struct ieee80211_sub_if_data *sdata;
 -
 -      rcu_read_lock();
 +      struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
  
 -      sdata = IEEE80211_DEV_TO_SUB_IF(dev);
        ieee80211_set_default_mgmt_key(sdata, key_idx);
  
 -      rcu_read_unlock();
 -
        return 0;
  }
  
@@@ -595,7 -600,7 +595,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)
  {
@@@ -1149,6 -1154,10 +1149,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;
  }
  
index c6b5c2d3ffde5938f79e26becf6d42de46fcc4e7,a3649a86a784fc088bd6d32927e59d3eb2c288c4..ef470064b15426a938070196a1456ba2c6934658
@@@ -377,11 -377,14 +377,11 @@@ struct ieee80211_if_managed 
        int last_cqm_event_signal;
  };
  
 -enum ieee80211_ibss_request {
 -      IEEE80211_IBSS_REQ_RUN  = 0,
 -};
 -
  struct ieee80211_if_ibss {
        struct timer_list timer;
  
 -      unsigned long request;
 +      struct mutex mtx;
 +
        unsigned long last_scan_completed;
  
        u32 basic_rates;
@@@ -1090,7 -1093,7 +1090,7 @@@ struct ieee80211_tx_status_rtap_hdr 
        u8 padding_for_rate;
        __le16 tx_flags;
        u8 data_retries;
- } __attribute__ ((packed));
+ } __packed;
  
  
  /* HT */