diff options
author | Ivo van Doorn <ivdoorn@gmail.com> | 2008-03-09 17:41:53 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-03-13 16:02:34 -0400 |
commit | 3976ae6c2b09608cd6a13663737a6b219245b651 (patch) | |
tree | c8d7b4b7a20fd9fe953d30c432e17bc3c60cef11 /drivers/net/wireless/rt2x00/rt2x00dev.c | |
parent | 2ae23854dc0af617d9a0e3ab51a0cc51485ebbf2 (diff) |
rt2x00: Use skbdesc fields for descriptor initialization
In rt2x00lib_write_tx_desc() the skb->data and skb->len fields
were incorrectly used. For USB drivers both of those values
contain invalid data (skb->data points to the device descriptor,
skb->len contains the frame _and_ descriptor length).
Instead of using the skbuffer fields we should use the skbdesc
fields which are correctly initialized and contain all the data
that we need.
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/rt2x00dev.c')
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00dev.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c index 141b9b8a1997..455d0763503e 100644 --- a/drivers/net/wireless/rt2x00/rt2x00dev.c +++ b/drivers/net/wireless/rt2x00/rt2x00dev.c | |||
@@ -630,7 +630,7 @@ void rt2x00lib_write_tx_desc(struct rt2x00_dev *rt2x00dev, | |||
630 | { | 630 | { |
631 | struct txentry_desc txdesc; | 631 | struct txentry_desc txdesc; |
632 | struct skb_frame_desc *skbdesc = get_skb_frame_desc(skb); | 632 | struct skb_frame_desc *skbdesc = get_skb_frame_desc(skb); |
633 | struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; | 633 | struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skbdesc->data; |
634 | const struct rt2x00_rate *rate; | 634 | const struct rt2x00_rate *rate; |
635 | int tx_rate; | 635 | int tx_rate; |
636 | int length; | 636 | int length; |
@@ -710,7 +710,7 @@ void rt2x00lib_write_tx_desc(struct rt2x00_dev *rt2x00dev, | |||
710 | txdesc.signal = rate->plcp; | 710 | txdesc.signal = rate->plcp; |
711 | txdesc.service = 0x04; | 711 | txdesc.service = 0x04; |
712 | 712 | ||
713 | length = skb->len + FCS_LEN; | 713 | length = skbdesc->data_len + FCS_LEN; |
714 | if (rate->flags & DEV_RATE_OFDM) { | 714 | if (rate->flags & DEV_RATE_OFDM) { |
715 | __set_bit(ENTRY_TXD_OFDM_RATE, &txdesc.flags); | 715 | __set_bit(ENTRY_TXD_OFDM_RATE, &txdesc.flags); |
716 | 716 | ||