ipw2200 annotations and fixes
authorAl Viro <viro@ftp.linux.org.uk>
Sun, 16 Mar 2008 22:26:44 +0000 (22:26 +0000)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 25 Mar 2008 20:41:58 +0000 (16:41 -0400)
a) a bunch of printks in error-handling assums that ->status is
big-endian.
b) bitfields trouble
c) missing annotations

NB: a bunch of structs is declared packed for no good reason, AFAICS.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Acked-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ipw2200.c
drivers/net/wireless/ipw2200.h

index 3d4b590046a8ffacd2b76b52432046d3ff6f70a0..e79de53bd4f32c81f8912882fe9be854e693c541 100644 (file)
@@ -4495,9 +4495,9 @@ static void ipw_rx_notification(struct ipw_priv *priv,
                                                                       priv->
                                                                       essid_len),
                                                          print_mac(mac, priv->bssid),
-                                                         ntohs(auth->status),
+                                                         le16_to_cpu(auth->status),
                                                          ipw_get_status_code
-                                                         (ntohs
+                                                         (le16_to_cpu
                                                           (auth->status)));
 
                                                priv->status &=
@@ -4532,9 +4532,9 @@ static void ipw_rx_notification(struct ipw_priv *priv,
                                                          IPW_DL_STATE |
                                                          IPW_DL_ASSOC,
                                                          "association failed (0x%04X): %s\n",
-                                                         ntohs(resp->status),
+                                                         le16_to_cpu(resp->status),
                                                          ipw_get_status_code
-                                                         (ntohs
+                                                         (le16_to_cpu
                                                           (resp->status)));
                                        }
 
@@ -4591,8 +4591,8 @@ static void ipw_rx_notification(struct ipw_priv *priv,
                                        IPW_DEBUG(IPW_DL_NOTIF | IPW_DL_STATE |
                                                  IPW_DL_ASSOC,
                                                  "authentication failed (0x%04X): %s\n",
-                                                 ntohs(auth->status),
-                                                 ipw_get_status_code(ntohs
+                                                 le16_to_cpu(auth->status),
+                                                 ipw_get_status_code(le16_to_cpu
                                                                      (auth->
                                                                       status)));
                                }
index fdc187e0769d7829180aaa9641f8624cbddafe80..cd3295b66dd65013e6a0b0f854391eb96cf63235 100644 (file)
@@ -385,73 +385,73 @@ struct clx2_queue {
        dma_addr_t dma_addr;            /**< physical addr for BD's */
        int low_mark;                  /**< low watermark, resume queue if free space more than this */
        int high_mark;                 /**< high watermark, stop queue if free space less than this */
-} __attribute__ ((packed));
+} __attribute__ ((packed)); /* XXX */
 
 struct machdr32 {
        __le16 frame_ctl;
-       u16 duration;           // watch out for endians!
+       __le16 duration;                // watch out for endians!
        u8 addr1[MACADRR_BYTE_LEN];
        u8 addr2[MACADRR_BYTE_LEN];
        u8 addr3[MACADRR_BYTE_LEN];
-       u16 seq_ctrl;           // more endians!
+       __le16 seq_ctrl;                // more endians!
        u8 addr4[MACADRR_BYTE_LEN];
        __le16 qos_ctrl;
 } __attribute__ ((packed));
 
 struct machdr30 {
        __le16 frame_ctl;
-       u16 duration;           // watch out for endians!
+       __le16 duration;                // watch out for endians!
        u8 addr1[MACADRR_BYTE_LEN];
        u8 addr2[MACADRR_BYTE_LEN];
        u8 addr3[MACADRR_BYTE_LEN];
-       u16 seq_ctrl;           // more endians!
+       __le16 seq_ctrl;                // more endians!
        u8 addr4[MACADRR_BYTE_LEN];
 } __attribute__ ((packed));
 
 struct machdr26 {
        __le16 frame_ctl;
-       u16 duration;           // watch out for endians!
+       __le16 duration;                // watch out for endians!
        u8 addr1[MACADRR_BYTE_LEN];
        u8 addr2[MACADRR_BYTE_LEN];
        u8 addr3[MACADRR_BYTE_LEN];
-       u16 seq_ctrl;           // more endians!
+       __le16 seq_ctrl;                // more endians!
        __le16 qos_ctrl;
 } __attribute__ ((packed));
 
 struct machdr24 {
        __le16 frame_ctl;
-       u16 duration;           // watch out for endians!
+       __le16 duration;                // watch out for endians!
        u8 addr1[MACADRR_BYTE_LEN];
        u8 addr2[MACADRR_BYTE_LEN];
        u8 addr3[MACADRR_BYTE_LEN];
-       u16 seq_ctrl;           // more endians!
+       __le16 seq_ctrl;                // more endians!
 } __attribute__ ((packed));
 
 // TX TFD with 32 byte MAC Header
 struct tx_tfd_32 {
        struct machdr32 mchdr;  // 32
-       u32 uivplaceholder[2];  // 8
+       __le32 uivplaceholder[2];       // 8
 } __attribute__ ((packed));
 
 // TX TFD with 30 byte MAC Header
 struct tx_tfd_30 {
        struct machdr30 mchdr;  // 30
        u8 reserved[2];         // 2
-       u32 uivplaceholder[2];  // 8
+       __le32 uivplaceholder[2];       // 8
 } __attribute__ ((packed));
 
 // tx tfd with 26 byte mac header
 struct tx_tfd_26 {
        struct machdr26 mchdr;  // 26
        u8 reserved1[2];        // 2
-       u32 uivplaceholder[2];  // 8
+       __le32 uivplaceholder[2];       // 8
        u8 reserved2[4];        // 4
 } __attribute__ ((packed));
 
 // tx tfd with 24 byte mac header
 struct tx_tfd_24 {
        struct machdr24 mchdr;  // 24
-       u32 uivplaceholder[2];  // 8
+       __le32 uivplaceholder[2];       // 8
        u8 reserved[8];         // 8
 } __attribute__ ((packed));
 
