提交 d133ae4c 编写于 作者: P Pavel Roskin 提交者: Jeff Garzik

[PATCH] orinoco: Annotate endianess of variables and structure members.

Signed-off-by: NPavel Roskin <proski@gnu.org>

Annotate endianess of variables and structure members.

Don't reuse variables for both host-endian and little-endian data.
Minor comment changes in affected structures.
Signed-off-by: NJeff Garzik <jgarzik@pobox.com>
上级 393da598
...@@ -191,13 +191,13 @@ ...@@ -191,13 +191,13 @@
#define HERMES_RXSTAT_WMP (0x6000) /* Wavelan-II Management Protocol frame */ #define HERMES_RXSTAT_WMP (0x6000) /* Wavelan-II Management Protocol frame */
struct hermes_tx_descriptor { struct hermes_tx_descriptor {
u16 status; __le16 status;
u16 reserved1; __le16 reserved1;
u16 reserved2; __le16 reserved2;
u32 sw_support; __le32 sw_support;
u8 retry_count; u8 retry_count;
u8 tx_rate; u8 tx_rate;
u16 tx_control; __le16 tx_control;
} __attribute__ ((packed)); } __attribute__ ((packed));
#define HERMES_TXSTAT_RETRYERR (0x0001) #define HERMES_TXSTAT_RETRYERR (0x0001)
...@@ -221,60 +221,60 @@ struct hermes_tx_descriptor { ...@@ -221,60 +221,60 @@ struct hermes_tx_descriptor {
#define HERMES_INQ_SEC_STAT_AGERE (0xF202) #define HERMES_INQ_SEC_STAT_AGERE (0xF202)
struct hermes_tallies_frame { struct hermes_tallies_frame {
u16 TxUnicastFrames; __le16 TxUnicastFrames;
u16 TxMulticastFrames; __le16 TxMulticastFrames;
u16 TxFragments; __le16 TxFragments;
u16 TxUnicastOctets; __le16 TxUnicastOctets;
u16 TxMulticastOctets; __le16 TxMulticastOctets;
u16 TxDeferredTransmissions; __le16 TxDeferredTransmissions;
u16 TxSingleRetryFrames; __le16 TxSingleRetryFrames;
u16 TxMultipleRetryFrames; __le16 TxMultipleRetryFrames;
u16 TxRetryLimitExceeded; __le16 TxRetryLimitExceeded;
u16 TxDiscards; __le16 TxDiscards;
u16 RxUnicastFrames; __le16 RxUnicastFrames;
u16 RxMulticastFrames; __le16 RxMulticastFrames;
u16 RxFragments; __le16 RxFragments;
u16 RxUnicastOctets; __le16 RxUnicastOctets;
u16 RxMulticastOctets; __le16 RxMulticastOctets;
u16 RxFCSErrors; __le16 RxFCSErrors;
u16 RxDiscards_NoBuffer; __le16 RxDiscards_NoBuffer;
u16 TxDiscardsWrongSA; __le16 TxDiscardsWrongSA;
u16 RxWEPUndecryptable; __le16 RxWEPUndecryptable;
u16 RxMsgInMsgFragments; __le16 RxMsgInMsgFragments;
u16 RxMsgInBadMsgFragments; __le16 RxMsgInBadMsgFragments;
/* Those last are probably not available in very old firmwares */ /* Those last are probably not available in very old firmwares */
u16 RxDiscards_WEPICVError; __le16 RxDiscards_WEPICVError;
u16 RxDiscards_WEPExcluded; __le16 RxDiscards_WEPExcluded;
} __attribute__ ((packed)); } __attribute__ ((packed));
/* Grabbed from wlan-ng - Thanks Mark... - Jean II /* Grabbed from wlan-ng - Thanks Mark... - Jean II
* This is the result of a scan inquiry command */ * This is the result of a scan inquiry command */
/* Structure describing info about an Access Point */ /* Structure describing info about an Access Point */
struct prism2_scan_apinfo { struct prism2_scan_apinfo {
u16 channel; /* Channel where the AP sits */ __le16 channel; /* Channel where the AP sits */
u16 noise; /* Noise level */ __le16 noise; /* Noise level */
u16 level; /* Signal level */ __le16 level; /* Signal level */
u8 bssid[ETH_ALEN]; /* MAC address of the Access Point */ u8 bssid[ETH_ALEN]; /* MAC address of the Access Point */
u16 beacon_interv; /* Beacon interval */ __le16 beacon_interv; /* Beacon interval */
u16 capabilities; /* Capabilities */ __le16 capabilities; /* Capabilities */
u16 essid_len; /* ESSID length */ __le16 essid_len; /* ESSID length */
u8 essid[32]; /* ESSID of the network */ u8 essid[32]; /* ESSID of the network */
u8 rates[10]; /* Bit rate supported */ u8 rates[10]; /* Bit rate supported */
u16 proberesp_rate; /* Data rate of the response frame */ __le16 proberesp_rate; /* Data rate of the response frame */
u16 atim; /* ATIM window time, Kus (hostscan only) */ __le16 atim; /* ATIM window time, Kus (hostscan only) */
} __attribute__ ((packed)); } __attribute__ ((packed));
/* Same stuff for the Lucent/Agere card. /* Same stuff for the Lucent/Agere card.
* Thanks to h1kari <h1kari AT dachb0den.com> - Jean II */ * Thanks to h1kari <h1kari AT dachb0den.com> - Jean II */
struct agere_scan_apinfo { struct agere_scan_apinfo {
u16 channel; /* Channel where the AP sits */ __le16 channel; /* Channel where the AP sits */
u16 noise; /* Noise level */ __le16 noise; /* Noise level */
u16 level; /* Signal level */ __le16 level; /* Signal level */
u8 bssid[ETH_ALEN]; /* MAC address of the Access Point */ u8 bssid[ETH_ALEN]; /* MAC address of the Access Point */
u16 beacon_interv; /* Beacon interval */ __le16 beacon_interv; /* Beacon interval */
u16 capabilities; /* Capabilities */ __le16 capabilities; /* Capabilities */
/* bits: 0-ess, 1-ibss, 4-privacy [wep] */ /* bits: 0-ess, 1-ibss, 4-privacy [wep] */
u16 essid_len; /* ESSID length */ __le16 essid_len; /* ESSID length */
u8 essid[32]; /* ESSID of the network */ u8 essid[32]; /* ESSID of the network */
} __attribute__ ((packed)); } __attribute__ ((packed));
...@@ -282,16 +282,16 @@ struct agere_scan_apinfo { ...@@ -282,16 +282,16 @@ struct agere_scan_apinfo {
struct symbol_scan_apinfo { struct symbol_scan_apinfo {
u8 channel; /* Channel where the AP sits */ u8 channel; /* Channel where the AP sits */
u8 unknown1; /* 8 in 2.9x and 3.9x f/w, 0 otherwise */ u8 unknown1; /* 8 in 2.9x and 3.9x f/w, 0 otherwise */
u16 noise; /* Noise level */ __le16 noise; /* Noise level */
u16 level; /* Signal level */ __le16 level; /* Signal level */
u8 bssid[ETH_ALEN]; /* MAC address of the Access Point */ u8 bssid[ETH_ALEN]; /* MAC address of the Access Point */
u16 beacon_interv; /* Beacon interval */ __le16 beacon_interv; /* Beacon interval */
u16 capabilities; /* Capabilities */ __le16 capabilities; /* Capabilities */
/* bits: 0-ess, 1-ibss, 4-privacy [wep] */ /* bits: 0-ess, 1-ibss, 4-privacy [wep] */
u16 essid_len; /* ESSID length */ __le16 essid_len; /* ESSID length */
u8 essid[32]; /* ESSID of the network */ u8 essid[32]; /* ESSID of the network */
u16 rates[5]; /* Bit rate supported */ __le16 rates[5]; /* Bit rate supported */
u16 basic_rates; /* Basic rates bitmask */ __le16 basic_rates; /* Basic rates bitmask */
u8 unknown2[6]; /* Always FF:FF:FF:FF:00:00 */ u8 unknown2[6]; /* Always FF:FF:FF:FF:00:00 */
u8 unknown3[8]; /* Always 0, appeared in f/w 3.91-68 */ u8 unknown3[8]; /* Always 0, appeared in f/w 3.91-68 */
} __attribute__ ((packed)); } __attribute__ ((packed));
...@@ -311,7 +311,7 @@ union hermes_scan_info { ...@@ -311,7 +311,7 @@ union hermes_scan_info {
#define HERMES_LINKSTATUS_ASSOC_FAILED (0x0006) #define HERMES_LINKSTATUS_ASSOC_FAILED (0x0006)
struct hermes_linkstatus { struct hermes_linkstatus {
u16 linkstatus; /* Link status */ __le16 linkstatus; /* Link status */
} __attribute__ ((packed)); } __attribute__ ((packed));
struct hermes_response { struct hermes_response {
...@@ -320,8 +320,8 @@ struct hermes_response { ...@@ -320,8 +320,8 @@ struct hermes_response {
/* "ID" structure - used for ESSID and station nickname */ /* "ID" structure - used for ESSID and station nickname */
struct hermes_idstring { struct hermes_idstring {
u16 len; __le16 len;
u16 val[16]; __le16 val[16];
} __attribute__ ((packed)); } __attribute__ ((packed));
struct hermes_multicast { struct hermes_multicast {
...@@ -446,7 +446,7 @@ static inline void hermes_clear_words(struct hermes *hw, int off, unsigned count ...@@ -446,7 +446,7 @@ static inline void hermes_clear_words(struct hermes *hw, int off, unsigned count
static inline int hermes_read_wordrec(hermes_t *hw, int bap, u16 rid, u16 *word) static inline int hermes_read_wordrec(hermes_t *hw, int bap, u16 rid, u16 *word)
{ {
u16 rec; __le16 rec;
int err; int err;
err = HERMES_READ_RECORD(hw, bap, rid, &rec); err = HERMES_READ_RECORD(hw, bap, rid, &rec);
...@@ -456,7 +456,7 @@ static inline int hermes_read_wordrec(hermes_t *hw, int bap, u16 rid, u16 *word) ...@@ -456,7 +456,7 @@ static inline int hermes_read_wordrec(hermes_t *hw, int bap, u16 rid, u16 *word)
static inline int hermes_write_wordrec(hermes_t *hw, int bap, u16 rid, u16 word) static inline int hermes_write_wordrec(hermes_t *hw, int bap, u16 rid, u16 word)
{ {
u16 rec = cpu_to_le16(word); __le16 rec = cpu_to_le16(word);
return HERMES_WRITE_RECORD(hw, bap, rid, &rec); return HERMES_WRITE_RECORD(hw, bap, rid, &rec);
} }
......
...@@ -202,31 +202,32 @@ static struct { ...@@ -202,31 +202,32 @@ static struct {
/********************************************************************/ /********************************************************************/
/* Used in Event handling. /* Used in Event handling.
* We avoid nested structres as they break on ARM -- Moustafa */ * We avoid nested structures as they break on ARM -- Moustafa */
struct hermes_tx_descriptor_802_11 { struct hermes_tx_descriptor_802_11 {
/* hermes_tx_descriptor */ /* hermes_tx_descriptor */
u16 status; __le16 status;
u16 reserved1; __le16 reserved1;
u16 reserved2; __le16 reserved2;
u32 sw_support; __le32 sw_support;
u8 retry_count; u8 retry_count;
u8 tx_rate; u8 tx_rate;
u16 tx_control; __le16 tx_control;
/* ieee802_11_hdr */ /* ieee80211_hdr */
u16 frame_ctl; __le16 frame_ctl;
u16 duration_id; __le16 duration_id;
u8 addr1[ETH_ALEN]; u8 addr1[ETH_ALEN];
u8 addr2[ETH_ALEN]; u8 addr2[ETH_ALEN];
u8 addr3[ETH_ALEN]; u8 addr3[ETH_ALEN];
u16 seq_ctl; __le16 seq_ctl;
u8 addr4[ETH_ALEN]; u8 addr4[ETH_ALEN];
u16 data_len;
__le16 data_len;
/* ethhdr */ /* ethhdr */
unsigned char h_dest[ETH_ALEN]; /* destination eth addr */ u8 h_dest[ETH_ALEN]; /* destination eth addr */
unsigned char h_source[ETH_ALEN]; /* source ether addr */ u8 h_source[ETH_ALEN]; /* source ether addr */
unsigned short h_proto; /* packet type ID field */ __be16 h_proto; /* packet type ID field */
/* p8022_hdr */ /* p8022_hdr */
u8 dsap; u8 dsap;
...@@ -234,31 +235,31 @@ struct hermes_tx_descriptor_802_11 { ...@@ -234,31 +235,31 @@ struct hermes_tx_descriptor_802_11 {
u8 ctrl; u8 ctrl;
u8 oui[3]; u8 oui[3];
u16 ethertype; __be16 ethertype;
} __attribute__ ((packed)); } __attribute__ ((packed));
/* Rx frame header except compatibility 802.3 header */ /* Rx frame header except compatibility 802.3 header */
struct hermes_rx_descriptor { struct hermes_rx_descriptor {
/* Control */ /* Control */
u16 status; __le16 status;
u32 time; __le32 time;
u8 silence; u8 silence;
u8 signal; u8 signal;
u8 rate; u8 rate;
u8 rxflow; u8 rxflow;
u32 reserved; __le32 reserved;
/* 802.11 header */ /* 802.11 header */
u16 frame_ctl; __le16 frame_ctl;
u16 duration_id; __le16 duration_id;
u8 addr1[ETH_ALEN]; u8 addr1[ETH_ALEN];
u8 addr2[ETH_ALEN]; u8 addr2[ETH_ALEN];
u8 addr3[ETH_ALEN]; u8 addr3[ETH_ALEN];
u16 seq_ctl; __le16 seq_ctl;
u8 addr4[ETH_ALEN]; u8 addr4[ETH_ALEN];
/* Data length */ /* Data length */
u16 data_len; __le16 data_len;
} __attribute__ ((packed)); } __attribute__ ((packed));
/********************************************************************/ /********************************************************************/
...@@ -389,7 +390,7 @@ static struct iw_statistics *orinoco_get_wireless_stats(struct net_device *dev) ...@@ -389,7 +390,7 @@ static struct iw_statistics *orinoco_get_wireless_stats(struct net_device *dev)
} }
} else { } else {
struct { struct {
u16 qual, signal, noise; __le16 qual, signal, noise;
} __attribute__ ((packed)) cq; } __attribute__ ((packed)) cq;
err = HERMES_READ_RECORD(hw, USER_BAP, err = HERMES_READ_RECORD(hw, USER_BAP,
...@@ -615,6 +616,7 @@ static void __orinoco_ev_txexc(struct net_device *dev, hermes_t *hw) ...@@ -615,6 +616,7 @@ static void __orinoco_ev_txexc(struct net_device *dev, hermes_t *hw)
struct orinoco_private *priv = netdev_priv(dev); struct orinoco_private *priv = netdev_priv(dev);
struct net_device_stats *stats = &priv->stats; struct net_device_stats *stats = &priv->stats;
u16 fid = hermes_read_regn(hw, TXCOMPLFID); u16 fid = hermes_read_regn(hw, TXCOMPLFID);
u16 status;
struct hermes_tx_descriptor_802_11 hdr; struct hermes_tx_descriptor_802_11 hdr;
int err = 0; int err = 0;
...@@ -644,8 +646,8 @@ static void __orinoco_ev_txexc(struct net_device *dev, hermes_t *hw) ...@@ -644,8 +646,8 @@ static void __orinoco_ev_txexc(struct net_device *dev, hermes_t *hw)
* exceeded, because that's the only status that really mean * exceeded, because that's the only status that really mean
* that this particular node went away. * that this particular node went away.
* Other errors means that *we* screwed up. - Jean II */ * Other errors means that *we* screwed up. - Jean II */
hdr.status = le16_to_cpu(hdr.status); status = le16_to_cpu(hdr.status);
if (hdr.status & (HERMES_TXSTAT_RETRYERR | HERMES_TXSTAT_AGEDERR)) { if (status & (HERMES_TXSTAT_RETRYERR | HERMES_TXSTAT_AGEDERR)) {
union iwreq_data wrqu; union iwreq_data wrqu;
/* Copy 802.11 dest address. /* Copy 802.11 dest address.
...@@ -1031,7 +1033,7 @@ static void orinoco_join_ap(struct net_device *dev) ...@@ -1031,7 +1033,7 @@ static void orinoco_join_ap(struct net_device *dev)
unsigned long flags; unsigned long flags;
struct join_req { struct join_req {
u8 bssid[ETH_ALEN]; u8 bssid[ETH_ALEN];
u16 channel; __le16 channel;
} __attribute__ ((packed)) req; } __attribute__ ((packed)) req;
const int atom_len = offsetof(struct prism2_scan_apinfo, atim); const int atom_len = offsetof(struct prism2_scan_apinfo, atim);
struct prism2_scan_apinfo *atom = NULL; struct prism2_scan_apinfo *atom = NULL;
...@@ -1128,8 +1130,8 @@ static void __orinoco_ev_info(struct net_device *dev, hermes_t *hw) ...@@ -1128,8 +1130,8 @@ static void __orinoco_ev_info(struct net_device *dev, hermes_t *hw)
struct orinoco_private *priv = netdev_priv(dev); struct orinoco_private *priv = netdev_priv(dev);
u16 infofid; u16 infofid;
struct { struct {
u16 len; __le16 len;
u16 type; __le16 type;
} __attribute__ ((packed)) info; } __attribute__ ((packed)) info;
int len, type; int len, type;
int err; int err;
...@@ -3905,7 +3907,7 @@ static int orinoco_ioctl_setscan(struct net_device *dev, ...@@ -3905,7 +3907,7 @@ static int orinoco_ioctl_setscan(struct net_device *dev,
HERMES_HOSTSCAN_SYMBOL_BCAST); HERMES_HOSTSCAN_SYMBOL_BCAST);
break; break;
case FIRMWARE_TYPE_INTERSIL: { case FIRMWARE_TYPE_INTERSIL: {
u16 req[3]; __le16 req[3];
req[0] = cpu_to_le16(0x3fff); /* All channels */ req[0] = cpu_to_le16(0x3fff); /* All channels */
req[1] = cpu_to_le16(0x0001); /* rate 1 Mbps */ req[1] = cpu_to_le16(0x0001); /* rate 1 Mbps */
...@@ -3979,7 +3981,7 @@ static inline int orinoco_translate_scan(struct net_device *dev, ...@@ -3979,7 +3981,7 @@ static inline int orinoco_translate_scan(struct net_device *dev,
case FIRMWARE_TYPE_INTERSIL: case FIRMWARE_TYPE_INTERSIL:
offset = 4; offset = 4;
if (priv->has_hostscan) { if (priv->has_hostscan) {
atom_len = le16_to_cpup((u16 *)scan); atom_len = le16_to_cpup((__le16 *)scan);
/* Sanity check for atom_len */ /* Sanity check for atom_len */
if (atom_len < sizeof(struct prism2_scan_apinfo)) { if (atom_len < sizeof(struct prism2_scan_apinfo)) {
printk(KERN_ERR "%s: Invalid atom_len in scan data: %d\n", printk(KERN_ERR "%s: Invalid atom_len in scan data: %d\n",
......
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
#define ORINOCO_MAX_KEYS 4 #define ORINOCO_MAX_KEYS 4
struct orinoco_key { struct orinoco_key {
u16 len; /* always stored as little-endian */ __le16 len; /* always stored as little-endian */
char data[ORINOCO_MAX_KEY_SIZE]; char data[ORINOCO_MAX_KEY_SIZE];
} __attribute__ ((packed)); } __attribute__ ((packed));
...@@ -35,14 +35,14 @@ struct header_struct { ...@@ -35,14 +35,14 @@ struct header_struct {
/* 802.3 */ /* 802.3 */
u8 dest[ETH_ALEN]; u8 dest[ETH_ALEN];
u8 src[ETH_ALEN]; u8 src[ETH_ALEN];
u16 len; __be16 len;
/* 802.2 */ /* 802.2 */
u8 dsap; u8 dsap;
u8 ssap; u8 ssap;
u8 ctrl; u8 ctrl;
/* SNAP */ /* SNAP */
u8 oui[3]; u8 oui[3];
u16 ethertype; unsigned short ethertype;
} __attribute__ ((packed)); } __attribute__ ((packed));
typedef enum { typedef enum {
......
...@@ -138,8 +138,8 @@ static void spectrum_cs_detach(dev_link_t *link); ...@@ -138,8 +138,8 @@ static void spectrum_cs_detach(dev_link_t *link);
* Each block has the following structure. * Each block has the following structure.
*/ */
struct dblock { struct dblock {
u32 _addr; /* adapter address where to write the block */ __le32 _addr; /* adapter address where to write the block */
u16 _len; /* length of the data only, in bytes */ __le16 _len; /* length of the data only, in bytes */
char data[0]; /* data to be written */ char data[0]; /* data to be written */
} __attribute__ ((packed)); } __attribute__ ((packed));
...@@ -149,9 +149,9 @@ struct dblock { ...@@ -149,9 +149,9 @@ struct dblock {
* items with matching ID should be written. * items with matching ID should be written.
*/ */
struct pdr { struct pdr {
u32 _id; /* record ID */ __le32 _id; /* record ID */
u32 _addr; /* adapter address where to write the data */ __le32 _addr; /* adapter address where to write the data */
u32 _len; /* expected length of the data, in bytes */ __le32 _len; /* expected length of the data, in bytes */
char next[0]; /* next PDR starts here */ char next[0]; /* next PDR starts here */
} __attribute__ ((packed)); } __attribute__ ((packed));
...@@ -162,8 +162,8 @@ struct pdr { ...@@ -162,8 +162,8 @@ struct pdr {
* be plugged into the secondary firmware. * be plugged into the secondary firmware.
*/ */
struct pdi { struct pdi {
u16 _len; /* length of ID and data, in words */ __le16 _len; /* length of ID and data, in words */
u16 _id; /* record ID */ __le16 _id; /* record ID */
char data[0]; /* plug data */ char data[0]; /* plug data */
} __attribute__ ((packed));; } __attribute__ ((packed));;
...@@ -370,7 +370,7 @@ spectrum_plug_pdi(hermes_t *hw, struct pdr *first_pdr, struct pdi *pdi) ...@@ -370,7 +370,7 @@ spectrum_plug_pdi(hermes_t *hw, struct pdr *first_pdr, struct pdi *pdi)
/* Read PDA from the adapter */ /* Read PDA from the adapter */
static int static int
spectrum_read_pda(hermes_t *hw, u16 *pda, int pda_len) spectrum_read_pda(hermes_t *hw, __le16 *pda, int pda_len)
{ {
int ret; int ret;
int pda_size; int pda_size;
...@@ -401,7 +401,7 @@ spectrum_read_pda(hermes_t *hw, u16 *pda, int pda_len) ...@@ -401,7 +401,7 @@ spectrum_read_pda(hermes_t *hw, u16 *pda, int pda_len)
/* Parse PDA and write the records into the adapter */ /* Parse PDA and write the records into the adapter */
static int static int
spectrum_apply_pda(hermes_t *hw, const struct dblock *first_block, spectrum_apply_pda(hermes_t *hw, const struct dblock *first_block,
u16 *pda) __le16 *pda)
{ {
int ret; int ret;
struct pdi *pdi; struct pdi *pdi;
...@@ -467,7 +467,7 @@ spectrum_dl_image(hermes_t *hw, dev_link_t *link, ...@@ -467,7 +467,7 @@ spectrum_dl_image(hermes_t *hw, dev_link_t *link,
const struct dblock *first_block; const struct dblock *first_block;
/* Plug Data Area (PDA) */ /* Plug Data Area (PDA) */
u16 pda[PDA_WORDS]; __le16 pda[PDA_WORDS];
/* Binary block begins after the 0x1A marker */ /* Binary block begins after the 0x1A marker */
ptr = image; ptr = image;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册