summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rt2x00/rt73usb.c
diff options
context:
space:
mode:
authorIvo van Doorn2008-01-10 22:02:44 +0100
committerDavid S. Miller2008-01-29 00:09:47 +0100
commit40561b8426c27f187e2ae496ed603e7c4e3ab818 (patch)
tree8aa31c5aca687b58590dfe2ba5a5aae9d44b5217 /drivers/net/wireless/rt2x00/rt73usb.c
parentb43: Add N-PHY related initvals firmware filenames. (diff)
downloadkernel-qcow2-linux-40561b8426c27f187e2ae496ed603e7c4e3ab818.tar.gz
kernel-qcow2-linux-40561b8426c27f187e2ae496ed603e7c4e3ab818.tar.xz
kernel-qcow2-linux-40561b8426c27f187e2ae496ed603e7c4e3ab818.zip
rt2x00: Data and desc pointer initialization
rt2500usb and rt73usb data and desc pointer initialization was incorrect because it was using uninitialized variables to determine the length. In addition rt2500usb used skb_pull and removed the ieee80211 from each received frame instead of using skb_trim to remove the device descriptor from the frame. Finally this also fixes the descriptor override when 4 byte aligning occured. We still need a completely valid descriptor when using the TX/RX dumping capabilities in debugfs. Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt73usb.c')
-rw-r--r--drivers/net/wireless/rt2x00/rt73usb.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c
index f9518764aeb0..4d576ab3e7f9 100644
--- a/drivers/net/wireless/rt2x00/rt73usb.c
+++ b/drivers/net/wireless/rt2x00/rt73usb.c
@@ -1398,15 +1398,12 @@ static void rt73usb_fill_rxdone(struct data_entry *entry,
desc->my_bss = !!rt2x00_get_field32(word0, RXD_W0_MY_BSS);
/*
- * Pull the skb to clear the descriptor area.
- */
- skb_pull(entry->skb, entry->ring->desc_size);
-
- /*
* Set descriptor and data pointer.
*/
- skbdesc->desc = entry->skb->data - skbdesc->desc_len;
- skbdesc->data = entry->skb->data;
+ skbdesc->desc = entry->skb->data;
+ skbdesc->desc_len = entry->ring->desc_size;
+ skbdesc->data = entry->skb->data + entry->ring->desc_size;
+ skbdesc->data_len = desc->size;
}
/*