rtl8192u: don't trample on <linux/ieee80211.h> struct namespace

In order to start reducing the duplicated code/constants/macros in this
driver, we need to include <linux/ieee80211.h> to provide the defacto
versions.  However this driver has structs with the same name as the
ones in the main include, so namespace collision prevents us from doing
step #1.

Since the structs actually differ in their respective fields, we can't
simply delete the local ones without impacting the runtime; a conversion
to use the global ones can be considered at a later date if desired.

Rename the ones here with a vendor specific prefix so that we won't have
the namespace collision, and hence can continue on with the cleanup.

Automated conversion done with:

    for i in `find . -name '*.[ch]'` ; do \
      sed -i 's/struct ieee80211_hdr/struct rtl_80211_hdr/g' $i ; \
    done

Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Paul Gortmaker 2015-04-27 01:25:36 -04:00 коммит произвёл Greg Kroah-Hartman
Родитель f9c40f143c
Коммит 5c2918a5ba
8 изменённых файлов: 127 добавлений и 127 удалений

Просмотреть файл

@ -1020,20 +1020,20 @@ enum ieee80211_mfie {
/* Minimal header; can be used for passing 802.11 frames with sufficient /* Minimal header; can be used for passing 802.11 frames with sufficient
* information to determine what type of underlying data type is actually * information to determine what type of underlying data type is actually
* stored in the data. */ * stored in the data. */
struct ieee80211_hdr { struct rtl_80211_hdr {
__le16 frame_ctl; __le16 frame_ctl;
__le16 duration_id; __le16 duration_id;
u8 payload[0]; u8 payload[0];
} __packed; } __packed;
struct ieee80211_hdr_1addr { struct rtl_80211_hdr_1addr {
__le16 frame_ctl; __le16 frame_ctl;
__le16 duration_id; __le16 duration_id;
u8 addr1[ETH_ALEN]; u8 addr1[ETH_ALEN];
u8 payload[0]; u8 payload[0];
} __packed; } __packed;
struct ieee80211_hdr_2addr { struct rtl_80211_hdr_2addr {
__le16 frame_ctl; __le16 frame_ctl;
__le16 duration_id; __le16 duration_id;
u8 addr1[ETH_ALEN]; u8 addr1[ETH_ALEN];
@ -1041,7 +1041,7 @@ struct ieee80211_hdr_2addr {
u8 payload[0]; u8 payload[0];
} __packed; } __packed;
struct ieee80211_hdr_3addr { struct rtl_80211_hdr_3addr {
__le16 frame_ctl; __le16 frame_ctl;
__le16 duration_id; __le16 duration_id;
u8 addr1[ETH_ALEN]; u8 addr1[ETH_ALEN];
@ -1051,7 +1051,7 @@ struct ieee80211_hdr_3addr {
u8 payload[0]; u8 payload[0];
} __packed; } __packed;
struct ieee80211_hdr_4addr { struct rtl_80211_hdr_4addr {
__le16 frame_ctl; __le16 frame_ctl;
__le16 duration_id; __le16 duration_id;
u8 addr1[ETH_ALEN]; u8 addr1[ETH_ALEN];
@ -1062,7 +1062,7 @@ struct ieee80211_hdr_4addr {
u8 payload[0]; u8 payload[0];
} __packed; } __packed;
struct ieee80211_hdr_3addrqos { struct rtl_80211_hdr_3addrqos {
__le16 frame_ctl; __le16 frame_ctl;
__le16 duration_id; __le16 duration_id;
u8 addr1[ETH_ALEN]; u8 addr1[ETH_ALEN];
@ -1073,7 +1073,7 @@ struct ieee80211_hdr_3addrqos {
__le16 qos_ctl; __le16 qos_ctl;
} __packed; } __packed;
struct ieee80211_hdr_4addrqos { struct rtl_80211_hdr_4addrqos {
__le16 frame_ctl; __le16 frame_ctl;
__le16 duration_id; __le16 duration_id;
u8 addr1[ETH_ALEN]; u8 addr1[ETH_ALEN];
@ -1092,7 +1092,7 @@ struct ieee80211_info_element {
} __packed; } __packed;
struct ieee80211_authentication { struct ieee80211_authentication {
struct ieee80211_hdr_3addr header; struct rtl_80211_hdr_3addr header;
__le16 algorithm; __le16 algorithm;
__le16 transaction; __le16 transaction;
__le16 status; __le16 status;
@ -1101,18 +1101,18 @@ struct ieee80211_authentication {
} __packed; } __packed;
struct ieee80211_disassoc { struct ieee80211_disassoc {
struct ieee80211_hdr_3addr header; struct rtl_80211_hdr_3addr header;
__le16 reason; __le16 reason;
} __packed; } __packed;
struct ieee80211_probe_request { struct ieee80211_probe_request {
struct ieee80211_hdr_3addr header; struct rtl_80211_hdr_3addr header;
/* SSID, supported rates */ /* SSID, supported rates */
struct ieee80211_info_element info_element[0]; struct ieee80211_info_element info_element[0];
} __packed; } __packed;
struct ieee80211_probe_response { struct ieee80211_probe_response {
struct ieee80211_hdr_3addr header; struct rtl_80211_hdr_3addr header;
__le32 time_stamp[2]; __le32 time_stamp[2];
__le16 beacon_interval; __le16 beacon_interval;
__le16 capability; __le16 capability;
@ -1125,7 +1125,7 @@ struct ieee80211_probe_response {
#define ieee80211_beacon ieee80211_probe_response #define ieee80211_beacon ieee80211_probe_response
struct ieee80211_assoc_request_frame { struct ieee80211_assoc_request_frame {
struct ieee80211_hdr_3addr header; struct rtl_80211_hdr_3addr header;
__le16 capability; __le16 capability;
__le16 listen_interval; __le16 listen_interval;
/* SSID, supported rates, RSN */ /* SSID, supported rates, RSN */
@ -1133,7 +1133,7 @@ struct ieee80211_assoc_request_frame {
} __packed; } __packed;
struct ieee80211_reassoc_request_frame { struct ieee80211_reassoc_request_frame {
struct ieee80211_hdr_3addr header; struct rtl_80211_hdr_3addr header;
__le16 capability; __le16 capability;
__le16 listen_interval; __le16 listen_interval;
u8 current_ap[ETH_ALEN]; u8 current_ap[ETH_ALEN];
@ -1142,7 +1142,7 @@ struct ieee80211_reassoc_request_frame {
} __packed; } __packed;
struct ieee80211_assoc_response_frame { struct ieee80211_assoc_response_frame {
struct ieee80211_hdr_3addr header; struct rtl_80211_hdr_3addr header;
__le16 capability; __le16 capability;
__le16 status; __le16 status;
__le16 aid; __le16 aid;
@ -1329,9 +1329,9 @@ static inline const char *eap_get_type(int type)
//added by amy for reorder //added by amy for reorder
static inline u8 Frame_QoSTID(u8 *buf) static inline u8 Frame_QoSTID(u8 *buf)
{ {
struct ieee80211_hdr_3addr *hdr; struct rtl_80211_hdr_3addr *hdr;
u16 fc; u16 fc;
hdr = (struct ieee80211_hdr_3addr *)buf; hdr = (struct rtl_80211_hdr_3addr *)buf;
fc = le16_to_cpu(hdr->frame_ctl); fc = le16_to_cpu(hdr->frame_ctl);
return (u8)((frameqos *)(buf + (((fc & IEEE80211_FCTL_TODS)&&(fc & IEEE80211_FCTL_FROMDS))? 30 : 24)))->field.tid; return (u8)((frameqos *)(buf + (((fc & IEEE80211_FCTL_TODS)&&(fc & IEEE80211_FCTL_FROMDS))? 30 : 24)))->field.tid;
} }
@ -2262,17 +2262,17 @@ static inline int ieee80211_get_hdrlen(u16 fc)
return hdrlen; return hdrlen;
} }
static inline u8 *ieee80211_get_payload(struct ieee80211_hdr *hdr) static inline u8 *ieee80211_get_payload(struct rtl_80211_hdr *hdr)
{ {
switch (ieee80211_get_hdrlen(le16_to_cpu(hdr->frame_ctl))) { switch (ieee80211_get_hdrlen(le16_to_cpu(hdr->frame_ctl))) {
case IEEE80211_1ADDR_LEN: case IEEE80211_1ADDR_LEN:
return ((struct ieee80211_hdr_1addr *)hdr)->payload; return ((struct rtl_80211_hdr_1addr *)hdr)->payload;
case IEEE80211_2ADDR_LEN: case IEEE80211_2ADDR_LEN:
return ((struct ieee80211_hdr_2addr *)hdr)->payload; return ((struct rtl_80211_hdr_2addr *)hdr)->payload;
case IEEE80211_3ADDR_LEN: case IEEE80211_3ADDR_LEN:
return ((struct ieee80211_hdr_3addr *)hdr)->payload; return ((struct rtl_80211_hdr_3addr *)hdr)->payload;
case IEEE80211_4ADDR_LEN: case IEEE80211_4ADDR_LEN:
return ((struct ieee80211_hdr_4addr *)hdr)->payload; return ((struct rtl_80211_hdr_4addr *)hdr)->payload;
} }
return NULL; return NULL;
} }
@ -2328,7 +2328,7 @@ extern void ieee80211_txb_free(struct ieee80211_txb *);
extern int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb, extern int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
struct ieee80211_rx_stats *rx_stats); struct ieee80211_rx_stats *rx_stats);
extern void ieee80211_rx_mgt(struct ieee80211_device *ieee, extern void ieee80211_rx_mgt(struct ieee80211_device *ieee,
struct ieee80211_hdr_4addr *header, struct rtl_80211_hdr_4addr *header,
struct ieee80211_rx_stats *stats); struct ieee80211_rx_stats *stats);
/* ieee80211_wx.c */ /* ieee80211_wx.c */

Просмотреть файл

@ -112,7 +112,7 @@ static inline void xor_block(u8 *b, u8 *a, size_t len)
static void ccmp_init_blocks(struct crypto_tfm *tfm, static void ccmp_init_blocks(struct crypto_tfm *tfm,
struct ieee80211_hdr_4addr *hdr, struct rtl_80211_hdr_4addr *hdr,
u8 *pn, size_t dlen, u8 *b0, u8 *auth, u8 *pn, size_t dlen, u8 *b0, u8 *auth,
u8 *s0) u8 *s0)
{ {
@ -196,7 +196,7 @@ static int ieee80211_ccmp_encrypt(struct sk_buff *skb, int hdr_len, void *priv)
struct ieee80211_ccmp_data *key = priv; struct ieee80211_ccmp_data *key = priv;
int data_len, i; int data_len, i;
u8 *pos; u8 *pos;
struct ieee80211_hdr_4addr *hdr; struct rtl_80211_hdr_4addr *hdr;
cb_desc *tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); cb_desc *tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE);
if (skb_headroom(skb) < CCMP_HDR_LEN || if (skb_headroom(skb) < CCMP_HDR_LEN ||
@ -228,7 +228,7 @@ static int ieee80211_ccmp_encrypt(struct sk_buff *skb, int hdr_len, void *priv)
*pos++ = key->tx_pn[0]; *pos++ = key->tx_pn[0];
hdr = (struct ieee80211_hdr_4addr *) skb->data; hdr = (struct rtl_80211_hdr_4addr *) skb->data;
if (!tcb_desc->bHwSec) if (!tcb_desc->bHwSec)
{ {
int blocks, last, len; int blocks, last, len;
@ -270,7 +270,7 @@ static int ieee80211_ccmp_decrypt(struct sk_buff *skb, int hdr_len, void *priv)
{ {
struct ieee80211_ccmp_data *key = priv; struct ieee80211_ccmp_data *key = priv;
u8 keyidx, *pos; u8 keyidx, *pos;
struct ieee80211_hdr_4addr *hdr; struct rtl_80211_hdr_4addr *hdr;
cb_desc *tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); cb_desc *tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE);
u8 pn[6]; u8 pn[6];
@ -279,7 +279,7 @@ static int ieee80211_ccmp_decrypt(struct sk_buff *skb, int hdr_len, void *priv)
return -1; return -1;
} }
hdr = (struct ieee80211_hdr_4addr *) skb->data; hdr = (struct rtl_80211_hdr_4addr *) skb->data;
pos = skb->data + hdr_len; pos = skb->data + hdr_len;
keyidx = pos[3]; keyidx = pos[3];
if (!(keyidx & (1 << 5))) { if (!(keyidx & (1 << 5))) {

Просмотреть файл

@ -306,7 +306,7 @@ static int ieee80211_tkip_encrypt(struct sk_buff *skb, int hdr_len, void *priv)
struct ieee80211_tkip_data *tkey = priv; struct ieee80211_tkip_data *tkey = priv;
int len; int len;
u8 *pos; u8 *pos;
struct ieee80211_hdr_4addr *hdr; struct rtl_80211_hdr_4addr *hdr;
cb_desc *tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); cb_desc *tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE);
struct blkcipher_desc desc = {.tfm = tkey->tx_tfm_arc4}; struct blkcipher_desc desc = {.tfm = tkey->tx_tfm_arc4};
int ret = 0; int ret = 0;
@ -318,7 +318,7 @@ static int ieee80211_tkip_encrypt(struct sk_buff *skb, int hdr_len, void *priv)
skb->len < hdr_len) skb->len < hdr_len)
return -1; return -1;
hdr = (struct ieee80211_hdr_4addr *) skb->data; hdr = (struct rtl_80211_hdr_4addr *) skb->data;
if (!tcb_desc->bHwSec) if (!tcb_desc->bHwSec)
{ {
@ -390,7 +390,7 @@ static int ieee80211_tkip_decrypt(struct sk_buff *skb, int hdr_len, void *priv)
u8 keyidx, *pos; u8 keyidx, *pos;
u32 iv32; u32 iv32;
u16 iv16; u16 iv16;
struct ieee80211_hdr_4addr *hdr; struct rtl_80211_hdr_4addr *hdr;
cb_desc *tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); cb_desc *tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE);
struct blkcipher_desc desc = {.tfm = tkey->rx_tfm_arc4}; struct blkcipher_desc desc = {.tfm = tkey->rx_tfm_arc4};
u8 rc4key[16]; u8 rc4key[16];
@ -401,7 +401,7 @@ static int ieee80211_tkip_decrypt(struct sk_buff *skb, int hdr_len, void *priv)
if (skb->len < hdr_len + 8 + 4) if (skb->len < hdr_len + 8 + 4)
return -1; return -1;
hdr = (struct ieee80211_hdr_4addr *) skb->data; hdr = (struct rtl_80211_hdr_4addr *) skb->data;
pos = skb->data + hdr_len; pos = skb->data + hdr_len;
keyidx = pos[3]; keyidx = pos[3];
if (!(keyidx & (1 << 5))) { if (!(keyidx & (1 << 5))) {
@ -523,9 +523,9 @@ static int michael_mic(struct crypto_hash *tfm_michael, u8 *key, u8 *hdr,
static void michael_mic_hdr(struct sk_buff *skb, u8 *hdr) static void michael_mic_hdr(struct sk_buff *skb, u8 *hdr)
{ {
struct ieee80211_hdr_4addr *hdr11; struct rtl_80211_hdr_4addr *hdr11;
hdr11 = (struct ieee80211_hdr_4addr *) skb->data; hdr11 = (struct rtl_80211_hdr_4addr *) skb->data;
switch (le16_to_cpu(hdr11->frame_ctl) & switch (le16_to_cpu(hdr11->frame_ctl) &
(IEEE80211_FCTL_FROMDS | IEEE80211_FCTL_TODS)) { (IEEE80211_FCTL_FROMDS | IEEE80211_FCTL_TODS)) {
case IEEE80211_FCTL_TODS: case IEEE80211_FCTL_TODS:
@ -556,9 +556,9 @@ static int ieee80211_michael_mic_add(struct sk_buff *skb, int hdr_len, void *pri
{ {
struct ieee80211_tkip_data *tkey = priv; struct ieee80211_tkip_data *tkey = priv;
u8 *pos; u8 *pos;
struct ieee80211_hdr_4addr *hdr; struct rtl_80211_hdr_4addr *hdr;
hdr = (struct ieee80211_hdr_4addr *) skb->data; hdr = (struct rtl_80211_hdr_4addr *) skb->data;
if (skb_tailroom(skb) < 8 || skb->len < hdr_len) { if (skb_tailroom(skb) < 8 || skb->len < hdr_len) {
printk(KERN_DEBUG "Invalid packet for Michael MIC add " printk(KERN_DEBUG "Invalid packet for Michael MIC add "
@ -585,7 +585,7 @@ static int ieee80211_michael_mic_add(struct sk_buff *skb, int hdr_len, void *pri
} }
static void ieee80211_michael_mic_failure(struct net_device *dev, static void ieee80211_michael_mic_failure(struct net_device *dev,
struct ieee80211_hdr_4addr *hdr, struct rtl_80211_hdr_4addr *hdr,
int keyidx) int keyidx)
{ {
union iwreq_data wrqu; union iwreq_data wrqu;
@ -610,9 +610,9 @@ static int ieee80211_michael_mic_verify(struct sk_buff *skb, int keyidx,
{ {
struct ieee80211_tkip_data *tkey = priv; struct ieee80211_tkip_data *tkey = priv;
u8 mic[8]; u8 mic[8];
struct ieee80211_hdr_4addr *hdr; struct rtl_80211_hdr_4addr *hdr;
hdr = (struct ieee80211_hdr_4addr *) skb->data; hdr = (struct rtl_80211_hdr_4addr *) skb->data;
if (!tkey->key_set) if (!tkey->key_set)
return -1; return -1;
@ -629,8 +629,8 @@ static int ieee80211_michael_mic_verify(struct sk_buff *skb, int keyidx,
skb->data + hdr_len, skb->len - 8 - hdr_len, mic)) skb->data + hdr_len, skb->len - 8 - hdr_len, mic))
return -1; return -1;
if (memcmp(mic, skb->data + skb->len - 8, 8) != 0) { if (memcmp(mic, skb->data + skb->len - 8, 8) != 0) {
struct ieee80211_hdr_4addr *hdr; struct rtl_80211_hdr_4addr *hdr;
hdr = (struct ieee80211_hdr_4addr *) skb->data; hdr = (struct rtl_80211_hdr_4addr *) skb->data;
printk(KERN_DEBUG "%s: Michael MIC verification failed for " printk(KERN_DEBUG "%s: Michael MIC verification failed for "
"MSDU from %pM keyidx=%d\n", "MSDU from %pM keyidx=%d\n",
skb->dev ? skb->dev->name : "N/A", hdr->addr2, skb->dev ? skb->dev->name : "N/A", hdr->addr2,

Просмотреть файл

@ -47,7 +47,7 @@ static inline void ieee80211_monitor_rx(struct ieee80211_device *ieee,
struct sk_buff *skb, struct sk_buff *skb,
struct ieee80211_rx_stats *rx_stats) struct ieee80211_rx_stats *rx_stats)
{ {
struct ieee80211_hdr_4addr *hdr = (struct ieee80211_hdr_4addr *)skb->data; struct rtl_80211_hdr_4addr *hdr = (struct rtl_80211_hdr_4addr *)skb->data;
u16 fc = le16_to_cpu(hdr->frame_ctl); u16 fc = le16_to_cpu(hdr->frame_ctl);
skb->dev = ieee->dev; skb->dev = ieee->dev;
@ -94,7 +94,7 @@ ieee80211_frag_cache_find(struct ieee80211_device *ieee, unsigned int seq,
/* Called only as a tasklet (software IRQ) */ /* Called only as a tasklet (software IRQ) */
static struct sk_buff * static struct sk_buff *
ieee80211_frag_cache_get(struct ieee80211_device *ieee, ieee80211_frag_cache_get(struct ieee80211_device *ieee,
struct ieee80211_hdr_4addr *hdr) struct rtl_80211_hdr_4addr *hdr)
{ {
struct sk_buff *skb = NULL; struct sk_buff *skb = NULL;
u16 fc = le16_to_cpu(hdr->frame_ctl); u16 fc = le16_to_cpu(hdr->frame_ctl);
@ -102,17 +102,17 @@ ieee80211_frag_cache_get(struct ieee80211_device *ieee,
unsigned int frag = WLAN_GET_SEQ_FRAG(sc); unsigned int frag = WLAN_GET_SEQ_FRAG(sc);
unsigned int seq = WLAN_GET_SEQ_SEQ(sc); unsigned int seq = WLAN_GET_SEQ_SEQ(sc);
struct ieee80211_frag_entry *entry; struct ieee80211_frag_entry *entry;
struct ieee80211_hdr_3addrqos *hdr_3addrqos; struct rtl_80211_hdr_3addrqos *hdr_3addrqos;
struct ieee80211_hdr_4addrqos *hdr_4addrqos; struct rtl_80211_hdr_4addrqos *hdr_4addrqos;
u8 tid; u8 tid;
if (((fc & IEEE80211_FCTL_DSTODS) == IEEE80211_FCTL_DSTODS)&&IEEE80211_QOS_HAS_SEQ(fc)) { if (((fc & IEEE80211_FCTL_DSTODS) == IEEE80211_FCTL_DSTODS)&&IEEE80211_QOS_HAS_SEQ(fc)) {
hdr_4addrqos = (struct ieee80211_hdr_4addrqos *)hdr; hdr_4addrqos = (struct rtl_80211_hdr_4addrqos *)hdr;
tid = le16_to_cpu(hdr_4addrqos->qos_ctl) & IEEE80211_QCTL_TID; tid = le16_to_cpu(hdr_4addrqos->qos_ctl) & IEEE80211_QCTL_TID;
tid = UP2AC(tid); tid = UP2AC(tid);
tid ++; tid ++;
} else if (IEEE80211_QOS_HAS_SEQ(fc)) { } else if (IEEE80211_QOS_HAS_SEQ(fc)) {
hdr_3addrqos = (struct ieee80211_hdr_3addrqos *)hdr; hdr_3addrqos = (struct rtl_80211_hdr_3addrqos *)hdr;
tid = le16_to_cpu(hdr_3addrqos->qos_ctl) & IEEE80211_QCTL_TID; tid = le16_to_cpu(hdr_3addrqos->qos_ctl) & IEEE80211_QCTL_TID;
tid = UP2AC(tid); tid = UP2AC(tid);
tid ++; tid ++;
@ -123,7 +123,7 @@ ieee80211_frag_cache_get(struct ieee80211_device *ieee,
if (frag == 0) { if (frag == 0) {
/* Reserve enough space to fit maximum frame length */ /* Reserve enough space to fit maximum frame length */
skb = dev_alloc_skb(ieee->dev->mtu + skb = dev_alloc_skb(ieee->dev->mtu +
sizeof(struct ieee80211_hdr_4addr) + sizeof(struct rtl_80211_hdr_4addr) +
8 /* LLC */ + 8 /* LLC */ +
2 /* alignment */ + 2 /* alignment */ +
8 /* WEP */ + 8 /* WEP */ +
@ -163,23 +163,23 @@ ieee80211_frag_cache_get(struct ieee80211_device *ieee,
/* Called only as a tasklet (software IRQ) */ /* Called only as a tasklet (software IRQ) */
static int ieee80211_frag_cache_invalidate(struct ieee80211_device *ieee, static int ieee80211_frag_cache_invalidate(struct ieee80211_device *ieee,
struct ieee80211_hdr_4addr *hdr) struct rtl_80211_hdr_4addr *hdr)
{ {
u16 fc = le16_to_cpu(hdr->frame_ctl); u16 fc = le16_to_cpu(hdr->frame_ctl);
u16 sc = le16_to_cpu(hdr->seq_ctl); u16 sc = le16_to_cpu(hdr->seq_ctl);
unsigned int seq = WLAN_GET_SEQ_SEQ(sc); unsigned int seq = WLAN_GET_SEQ_SEQ(sc);
struct ieee80211_frag_entry *entry; struct ieee80211_frag_entry *entry;
struct ieee80211_hdr_3addrqos *hdr_3addrqos; struct rtl_80211_hdr_3addrqos *hdr_3addrqos;
struct ieee80211_hdr_4addrqos *hdr_4addrqos; struct rtl_80211_hdr_4addrqos *hdr_4addrqos;
u8 tid; u8 tid;
if(((fc & IEEE80211_FCTL_DSTODS) == IEEE80211_FCTL_DSTODS)&&IEEE80211_QOS_HAS_SEQ(fc)) { if(((fc & IEEE80211_FCTL_DSTODS) == IEEE80211_FCTL_DSTODS)&&IEEE80211_QOS_HAS_SEQ(fc)) {
hdr_4addrqos = (struct ieee80211_hdr_4addrqos *)hdr; hdr_4addrqos = (struct rtl_80211_hdr_4addrqos *)hdr;
tid = le16_to_cpu(hdr_4addrqos->qos_ctl) & IEEE80211_QCTL_TID; tid = le16_to_cpu(hdr_4addrqos->qos_ctl) & IEEE80211_QCTL_TID;
tid = UP2AC(tid); tid = UP2AC(tid);
tid ++; tid ++;
} else if (IEEE80211_QOS_HAS_SEQ(fc)) { } else if (IEEE80211_QOS_HAS_SEQ(fc)) {
hdr_3addrqos = (struct ieee80211_hdr_3addrqos *)hdr; hdr_3addrqos = (struct rtl_80211_hdr_3addrqos *)hdr;
tid = le16_to_cpu(hdr_3addrqos->qos_ctl) & IEEE80211_QCTL_TID; tid = le16_to_cpu(hdr_3addrqos->qos_ctl) & IEEE80211_QCTL_TID;
tid = UP2AC(tid); tid = UP2AC(tid);
tid ++; tid ++;
@ -217,10 +217,10 @@ ieee80211_rx_frame_mgmt(struct ieee80211_device *ieee, struct sk_buff *skb,
* this is not mandatory.... but seems that the probe * this is not mandatory.... but seems that the probe
* response parser uses it * response parser uses it
*/ */
struct ieee80211_hdr_3addr *hdr = (struct ieee80211_hdr_3addr *)skb->data; struct rtl_80211_hdr_3addr *hdr = (struct rtl_80211_hdr_3addr *)skb->data;
rx_stats->len = skb->len; rx_stats->len = skb->len;
ieee80211_rx_mgt(ieee,(struct ieee80211_hdr_4addr *)skb->data,rx_stats); ieee80211_rx_mgt(ieee,(struct rtl_80211_hdr_4addr *)skb->data,rx_stats);
/* if ((ieee->state == IEEE80211_LINKED) && (memcmp(hdr->addr3, ieee->current_network.bssid, ETH_ALEN))) */ /* if ((ieee->state == IEEE80211_LINKED) && (memcmp(hdr->addr3, ieee->current_network.bssid, ETH_ALEN))) */
if ((memcmp(hdr->addr1, ieee->dev->dev_addr, ETH_ALEN)))/* use ADDR1 to perform address matching for Management frames */ if ((memcmp(hdr->addr1, ieee->dev->dev_addr, ETH_ALEN)))/* use ADDR1 to perform address matching for Management frames */
{ {
@ -298,13 +298,13 @@ static int ieee80211_is_eapol_frame(struct ieee80211_device *ieee,
{ {
struct net_device *dev = ieee->dev; struct net_device *dev = ieee->dev;
u16 fc, ethertype; u16 fc, ethertype;
struct ieee80211_hdr_4addr *hdr; struct rtl_80211_hdr_4addr *hdr;
u8 *pos; u8 *pos;
if (skb->len < 24) if (skb->len < 24)
return 0; return 0;
hdr = (struct ieee80211_hdr_4addr *) skb->data; hdr = (struct rtl_80211_hdr_4addr *) skb->data;
fc = le16_to_cpu(hdr->frame_ctl); fc = le16_to_cpu(hdr->frame_ctl);
/* check that the frame is unicast frame to us */ /* check that the frame is unicast frame to us */
@ -338,7 +338,7 @@ static inline int
ieee80211_rx_frame_decrypt(struct ieee80211_device *ieee, struct sk_buff *skb, ieee80211_rx_frame_decrypt(struct ieee80211_device *ieee, struct sk_buff *skb,
struct ieee80211_crypt_data *crypt) struct ieee80211_crypt_data *crypt)
{ {
struct ieee80211_hdr_4addr *hdr; struct rtl_80211_hdr_4addr *hdr;
int res, hdrlen; int res, hdrlen;
if (crypt == NULL || crypt->ops->decrypt_mpdu == NULL) if (crypt == NULL || crypt->ops->decrypt_mpdu == NULL)
@ -348,7 +348,7 @@ ieee80211_rx_frame_decrypt(struct ieee80211_device *ieee, struct sk_buff *skb,
cb_desc *tcb_desc = (cb_desc *)(skb->cb+ MAX_DEV_ADDR_SIZE); cb_desc *tcb_desc = (cb_desc *)(skb->cb+ MAX_DEV_ADDR_SIZE);
tcb_desc->bHwSec = 1; tcb_desc->bHwSec = 1;
} }
hdr = (struct ieee80211_hdr_4addr *) skb->data; hdr = (struct rtl_80211_hdr_4addr *) skb->data;
hdrlen = ieee80211_get_hdrlen(le16_to_cpu(hdr->frame_ctl)); hdrlen = ieee80211_get_hdrlen(le16_to_cpu(hdr->frame_ctl));
if (ieee->tkip_countermeasures && if (ieee->tkip_countermeasures &&
@ -385,7 +385,7 @@ static inline int
ieee80211_rx_frame_decrypt_msdu(struct ieee80211_device *ieee, struct sk_buff *skb, ieee80211_rx_frame_decrypt_msdu(struct ieee80211_device *ieee, struct sk_buff *skb,
int keyidx, struct ieee80211_crypt_data *crypt) int keyidx, struct ieee80211_crypt_data *crypt)
{ {
struct ieee80211_hdr_4addr *hdr; struct rtl_80211_hdr_4addr *hdr;
int res, hdrlen; int res, hdrlen;
if (crypt == NULL || crypt->ops->decrypt_msdu == NULL) if (crypt == NULL || crypt->ops->decrypt_msdu == NULL)
@ -396,7 +396,7 @@ ieee80211_rx_frame_decrypt_msdu(struct ieee80211_device *ieee, struct sk_buff *s
tcb_desc->bHwSec = 1; tcb_desc->bHwSec = 1;
} }
hdr = (struct ieee80211_hdr_4addr *) skb->data; hdr = (struct rtl_80211_hdr_4addr *) skb->data;
hdrlen = ieee80211_get_hdrlen(le16_to_cpu(hdr->frame_ctl)); hdrlen = ieee80211_get_hdrlen(le16_to_cpu(hdr->frame_ctl));
atomic_inc(&crypt->refcnt); atomic_inc(&crypt->refcnt);
@ -416,7 +416,7 @@ ieee80211_rx_frame_decrypt_msdu(struct ieee80211_device *ieee, struct sk_buff *s
/* this function is stolen from ipw2200 driver*/ /* this function is stolen from ipw2200 driver*/
#define IEEE_PACKET_RETRY_TIME (5*HZ) #define IEEE_PACKET_RETRY_TIME (5*HZ)
static int is_duplicate_packet(struct ieee80211_device *ieee, static int is_duplicate_packet(struct ieee80211_device *ieee,
struct ieee80211_hdr_4addr *header) struct rtl_80211_hdr_4addr *header)
{ {
u16 fc = le16_to_cpu(header->frame_ctl); u16 fc = le16_to_cpu(header->frame_ctl);
u16 sc = le16_to_cpu(header->seq_ctl); u16 sc = le16_to_cpu(header->seq_ctl);
@ -424,19 +424,19 @@ static int is_duplicate_packet(struct ieee80211_device *ieee,
u16 frag = WLAN_GET_SEQ_FRAG(sc); u16 frag = WLAN_GET_SEQ_FRAG(sc);
u16 *last_seq, *last_frag; u16 *last_seq, *last_frag;
unsigned long *last_time; unsigned long *last_time;
struct ieee80211_hdr_3addrqos *hdr_3addrqos; struct rtl_80211_hdr_3addrqos *hdr_3addrqos;
struct ieee80211_hdr_4addrqos *hdr_4addrqos; struct rtl_80211_hdr_4addrqos *hdr_4addrqos;
u8 tid; u8 tid;
//TO2DS and QoS //TO2DS and QoS
if(((fc & IEEE80211_FCTL_DSTODS) == IEEE80211_FCTL_DSTODS)&&IEEE80211_QOS_HAS_SEQ(fc)) { if(((fc & IEEE80211_FCTL_DSTODS) == IEEE80211_FCTL_DSTODS)&&IEEE80211_QOS_HAS_SEQ(fc)) {
hdr_4addrqos = (struct ieee80211_hdr_4addrqos *)header; hdr_4addrqos = (struct rtl_80211_hdr_4addrqos *)header;
tid = le16_to_cpu(hdr_4addrqos->qos_ctl) & IEEE80211_QCTL_TID; tid = le16_to_cpu(hdr_4addrqos->qos_ctl) & IEEE80211_QCTL_TID;
tid = UP2AC(tid); tid = UP2AC(tid);
tid ++; tid ++;
} else if(IEEE80211_QOS_HAS_SEQ(fc)) { //QoS } else if(IEEE80211_QOS_HAS_SEQ(fc)) { //QoS
hdr_3addrqos = (struct ieee80211_hdr_3addrqos *)header; hdr_3addrqos = (struct rtl_80211_hdr_3addrqos *)header;
tid = le16_to_cpu(hdr_3addrqos->qos_ctl) & IEEE80211_QCTL_TID; tid = le16_to_cpu(hdr_3addrqos->qos_ctl) & IEEE80211_QCTL_TID;
tid = UP2AC(tid); tid = UP2AC(tid);
tid ++; tid ++;
@ -768,10 +768,10 @@ static u8 parse_subframe(struct sk_buff *skb,
struct ieee80211_rx_stats *rx_stats, struct ieee80211_rx_stats *rx_stats,
struct ieee80211_rxb *rxb, u8 *src, u8 *dst) struct ieee80211_rxb *rxb, u8 *src, u8 *dst)
{ {
struct ieee80211_hdr_3addr *hdr = (struct ieee80211_hdr_3addr *)skb->data; struct rtl_80211_hdr_3addr *hdr = (struct rtl_80211_hdr_3addr *)skb->data;
u16 fc = le16_to_cpu(hdr->frame_ctl); u16 fc = le16_to_cpu(hdr->frame_ctl);
u16 LLCOffset= sizeof(struct ieee80211_hdr_3addr); u16 LLCOffset= sizeof(struct rtl_80211_hdr_3addr);
u16 ChkLength; u16 ChkLength;
bool bIsAggregateFrame = false; bool bIsAggregateFrame = false;
u16 nSubframe_Length; u16 nSubframe_Length;
@ -888,8 +888,8 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
struct ieee80211_rx_stats *rx_stats) struct ieee80211_rx_stats *rx_stats)
{ {
struct net_device *dev = ieee->dev; struct net_device *dev = ieee->dev;
struct ieee80211_hdr_4addr *hdr; struct rtl_80211_hdr_4addr *hdr;
//struct ieee80211_hdr_3addrqos *hdr; //struct rtl_80211_hdr_3addrqos *hdr;
size_t hdrlen; size_t hdrlen;
u16 fc, type, stype, sc; u16 fc, type, stype, sc;
@ -921,7 +921,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
int i; int i;
struct ieee80211_rxb *rxb = NULL; struct ieee80211_rxb *rxb = NULL;
// cheat the the hdr type // cheat the the hdr type
hdr = (struct ieee80211_hdr_4addr *)skb->data; hdr = (struct rtl_80211_hdr_4addr *)skb->data;
stats = &ieee->stats; stats = &ieee->stats;
if (skb->len < 10) { if (skb->len < 10) {
@ -1156,7 +1156,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
} }
hdr = (struct ieee80211_hdr_4addr *) skb->data; hdr = (struct rtl_80211_hdr_4addr *) skb->data;
/* skb: hdr + (possibly fragmented) plaintext payload */ /* skb: hdr + (possibly fragmented) plaintext payload */
// PR: FIXME: hostap has additional conditions in the "if" below: // PR: FIXME: hostap has additional conditions in the "if" below:
@ -1209,7 +1209,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
/* this was the last fragment and the frame will be /* this was the last fragment and the frame will be
* delivered, so remove skb from fragment cache */ * delivered, so remove skb from fragment cache */
skb = frag_skb; skb = frag_skb;
hdr = (struct ieee80211_hdr_4addr *) skb->data; hdr = (struct rtl_80211_hdr_4addr *) skb->data;
ieee80211_frag_cache_invalidate(ieee, hdr); ieee80211_frag_cache_invalidate(ieee, hdr);
} }
@ -1226,7 +1226,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
ieee->LinkDetectInfo.NumRecvDataInPeriod++; ieee->LinkDetectInfo.NumRecvDataInPeriod++;
ieee->LinkDetectInfo.NumRxOkInPeriod++; ieee->LinkDetectInfo.NumRxOkInPeriod++;
hdr = (struct ieee80211_hdr_4addr *) skb->data; hdr = (struct rtl_80211_hdr_4addr *) skb->data;
if (crypt && !(fc & IEEE80211_FCTL_WEP) && !ieee->open_wep) { if (crypt && !(fc & IEEE80211_FCTL_WEP) && !ieee->open_wep) {
if (/*ieee->ieee802_1x &&*/ if (/*ieee->ieee802_1x &&*/
ieee80211_is_eapol_frame(ieee, skb, hdrlen)) { ieee80211_is_eapol_frame(ieee, skb, hdrlen)) {
@ -2612,7 +2612,7 @@ static inline void ieee80211_process_probe_response(
} }
void ieee80211_rx_mgt(struct ieee80211_device *ieee, void ieee80211_rx_mgt(struct ieee80211_device *ieee,
struct ieee80211_hdr_4addr *header, struct rtl_80211_hdr_4addr *header,
struct ieee80211_rx_stats *stats) struct ieee80211_rx_stats *stats)
{ {
switch (WLAN_FC_GET_STYPE(header->frame_ctl)) { switch (WLAN_FC_GET_STYPE(header->frame_ctl)) {

Просмотреть файл

@ -222,8 +222,8 @@ inline void softmac_mgmt_xmit(struct sk_buff *skb, struct ieee80211_device *ieee
{ {
unsigned long flags; unsigned long flags;
short single = ieee->softmac_features & IEEE_SOFTMAC_SINGLE_QUEUE; short single = ieee->softmac_features & IEEE_SOFTMAC_SINGLE_QUEUE;
struct ieee80211_hdr_3addr *header= struct rtl_80211_hdr_3addr *header=
(struct ieee80211_hdr_3addr *) skb->data; (struct rtl_80211_hdr_3addr *) skb->data;
cb_desc *tcb_desc = (cb_desc *)(skb->cb + 8); cb_desc *tcb_desc = (cb_desc *)(skb->cb + 8);
spin_lock_irqsave(&ieee->lock, flags); spin_lock_irqsave(&ieee->lock, flags);
@ -289,8 +289,8 @@ inline void softmac_ps_mgmt_xmit(struct sk_buff *skb, struct ieee80211_device *i
{ {
short single = ieee->softmac_features & IEEE_SOFTMAC_SINGLE_QUEUE; short single = ieee->softmac_features & IEEE_SOFTMAC_SINGLE_QUEUE;
struct ieee80211_hdr_3addr *header = struct rtl_80211_hdr_3addr *header =
(struct ieee80211_hdr_3addr *) skb->data; (struct rtl_80211_hdr_3addr *) skb->data;
if(single){ if(single){
@ -928,14 +928,14 @@ static struct sk_buff *ieee80211_null_func(struct ieee80211_device *ieee,
short pwr) short pwr)
{ {
struct sk_buff *skb; struct sk_buff *skb;
struct ieee80211_hdr_3addr *hdr; struct rtl_80211_hdr_3addr *hdr;
skb = dev_alloc_skb(sizeof(struct ieee80211_hdr_3addr)); skb = dev_alloc_skb(sizeof(struct rtl_80211_hdr_3addr));
if (!skb) if (!skb)
return NULL; return NULL;
hdr = (struct ieee80211_hdr_3addr *)skb_put(skb,sizeof(struct ieee80211_hdr_3addr)); hdr = (struct rtl_80211_hdr_3addr *)skb_put(skb,sizeof(struct rtl_80211_hdr_3addr));
memcpy(hdr->addr1, ieee->current_network.bssid, ETH_ALEN); memcpy(hdr->addr1, ieee->current_network.bssid, ETH_ALEN);
memcpy(hdr->addr2, ieee->dev->dev_addr, ETH_ALEN); memcpy(hdr->addr2, ieee->dev->dev_addr, ETH_ALEN);
@ -1304,7 +1304,7 @@ static void ieee80211_auth_challenge(struct ieee80211_device *ieee,
IEEE80211_DEBUG_MGMT("Sending authentication challenge response\n"); IEEE80211_DEBUG_MGMT("Sending authentication challenge response\n");
ieee80211_encrypt_fragment(ieee, skb, sizeof(struct ieee80211_hdr_3addr )); ieee80211_encrypt_fragment(ieee, skb, sizeof(struct rtl_80211_hdr_3addr ));
softmac_mgmt_xmit(skb, ieee); softmac_mgmt_xmit(skb, ieee);
mod_timer(&ieee->associate_timer, jiffies + (HZ/2)); mod_timer(&ieee->associate_timer, jiffies + (HZ/2));
@ -1588,17 +1588,17 @@ static short probe_rq_parse(struct ieee80211_device *ieee, struct sk_buff *skb,
u8 *ssid=NULL; u8 *ssid=NULL;
u8 ssidlen = 0; u8 ssidlen = 0;
struct ieee80211_hdr_3addr *header = struct rtl_80211_hdr_3addr *header =
(struct ieee80211_hdr_3addr *) skb->data; (struct rtl_80211_hdr_3addr *) skb->data;
if (skb->len < sizeof (struct ieee80211_hdr_3addr )) if (skb->len < sizeof (struct rtl_80211_hdr_3addr ))
return -1; /* corrupted */ return -1; /* corrupted */
memcpy(src,header->addr2, ETH_ALEN); memcpy(src,header->addr2, ETH_ALEN);
skbend = (u8 *)skb->data + skb->len; skbend = (u8 *)skb->data + skb->len;
tag = skb->data + sizeof (struct ieee80211_hdr_3addr ); tag = skb->data + sizeof (struct rtl_80211_hdr_3addr );
while (tag+1 < skbend){ while (tag+1 < skbend){
if (*tag == 0) { if (*tag == 0) {
@ -1894,7 +1894,7 @@ EXPORT_SYMBOL(ieee80211_ps_tx_ack);
static void ieee80211_process_action(struct ieee80211_device *ieee, static void ieee80211_process_action(struct ieee80211_device *ieee,
struct sk_buff *skb) struct sk_buff *skb)
{ {
struct ieee80211_hdr *header = (struct ieee80211_hdr *)skb->data; struct rtl_80211_hdr *header = (struct rtl_80211_hdr *)skb->data;
u8 *act = ieee80211_get_payload(header); u8 *act = ieee80211_get_payload(header);
u8 tmp = 0; u8 tmp = 0;
// IEEE80211_DEBUG_DATA(IEEE80211_DL_DATA|IEEE80211_DL_BA, skb->data, skb->len); // IEEE80211_DEBUG_DATA(IEEE80211_DL_DATA|IEEE80211_DL_BA, skb->data, skb->len);
@ -1985,7 +1985,7 @@ ieee80211_rx_frame_softmac(struct ieee80211_device *ieee, struct sk_buff *skb,
struct ieee80211_rx_stats *rx_stats, u16 type, struct ieee80211_rx_stats *rx_stats, u16 type,
u16 stype) u16 stype)
{ {
struct ieee80211_hdr_3addr *header = (struct ieee80211_hdr_3addr *) skb->data; struct rtl_80211_hdr_3addr *header = (struct rtl_80211_hdr_3addr *) skb->data;
u16 errcode; u16 errcode;
int aid; int aid;
struct ieee80211_assoc_response_frame *assoc_resp; struct ieee80211_assoc_response_frame *assoc_resp;
@ -2243,7 +2243,7 @@ void ieee80211_wake_queue(struct ieee80211_device *ieee)
unsigned long flags; unsigned long flags;
struct sk_buff *skb; struct sk_buff *skb;
struct ieee80211_hdr_3addr *header; struct rtl_80211_hdr_3addr *header;
spin_lock_irqsave(&ieee->lock, flags); spin_lock_irqsave(&ieee->lock, flags);
if (! ieee->queue_stop) goto exit; if (! ieee->queue_stop) goto exit;
@ -2253,7 +2253,7 @@ void ieee80211_wake_queue(struct ieee80211_device *ieee)
if (ieee->softmac_features & IEEE_SOFTMAC_SINGLE_QUEUE) { if (ieee->softmac_features & IEEE_SOFTMAC_SINGLE_QUEUE) {
while (!ieee->queue_stop && (skb = dequeue_mgmt(ieee))){ while (!ieee->queue_stop && (skb = dequeue_mgmt(ieee))){
header = (struct ieee80211_hdr_3addr *) skb->data; header = (struct rtl_80211_hdr_3addr *) skb->data;
header->seq_ctl = cpu_to_le16(ieee->seq_ctrl[0] << 4); header->seq_ctl = cpu_to_le16(ieee->seq_ctrl[0] << 4);

Просмотреть файл

@ -194,9 +194,9 @@ int ieee80211_encrypt_fragment(
if (ieee->tkip_countermeasures && if (ieee->tkip_countermeasures &&
crypt && crypt->ops && strcmp(crypt->ops->name, "TKIP") == 0) { crypt && crypt->ops && strcmp(crypt->ops->name, "TKIP") == 0) {
if (net_ratelimit()) { if (net_ratelimit()) {
struct ieee80211_hdr_3addrqos *header; struct rtl_80211_hdr_3addrqos *header;
header = (struct ieee80211_hdr_3addrqos *)frag->data; header = (struct rtl_80211_hdr_3addrqos *)frag->data;
printk(KERN_DEBUG "%s: TKIP countermeasures: dropped " printk(KERN_DEBUG "%s: TKIP countermeasures: dropped "
"TX packet to %pM\n", "TX packet to %pM\n",
ieee->dev->name, header->addr1); ieee->dev->name, header->addr1);
@ -308,7 +308,7 @@ static void ieee80211_tx_query_agg_cap(struct ieee80211_device *ieee,
{ {
PRT_HIGH_THROUGHPUT pHTInfo = ieee->pHTInfo; PRT_HIGH_THROUGHPUT pHTInfo = ieee->pHTInfo;
PTX_TS_RECORD pTxTs = NULL; PTX_TS_RECORD pTxTs = NULL;
struct ieee80211_hdr_1addr *hdr = (struct ieee80211_hdr_1addr *)skb->data; struct rtl_80211_hdr_1addr *hdr = (struct rtl_80211_hdr_1addr *)skb->data;
if (!pHTInfo->bCurrentHTSupport||!pHTInfo->bEnableHT) if (!pHTInfo->bCurrentHTSupport||!pHTInfo->bEnableHT)
return; return;
@ -598,14 +598,14 @@ int ieee80211_xmit(struct sk_buff *skb, struct net_device *dev)
{ {
struct ieee80211_device *ieee = netdev_priv(dev); struct ieee80211_device *ieee = netdev_priv(dev);
struct ieee80211_txb *txb = NULL; struct ieee80211_txb *txb = NULL;
struct ieee80211_hdr_3addrqos *frag_hdr; struct rtl_80211_hdr_3addrqos *frag_hdr;
int i, bytes_per_frag, nr_frags, bytes_last_frag, frag_size; int i, bytes_per_frag, nr_frags, bytes_last_frag, frag_size;
unsigned long flags; unsigned long flags;
struct net_device_stats *stats = &ieee->stats; struct net_device_stats *stats = &ieee->stats;
int ether_type = 0, encrypt; int ether_type = 0, encrypt;
int bytes, fc, qos_ctl = 0, hdr_len; int bytes, fc, qos_ctl = 0, hdr_len;
struct sk_buff *skb_frag; struct sk_buff *skb_frag;
struct ieee80211_hdr_3addrqos header = { /* Ensure zero initialized */ struct rtl_80211_hdr_3addrqos header = { /* Ensure zero initialized */
.duration_id = 0, .duration_id = 0,
.seq_ctl = 0, .seq_ctl = 0,
.qos_ctl = 0 .qos_ctl = 0
@ -787,7 +787,7 @@ int ieee80211_xmit(struct sk_buff *skb, struct net_device *dev)
{ {
tcb_desc->bHwSec = 0; tcb_desc->bHwSec = 0;
} }
frag_hdr = (struct ieee80211_hdr_3addrqos *)skb_put(skb_frag, hdr_len); frag_hdr = (struct rtl_80211_hdr_3addrqos *)skb_put(skb_frag, hdr_len);
memcpy(frag_hdr, &header, hdr_len); memcpy(frag_hdr, &header, hdr_len);
/* If this is not the last fragment, then add the MOREFRAGS /* If this is not the last fragment, then add the MOREFRAGS
@ -845,7 +845,7 @@ int ieee80211_xmit(struct sk_buff *skb, struct net_device *dev)
ieee->seq_ctrl[0]++; ieee->seq_ctrl[0]++;
} }
}else{ }else{
if (unlikely(skb->len < sizeof(struct ieee80211_hdr_3addr))) { if (unlikely(skb->len < sizeof(struct rtl_80211_hdr_3addr))) {
printk(KERN_WARNING "%s: skb too small (%d).\n", printk(KERN_WARNING "%s: skb too small (%d).\n",
ieee->dev->name, skb->len); ieee->dev->name, skb->len);
goto success; goto success;

Просмотреть файл

@ -110,7 +110,7 @@ void ResetBaEntry(PBA_RECORD pBA)
static struct sk_buff *ieee80211_ADDBA(struct ieee80211_device *ieee, u8 *Dst, PBA_RECORD pBA, u16 StatusCode, u8 type) static struct sk_buff *ieee80211_ADDBA(struct ieee80211_device *ieee, u8 *Dst, PBA_RECORD pBA, u16 StatusCode, u8 type)
{ {
struct sk_buff *skb = NULL; struct sk_buff *skb = NULL;
struct ieee80211_hdr_3addr *BAReq = NULL; struct rtl_80211_hdr_3addr *BAReq = NULL;
u8 *tag = NULL; u8 *tag = NULL;
u16 len = ieee->tx_headroom + 9; u16 len = ieee->tx_headroom + 9;
//category(1) + action field(1) + Dialog Token(1) + BA Parameter Set(2) + BA Timeout Value(2) + BA Start SeqCtrl(2)(or StatusCode(2)) //category(1) + action field(1) + Dialog Token(1) + BA Parameter Set(2) + BA Timeout Value(2) + BA Start SeqCtrl(2)(or StatusCode(2))
@ -120,17 +120,17 @@ static struct sk_buff *ieee80211_ADDBA(struct ieee80211_device *ieee, u8 *Dst, P
IEEE80211_DEBUG(IEEE80211_DL_ERR, "pBA is NULL\n"); IEEE80211_DEBUG(IEEE80211_DL_ERR, "pBA is NULL\n");
return NULL; return NULL;
} }
skb = dev_alloc_skb(len + sizeof( struct ieee80211_hdr_3addr)); //need to add something others? FIXME skb = dev_alloc_skb(len + sizeof( struct rtl_80211_hdr_3addr)); //need to add something others? FIXME
if (skb == NULL) if (skb == NULL)
{ {
IEEE80211_DEBUG(IEEE80211_DL_ERR, "can't alloc skb for ADDBA_REQ\n"); IEEE80211_DEBUG(IEEE80211_DL_ERR, "can't alloc skb for ADDBA_REQ\n");
return NULL; return NULL;
} }
memset(skb->data, 0, sizeof( struct ieee80211_hdr_3addr)); //I wonder whether it's necessary. Apparently kernel will not do it when alloc a skb. memset(skb->data, 0, sizeof( struct rtl_80211_hdr_3addr)); //I wonder whether it's necessary. Apparently kernel will not do it when alloc a skb.
skb_reserve(skb, ieee->tx_headroom); skb_reserve(skb, ieee->tx_headroom);
BAReq = ( struct ieee80211_hdr_3addr *) skb_put(skb,sizeof( struct ieee80211_hdr_3addr)); BAReq = ( struct rtl_80211_hdr_3addr *) skb_put(skb,sizeof( struct rtl_80211_hdr_3addr));
memcpy(BAReq->addr1, Dst, ETH_ALEN); memcpy(BAReq->addr1, Dst, ETH_ALEN);
memcpy(BAReq->addr2, ieee->dev->dev_addr, ETH_ALEN); memcpy(BAReq->addr2, ieee->dev->dev_addr, ETH_ALEN);
@ -139,7 +139,7 @@ static struct sk_buff *ieee80211_ADDBA(struct ieee80211_device *ieee, u8 *Dst, P
BAReq->frame_ctl = cpu_to_le16(IEEE80211_STYPE_MANAGE_ACT); //action frame BAReq->frame_ctl = cpu_to_le16(IEEE80211_STYPE_MANAGE_ACT); //action frame
//tag += sizeof( struct ieee80211_hdr_3addr); //move to action field //tag += sizeof( struct rtl_80211_hdr_3addr); //move to action field
tag = (u8 *)skb_put(skb, 9); tag = (u8 *)skb_put(skb, 9);
*tag ++= ACT_CAT_BA; *tag ++= ACT_CAT_BA;
*tag ++= type; *tag ++= type;
@ -195,7 +195,7 @@ static struct sk_buff *ieee80211_DELBA(
{ {
DELBA_PARAM_SET DelbaParamSet; DELBA_PARAM_SET DelbaParamSet;
struct sk_buff *skb = NULL; struct sk_buff *skb = NULL;
struct ieee80211_hdr_3addr *Delba = NULL; struct rtl_80211_hdr_3addr *Delba = NULL;
u8 *tag = NULL; u8 *tag = NULL;
//len = head len + DELBA Parameter Set(2) + Reason Code(2) //len = head len + DELBA Parameter Set(2) + Reason Code(2)
u16 len = 6 + ieee->tx_headroom; u16 len = 6 + ieee->tx_headroom;
@ -208,16 +208,16 @@ static struct sk_buff *ieee80211_DELBA(
DelbaParamSet.field.Initiator = (TxRxSelect==TX_DIR)?1:0; DelbaParamSet.field.Initiator = (TxRxSelect==TX_DIR)?1:0;
DelbaParamSet.field.TID = pBA->BaParamSet.field.TID; DelbaParamSet.field.TID = pBA->BaParamSet.field.TID;
skb = dev_alloc_skb(len + sizeof( struct ieee80211_hdr_3addr)); //need to add something others? FIXME skb = dev_alloc_skb(len + sizeof( struct rtl_80211_hdr_3addr)); //need to add something others? FIXME
if (skb == NULL) if (skb == NULL)
{ {
IEEE80211_DEBUG(IEEE80211_DL_ERR, "can't alloc skb for ADDBA_REQ\n"); IEEE80211_DEBUG(IEEE80211_DL_ERR, "can't alloc skb for ADDBA_REQ\n");
return NULL; return NULL;
} }
// memset(skb->data, 0, len+sizeof( struct ieee80211_hdr_3addr)); // memset(skb->data, 0, len+sizeof( struct rtl_80211_hdr_3addr));
skb_reserve(skb, ieee->tx_headroom); skb_reserve(skb, ieee->tx_headroom);
Delba = ( struct ieee80211_hdr_3addr *) skb_put(skb,sizeof( struct ieee80211_hdr_3addr)); Delba = ( struct rtl_80211_hdr_3addr *) skb_put(skb,sizeof( struct rtl_80211_hdr_3addr));
memcpy(Delba->addr1, dst, ETH_ALEN); memcpy(Delba->addr1, dst, ETH_ALEN);
memcpy(Delba->addr2, ieee->dev->dev_addr, ETH_ALEN); memcpy(Delba->addr2, ieee->dev->dev_addr, ETH_ALEN);
@ -333,7 +333,7 @@ static void ieee80211_send_DELBA(struct ieee80211_device *ieee, u8 *dst,
********************************************************************************************************************/ ********************************************************************************************************************/
int ieee80211_rx_ADDBAReq(struct ieee80211_device *ieee, struct sk_buff *skb) int ieee80211_rx_ADDBAReq(struct ieee80211_device *ieee, struct sk_buff *skb)
{ {
struct ieee80211_hdr_3addr *req = NULL; struct rtl_80211_hdr_3addr *req = NULL;
u16 rc = 0; u16 rc = 0;
u8 *dst = NULL, *pDialogToken = NULL, *tag = NULL; u8 *dst = NULL, *pDialogToken = NULL, *tag = NULL;
PBA_RECORD pBA = NULL; PBA_RECORD pBA = NULL;
@ -342,20 +342,20 @@ int ieee80211_rx_ADDBAReq(struct ieee80211_device *ieee, struct sk_buff *skb)
PSEQUENCE_CONTROL pBaStartSeqCtrl = NULL; PSEQUENCE_CONTROL pBaStartSeqCtrl = NULL;
PRX_TS_RECORD pTS = NULL; PRX_TS_RECORD pTS = NULL;
if (skb->len < sizeof(struct ieee80211_hdr_3addr) + 9) { if (skb->len < sizeof(struct rtl_80211_hdr_3addr) + 9) {
IEEE80211_DEBUG(IEEE80211_DL_ERR, IEEE80211_DEBUG(IEEE80211_DL_ERR,
" Invalid skb len in BAREQ(%d / %zu)\n", " Invalid skb len in BAREQ(%d / %zu)\n",
skb->len, skb->len,
(sizeof(struct ieee80211_hdr_3addr) + 9)); (sizeof(struct rtl_80211_hdr_3addr) + 9));
return -1; return -1;
} }
IEEE80211_DEBUG_DATA(IEEE80211_DL_DATA|IEEE80211_DL_BA, skb->data, skb->len); IEEE80211_DEBUG_DATA(IEEE80211_DL_DATA|IEEE80211_DL_BA, skb->data, skb->len);
req = (struct ieee80211_hdr_3addr *) skb->data; req = (struct rtl_80211_hdr_3addr *) skb->data;
tag = (u8 *)req; tag = (u8 *)req;
dst = (u8 *)(&req->addr2[0]); dst = (u8 *)(&req->addr2[0]);
tag += sizeof(struct ieee80211_hdr_3addr); tag += sizeof(struct rtl_80211_hdr_3addr);
pDialogToken = tag + 2; //category+action pDialogToken = tag + 2; //category+action
pBaParamSet = (PBA_PARAM_SET)(tag + 3); //+DialogToken pBaParamSet = (PBA_PARAM_SET)(tag + 3); //+DialogToken
pBaTimeoutVal = (u16 *)(tag + 5); pBaTimeoutVal = (u16 *)(tag + 5);
@ -435,7 +435,7 @@ OnADDBAReq_Fail:
********************************************************************************************************************/ ********************************************************************************************************************/
int ieee80211_rx_ADDBARsp(struct ieee80211_device *ieee, struct sk_buff *skb) int ieee80211_rx_ADDBARsp(struct ieee80211_device *ieee, struct sk_buff *skb)
{ {
struct ieee80211_hdr_3addr *rsp = NULL; struct rtl_80211_hdr_3addr *rsp = NULL;
PBA_RECORD pPendingBA, pAdmittedBA; PBA_RECORD pPendingBA, pAdmittedBA;
PTX_TS_RECORD pTS = NULL; PTX_TS_RECORD pTS = NULL;
u8 *dst = NULL, *pDialogToken = NULL, *tag = NULL; u8 *dst = NULL, *pDialogToken = NULL, *tag = NULL;
@ -443,17 +443,17 @@ int ieee80211_rx_ADDBARsp(struct ieee80211_device *ieee, struct sk_buff *skb)
PBA_PARAM_SET pBaParamSet = NULL; PBA_PARAM_SET pBaParamSet = NULL;
u16 ReasonCode; u16 ReasonCode;
if (skb->len < sizeof(struct ieee80211_hdr_3addr) + 9) { if (skb->len < sizeof(struct rtl_80211_hdr_3addr) + 9) {
IEEE80211_DEBUG(IEEE80211_DL_ERR, IEEE80211_DEBUG(IEEE80211_DL_ERR,
" Invalid skb len in BARSP(%d / %zu)\n", " Invalid skb len in BARSP(%d / %zu)\n",
skb->len, skb->len,
(sizeof(struct ieee80211_hdr_3addr) + 9)); (sizeof(struct rtl_80211_hdr_3addr) + 9));
return -1; return -1;
} }
rsp = (struct ieee80211_hdr_3addr *)skb->data; rsp = (struct rtl_80211_hdr_3addr *)skb->data;
tag = (u8 *)rsp; tag = (u8 *)rsp;
dst = (u8 *)(&rsp->addr2[0]); dst = (u8 *)(&rsp->addr2[0]);
tag += sizeof(struct ieee80211_hdr_3addr); tag += sizeof(struct rtl_80211_hdr_3addr);
pDialogToken = tag + 2; pDialogToken = tag + 2;
pStatusCode = (u16 *)(tag + 3); pStatusCode = (u16 *)(tag + 3);
pBaParamSet = (PBA_PARAM_SET)(tag + 5); pBaParamSet = (PBA_PARAM_SET)(tag + 5);
@ -569,16 +569,16 @@ OnADDBARsp_Reject:
********************************************************************************************************************/ ********************************************************************************************************************/
int ieee80211_rx_DELBA(struct ieee80211_device *ieee, struct sk_buff *skb) int ieee80211_rx_DELBA(struct ieee80211_device *ieee, struct sk_buff *skb)
{ {
struct ieee80211_hdr_3addr *delba = NULL; struct rtl_80211_hdr_3addr *delba = NULL;
PDELBA_PARAM_SET pDelBaParamSet = NULL; PDELBA_PARAM_SET pDelBaParamSet = NULL;
u16 *pReasonCode = NULL; u16 *pReasonCode = NULL;
u8 *dst = NULL; u8 *dst = NULL;
if (skb->len < sizeof(struct ieee80211_hdr_3addr) + 6) { if (skb->len < sizeof(struct rtl_80211_hdr_3addr) + 6) {
IEEE80211_DEBUG(IEEE80211_DL_ERR, IEEE80211_DEBUG(IEEE80211_DL_ERR,
" Invalid skb len in DELBA(%d / %zu)\n", " Invalid skb len in DELBA(%d / %zu)\n",
skb->len, skb->len,
(sizeof(struct ieee80211_hdr_3addr) + 6)); (sizeof(struct rtl_80211_hdr_3addr) + 6));
return -1; return -1;
} }
@ -590,9 +590,9 @@ int ieee80211_rx_DELBA(struct ieee80211_device *ieee, struct sk_buff *skb)
} }
IEEE80211_DEBUG_DATA(IEEE80211_DL_DATA|IEEE80211_DL_BA, skb->data, skb->len); IEEE80211_DEBUG_DATA(IEEE80211_DL_DATA|IEEE80211_DL_BA, skb->data, skb->len);
delba = (struct ieee80211_hdr_3addr *)skb->data; delba = (struct rtl_80211_hdr_3addr *)skb->data;
dst = (u8 *)(&delba->addr2[0]); dst = (u8 *)(&delba->addr2[0]);
delba += sizeof(struct ieee80211_hdr_3addr); delba += sizeof(struct rtl_80211_hdr_3addr);
pDelBaParamSet = (PDELBA_PARAM_SET)(delba+2); pDelBaParamSet = (PDELBA_PARAM_SET)(delba+2);
pReasonCode = (u16 *)(delba+4); pReasonCode = (u16 *)(delba+4);

Просмотреть файл

@ -3711,10 +3711,10 @@ static void rtl8192_process_phyinfo(struct r8192_priv *priv, u8 *buffer,
static u32 slide_beacon_adc_pwdb_index, slide_beacon_adc_pwdb_statistics; static u32 slide_beacon_adc_pwdb_index, slide_beacon_adc_pwdb_statistics;
static u32 last_beacon_adc_pwdb; static u32 last_beacon_adc_pwdb;
struct ieee80211_hdr_3addr *hdr; struct rtl_80211_hdr_3addr *hdr;
u16 sc; u16 sc;
unsigned int frag, seq; unsigned int frag, seq;
hdr = (struct ieee80211_hdr_3addr *)buffer; hdr = (struct rtl_80211_hdr_3addr *)buffer;
sc = le16_to_cpu(hdr->seq_ctl); sc = le16_to_cpu(hdr->seq_ctl);
frag = WLAN_GET_SEQ_FRAG(sc); frag = WLAN_GET_SEQ_FRAG(sc);
seq = WLAN_GET_SEQ_SEQ(sc); seq = WLAN_GET_SEQ_SEQ(sc);
@ -4205,7 +4205,7 @@ static void TranslateRxSignalStuff819xUsb(struct sk_buff *skb,
bool bpacket_match_bssid, bpacket_toself; bool bpacket_match_bssid, bpacket_toself;
bool bPacketBeacon = false, bToSelfBA = false; bool bPacketBeacon = false, bToSelfBA = false;
static struct ieee80211_rx_stats previous_stats; static struct ieee80211_rx_stats previous_stats;
struct ieee80211_hdr_3addr *hdr;//by amy struct rtl_80211_hdr_3addr *hdr;//by amy
u16 fc, type; u16 fc, type;
// Get Signal Quality for only RX data queue (but not command queue) // Get Signal Quality for only RX data queue (but not command queue)
@ -4216,7 +4216,7 @@ static void TranslateRxSignalStuff819xUsb(struct sk_buff *skb,
/* Get MAC frame start address. */ /* Get MAC frame start address. */
tmp_buf = (u8 *)skb->data; tmp_buf = (u8 *)skb->data;
hdr = (struct ieee80211_hdr_3addr *)tmp_buf; hdr = (struct rtl_80211_hdr_3addr *)tmp_buf;
fc = le16_to_cpu(hdr->frame_ctl); fc = le16_to_cpu(hdr->frame_ctl);
type = WLAN_FC_GET_TYPE(fc); type = WLAN_FC_GET_TYPE(fc);
praddr = hdr->addr1; praddr = hdr->addr1;
@ -4487,7 +4487,7 @@ static void rtl8192_rx_nomal(struct sk_buff *skb)
.freq = IEEE80211_24GHZ_BAND, .freq = IEEE80211_24GHZ_BAND,
}; };
u32 rx_pkt_len = 0; u32 rx_pkt_len = 0;
struct ieee80211_hdr_1addr *ieee80211_hdr = NULL; struct rtl_80211_hdr_1addr *ieee80211_hdr = NULL;
bool unicast_packet = false; bool unicast_packet = false;
/* 20 is for ps-poll */ /* 20 is for ps-poll */
@ -4500,7 +4500,7 @@ static void rtl8192_rx_nomal(struct sk_buff *skb)
skb_trim(skb, skb->len - 4/*sCrcLng*/); skb_trim(skb, skb->len - 4/*sCrcLng*/);
rx_pkt_len = skb->len; rx_pkt_len = skb->len;
ieee80211_hdr = (struct ieee80211_hdr_1addr *)skb->data; ieee80211_hdr = (struct rtl_80211_hdr_1addr *)skb->data;
unicast_packet = false; unicast_packet = false;
if (is_broadcast_ether_addr(ieee80211_hdr->addr1)) { if (is_broadcast_ether_addr(ieee80211_hdr->addr1)) {
//TODO //TODO