From 49a456a453bde3350a41a55186fa761adcc2fcc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Kici=C5=84ski?= Date: Wed, 28 Dec 2011 01:53:22 +0100 Subject: [PATCH] --- yaml --- r: 279471 b: refs/heads/master c: d823a50e55fade0eda3708b00dbf49c5476c82e2 h: refs/heads/master i: 279469: 4cf2453aed80d03c199f9e3246fdd4b1876c6662 279467: ff0ad4ee66d4ba4a9296e8fd5fdac9b56866d7c1 279463: 4c80a852656796997add2ee274947a3b83a98095 279455: 8d53f97ae2df94f0df20aacb14bb30aaeea33196 v: v3 --- [refs] | 2 +- trunk/drivers/net/wireless/rt2x00/rt2x00usb.c | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 4e9eafd0531e..45b26ecb5f31 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4bcafac8c64e015775fcb844f643c2c70115bf46 +refs/heads/master: d823a50e55fade0eda3708b00dbf49c5476c82e2 diff --git a/trunk/drivers/net/wireless/rt2x00/rt2x00usb.c b/trunk/drivers/net/wireless/rt2x00/rt2x00usb.c index 1e31050dafc9..2eea3866504d 100644 --- a/trunk/drivers/net/wireless/rt2x00/rt2x00usb.c +++ b/trunk/drivers/net/wireless/rt2x00/rt2x00usb.c @@ -298,12 +298,22 @@ static bool rt2x00usb_kick_tx_entry(struct queue_entry *entry, void* data) return false; /* - * USB devices cannot blindly pass the skb->len as the - * length of the data to usb_fill_bulk_urb. Pass the skb - * to the driver to determine what the length should be. + * USB devices require certain padding at the end of each frame + * and urb. Those paddings are not included in skbs. Pass entry + * to the driver to determine what the overall length should be. */ length = rt2x00dev->ops->lib->get_tx_data_len(entry); + status = skb_padto(entry->skb, length); + if (unlikely(status)) { + /* TODO: report something more appropriate than IO_FAILED. */ + WARNING(rt2x00dev, "TX SKB padding error, out of memory\n"); + set_bit(ENTRY_DATA_IO_FAILED, &entry->flags); + rt2x00lib_dmadone(entry); + + return false; + } + usb_fill_bulk_urb(entry_priv->urb, usb_dev, usb_sndbulkpipe(usb_dev, entry->queue->usb_endpoint), entry->skb->data, length,