Up to now, we were using ACX_PACKED after every field. I've finally
found out how to use only one at the end of each struct whilst
maintaining the typedef where it is now.

This should also apply to acx with a bit of fuzz, but I consider it to
be in maintenance mode, so this doesn't qualify for it.

Signed-off-by: Carlos Martin <[EMAIL PROTECTED]>

---

 acx_struct.h |  874 +++++++++++++++++++++++++++++-----------------------------
 common.c     |   26 +-
 ioctl.c      |   10 -
 usb.c        |    8 -
 4 files changed, 457 insertions(+), 461 deletions(-)

5fb2fdfd8c028a40921bbf9ef7ec4c53c03fcab4
diff --git a/acx_struct.h b/acx_struct.h
index 227b6e3..8c92302 100644
--- a/acx_struct.h
+++ b/acx_struct.h
@@ -522,9 +522,9 @@ DEF_IE(111_IE_DOT11_INVAL_1013,                     0x1013
  * --vda
  */
 typedef struct phy_hdr {
-       u8      unknown[4] ACX_PACKED;
-       u8      acx111_unknown[4] ACX_PACKED;
-} phy_hdr_t;
+       u8      unknown[4];
+       u8      acx111_unknown[4];
+} ACX_PACKED phy_hdr_t;
 
 /* seems to be a bit similar to hfa384x_rx_frame.
  * These fields are still not quite obvious, though.
@@ -584,22 +584,22 @@ time: 4 bytes:
 */
 
 typedef struct rxbuffer {
-       u16     mac_cnt_rcvd ACX_PACKED;        /* only 12 bits are len! 
(0xfff) */
-       u8      mac_cnt_mblks ACX_PACKED;
-       u8      mac_status ACX_PACKED;
-       u8      phy_stat_baseband ACX_PACKED;   /* bit 0x80: used LNA 
(Low-Noise Amplifier) */
-       u8      phy_plcp_signal ACX_PACKED;
-       u8      phy_level ACX_PACKED;           /* PHY stat */
-       u8      phy_snr ACX_PACKED;             /* PHY stat */
-       u32     time ACX_PACKED;                /* timestamp upon MAC rcv first 
byte */
+       u16     mac_cnt_rcvd;   /* only 12 bits are len! (0xfff) */
+       u8      mac_cnt_mblks;
+       u8      mac_status;
+       u8      phy_stat_baseband;      /* bit 0x80: used LNA (Low-Noise 
Amplifier) */
+       u8      phy_plcp_signal;
+       u8      phy_level;              /* PHY stat */
+       u8      phy_snr;                /* PHY stat */
+       u32     time;           /* timestamp upon MAC rcv first byte */
 /* 4-byte (acx100) or 8-byte (acx111) phy header will be here
 ** if RX_CFG1_INCLUDE_PHY_HDR is in effect:
 **     phy_hdr_t phy                   */
-       wlan_hdr_a3_t hdr_a3 ACX_PACKED;
+       wlan_hdr_a3_t hdr_a3;
        /* maximally sized data part of wlan packet */
-       u8      data_a3[WLAN_A4FR_MAXLEN_WEP_FCS - WLAN_HDR_A3_LEN] ACX_PACKED;
+       u8      data_a3[WLAN_A4FR_MAXLEN_WEP_FCS - WLAN_HDR_A3_LEN];
        /* can add hdr/data_a4 if needed */
-} rxbuffer_t;
+} ACX_PACKED rxbuffer_t;
 
 
 /*--- Firmware statistics 
----------------------------------------------------*/
@@ -609,93 +609,93 @@ typedef struct rxbuffer {
 #define FW_STATS_FUTURE_EXTENSION      100
 
 typedef struct fw_stats_tx {
-       u32     tx_desc_of ACX_PACKED;
-} fw_stats_tx_t;
+       u32     tx_desc_of;
+} ACX_PACKED fw_stats_tx_t;
 
 typedef struct fw_stats_rx {
-       u32     rx_oom ACX_PACKED;
-       u32     rx_hdr_of ACX_PACKED;
-       u32     rx_hw_stuck ACX_PACKED; /* old: u32     rx_hdr_use_next */
-       u32     rx_dropped_frame ACX_PACKED;
-       u32     rx_frame_ptr_err ACX_PACKED;
-       u32     rx_xfr_hint_trig ACX_PACKED;
-       u32     rx_aci_events ACX_PACKED; /* later versions only */
-       u32     rx_aci_resets ACX_PACKED; /* later versions only */
-} fw_stats_rx_t;
+       u32     rx_oom;
+       u32     rx_hdr_of;
+       u32     rx_hw_stuck; /* old: u32        rx_hdr_use_next */
+       u32     rx_dropped_frame;
+       u32     rx_frame_ptr_err;
+       u32     rx_xfr_hint_trig;
+       u32     rx_aci_events; /* later versions only */
+       u32     rx_aci_resets; /* later versions only */
+} ACX_PACKED fw_stats_rx_t;
 
 typedef struct fw_stats_dma {
-       u32     rx_dma_req ACX_PACKED;
-       u32     rx_dma_err ACX_PACKED;
-       u32     tx_dma_req ACX_PACKED;
-       u32     tx_dma_err ACX_PACKED;
-} fw_stats_dma_t;
+       u32     rx_dma_req;
+       u32     rx_dma_err;
+       u32     tx_dma_req;
+       u32     tx_dma_err;
+} ACX_PACKED fw_stats_dma_t;
 
 typedef struct fw_stats_irq {
-       u32     cmd_cplt ACX_PACKED;
-       u32     fiq ACX_PACKED;
-       u32     rx_hdrs ACX_PACKED;
-       u32     rx_cmplt ACX_PACKED;
-       u32     rx_mem_of ACX_PACKED;
-       u32     rx_rdys ACX_PACKED;
-       u32     irqs ACX_PACKED;
-       u32     tx_procs ACX_PACKED;
-       u32     decrypt_done ACX_PACKED;
-       u32     dma_0_done ACX_PACKED;
-       u32     dma_1_done ACX_PACKED;
-       u32     tx_exch_complet ACX_PACKED;
-       u32     commands ACX_PACKED;
-       u32     rx_procs ACX_PACKED;
-       u32     hw_pm_mode_changes ACX_PACKED;
-       u32     host_acks ACX_PACKED;
-       u32     pci_pm ACX_PACKED;
-       u32     acm_wakeups ACX_PACKED;
-} fw_stats_irq_t;
+       u32     cmd_cplt;
+       u32     fiq;
+       u32     rx_hdrs;
+       u32     rx_cmplt;
+       u32     rx_mem_of;
+       u32     rx_rdys;
+       u32     irqs;
+       u32     tx_procs;
+       u32     decrypt_done;
+       u32     dma_0_done;
+       u32     dma_1_done;
+       u32     tx_exch_complet;
+       u32     commands;
+       u32     rx_procs;
+       u32     hw_pm_mode_changes;
+       u32     host_acks;
+       u32     pci_pm;
+       u32     acm_wakeups;
+} ACX_PACKED fw_stats_irq_t;
 
 typedef struct fw_stats_wep {
-       u32     wep_key_count ACX_PACKED;
-       u32     wep_default_key_count ACX_PACKED;
-       u32     dot11_def_key_mib ACX_PACKED;
-       u32     wep_key_not_found ACX_PACKED;
-       u32     wep_decrypt_fail ACX_PACKED;
-       u32     wep_pkt_decrypt ACX_PACKED;
-       u32     wep_decrypt_irqs ACX_PACKED;
-} fw_stats_wep_t;
+       u32     wep_key_count;
+       u32     wep_default_key_count;
+       u32     dot11_def_key_mib;
+       u32     wep_key_not_found;
+       u32     wep_decrypt_fail;
+       u32     wep_pkt_decrypt;
+       u32     wep_decrypt_irqs;
+} ACX_PACKED fw_stats_wep_t;
 
 typedef struct fw_stats_pwr {
-       u32     tx_start_ctr ACX_PACKED;
-       u32     no_ps_tx_too_short ACX_PACKED;
-       u32     rx_start_ctr ACX_PACKED;
-       u32     no_ps_rx_too_short ACX_PACKED;
-       u32     lppd_started ACX_PACKED;
-       u32     no_lppd_too_noisy ACX_PACKED;
-       u32     no_lppd_too_short ACX_PACKED;
-       u32     no_lppd_matching_frame ACX_PACKED;
-} fw_stats_pwr_t;
+       u32     tx_start_ctr;
+       u32     no_ps_tx_too_short;
+       u32     rx_start_ctr;
+       u32     no_ps_rx_too_short;
+       u32     lppd_started;
+       u32     no_lppd_too_noisy;
+       u32     no_lppd_too_short;
+       u32     no_lppd_matching_frame;
+} ACX_PACKED fw_stats_pwr_t;
 
 typedef struct fw_stats_mic {
-       u32 mic_rx_pkts ACX_PACKED;
-       u32 mic_calc_fail ACX_PACKED;
-} fw_stats_mic_t;
+       u32 mic_rx_pkts;
+       u32 mic_calc_fail;
+} ACX_PACKED fw_stats_mic_t;
 
 typedef struct fw_stats_aes {
-       u32 aes_enc_fail ACX_PACKED;
-       u32 aes_dec_fail ACX_PACKED;
-       u32 aes_enc_pkts ACX_PACKED;
-       u32 aes_dec_pkts ACX_PACKED;
-       u32 aes_enc_irq ACX_PACKED;
-       u32 aes_dec_irq ACX_PACKED;
-} fw_stats_aes_t;
+       u32 aes_enc_fail;
+       u32 aes_dec_fail;
+       u32 aes_enc_pkts;
+       u32 aes_dec_pkts;
+       u32 aes_enc_irq;
+       u32 aes_dec_irq;
+} ACX_PACKED fw_stats_aes_t;
 
 typedef struct fw_stats_event {
-       u32 heartbeat ACX_PACKED;
-       u32 calibration ACX_PACKED;
-       u32 rx_mismatch ACX_PACKED;
-       u32 rx_mem_empty ACX_PACKED;
-       u32 rx_pool ACX_PACKED;
-       u32 oom_late ACX_PACKED;
-       u32 phy_tx_err ACX_PACKED;
-       u32 tx_stuck ACX_PACKED;
-} fw_stats_event_t;
+       u32 heartbeat;
+       u32 calibration;
+       u32 rx_mismatch;
+       u32 rx_mem_empty;
+       u32 rx_pool;
+       u32 oom_late;
+       u32 phy_tx_err;
+       u32 tx_stuck;
+} ACX_PACKED fw_stats_event_t;
 
 /* mainly for size calculation only */
 typedef struct fw_stats {
@@ -716,11 +716,11 @@ typedef struct fw_stats {
 /* Firmware version struct */
 
 typedef struct fw_ver {
-       u16     cmd ACX_PACKED;
-       u16     size ACX_PACKED;
-       char    fw_id[20] ACX_PACKED;
-       u32     hw_id ACX_PACKED;
-} fw_ver_t;
+       u16     cmd;
+       u16     size;
+       char    fw_id[20];
+       u32     hw_id;
+} ACX_PACKED fw_ver_t;
 
 #define FW_ID_SIZE 20
 
@@ -789,8 +789,8 @@ struct client {
  * Attempts to use acx_ptr without macros result in compile-time errors */
 
 typedef struct {
-       u32     v ACX_PACKED;
-} acx_ptr;
+       u32     v;
+} ACX_PACKED acx_ptr;
 
 #if ACX_DEBUG
 #define CHECK32(n) BUG_ON(sizeof(n)>4 && (long)(n)>0xffffff00)
@@ -892,59 +892,59 @@ typedef struct {
 /* Outside of "#ifdef PCI" because USB needs to know sizeof()
 ** of txdesc and rxdesc: */
 struct txdesc {
-       acx_ptr pNextDesc ACX_PACKED;   /* pointer to next txdesc */
-       acx_ptr HostMemPtr ACX_PACKED;                  /* 0x04 */
-       acx_ptr AcxMemPtr ACX_PACKED;                   /* 0x08 */
-       u32     tx_time ACX_PACKED;                     /* 0x0c */
-       u16     total_length ACX_PACKED;                /* 0x10 */
-       u16     Reserved ACX_PACKED;                    /* 0x12 */
+       acx_ptr pNextDesc;      /* pointer to next txdesc */
+       acx_ptr HostMemPtr;                     /* 0x04 */
+       acx_ptr AcxMemPtr;                      /* 0x08 */
+       u32     tx_time;                        /* 0x0c */
+       u16     total_length;           /* 0x10 */
+       u16     Reserved;                       /* 0x12 */
 
 /* The following 16 bytes do not change when acx100 owns the descriptor */
 /* BUG: fw clears last byte of this area which is supposedly reserved
 ** for driver use. amd64 blew up. We dare not use it now */
-       u32     dummy[4] ACX_PACKED;
+       u32     dummy[4];
 
-       u8      Ctl_8 ACX_PACKED;                       /* 0x24, 8bit value */
-       u8      Ctl2_8 ACX_PACKED;                      /* 0x25, 8bit value */
-       u8      error ACX_PACKED;                       /* 0x26 */
-       u8      ack_failures ACX_PACKED;                /* 0x27 */
-       u8      rts_failures ACX_PACKED;                /* 0x28 */
-       u8      rts_ok ACX_PACKED;                      /* 0x29 */
+       u8      Ctl_8;                  /* 0x24, 8bit value */
+       u8      Ctl2_8;                 /* 0x25, 8bit value */
+       u8      error;                  /* 0x26 */
+       u8      ack_failures;           /* 0x27 */
+       u8      rts_failures;           /* 0x28 */
+       u8      rts_ok;                 /* 0x29 */
        union {
                struct {
-                       u8      rate ACX_PACKED;        /* 0x2a */
-                       u8      queue_ctrl ACX_PACKED;  /* 0x2b */
-               } r1 ACX_PACKED;
+                       u8      rate;   /* 0x2a */
+                       u8      queue_ctrl;     /* 0x2b */
+               } ACX_PACKED r1;
                struct {
-                       u16     rate111 ACX_PACKED;     /* 0x2a */
-               } r2 ACX_PACKED;
-       } u ACX_PACKED;
-       u32     queue_info ACX_PACKED;                  /* 0x2c (acx100, 
reserved on acx111) */
-};             /* size : 48 = 0x30 */
+                       u16     rate111;        /* 0x2a */
+               } ACX_PACKED r2;
+       } u;
+       u32     queue_info;                     /* 0x2c (acx100, reserved on 
acx111) */
+} ACX_PACKED;          /* size : 48 = 0x30 */
 /* NB: acx111 txdesc structure is 4 byte larger */
 /* All these 4 extra bytes are reserved. tx alloc code takes them into account 
*/
 
 struct rxdesc {
-       acx_ptr pNextDesc ACX_PACKED;                   /* 0x00 */
-       acx_ptr HostMemPtr ACX_PACKED;                  /* 0x04 */
-       acx_ptr ACXMemPtr ACX_PACKED;                   /* 0x08 */
-       u32     rx_time ACX_PACKED;                     /* 0x0c */
-       u16     total_length ACX_PACKED;                /* 0x10 */
-       u16     WEP_length ACX_PACKED;                  /* 0x12 */
-       u32     WEP_ofs ACX_PACKED;                     /* 0x14 */
+       acx_ptr pNextDesc;                      /* 0x00 */
+       acx_ptr HostMemPtr;                     /* 0x04 */
+       acx_ptr ACXMemPtr;                      /* 0x08 */
+       u32     rx_time;                        /* 0x0c */
+       u16     total_length;           /* 0x10 */
+       u16     WEP_length;                     /* 0x12 */
+       u32     WEP_ofs;                        /* 0x14 */
 
 /* the following 16 bytes do not change when acx100 owns the descriptor */
-       u8      driverWorkspace[16] ACX_PACKED;         /* 0x18 */
+       u8      driverWorkspace[16];            /* 0x18 */
 
-       u8      Ctl_8 ACX_PACKED;
-       u8      rate ACX_PACKED;
-       u8      error ACX_PACKED;
-       u8      SNR ACX_PACKED;                         /* Signal-to-Noise 
Ratio */
-       u8      RxLevel ACX_PACKED;
-       u8      queue_ctrl ACX_PACKED;
-       u16     unknown ACX_PACKED;
-       u32     unknown2 ACX_PACKED;
-};             /* size 52 = 0x34 */
+       u8      Ctl_8;
+       u8      rate;
+       u8      error;
+       u8      SNR;                            /* Signal-to-Noise Ratio */
+       u8      RxLevel;
+       u8      queue_ctrl;
+       u16     unknown;
+       u32     unknown2;
+} ACX_PACKED;          /* size 52 = 0x34 */
 
 #ifdef ACX_PCI
 
