From: Ivo van Doorn <ivdoorn@gmail.com>
To: Gertjan van Wingerde <gwingerde@gmail.com>
Cc: users@rt2x00.serialmonkey.com, linux-wireless@vger.kernel.org,
Benoit Papillault <benoit.papillault@free.fr>,
John Linville <linville@tuxdriver.com>
Subject: Re: [PATCH v3 1/4] rt2x00: Further L2 padding fixes.
Date: Tue, 1 Dec 2009 20:07:00 +0100 [thread overview]
Message-ID: <200912012007.01188.IvDoorn@gmail.com> (raw)
In-Reply-To: <1259615298-2305-2-git-send-email-gwingerde@gmail.com>
On Monday 30 November 2009, Gertjan van Wingerde wrote:
> Fix a couple of more bugs in the L2 padding code:
> 1. Compute the amount of L2 padding correctly (in 3 places).
> 2. Trim the skb correctly when the L2 padding has been applied.
>
> Also introduce a central macro the compute the L2 padding size.
>
> Signed-off-by: Gertjan van Wingerde <gwingerde@gmail.com>
Acked-by: Ivo van Doorn <IvDoorn@gmail.com>
> ---
> drivers/net/wireless/rt2x00/rt2x00.h | 6 ++++++
> drivers/net/wireless/rt2x00/rt2x00queue.c | 8 +++++---
> 2 files changed, 11 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h
> index dcfc8c2..6594d2f 100644
> --- a/drivers/net/wireless/rt2x00/rt2x00.h
> +++ b/drivers/net/wireless/rt2x00/rt2x00.h
> @@ -113,6 +113,12 @@
> ( ((unsigned long)((__skb)->data + (__header))) & 3 )
>
> /*
> + * Determine the number of L2 padding bytes required between the header and
> + * the payload.
> + */
> +#define L2PAD_SIZE(__hdrlen) (-(__hdrlen) & 3)
> +
> +/*
> * Constants for extra TX headroom for alignment purposes.
> */
> #define RT2X00_ALIGN_SIZE 4 /* Only whole frame needs alignment */
> diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.c b/drivers/net/wireless/rt2x00/rt2x00queue.c
> index b8f0954..21d5876 100644
> --- a/drivers/net/wireless/rt2x00/rt2x00queue.c
> +++ b/drivers/net/wireless/rt2x00/rt2x00queue.c
> @@ -181,7 +181,7 @@ void rt2x00queue_insert_l2pad(struct sk_buff *skb, unsigned int header_length)
> unsigned int frame_length = skb->len;
> unsigned int header_align = ALIGN_SIZE(skb, 0);
> unsigned int payload_align = ALIGN_SIZE(skb, header_length);
> - unsigned int l2pad = 4 - (payload_align - header_align);
> + unsigned int l2pad = L2PAD_SIZE(header_length);
>
> if (header_align == payload_align) {
> /*
> @@ -216,6 +216,7 @@ void rt2x00queue_insert_l2pad(struct sk_buff *skb, unsigned int header_length)
> memmove(skb->data + header_length + l2pad,
> skb->data + header_length + l2pad + payload_align,
> frame_length - header_length);
> + skb_trim(skb, frame_length + l2pad);
> skbdesc->flags |= SKBDESC_L2_PADDED;
> }
> }
> @@ -223,7 +224,7 @@ void rt2x00queue_insert_l2pad(struct sk_buff *skb, unsigned int header_length)
> void rt2x00queue_remove_l2pad(struct sk_buff *skb, unsigned int header_length)
> {
> struct skb_frame_desc *skbdesc = get_skb_frame_desc(skb);
> - unsigned int l2pad = 4 - (header_length & 3);
> + unsigned int l2pad = L2PAD_SIZE(header_length);
>
> if (!l2pad || (skbdesc->flags & SKBDESC_L2_PADDED))
> return;
> @@ -346,7 +347,8 @@ static void rt2x00queue_create_tx_descriptor(struct queue_entry *entry,
> * Header and alignment information.
> */
> txdesc->header_length = ieee80211_get_hdrlen_from_skb(entry->skb);
> - txdesc->l2pad = ALIGN_SIZE(entry->skb, txdesc->header_length);
> + if (test_bit(DRIVER_REQUIRE_L2PAD, &rt2x00dev->flags))
> + txdesc->l2pad = L2PAD_SIZE(txdesc->header_length);
>
> /*
> * Check whether this frame is to be acked.
next prev parent reply other threads:[~2009-12-01 19:07 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-11-30 21:08 [PATCH v3 0/4] Further L2 padding fixes Gertjan van Wingerde
2009-11-30 21:08 ` [PATCH v3 1/4] rt2x00: " Gertjan van Wingerde
2009-11-30 21:08 ` [PATCH v3 2/4] rt2x00: Remove SKBDESC_L2_PADDED flag Gertjan van Wingerde
2009-11-30 21:08 ` [PATCH v3 3/4] rt2x00: Reorganize L2 padding inserting function Gertjan van Wingerde
2009-11-30 21:08 ` [PATCH v3 4/4] rt2x00: Only remove L2 padding in received frames if there is payload Gertjan van Wingerde
2009-12-01 19:16 ` Ivo van Doorn
2009-12-01 21:08 ` Gertjan van Wingerde
2009-12-01 21:57 ` Ivo van Doorn
2009-12-01 22:09 ` Gertjan van Wingerde
2009-12-02 7:52 ` Ivo Van Doorn
2009-12-01 21:58 ` Ivo van Doorn
2009-12-01 19:13 ` [PATCH v3 3/4] rt2x00: Reorganize L2 padding inserting function Ivo van Doorn
2009-12-01 21:05 ` Gertjan van Wingerde
2009-12-01 21:58 ` Ivo van Doorn
2009-12-01 19:07 ` [PATCH v3 2/4] rt2x00: Remove SKBDESC_L2_PADDED flag Ivo van Doorn
2009-12-01 19:07 ` Ivo van Doorn [this message]
2009-11-30 23:46 ` [rt2x00-users] [PATCH v3 0/4] Further L2 padding fixes Benoit PAPILLAULT
2009-12-01 21:30 ` Gertjan van Wingerde
2009-12-02 9:54 ` Benoit PAPILLAULT
2009-12-03 9:32 ` Gertjan van Wingerde
2009-12-03 18:36 ` Ivo van Doorn
2009-12-03 21:36 ` Benoit PAPILLAULT
2009-12-04 7:53 ` Ivo Van Doorn
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200912012007.01188.IvDoorn@gmail.com \
--to=ivdoorn@gmail.com \
--cc=benoit.papillault@free.fr \
--cc=gwingerde@gmail.com \
--cc=linux-wireless@vger.kernel.org \
--cc=linville@tuxdriver.com \
--cc=users@rt2x00.serialmonkey.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.