From 40561b8426c27f187e2ae496ed603e7c4e3ab818 Mon Sep 17 00:00:00 2001 From: Ivo van Doorn Date: Thu, 10 Jan 2008 22:02:44 +0100 Subject: 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 Signed-off-by: John W. Linville --- drivers/net/wireless/rt2x00/rt73usb.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) (limited to 'drivers/net/wireless/rt2x00/rt73usb.c') diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c index f9518764aeb..4d576ab3e7f 100644 --- a/drivers/net/wireless/rt2x00/rt73usb.c +++ b/drivers/net/wireless/rt2x00/rt73usb.c @@ -1397,16 +1397,13 @@ static void rt73usb_fill_rxdone(struct data_entry *entry, desc->size = rt2x00_get_field32(word0, RXD_W0_DATABYTE_COUNT); 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; } /* -- cgit v1.2.3