diff options
author | Ivo van Doorn <ivdoorn@gmail.com> | 2008-02-10 16:51:21 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-02-29 15:37:20 -0500 |
commit | 647d0ca905f7d975e0bf41f571de6f443c814913 (patch) | |
tree | 61f6552d708eb3cec28b8e0ba828834390db8283 /drivers | |
parent | 417f412f2dfae016e29bb128bece60bf75d94d48 (diff) |
rt2x00: Fix skbdesc->data_len initialization
skbdesc->data_len was not initialized correctly
in rt2x00pci, rt2x00usb, rt2500usb and rt73usb.
The value was set to queue->data_size which
means that the incorrect frame size was pased
to the upper layers.
Correctly base the value on either the skb->len,
or the rx frame size passed to the driver by the
device.
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2500usb.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00pci.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00usb.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt73usb.c | 2 |
4 files changed, 5 insertions, 5 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c index ab6e3f7f0f61..f9d6f539a80f 100644 --- a/drivers/net/wireless/rt2x00/rt2500usb.c +++ b/drivers/net/wireless/rt2x00/rt2500usb.c | |||
@@ -1149,7 +1149,7 @@ static void rt2500usb_fill_rxdone(struct queue_entry *entry, | |||
1149 | * Set descriptor pointer. | 1149 | * Set descriptor pointer. |
1150 | */ | 1150 | */ |
1151 | skbdesc->data = entry->skb->data; | 1151 | skbdesc->data = entry->skb->data; |
1152 | skbdesc->data_len = entry->queue->data_size; | 1152 | skbdesc->data_len = rxdesc->size; |
1153 | skbdesc->desc = entry->skb->data + rxdesc->size; | 1153 | skbdesc->desc = entry->skb->data + rxdesc->size; |
1154 | skbdesc->desc_len = entry->queue->desc_size; | 1154 | skbdesc->desc_len = entry->queue->desc_size; |
1155 | 1155 | ||
diff --git a/drivers/net/wireless/rt2x00/rt2x00pci.c b/drivers/net/wireless/rt2x00/rt2x00pci.c index b8c6a8c9d6d2..8f88ca23c23a 100644 --- a/drivers/net/wireless/rt2x00/rt2x00pci.c +++ b/drivers/net/wireless/rt2x00/rt2x00pci.c | |||
@@ -63,7 +63,7 @@ int rt2x00pci_write_tx_data(struct rt2x00_dev *rt2x00dev, | |||
63 | skbdesc = get_skb_frame_desc(skb); | 63 | skbdesc = get_skb_frame_desc(skb); |
64 | memset(skbdesc, 0, sizeof(*skbdesc)); | 64 | memset(skbdesc, 0, sizeof(*skbdesc)); |
65 | skbdesc->data = skb->data; | 65 | skbdesc->data = skb->data; |
66 | skbdesc->data_len = queue->data_size; | 66 | skbdesc->data_len = skb->len; |
67 | skbdesc->desc = priv_tx->desc; | 67 | skbdesc->desc = priv_tx->desc; |
68 | skbdesc->desc_len = queue->desc_size; | 68 | skbdesc->desc_len = queue->desc_size; |
69 | skbdesc->entry = entry; | 69 | skbdesc->entry = entry; |
@@ -131,7 +131,7 @@ void rt2x00pci_rxdone(struct rt2x00_dev *rt2x00dev) | |||
131 | skbdesc = get_skb_frame_desc(entry->skb); | 131 | skbdesc = get_skb_frame_desc(entry->skb); |
132 | memset(skbdesc, 0, sizeof(*skbdesc)); | 132 | memset(skbdesc, 0, sizeof(*skbdesc)); |
133 | skbdesc->data = entry->skb->data; | 133 | skbdesc->data = entry->skb->data; |
134 | skbdesc->data_len = queue->data_size; | 134 | skbdesc->data_len = entry->skb->len; |
135 | skbdesc->desc = priv_rx->desc; | 135 | skbdesc->desc = priv_rx->desc; |
136 | skbdesc->desc_len = queue->desc_size; | 136 | skbdesc->desc_len = queue->desc_size; |
137 | skbdesc->entry = entry; | 137 | skbdesc->entry = entry; |
diff --git a/drivers/net/wireless/rt2x00/rt2x00usb.c b/drivers/net/wireless/rt2x00/rt2x00usb.c index 4219057d85cb..450043b61773 100644 --- a/drivers/net/wireless/rt2x00/rt2x00usb.c +++ b/drivers/net/wireless/rt2x00/rt2x00usb.c | |||
@@ -254,7 +254,7 @@ int rt2x00usb_write_tx_data(struct rt2x00_dev *rt2x00dev, | |||
254 | skbdesc = get_skb_frame_desc(skb); | 254 | skbdesc = get_skb_frame_desc(skb); |
255 | memset(skbdesc, 0, sizeof(*skbdesc)); | 255 | memset(skbdesc, 0, sizeof(*skbdesc)); |
256 | skbdesc->data = skb->data + queue->desc_size; | 256 | skbdesc->data = skb->data + queue->desc_size; |
257 | skbdesc->data_len = queue->data_size; | 257 | skbdesc->data_len = skb->len - queue->desc_size; |
258 | skbdesc->desc = skb->data; | 258 | skbdesc->desc = skb->data; |
259 | skbdesc->desc_len = queue->desc_size; | 259 | skbdesc->desc_len = queue->desc_size; |
260 | skbdesc->entry = entry; | 260 | skbdesc->entry = entry; |
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c index d2096d2dd993..5f3f74c23463 100644 --- a/drivers/net/wireless/rt2x00/rt73usb.c +++ b/drivers/net/wireless/rt2x00/rt73usb.c | |||
@@ -1399,7 +1399,7 @@ static void rt73usb_fill_rxdone(struct queue_entry *entry, | |||
1399 | * Set descriptor and data pointer. | 1399 | * Set descriptor and data pointer. |
1400 | */ | 1400 | */ |
1401 | skbdesc->data = entry->skb->data + entry->queue->desc_size; | 1401 | skbdesc->data = entry->skb->data + entry->queue->desc_size; |
1402 | skbdesc->data_len = entry->queue->data_size; | 1402 | skbdesc->data_len = rxdesc->size; |
1403 | skbdesc->desc = entry->skb->data; | 1403 | skbdesc->desc = entry->skb->data; |
1404 | skbdesc->desc_len = entry->queue->desc_size; | 1404 | skbdesc->desc_len = entry->queue->desc_size; |
1405 | 1405 | ||