@@ -460,7 +460,7 @@ struct tx_tfd_24 {
 struct tfd_command {
        u8 index;
        u8 length;
-       u16 reserved;
+       __le16 reserved;
        u8 payload[0];
 } __attribute__ ((packed));
 
@@ -562,27 +562,27 @@ struct rate_histogram {
 struct ipw_cmd_stats {
        u8 cmd_id;
        u8 seq_num;
-       u16 good_sfd;
-       u16 bad_plcp;
-       u16 wrong_bssid;
-       u16 valid_mpdu;
-       u16 bad_mac_header;
-       u16 reserved_frame_types;
-       u16 rx_ina;
-       u16 bad_crc32;
-       u16 invalid_cts;
-       u16 invalid_acks;
-       u16 long_distance_ina_fina;
-       u16 dsp_silence_unreachable;
-       u16 accumulated_rssi;
-       u16 rx_ovfl_frame_tossed;
-       u16 rssi_silence_threshold;
-       u16 rx_ovfl_frame_supplied;
-       u16 last_rx_frame_signal;
-       u16 last_rx_frame_noise;
-       u16 rx_autodetec_no_ofdm;
-       u16 rx_autodetec_no_barker;
-       u16 reserved;
+       __le16 good_sfd;
+       __le16 bad_plcp;
+       __le16 wrong_bssid;
+       __le16 valid_mpdu;
+       __le16 bad_mac_header;
+       __le16 reserved_frame_types;
+       __le16 rx_ina;
+       __le16 bad_crc32;
+       __le16 invalid_cts;
+       __le16 invalid_acks;
+       __le16 long_distance_ina_fina;
+       __le16 dsp_silence_unreachable;
+       __le16 accumulated_rssi;
+       __le16 rx_ovfl_frame_tossed;
+       __le16 rssi_silence_threshold;
+       __le16 rx_ovfl_frame_supplied;
+       __le16 last_rx_frame_signal;
+       __le16 last_rx_frame_noise;
+       __le16 rx_autodetec_no_ofdm;
+       __le16 rx_autodetec_no_barker;
+       __le16 reserved;
 } __attribute__ ((packed));
 
 struct notif_channel_result {
@@ -637,7 +637,7 @@ struct notif_association {
 struct notif_authenticate {
        u8 state;
        struct machdr24 addr;
-       u16 status;
+       __le16 status;
 } __attribute__ ((packed));
 
 struct notif_calibration {
@@ -732,14 +732,14 @@ struct ipw_rx_queue {
 struct alive_command_responce {
        u8 alive_command;
        u8 sequence_number;
-       u16 software_revision;
+       __le16 software_revision;
        u8 device_identifier;
        u8 reserved1[5];
-       u16 reserved2;
-       u16 reserved3;
-       u16 clock_settle_time;
-       u16 powerup_settle_time;
-       u16 reserved4;
+       __le16 reserved2;
+       __le16 reserved3;
+       __le16 clock_settle_time;
+       __le16 powerup_settle_time;
+       __le16 reserved4;
        u8 time_stamp[5];       /* month, day, year, hours, minutes */
        u8 ucode_valid;
 } __attribute__ ((packed));
@@ -878,7 +878,11 @@ static inline void ipw_set_scan_type(struct ipw_scan_request_ext *scan,
 
 struct ipw_associate {
        u8 channel;
+#ifdef __LITTLE_ENDIAN_BITFIELD
        u8 auth_type:4, auth_key:4;
+#else
+       u8 auth_key:4, auth_type:4;
+#endif
        u8 assoc_type;
        u8 reserved;
        __le16 policy_support;
@@ -918,12 +922,12 @@ struct ipw_frag_threshold {
 struct ipw_retry_limit {
        u8 short_retry_limit;
        u8 long_retry_limit;
-       u16 reserved;
+       __le16 reserved;
 } __attribute__ ((packed));
 
 struct ipw_dino_config {
-       u32 dino_config_addr;
-       u16 dino_config_size;
+       __le32 dino_config_addr;
+       __le16 dino_config_size;
        u8 dino_response;
        u8 reserved;
 } __attribute__ ((packed));
@@ -998,7 +1002,7 @@ struct ipw_sensitivity_calib {
  * - \a status contains status;
  * - \a param filled with status parameters.
  */
-struct ipw_cmd {
+struct ipw_cmd {        /* XXX */
        u32 cmd;   /**< Host command */
        u32 status;/**< Status */
        u32 status_len;
@@ -1092,7 +1096,7 @@ struct ipw_ibss_seq {
        struct list_head list;
 };
 
-struct ipw_error_elem {
+struct ipw_error_elem {         /* XXX */
        u32 desc;
        u32 time;
        u32 blink1;
@@ -1102,13 +1106,13 @@ struct ipw_error_elem {
        u32 data;
 };
 
-struct ipw_event {
+struct ipw_event {      /* XXX */
        u32 event;
        u32 time;
        u32 data;
 } __attribute__ ((packed));
 
-struct ipw_fw_error {
+struct ipw_fw_error {   /* XXX */
        unsigned long jiffies;
        u32 status;
        u32 config;
@@ -1153,7 +1157,7 @@ struct ipw_prom_priv {
  */
 struct ipw_rt_hdr {
        struct ieee80211_radiotap_header rt_hdr;
-       u64 rt_tsf;      /* TSF */
+       u64 rt_tsf;      /* TSF */      /* XXX */
        u8 rt_flags;    /* radiotap packet flags */
        u8 rt_rate;     /* rate in 500kb/s */
        __le16 rt_channel;      /* channel in mhz */
@@ -1940,8 +1944,8 @@ enum {
 #define IPW_MEM_FIXED_OVERRIDE          (IPW_SHARED_LOWER_BOUND + 0x41C)
 
 struct ipw_fixed_rate {
-       u16 tx_rates;
-       u16 reserved;
+       __le16 tx_rates;
+       __le16 reserved;
 } __attribute__ ((packed));
 
 #define IPW_INDIRECT_ADDR_MASK (~0x3ul)
@@ -1951,12 +1955,12 @@ struct host_cmd {
        u8 len;
        u16 reserved;
        u32 *param;
-} __attribute__ ((packed));
+} __attribute__ ((packed));    /* XXX */
 
 struct cmdlog_host_cmd {
        u8 cmd;
        u8 len;
-       u16 reserved;
+       __le16 reserved;
        char param[124];
 } __attribute__ ((packed));