@@ -1013,30 +1013,30 @@ enum {
 #define INT_TRIG_CMD           0x01
 
 struct txhostdesc {
-       acx_ptr data_phy ACX_PACKED;                    /* 0x00 [u8 *] */
-       u16     data_offset ACX_PACKED;                 /* 0x04 */
-       u16     reserved ACX_PACKED;                    /* 0x06 */
-       u16     Ctl_16 ACX_PACKED;      /* 16bit value, endianness!! */
-       u16     length ACX_PACKED;                      /* 0x0a */
-       acx_ptr desc_phy_next ACX_PACKED;               /* 0x0c [txhostdesc *] 
*/
-       acx_ptr pNext ACX_PACKED;                       /* 0x10 [txhostdesc *] 
*/
-       u32     Status ACX_PACKED;                      /* 0x14, unused on Tx */
+       acx_ptr data_phy;                       /* 0x00 [u8 *] */
+       u16     data_offset;                    /* 0x04 */
+       u16     reserved;                       /* 0x06 */
+       u16     Ctl_16; /* 16bit value, endianness!! */
+       u16     length;                 /* 0x0a */
+       acx_ptr desc_phy_next;          /* 0x0c [txhostdesc *] */
+       acx_ptr pNext;                  /* 0x10 [txhostdesc *] */
+       u32     Status;                 /* 0x14, unused on Tx */
 /* From here on you can use this area as you want (variable length, too!) */
-       u8      *data ACX_PACKED;
-};
+       u8      *data;
+} ACX_PACKED;
 
 struct rxhostdesc {
-       acx_ptr data_phy ACX_PACKED;                    /* 0x00 [rxbuffer_t *] 
*/
-       u16     data_offset ACX_PACKED;                 /* 0x04 */
-       u16     reserved ACX_PACKED;                    /* 0x06 */
-       u16     Ctl_16 ACX_PACKED;                      /* 0x08; 16bit value, 
endianness!! */
-       u16     length ACX_PACKED;                      /* 0x0a */
-       acx_ptr desc_phy_next ACX_PACKED;               /* 0x0c [rxhostdesc_t 
*] */
-       acx_ptr pNext ACX_PACKED;                       /* 0x10 [rxhostdesc_t 
*] */
-       u32     Status ACX_PACKED;                      /* 0x14 */
+       acx_ptr data_phy;                       /* 0x00 [rxbuffer_t *] */
+       u16     data_offset;                    /* 0x04 */
+       u16     reserved;                       /* 0x06 */
+       u16     Ctl_16;                 /* 0x08; 16bit value, endianness!! */
+       u16     length;                 /* 0x0a */
+       acx_ptr desc_phy_next;          /* 0x0c [rxhostdesc_t *] */
+       acx_ptr pNext;                  /* 0x10 [rxhostdesc_t *] */
+       u32     Status;                 /* 0x14 */
 /* From here on you can use this area as you want (variable length, too!) */
-       rxbuffer_t *data ACX_PACKED;
-};
+       rxbuffer_t *data;
+} ACX_PACKED;
 
 #endif /* ACX_PCI */
 
