* [PATCH 1/2] rt2x00: Write the frame *after* padding (rt2800 usb devices) @ 2010-12-20 8:31 Ismael Luceno 2010-12-20 8:31 ` [PATCH 2/2] rt2x00: Fix panic on frame padding for rt2800 usb devices (due to not enough skb tailroom) Ismael Luceno 2010-12-20 8:55 ` [PATCH 1/2] rt2x00: Write the frame *after* padding (rt2800 usb devices) Helmut Schaa 0 siblings, 2 replies; 6+ messages in thread From: Ismael Luceno @ 2010-12-20 8:31 UTC (permalink / raw) To: linux-wireless; +Cc: Ivo Van Doorn, Gertjan van Wingerde, Ismael Luceno Signed-off-by: Ismael Luceno <ismael.luceno@gmail.com> --- drivers/net/wireless/rt2x00/rt2800usb.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c index 3e0205d..85185de 100644 --- a/drivers/net/wireless/rt2x00/rt2800usb.c +++ b/drivers/net/wireless/rt2x00/rt2800usb.c @@ -378,9 +378,10 @@ static void rt2800usb_write_tx_data(struct queue_entry *entry, * | TXINFO | TXWI | 802.11 header | L2 pad | payload | pad | USB end pad | * |<------------- tx_pkt_len ------------->| */ - rt2800_write_tx_data(entry, txdesc); - padding_len = roundup(entry->skb->len + 4, 4) - entry->skb->len; - memset(skb_put(entry->skb, padding_len), 0, padding_len); + padding_len = roundup(entry->skb->len + 4, 4) - entry->skb->len; + memset(skb_put(entry->skb, padding_len), 0, padding_len); + + rt2800_write_tx_data(entry, txdesc); } /* -- 1.7.3.4 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/2] rt2x00: Fix panic on frame padding for rt2800 usb devices (due to not enough skb tailroom) 2010-12-20 8:31 [PATCH 1/2] rt2x00: Write the frame *after* padding (rt2800 usb devices) Ismael Luceno @ 2010-12-20 8:31 ` Ismael Luceno 2010-12-20 11:45 ` Ivo Van Doorn 2010-12-20 8:55 ` [PATCH 1/2] rt2x00: Write the frame *after* padding (rt2800 usb devices) Helmut Schaa 1 sibling, 1 reply; 6+ messages in thread From: Ismael Luceno @ 2010-12-20 8:31 UTC (permalink / raw) To: linux-wireless; +Cc: Ivo Van Doorn, Gertjan van Wingerde, Ismael Luceno Signed-off-by: Ismael Luceno <ismael.luceno@gmail.com> --- drivers/net/wireless/rt2x00/rt2800usb.c | 11 +++++++++-- 1 files changed, 9 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c index 85185de..d284e1e 100644 --- a/drivers/net/wireless/rt2x00/rt2800usb.c +++ b/drivers/net/wireless/rt2x00/rt2800usb.c @@ -369,7 +369,8 @@ static void rt2800usb_write_tx_desc(struct queue_entry *entry, static void rt2800usb_write_tx_data(struct queue_entry *entry, struct txentry_desc *txdesc) { - u8 padding_len; + unsigned int padding_len; + int err; /* * pad(1~3 bytes) is added after each 802.11 payload. @@ -379,8 +380,14 @@ static void rt2800usb_write_tx_data(struct queue_entry *entry, * |<------------- tx_pkt_len ------------->| */ padding_len = roundup(entry->skb->len + 4, 4) - entry->skb->len; - memset(skb_put(entry->skb, padding_len), 0, padding_len); + err = skb_pad(entry->skb, padding_len); + if (unlikely(err)) { + WARNING(entry->queue->rt2x00dev, "TX SKB padding error, out of memory\n"); + return; + } + + entry->skb->len += padding_len; rt2800_write_tx_data(entry, txdesc); } -- 1.7.3.4 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] rt2x00: Fix panic on frame padding for rt2800 usb devices (due to not enough skb tailroom) 2010-12-20 8:31 ` [PATCH 2/2] rt2x00: Fix panic on frame padding for rt2800 usb devices (due to not enough skb tailroom) Ismael Luceno @ 2010-12-20 11:45 ` Ivo Van Doorn 0 siblings, 0 replies; 6+ messages in thread From: Ivo Van Doorn @ 2010-12-20 11:45 UTC (permalink / raw) To: Ismael Luceno; +Cc: linux-wireless, Gertjan van Wingerde Hi, > Signed-off-by: Ismael Luceno <ismael.luceno@gmail.com> Please add a short description why this change is needed, I only know why because of a discussion over private mail... > diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c > index 85185de..d284e1e 100644 > --- a/drivers/net/wireless/rt2x00/rt2800usb.c > +++ b/drivers/net/wireless/rt2x00/rt2800usb.c > @@ -369,7 +369,8 @@ static void rt2800usb_write_tx_desc(struct queue_entry *entry, > static void rt2800usb_write_tx_data(struct queue_entry *entry, > struct txentry_desc *txdesc) > { > - u8 padding_len; > + unsigned int padding_len; > + int err; > > /* > * pad(1~3 bytes) is added after each 802.11 payload. > @@ -379,8 +380,14 @@ static void rt2800usb_write_tx_data(struct queue_entry *entry, > * |<------------- tx_pkt_len ------------->| > */ > padding_len = roundup(entry->skb->len + 4, 4) - entry->skb->len; > - memset(skb_put(entry->skb, padding_len), 0, padding_len); > > + err = skb_pad(entry->skb, padding_len); > + if (unlikely(err)) { > + WARNING(entry->queue->rt2x00dev, "TX SKB padding error, out of memory\n"); > + return; > + } Please use skb_padto instead, that will actually check if the padding is needed or not... Ivo ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] rt2x00: Write the frame *after* padding (rt2800 usb devices) 2010-12-20 8:31 [PATCH 1/2] rt2x00: Write the frame *after* padding (rt2800 usb devices) Ismael Luceno 2010-12-20 8:31 ` [PATCH 2/2] rt2x00: Fix panic on frame padding for rt2800 usb devices (due to not enough skb tailroom) Ismael Luceno @ 2010-12-20 8:55 ` Helmut Schaa 2010-12-20 9:30 ` Julian Calaby 1 sibling, 1 reply; 6+ messages in thread From: Helmut Schaa @ 2010-12-20 8:55 UTC (permalink / raw) To: Ismael Luceno; +Cc: linux-wireless, Ivo Van Doorn, Gertjan van Wingerde Hi, Am Montag, 20. Dezember 2010 schrieb Ismael Luceno: > Signed-off-by: Ismael Luceno <ismael.luceno@gmail.com> > --- > drivers/net/wireless/rt2x00/rt2800usb.c | 7 ++++--- > 1 files changed, 4 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c > index 3e0205d..85185de 100644 > --- a/drivers/net/wireless/rt2x00/rt2800usb.c > +++ b/drivers/net/wireless/rt2x00/rt2800usb.c > @@ -378,9 +378,10 @@ static void rt2800usb_write_tx_data(struct queue_entry *entry, > * | TXINFO | TXWI | 802.11 header | L2 pad | payload | pad | USB end pad | > * |<------------- tx_pkt_len ------------->| > */ > - rt2800_write_tx_data(entry, txdesc); > - padding_len = roundup(entry->skb->len + 4, 4) - entry->skb->len; > - memset(skb_put(entry->skb, padding_len), 0, padding_len); > + padding_len = roundup(entry->skb->len + 4, 4) - entry->skb->len; > + memset(skb_put(entry->skb, padding_len), 0, padding_len); > + > + rt2800_write_tx_data(entry, txdesc); Could you please explain this change in more detail please? Why is it needed? rt2800_write_tx_data only adds the TXWI to the front of the buffer, doing that before or after the padding doesn't make a difference, no? Thanks, Helmut ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] rt2x00: Write the frame *after* padding (rt2800 usb devices) 2010-12-20 8:55 ` [PATCH 1/2] rt2x00: Write the frame *after* padding (rt2800 usb devices) Helmut Schaa @ 2010-12-20 9:30 ` Julian Calaby 2010-12-20 10:30 ` Helmut Schaa 0 siblings, 1 reply; 6+ messages in thread From: Julian Calaby @ 2010-12-20 9:30 UTC (permalink / raw) To: Helmut Schaa Cc: Ismael Luceno, linux-wireless, Ivo Van Doorn, Gertjan van Wingerde On Mon, Dec 20, 2010 at 19:55, Helmut Schaa <helmut.schaa@googlemail.com> wrote: > Hi, > > Am Montag, 20. Dezember 2010 schrieb Ismael Luceno: >> Signed-off-by: Ismael Luceno <ismael.luceno@gmail.com> >> --- >> drivers/net/wireless/rt2x00/rt2800usb.c | 7 ++++--- >> 1 files changed, 4 insertions(+), 3 deletions(-) >> >> diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c >> index 3e0205d..85185de 100644 >> --- a/drivers/net/wireless/rt2x00/rt2800usb.c >> +++ b/drivers/net/wireless/rt2x00/rt2800usb.c >> @@ -378,9 +378,10 @@ static void rt2800usb_write_tx_data(struct queue_entry *entry, >> * | TXINFO | TXWI | 802.11 header | L2 pad | payload | pad | USB end pad | >> * |<------------- tx_pkt_len ------------->| >> */ >> - rt2800_write_tx_data(entry, txdesc); >> - padding_len = roundup(entry->skb->len + 4, 4) - entry->skb->len; >> - memset(skb_put(entry->skb, padding_len), 0, padding_len); >> + padding_len = roundup(entry->skb->len + 4, 4) - entry->skb->len; >> + memset(skb_put(entry->skb, padding_len), 0, padding_len); >> + >> + rt2800_write_tx_data(entry, txdesc); > > Could you please explain this change in more detail please? > Why is it needed? rt2800_write_tx_data only adds the TXWI to the front of the > buffer, doing that before or after the padding doesn't make a difference, no? Semantically it makes more sense this way, why modify a entry before writing it - but maybe the issue is that the name of the function makes it's function ambiguous, maybe renaming it to something along the lines of "rt2800_prepend_TXWI" would make it's purpose clearer. Thanks, -- Julian Calaby Email: julian.calaby@gmail.com Profile: http://www.google.com/profiles/julian.calaby/ .Plan: http://sites.google.com/site/juliancalaby/ ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] rt2x00: Write the frame *after* padding (rt2800 usb devices) 2010-12-20 9:30 ` Julian Calaby @ 2010-12-20 10:30 ` Helmut Schaa 0 siblings, 0 replies; 6+ messages in thread From: Helmut Schaa @ 2010-12-20 10:30 UTC (permalink / raw) To: Julian Calaby Cc: Ismael Luceno, linux-wireless, Ivo Van Doorn, Gertjan van Wingerde Am Montag, 20. Dezember 2010 schrieb Julian Calaby: > On Mon, Dec 20, 2010 at 19:55, Helmut Schaa <helmut.schaa@googlemail.com> wrote: > > Hi, > > > > Am Montag, 20. Dezember 2010 schrieb Ismael Luceno: > >> Signed-off-by: Ismael Luceno <ismael.luceno@gmail.com> > >> --- > >> drivers/net/wireless/rt2x00/rt2800usb.c | 7 ++++--- > >> 1 files changed, 4 insertions(+), 3 deletions(-) > >> > >> diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c > >> index 3e0205d..85185de 100644 > >> --- a/drivers/net/wireless/rt2x00/rt2800usb.c > >> +++ b/drivers/net/wireless/rt2x00/rt2800usb.c > >> @@ -378,9 +378,10 @@ static void rt2800usb_write_tx_data(struct queue_entry *entry, > >> * | TXINFO | TXWI | 802.11 header | L2 pad | payload | pad | USB end pad | > >> * |<------------- tx_pkt_len ------------->| > >> */ > >> - rt2800_write_tx_data(entry, txdesc); > >> - padding_len = roundup(entry->skb->len + 4, 4) - entry->skb->len; > >> - memset(skb_put(entry->skb, padding_len), 0, padding_len); > >> + padding_len = roundup(entry->skb->len + 4, 4) - entry->skb->len; > >> + memset(skb_put(entry->skb, padding_len), 0, padding_len); > >> + > >> + rt2800_write_tx_data(entry, txdesc); > > > > Could you please explain this change in more detail please? > > Why is it needed? rt2800_write_tx_data only adds the TXWI to the front of the > > buffer, doing that before or after the padding doesn't make a difference, no? > > Semantically it makes more sense this way, why modify a entry before > writing it - but maybe the issue is that the name of the function > makes it's function ambiguous, maybe renaming it to something along > the lines of "rt2800_prepend_TXWI" would make it's purpose clearer. Correct. Helmut ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2010-12-20 11:45 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-12-20 8:31 [PATCH 1/2] rt2x00: Write the frame *after* padding (rt2800 usb devices) Ismael Luceno 2010-12-20 8:31 ` [PATCH 2/2] rt2x00: Fix panic on frame padding for rt2800 usb devices (due to not enough skb tailroom) Ismael Luceno 2010-12-20 11:45 ` Ivo Van Doorn 2010-12-20 8:55 ` [PATCH 1/2] rt2x00: Write the frame *after* padding (rt2800 usb devices) Helmut Schaa 2010-12-20 9:30 ` Julian Calaby 2010-12-20 10:30 ` Helmut Schaa
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.