Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 79336
b: refs/heads/master
c: 0300b33
h: refs/heads/master
v: v3
  • Loading branch information
Al Viro authored and David S. Miller committed Jan 28, 2008
1 parent 0a0414e commit 553ed96
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 52 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 851b3e5e3de0feea7bfee634f99a940648de58c8
refs/heads/master: 0300b3321d9ed73a0c3f575f2df250c577852356
74 changes: 23 additions & 51 deletions trunk/drivers/net/wireless/airo.c
Original file line number Diff line number Diff line change
Expand Up @@ -3177,6 +3177,21 @@ static int airo_thread(void *data) {
return 0;
}

static int header_len(__le16 ctl)
{
u16 fc = le16_to_cpu(ctl);
switch (fc & 0xc) {
case 4:
if ((fc & 0xe0) == 0xc0)
return 10; /* one-address control packet */
return 16; /* two-address control packet */
case 8:
if ((fc & 0x300) == 0x300)
return 30; /* WDS packet */
}
return 24;
}

static irqreturn_t airo_interrupt(int irq, void *dev_id)
{
struct net_device *dev = dev_id;
Expand Down Expand Up @@ -3330,23 +3345,8 @@ static irqreturn_t airo_interrupt(int irq, void *dev_id)
goto badrx;

if (test_bit(FLAG_802_11, &apriv->flags)) {
bap_read (apriv, (u16*)&fc, sizeof(fc), BAP0);
fc = le16_to_cpu(fc);
switch (fc & 0xc) {
case 4:
if ((fc & 0xe0) == 0xc0)
hdrlen = 10;
else
hdrlen = 16;
break;
case 8:
if ((fc&0x300)==0x300){
hdrlen = 30;
break;
}
default:
hdrlen = 24;
}
bap_read (apriv, &fc, sizeof(fc), BAP0);
hdrlen = header_len(fc);
} else
hdrlen = ETH_ALEN * 2;

Expand Down Expand Up @@ -3677,7 +3677,8 @@ void mpi_receive_802_11 (struct airo_info *ai)
{
RxFid rxd;
struct sk_buff *skb = NULL;
u16 fc, len, hdrlen = 0;
u16 len, hdrlen = 0;
__le16 fc;
#pragma pack(1)
struct {
u16 status, len;
Expand Down Expand Up @@ -3707,23 +3708,8 @@ void mpi_receive_802_11 (struct airo_info *ai)
if (len == 0)
goto badrx;

memcpy ((char *)&fc, ptr, sizeof(fc));
fc = le16_to_cpu(fc);
switch (fc & 0xc) {
case 4:
if ((fc & 0xe0) == 0xc0)
hdrlen = 10;
else
hdrlen = 16;
break;
case 8:
if ((fc&0x300)==0x300){
hdrlen = 30;
break;
}
default:
hdrlen = 24;
}
fc = get_unaligned((__le16 *)ptr);
hdrlen = header_len(fc);

skb = dev_alloc_skb( len + hdrlen + 2 );
if ( !skb ) {
Expand Down Expand Up @@ -4370,22 +4356,8 @@ static int transmit_802_11_packet(struct airo_info *ai, int len, char *pPacket)
u16 txFid = len;
len >>= 16;

fc = le16_to_cpu(*(const u16*)pPacket);
switch (fc & 0xc) {
case 4:
if ((fc & 0xe0) == 0xc0)
hdrlen = 10;
else
hdrlen = 16;
break;
case 8:
if ((fc&0x300)==0x300){
hdrlen = 30;
break;
}
default:
hdrlen = 24;
}
fc = *(__le16*)pPacket;
hdrlen = header_len(fc);

if (len < hdrlen) {
airo_print_warn(ai->dev->name, "Short packet %d", len);
Expand Down

0 comments on commit 553ed96

Please sign in to comment.