@@ -1050,30 +1050,30 @@ struct rxhostdesc {
 /* Size of header (everything up to data[]) */
 #define USB_TXBUF_HDRSIZE      14
 typedef struct usb_txbuffer {
-       u16     desc ACX_PACKED;
-       u16     mpdu_len ACX_PACKED;
-       u8      queue_index ACX_PACKED;
-       u8      rate ACX_PACKED;
-       u32     hostdata ACX_PACKED;
-       u8      ctrl1 ACX_PACKED;
-       u8      ctrl2 ACX_PACKED;
-       u16     data_len ACX_PACKED;
+       u16     desc;
+       u16     mpdu_len;
+       u8      queue_index;
+       u8      rate;
+       u32     hostdata;
+       u8      ctrl1;
+       u8      ctrl2;
+       u16     data_len;
        /* wlan packet content is placed here: */
-       u8      data[WLAN_A4FR_MAXLEN_WEP_FCS] ACX_PACKED;
-} usb_txbuffer_t;
+       u8      data[WLAN_A4FR_MAXLEN_WEP_FCS];
+} ACX_PACKED usb_txbuffer_t;
 
 /* USB returns either rx packets (see rxbuffer) or
 ** these "tx status" structs: */
 typedef struct usb_txstatus {
-       u16     mac_cnt_rcvd ACX_PACKED;        /* only 12 bits are len! 
(0xfff) */
-       u8      queue_index ACX_PACKED;
-       u8      mac_status ACX_PACKED;          /* seen 0x20 on tx failure */
-       u32     hostdata ACX_PACKED;
-       u8      rate ACX_PACKED;
-       u8      ack_failures ACX_PACKED;
-       u8      rts_failures ACX_PACKED;
-       u8      rts_ok ACX_PACKED;
-} usb_txstatus_t;
+       u16     mac_cnt_rcvd;   /* only 12 bits are len! (0xfff) */
+       u8      queue_index;
+       u8      mac_status;             /* seen 0x20 on tx failure */
+       u32     hostdata;
+       u8      rate;
+       u8      ack_failures;
+       u8      rts_failures;
+       u8      rts_ok;
+} ACX_PACKED usb_txstatus_t;
 
 typedef struct usb_tx {
        unsigned        busy:1;
@@ -1104,72 +1104,71 @@ typedef struct usb_rx {
 /* Config Option structs */
 
 typedef struct co_antennas {
-       u8      type ACX_PACKED;
-       u8      len ACX_PACKED;
-       u8      list[2] ACX_PACKED;
-} co_antennas_t;
+       u8      type;
+       u8      len;
+       u8      list[2];
+} ACX_PACKED co_antennas_t;
 
 typedef struct co_powerlevels {
-       u8      type ACX_PACKED;
-       u8      len ACX_PACKED;
-       u16     list[8] ACX_PACKED;
-} co_powerlevels_t;
+       u8      type;
+       u8      len;
+       u16     list[8];
+} ACX_PACKED co_powerlevels_t;
 
 typedef struct co_datarates {
-       u8      type ACX_PACKED;
-       u8      len ACX_PACKED;
-       u8      list[8] ACX_PACKED;
-} co_datarates_t;
+       u8      type;
+       u8      len;
+       u8      list[8];
+} ACX_PACKED co_datarates_t;
 
 typedef struct co_domains {
-       u8      type ACX_PACKED;
-       u8      len ACX_PACKED;
-       u8      list[6] ACX_PACKED;
-} co_domains_t;
+       u8      type;
+       u8      len;
+       u8      list[6];
+} ACX_PACKED co_domains_t;
 
 typedef struct co_product_id {
-       u8      type ACX_PACKED;
-       u8      len ACX_PACKED;
-       u8      list[128] ACX_PACKED;
-} co_product_id_t;
+       u8      type;
+       u8      len;
+       u8      list[128];
+} ACX_PACKED co_product_id_t;
 
 typedef struct co_manuf_id {
-       u8      type ACX_PACKED;
-       u8      len ACX_PACKED;
-       u8      list[128] ACX_PACKED;
-} co_manuf_t;
+       u8      type;
+       u8      len;
+       u8      list[128];
+} ACX_PACKED co_manuf_t;
 
 typedef struct co_fixed {
-       char    NVSv[8] ACX_PACKED;
+       char    NVSv[8];
 /*     u16     NVS_vendor_offs;        ACX111-only */
 /*     u16     unknown;                ACX111-only */
-       u8      MAC[6] ACX_PACKED;      /* ACX100-only */
-       u16     probe_delay ACX_PACKED; /* ACX100-only */
-       u32     eof_memory ACX_PACKED;
-       u8      dot11CCAModes ACX_PACKED;
-       u8      dot11Diversity ACX_PACKED;
-       u8      dot11ShortPreambleOption ACX_PACKED;
-       u8      dot11PBCCOption ACX_PACKED;
-       u8      dot11ChannelAgility ACX_PACKED;
-       u8      dot11PhyType ACX_PACKED; /* FIXME: does 802.11 call it 
"dot11PHYType"? */
-       u8      dot11TempType ACX_PACKED;
-       u8      table_count ACX_PACKED;
-} co_fixed_t;
+       u8      MAC[6]; /* ACX100-only */
+       u16     probe_delay;    /* ACX100-only */
+       u32     eof_memory;
+       u8      dot11CCAModes;
+       u8      dot11Diversity;
+       u8      dot11ShortPreambleOption;
+       u8      dot11PBCCOption;
+       u8      dot11ChannelAgility;
+       u8      dot11PhyType; /* FIXME: does 802.11 call it "dot11PHYType"? */
+       u8      dot11TempType;
+       u8      table_count;
+} ACX_PACKED co_fixed_t;
 
 typedef struct acx111_ie_configoption {
-       u16                     type ACX_PACKED;
-       u16                     len ACX_PACKED;
+       u16                     type;
+       u16                     len;
 /* Do not access below members directly, they are in fact variable length */
-       co_fixed_t              fixed ACX_PACKED;
-       co_antennas_t           antennas ACX_PACKED;
-       co_powerlevels_t        power_levels ACX_PACKED;
-       co_datarates_t          data_rates ACX_PACKED;
-       co_domains_t            domains ACX_PACKED;
-       co_product_id_t         product_id ACX_PACKED;
-       co_manuf_t              manufacturer ACX_PACKED;
+       co_fixed_t              fixed;
+       co_antennas_t           antennas;
+       co_powerlevels_t        power_levels;
+       co_datarates_t          data_rates;
+       co_domains_t            domains;
+       co_product_id_t         product_id;
+       co_manuf_t              manufacturer;
        u8                      _padding[4];
-} acx111_ie_configoption_t;
-
+} ACX_PACKED acx111_ie_configoption_t;
 
 /***********************************************************************
 ** Main acx per-device data structure
@@ -1601,108 +1600,108 @@ ndev2adev(struct net_device *ndev)
 /***********************************************************************
 */
 typedef struct acx100_ie_memblocksize {
-       u16     type ACX_PACKED;
-       u16     len ACX_PACKED;
-       u16     size ACX_PACKED;
-} acx100_ie_memblocksize_t;
+       u16     type;
+       u16     len;
+       u16     size;
+} ACX_PACKED acx100_ie_memblocksize_t;
 
 typedef struct acx100_ie_queueconfig {
-       u16     type ACX_PACKED;
-       u16     len ACX_PACKED;
-       u32     AreaSize ACX_PACKED;
-       u32     RxQueueStart ACX_PACKED;
-       u8      QueueOptions ACX_PACKED;
-       u8      NumTxQueues ACX_PACKED;
-       u8      NumRxDesc ACX_PACKED;    /* for USB only */
-       u8      pad1 ACX_PACKED;
-       u32     QueueEnd ACX_PACKED;
-       u32     HostQueueEnd ACX_PACKED; /* QueueEnd2 */
-       u32     TxQueueStart ACX_PACKED;
-       u8      TxQueuePri ACX_PACKED;
-       u8      NumTxDesc ACX_PACKED;
-       u16     pad2 ACX_PACKED;
-} acx100_ie_queueconfig_t;
+       u16     type;
+       u16     len;
+       u32     AreaSize;
+       u32     RxQueueStart;
+       u8      QueueOptions;
+       u8      NumTxQueues;
+       u8      NumRxDesc;       /* for USB only */
+       u8      pad1;
+       u32     QueueEnd;
+       u32     HostQueueEnd; /* QueueEnd2 */
+       u32     TxQueueStart;
+       u8      TxQueuePri;
+       u8      NumTxDesc;
+       u16     pad2;
+} ACX_PACKED acx100_ie_queueconfig_t;
 
 typedef struct acx111_ie_queueconfig {
-       u16     type ACX_PACKED;
-       u16     len ACX_PACKED;
-       u32     tx_memory_block_address ACX_PACKED;
-       u32     rx_memory_block_address ACX_PACKED;
-       u32     rx1_queue_address ACX_PACKED;
-       u32     reserved1 ACX_PACKED;
-       u32     tx1_queue_address ACX_PACKED;
-       u8      tx1_attributes ACX_PACKED;
-       u16     reserved2 ACX_PACKED;
-       u8      reserved3 ACX_PACKED;
-} acx111_ie_queueconfig_t;
+       u16     type;
+       u16     len;
+       u32     tx_memory_block_address;
+       u32     rx_memory_block_address;
+       u32     rx1_queue_address;
+       u32     reserved1;
+       u32     tx1_queue_address;
+       u8      tx1_attributes;
+       u16     reserved2;
+       u8      reserved3;
+} ACX_PACKED acx111_ie_queueconfig_t;
 
 typedef struct acx100_ie_memconfigoption {
-       u16     type ACX_PACKED;
-       u16     len ACX_PACKED;
-       u32     DMA_config ACX_PACKED;
-       acx_ptr pRxHostDesc ACX_PACKED;
-       u32     rx_mem ACX_PACKED;
-       u32     tx_mem ACX_PACKED;
-       u16     RxBlockNum ACX_PACKED;
-       u16     TxBlockNum ACX_PACKED;
-} acx100_ie_memconfigoption_t;
+       u16     type;
+       u16     len;
+       u32     DMA_config;
+       acx_ptr pRxHostDesc;
+       u32     rx_mem;
+       u32     tx_mem;
+       u16     RxBlockNum;
+       u16     TxBlockNum;
+} ACX_PACKED acx100_ie_memconfigoption_t;
 
 typedef struct acx111_ie_memoryconfig {
-       u16     type ACX_PACKED;
-       u16     len ACX_PACKED;
-       u16     no_of_stations ACX_PACKED;
-       u16     memory_block_size ACX_PACKED;
-       u8      tx_rx_memory_block_allocation ACX_PACKED;
-       u8      count_rx_queues ACX_PACKED;
-       u8      count_tx_queues ACX_PACKED;
-       u8      options ACX_PACKED;
-       u8      fragmentation ACX_PACKED;
-       u16     reserved1 ACX_PACKED;
-       u8      reserved2 ACX_PACKED;
+       u16     type;
+       u16     len;
+       u16     no_of_stations;
+       u16     memory_block_size;
+       u8      tx_rx_memory_block_allocation;
+       u8      count_rx_queues;
+       u8      count_tx_queues;
+       u8      options;
+       u8      fragmentation;
+       u16     reserved1;
+       u8      reserved2;
 
        /* start of rx1 block */
-       u8      rx_queue1_count_descs ACX_PACKED;
-       u8      rx_queue1_reserved1 ACX_PACKED;
-       u8      rx_queue1_type ACX_PACKED; /* must be set to 7 */
-       u8      rx_queue1_prio ACX_PACKED; /* must be set to 0 */
-       acx_ptr rx_queue1_host_rx_start ACX_PACKED;
+       u8      rx_queue1_count_descs;
+       u8      rx_queue1_reserved1;
+       u8      rx_queue1_type; /* must be set to 7 */
+       u8      rx_queue1_prio; /* must be set to 0 */
+       acx_ptr rx_queue1_host_rx_start;
        /* end of rx1 block */
 
        /* start of tx1 block */
-       u8      tx_queue1_count_descs ACX_PACKED;
-       u8      tx_queue1_reserved1 ACX_PACKED;
-       u8      tx_queue1_reserved2 ACX_PACKED;
-       u8      tx_queue1_attributes ACX_PACKED;
+       u8      tx_queue1_count_descs;
+       u8      tx_queue1_reserved1;
+       u8      tx_queue1_reserved2;
+       u8      tx_queue1_attributes;
        /* end of tx1 block */
-} acx111_ie_memoryconfig_t;
+} ACX_PACKED acx111_ie_memoryconfig_t;
 
 typedef struct acx_ie_memmap {
-       u16     type ACX_PACKED;
-       u16     len ACX_PACKED;
-       u32     CodeStart ACX_PACKED;
-       u32     CodeEnd ACX_PACKED;
-       u32     WEPCacheStart ACX_PACKED;
-       u32     WEPCacheEnd ACX_PACKED;
-       u32     PacketTemplateStart ACX_PACKED;
-       u32     PacketTemplateEnd ACX_PACKED;
-       u32     QueueStart ACX_PACKED;
-       u32     QueueEnd ACX_PACKED;
-       u32     PoolStart ACX_PACKED;
-       u32     PoolEnd ACX_PACKED;
-} acx_ie_memmap_t;
+       u16     type;
+       u16     len;
+       u32     CodeStart;
+       u32     CodeEnd;
+       u32     WEPCacheStart;
+       u32     WEPCacheEnd;
+       u32     PacketTemplateStart;
+       u32     PacketTemplateEnd;
+       u32     QueueStart;
+       u32     QueueEnd;
+       u32     PoolStart;
+       u32     PoolEnd;
+} ACX_PACKED acx_ie_memmap_t;
 
 typedef struct acx111_ie_feature_config {
-       u16     type ACX_PACKED;
-       u16     len ACX_PACKED;
-       u32     feature_options ACX_PACKED;
-       u32     data_flow_options ACX_PACKED;
-} acx111_ie_feature_config_t;
+       u16     type;
+       u16     len;
+       u32     feature_options;
+       u32     data_flow_options;
+} ACX_PACKED acx111_ie_feature_config_t;
 
 typedef struct acx111_ie_tx_level {
-       u16     type ACX_PACKED;
-       u16     len ACX_PACKED;
-       u8      level ACX_PACKED;
-} acx111_ie_tx_level_t;
+       u16     type;
+       u16     len;
+       u8      level;
+} ACX_PACKED acx111_ie_tx_level_t;
 
 #define PS_CFG_ENABLE          0x80
 #define PS_CFG_PENDING         0x40 /* status flag when entering PS */
@@ -1719,25 +1718,25 @@ typedef struct acx111_ie_tx_level {
 #define PS_OPT_STILL_RCV_BCASTS        0x01
 
 typedef struct acx100_ie_powersave {
-       u16     type ACX_PACKED;
-       u16     len ACX_PACKED;
-       u8      wakeup_cfg ACX_PACKED;
-       u8      listen_interval ACX_PACKED; /* for EACH_ITVL: wake up every 
"beacon units" interval */
-       u8      options ACX_PACKED;
-       u8      hangover_period ACX_PACKED; /* remaining wake time after Tx 
MPDU w/ PS bit, in values of 1/1024 seconds */
-       u16     enhanced_ps_transition_time ACX_PACKED; /* rem. wake time for 
Enh. PS */
-} acx100_ie_powersave_t;
+       u16     type;
+       u16     len;
+       u8      wakeup_cfg;
+       u8      listen_interval; /* for EACH_ITVL: wake up every "beacon units" 
interval */
+       u8      options;
+       u8      hangover_period; /* remaining wake time after Tx MPDU w/ PS 
bit, in values of 1/1024 seconds */
+       u16     enhanced_ps_transition_time; /* rem. wake time for Enh. PS */
+} ACX_PACKED acx100_ie_powersave_t;
 
 typedef struct acx111_ie_powersave {
-       u16     type ACX_PACKED;
-       u16     len ACX_PACKED;
-       u8      wakeup_cfg ACX_PACKED;
-       u8      listen_interval ACX_PACKED; /* for EACH_ITVL: wake up every 
"beacon units" interval */
-       u8      options ACX_PACKED;
-       u8      hangover_period ACX_PACKED; /* remaining wake time after Tx 
MPDU w/ PS bit, in values of 1/1024 seconds */
-       u32     beacon_rx_time ACX_PACKED;
-       u32     enhanced_ps_transition_time ACX_PACKED; /* rem. wake time for 
Enh. PS */
-} acx111_ie_powersave_t;
+       u16     type;
+       u16     len;
+       u8      wakeup_cfg;
+       u8      listen_interval; /* for EACH_ITVL: wake up every "beacon units" 
interval */
+       u8      options;
+       u8      hangover_period; /* remaining wake time after Tx MPDU w/ PS 
bit, in values of 1/1024 seconds */
+       u32     beacon_rx_time;
+       u32     enhanced_ps_transition_time; /* rem. wake time for Enh. PS */
+} ACX_PACKED acx111_ie_powersave_t;
 
 
 /***********************************************************************
@@ -1764,14 +1763,14 @@ typedef struct acx111_ie_powersave {
 ** Background scan can be active or passive, just like normal one */
 #define ACX_SCAN_OPT_BACKGROUND        0x02
 typedef struct acx100_scan {
-       u16     count ACX_PACKED;       /* number of scans to do, 0xffff == 
continuous */
-       u16     start_chan ACX_PACKED;
-       u16     flags ACX_PACKED;       /* channel list mask; 0x8000 == all 
channels? */
-       u8      max_rate ACX_PACKED;    /* max. probe rate */
-       u8      options ACX_PACKED;     /* bit mask, see defines above */
-       u16     chan_duration ACX_PACKED;
-       u16     max_probe_delay ACX_PACKED;
-} acx100_scan_t;                       /* length 0xc */
+       u16     count;  /* number of scans to do, 0xffff == continuous */
+       u16     start_chan;
+       u16     flags;  /* channel list mask; 0x8000 == all channels? */
+       u8      max_rate;       /* max. probe rate */
+       u8      options;        /* bit mask, see defines above */
+       u16     chan_duration;
+       u16     max_probe_delay;
+} ACX_PACKED acx100_scan_t;                    /* length 0xc */
 
 #define ACX111_SCAN_RATE_6     0x0B
 #define ACX111_SCAN_RATE_9     0x0F
@@ -1786,22 +1785,21 @@ typedef struct acx100_scan {
 #define ACX111_SCAN_MOD_PBCC   0x80
 #define ACX111_SCAN_MOD_OFDM   0x40
 typedef struct acx111_scan {
-       u16     count ACX_PACKED;               /* number of scans to do */
-       u8      channel_list_select ACX_PACKED; /* 0: scan all channels, 1: 
from chan_list only */
-       u16     reserved1 ACX_PACKED;
-       u8      reserved2 ACX_PACKED;
-       u8      rate ACX_PACKED;                /* rate for probe requests (if 
active scan) */
-       u8      options ACX_PACKED;             /* bit mask, see defines above 
*/
-       u16     chan_duration ACX_PACKED;       /* min time to wait for reply 
on one channel (in TU) */
+       u16     count;          /* number of scans to do */
+       u8      channel_list_select; /* 0: scan all channels, 1: from chan_list 
only */
+       u16     reserved1;
+       u8      reserved2;
+       u8      rate;           /* rate for probe requests (if active scan) */
+       u8      options;                /* bit mask, see defines above */
+       u16     chan_duration;  /* min time to wait for reply on one channel 
(in TU) */
                                                /* (active scan only) (802.11 
section 11.1.3.2.2) */
-       u16     max_probe_delay ACX_PACKED;     /* max time to wait for reply 
on one channel (active scan) */
+       u16     max_probe_delay;        /* max time to wait for reply on one 
channel (active scan) */
                                                /* time to listen on a channel 
(passive scan) */
-       u8      modulation ACX_PACKED;
-       u8      channel_list[26] ACX_PACKED;    /* bits 7:0 first byte: 
channels 8:1 */
+       u8      modulation;
+       u8      channel_list[26];       /* bits 7:0 first byte: channels 8:1 */
                                                /* bits 7:0 second byte: 
channels 16:9 */
                                                /* 26 bytes is enough to cover 
802.11a */
-} acx111_scan_t;
-
+} ACX_PACKED acx111_scan_t;
 
 /*
 ** Radio calibration command structure
@@ -1810,10 +1808,9 @@ typedef struct acx111_cmd_radiocalib {
 /* 0x80000000 == automatic calibration by firmware, according to interval;
  * bits 0..3: select calibration methods to go through:
  * calib based on DC, AfeDC, Tx mismatch, Tx equilization */
-       u32     methods ACX_PACKED;
-       u32     interval ACX_PACKED;
-} acx111_cmd_radiocalib_t;
-
+       u32     methods;
+       u32     interval;
+} ACX_PACKED acx111_cmd_radiocalib_t;
 
 /*
 ** Packet template structures
@@ -1836,53 +1833,52 @@ typedef struct acx111_cmd_radiocalib {
 **   rest must be zero filled.
 ** - variable length fields shown only in comments */
 typedef struct acx_template_tim {
-       u16     size ACX_PACKED;
-       u8      tim_eid ACX_PACKED;     /* 00 1 TIM IE ID * */
-       u8      len ACX_PACKED;         /* 01 1 Length * */
-       u8      dtim_cnt ACX_PACKED;    /* 02 1 DTIM Count */
-       u8      dtim_period ACX_PACKED; /* 03 1 DTIM Period */
-       u8      bitmap_ctrl ACX_PACKED; /* 04 1 Bitmap Control * (except bit0) 
*/
+       u16     size;
+       u8      tim_eid;        /* 00 1 TIM IE ID * */
+       u8      len;            /* 01 1 Length * */
+       u8      dtim_cnt;       /* 02 1 DTIM Count */
+       u8      dtim_period;    /* 03 1 DTIM Period */
+       u8      bitmap_ctrl;    /* 04 1 Bitmap Control * (except bit0) */
                                        /* 05 n Partial Virtual Bitmap * */
-       u8      variable[0x100 - 1-1-1-1-1] ACX_PACKED;
-} acx_template_tim_t;
+       u8      variable[0x100 - 1-1-1-1-1];
+} ACX_PACKED acx_template_tim_t;
 
 typedef struct acx_template_probereq {
-       u16     size ACX_PACKED;
-       u16     fc ACX_PACKED;          /* 00 2 fc * */
-       u16     dur ACX_PACKED;         /* 02 2 Duration */
-       u8      da[6] ACX_PACKED;       /* 04 6 Destination Address * */
-       u8      sa[6] ACX_PACKED;       /* 0A 6 Source Address * */
-       u8      bssid[6] ACX_PACKED;    /* 10 6 BSSID * */
-       u16     seq ACX_PACKED;         /* 16 2 Sequence Control */
+       u16     size;
+       u16     fc;             /* 00 2 fc * */
+       u16     dur;            /* 02 2 Duration */
+       u8      da[6];  /* 04 6 Destination Address * */
+       u8      sa[6];  /* 0A 6 Source Address * */
+       u8      bssid[6];       /* 10 6 BSSID * */
+       u16     seq;            /* 16 2 Sequence Control */
                                        /* 18 n SSID * */
                                        /* nn n Supported Rates * */
-       u8      variable[0x44 - 2-2-6-6-6-2] ACX_PACKED;
-} acx_template_probereq_t;
+       u8      variable[0x44 - 2-2-6-6-6-2];
+} ACX_PACKED acx_template_probereq_t;
 
 typedef struct acx_template_proberesp {
-       u16     size ACX_PACKED;
-       u16     fc ACX_PACKED;          /* 00 2 fc * (bits [15:12] and [10:8] 
per 802.11 section 7.1.3.1) */
-       u16     dur ACX_PACKED;         /* 02 2 Duration */
-       u8      da[6] ACX_PACKED;       /* 04 6 Destination Address */
-       u8      sa[6] ACX_PACKED;       /* 0A 6 Source Address */
-       u8      bssid[6] ACX_PACKED;    /* 10 6 BSSID */
-       u16     seq ACX_PACKED;         /* 16 2 Sequence Control */
-       u8      timestamp[8] ACX_PACKED;/* 18 8 Timestamp */
-       u16     beacon_interval ACX_PACKED; /* 20 2 Beacon Interval * */
-       u16     cap ACX_PACKED;         /* 22 2 Capability Information * */
+       u16     size;
+       u16     fc;             /* 00 2 fc * (bits [15:12] and [10:8] per 
802.11 section 7.1.3.1) */
+       u16     dur;            /* 02 2 Duration */
+       u8      da[6];  /* 04 6 Destination Address */
+       u8      sa[6];  /* 0A 6 Source Address */
+       u8      bssid[6];       /* 10 6 BSSID */
+       u16     seq;            /* 16 2 Sequence Control */
+       u8      timestamp[8];/* 18 8 Timestamp */
+       u16     beacon_interval; /* 20 2 Beacon Interval * */
+       u16     cap;            /* 22 2 Capability Information * */
                                        /* 24 n SSID * */
                                        /* nn n Supported Rates * */
                                        /* nn 1 DS Parameter Set * */
-       u8      variable[0x54 - 2-2-6-6-6-2-8-2-2] ACX_PACKED;
-} acx_template_proberesp_t;
+       u8      variable[0x54 - 2-2-6-6-6-2-8-2-2];
+} ACX_PACKED acx_template_proberesp_t;
 #define acx_template_beacon_t acx_template_proberesp_t
 #define acx_template_beacon acx_template_proberesp
 
 typedef struct acx_template_nullframe {
-       u16     size ACX_PACKED;
-       struct wlan_hdr_a3 hdr ACX_PACKED;
-} acx_template_nullframe_t;
-
+       u16     size;
+       struct wlan_hdr_a3 hdr;
+} ACX_PACKED acx_template_nullframe_t;
 
 /*
 ** JOIN command structure
@@ -1890,28 +1886,28 @@ typedef struct acx_template_nullframe {
 ** as opposed to acx100, acx111 dtim interval is AFTER rates_basic111.
 ** NOTE: took me about an hour to get [EMAIL PROTECTED]& packing right --> 
struct packing is eeeeevil... */
 typedef struct acx_joinbss {
-       u8      bssid[ETH_ALEN] ACX_PACKED;
-       u16     beacon_interval ACX_PACKED;
+       u8      bssid[ETH_ALEN];
+       u16     beacon_interval;
        union {
                struct {
-                       u8      dtim_interval ACX_PACKED;
-                       u8      rates_basic ACX_PACKED;
-                       u8      rates_supported ACX_PACKED;
-               } acx100 ACX_PACKED;
+                       u8      dtim_interval;
+                       u8      rates_basic;
+                       u8      rates_supported;
+               } ACX_PACKED acx100;
                struct {
-                       u16     rates_basic ACX_PACKED;
-                       u8      dtim_interval ACX_PACKED;
-               } acx111 ACX_PACKED;
-       } u ACX_PACKED;
-       u8      genfrm_txrate ACX_PACKED;       /* generated frame (bcn, 
proberesp, RTS, PSpoll) tx rate */
-       u8      genfrm_mod_pre ACX_PACKED;      /* generated frame 
modulation/preamble:
+                       u16     rates_basic;
+                       u8      dtim_interval;
+               } ACX_PACKED acx111;
+       } u;
+       u8      genfrm_txrate;  /* generated frame (bcn, proberesp, RTS, 
PSpoll) tx rate */
+       u8      genfrm_mod_pre; /* generated frame modulation/preamble:
                                                ** bit7: PBCC, bit6: OFDM (else 
CCK/DQPSK/DBPSK)
                                                ** bit5: short pre */
-       u8      macmode ACX_PACKED;     /* BSS Type, must be one of 
ACX_MODE_xxx */
-       u8      channel ACX_PACKED;
-       u8      essid_len ACX_PACKED;
-       char    essid[IW_ESSID_MAX_SIZE] ACX_PACKED;
-} acx_joinbss_t;
+       u8      macmode;        /* BSS Type, must be one of ACX_MODE_xxx */
+       u8      channel;
+       u8      essid_len;
+       char    essid[IW_ESSID_MAX_SIZE];
+} ACX_PACKED acx_joinbss_t;
 
 #define JOINBSS_RATES_1                0x01
 #define JOINBSS_RATES_2                0x02
@@ -1942,64 +1938,64 @@ typedef struct acx_joinbss {
 /***********************************************************************
 */
 typedef struct mem_read_write {
-       u16     addr ACX_PACKED;
-       u16     type ACX_PACKED; /* 0x0 int. RAM / 0xffff MAC reg. / 0x81 PHY 
RAM / 0x82 PHY reg.; or maybe it's actually 0x30 for MAC? Better verify it by 
writing and reading back and checking whether the value holds! */
-       u32     len ACX_PACKED;
-       u32     data ACX_PACKED;
-} mem_read_write_t;
+       u16     addr;
+       u16     type; /* 0x0 int. RAM / 0xffff MAC reg. / 0x81 PHY RAM / 0x82 
PHY reg.; or maybe it's actually 0x30 for MAC? Better verify it by writing and 
reading back and checking whether the value holds! */
+       u32     len;
+       u32     data;
+} ACX_PACKED mem_read_write_t;
 
 typedef struct firmware_image {
-       u32     chksum ACX_PACKED;
-       u32     size ACX_PACKED;
-       u8      data[1] ACX_PACKED; /* the byte array of the actual firmware... 
*/
-} firmware_image_t;
+       u32     chksum;
+       u32     size;
+       u8      data[1]; /* the byte array of the actual firmware... */
+} ACX_PACKED firmware_image_t;
 
 typedef struct acx_cmd_radioinit {
-       u32     offset ACX_PACKED;
-       u32     len ACX_PACKED;
-} acx_cmd_radioinit_t;
+       u32     offset;
+       u32     len;
+} ACX_PACKED acx_cmd_radioinit_t;
 
 typedef struct acx100_ie_wep_options {
-       u16     type ACX_PACKED;
-       u16     len ACX_PACKED;
-       u16     NumKeys ACX_PACKED;     /* max # of keys */
-       u8      WEPOption ACX_PACKED;   /* 0 == decrypt default key only, 1 == 
override decrypt */
-       u8      Pad ACX_PACKED;         /* used only for acx111 */
-} acx100_ie_wep_options_t;
+       u16     type;
+       u16     len;
+       u16     NumKeys;        /* max # of keys */
+       u8      WEPOption;      /* 0 == decrypt default key only, 1 == override 
decrypt */
+       u8      Pad;            /* used only for acx111 */
+} ACX_PACKED acx100_ie_wep_options_t;
 
 typedef struct ie_dot11WEPDefaultKey {
-       u16     type ACX_PACKED;
-       u16     len ACX_PACKED;
-       u8      action ACX_PACKED;
-       u8      keySize ACX_PACKED;
-       u8      defaultKeyNum ACX_PACKED;
-       u8      key[29] ACX_PACKED;     /* check this! was Key[19] */
-} ie_dot11WEPDefaultKey_t;
+       u16     type;
+       u16     len;
+       u8      action;
+       u8      keySize;
+       u8      defaultKeyNum;
+       u8      key[29];        /* check this! was Key[19] */
+} ACX_PACKED ie_dot11WEPDefaultKey_t;
 
 typedef struct acx111WEPDefaultKey {
-       u8      MacAddr[ETH_ALEN] ACX_PACKED;
-       u16     action ACX_PACKED;      /* NOTE: this is a u16, NOT a u8!! */
-       u16     reserved ACX_PACKED;
-       u8      keySize ACX_PACKED;
-       u8      type ACX_PACKED;
-       u8      index ACX_PACKED;
-       u8      defaultKeyNum ACX_PACKED;
-       u8      counter[6] ACX_PACKED;
-       u8      key[32] ACX_PACKED;     /* up to 32 bytes (for TKIP!) */
-} acx111WEPDefaultKey_t;
+       u8      MacAddr[ETH_ALEN];
+       u16     action; /* NOTE: this is a u16, NOT a u8!! */
+       u16     reserved;
+       u8      keySize;
+       u8      type;
+       u8      index;
+       u8      defaultKeyNum;
+       u8      counter[6];
+       u8      key[32];        /* up to 32 bytes (for TKIP!) */
+} ACX_PACKED acx111WEPDefaultKey_t;
 
 typedef struct ie_dot11WEPDefaultKeyID {
-       u16     type ACX_PACKED;
-       u16     len ACX_PACKED;
-       u8      KeyID ACX_PACKED;
-} ie_dot11WEPDefaultKeyID_t;
+       u16     type;
+       u16     len;
+       u8      KeyID;
+} ACX_PACKED ie_dot11WEPDefaultKeyID_t;
 
 typedef struct acx100_cmd_wep_mgmt {
-       u8      MacAddr[ETH_ALEN] ACX_PACKED;
-       u16     Action ACX_PACKED;
-       u16     KeySize ACX_PACKED;
-       u8      Key[29] ACX_PACKED; /* 29*8 == 232bits == WEP256 */
-} acx100_cmd_wep_mgmt_t;
+       u8      MacAddr[ETH_ALEN];
+       u16     Action;
+       u16     KeySize;
+       u8      Key[29]; /* 29*8 == 232bits == WEP256 */
+} ACX_PACKED acx100_cmd_wep_mgmt_t;
 
 /* UNUSED?
 typedef struct defaultkey {
@@ -2008,17 +2004,17 @@ typedef struct defaultkey {
 */
 
 typedef struct acx_ie_generic {
-       u16     type ACX_PACKED;
-       u16     len ACX_PACKED;
+       u16     type;
+       u16     len;
        union {
                /* struct wep wp ACX_PACKED; */
                /* Association ID IE: just a 16bit value: */
                u16     aid;
                /* UNUSED? struct defaultkey dkey ACX_PACKED; */
                /* generic member for quick implementation of commands */
-               u8      bytes[32] ACX_PACKED;
-       } m ACX_PACKED;
-} acx_ie_generic_t;
+               u8      bytes[32];
+       } m;
+} ACX_PACKED acx_ie_generic_t;
 
 /***********************************************************************
 */
diff --git a/common.c b/common.c
index 623e70d..ff6152d 100644
--- a/common.c
+++ b/common.c
@@ -1097,11 +1097,11 @@ void
 great_inquisitor(acx_device_t *adev)
 {
        static struct {
-               u16     type ACX_PACKED;
-               u16     len ACX_PACKED;
+               u16     type;
+               u16     len;
                /* 0x200 was too large here: */
-               u8      data[0x100 - 4] ACX_PACKED;
-       } ie;
+               u8      data[0x100 - 4];
+       } ACX_PACKED ie;
        u16 type;
 
        FN_ENTER;
@@ -2341,11 +2341,11 @@ static void
 acx_s_initialize_rx_config(acx_device_t *adev)
 {
        struct {
-               u16     id ACX_PACKED;
-               u16     len ACX_PACKED;
-               u16     rx_cfg1 ACX_PACKED;
-               u16     rx_cfg2 ACX_PACKED;
-       } cfg;
+               u16     id;
+               u16     len;
+               u16     rx_cfg1;
+               u16     rx_cfg2;
+       } ACX_PACKED cfg;
 
        switch (adev->mode) {
        case ACX_MODE_OFF:
@@ -6941,10 +6941,10 @@ acx_s_update_card_settings(acx_device_t 
                ie_dot11WEPDefaultKeyID_t dkey;
 #ifdef DEBUG_WEP
                struct {
-                       u16 type ACX_PACKED;
-                       u16 len ACX_PACKED;
-                       u8  val ACX_PACKED;
-               } keyindic;
+                       u16 type;
+                       u16 len;
+                       u8  val;
+               } ACX_PACKED keyindic;
 #endif
                log(L_INIT, "updating WEP key settings\n");
 
diff --git a/ioctl.c b/ioctl.c
index 6c548ca..ca3c42e 100644
--- a/ioctl.c
+++ b/ioctl.c
@@ -2168,11 +2168,11 @@ acx_ioctl_get_phy_chan_busy_percentage(
 {
        acx_device_t *adev = ndev2adev(ndev);
        struct { /* added ACX_PACKED, not tested --vda */
-               u16 type ACX_PACKED;
-               u16 len ACX_PACKED;
-               u32 busytime ACX_PACKED;
-               u32 totaltime ACX_PACKED;
-       } usage;
+               u16 type;
+               u16 len;
+               u32 busytime;
+               u32 totaltime;
+       } ACX_PACKED usage;
        int result;
 
        acx_sem_lock(adev);
diff --git a/usb.c b/usb.c
index 5833d04..51290ed 100644
--- a/usb.c
+++ b/usb.c
@@ -305,10 +305,10 @@ acxusb_s_issue_cmd_timeo_debug(
 
        struct usb_device *usbdev;
        struct {
-               u16     cmd ACX_PACKED;
-               u16     status ACX_PACKED;
-               u8      data[1] ACX_PACKED;
-       } *loc;
+               u16     cmd;
+               u16     status;
+               u8      data[1];
+       } ACX_PACKED *loc;
        const char *devname;
        int acklen, blocklen, inpipe, outpipe;
        int cmd_status;
-- 
1.2.4.g3103


-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to