linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Gertjan van Wingerde <gwingerde@gmail.com>
To: Pavel Roskin <proski@gnu.org>,
	"John W. Linville" <linville@tuxdriver.com>
Cc: Markus Baier <Markus_Baier@web.de>, linux-wireless@vger.kernel.org
Subject: Re: [BISECTED] [PATCH v2 8/8] rt2x00: Properly request tx headroom for alignment operations.
Date: Tue, 22 Dec 2009 09:13:37 +0100	[thread overview]
Message-ID: <4B307FB1.5040806@gmail.com> (raw)
In-Reply-To: <1261459549.31982.2.camel@ct>

On 12/22/09 06:25, Pavel Roskin wrote:
> Quoting Gertjan van Wingerde <gwingerde@gmail.com>:
> 
>>> Perhaps non-zero headroom is not handled correctly?
>>>
>>
>> Hmmm, perhaps the problem is that the headroom is not a multiple of 4.
>> Can you check what happens when you set the extra_tx_headroom fixed  
>> to e.g. 20?
> 
> I tried 64 and 2, and neither worked.  rt2x00dev->ops->extra_tx_headroom
> is 0 for me.  When the rt2x00dev->hw->extra_tx_headroom is 2, I observed
> invalid packets being emitted (using another interface).  The packets
> have two bytes inserted in the beginning of the frame:
> 
> 0000  00 00 1c 00 6f 48 00 00  fc de ee 13 00 00 00 00   ....oH.. ........
> 0010  10 02 85 09 a0 00 b1 b7  00 00 00 00 00 00 40 00   ........ ......@.
> radiotap, 28 bytes ---------------------->
> 2 extra bytes                              <--->
> correct 802.11 header                            <----
> 0020  00 00 ff ff ff ff ff ff  00 d0 41 af ad 2c ff ff   ........ ..A..,..
> 0030  ff ff cf 02 c0 02 00 05  77 62 65 6e 64 01 08 02   ........ wbend...
> 0040  04 0b 16 0c 12 18 24 32  04 30 48 e7 f8 07 9d      ......$2 .0H.... 
> 
> Here's a patch that is working for me, but I would not vouch for its
> correctness.  Signing off just in case it happens to be correct ;-)
> 
> 
> rt2x00: use correct headroom for transmission
> 
> Use rt2x00dev->ops->extra_tx_headroom, not
> rt2x00dev->hw->extra_tx_headroom in the tx code, as the later includes
> headroom only meant for the monitor mode.
> 
> Signed-off-by: Pavel Roskin <proski@gnu.org>

Doh, that's it. Here we should indeed only take the real extra TX headroom required by
the driver into account. Seems like I goofed up in a preparatory patch that centralized
setting of rt2x00dev->hw->extra_tx_headroom.

Can you confirm that everything works okay with the original code and this patch applied?

In any way:
Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>

John, with this you can reinstate the original patch as well. Let me know if you want
me to resubmit that one with this one included in it.


> ---
>  drivers/net/wireless/rt2x00/rt2x00queue.c |    6 +++---
>  1 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.c b/drivers/net/wireless/rt2x00/rt2x00queue.c
> index 3d8fb68..0b4801a 100644
> --- a/drivers/net/wireless/rt2x00/rt2x00queue.c
> +++ b/drivers/net/wireless/rt2x00/rt2x00queue.c
> @@ -104,7 +104,7 @@ void rt2x00queue_map_txskb(struct rt2x00_dev *rt2x00dev, struct sk_buff *skb)
>  	 * is also mapped to the DMA so it can be used for transfering
>  	 * additional descriptor information to the hardware.
>  	 */
> -	skb_push(skb, rt2x00dev->hw->extra_tx_headroom);
> +	skb_push(skb, rt2x00dev->ops->extra_tx_headroom);
>  
>  	skbdesc->skb_dma =
>  	    dma_map_single(rt2x00dev->dev, skb->data, skb->len, DMA_TO_DEVICE);
> @@ -112,7 +112,7 @@ void rt2x00queue_map_txskb(struct rt2x00_dev *rt2x00dev, struct sk_buff *skb)
>  	/*
>  	 * Restore data pointer to original location again.
>  	 */
> -	skb_pull(skb, rt2x00dev->hw->extra_tx_headroom);
> +	skb_pull(skb, rt2x00dev->ops->extra_tx_headroom);
>  
>  	skbdesc->flags |= SKBDESC_DMA_MAPPED_TX;
>  }
> @@ -134,7 +134,7 @@ void rt2x00queue_unmap_skb(struct rt2x00_dev *rt2x00dev, struct sk_buff *skb)
>  		 * by the driver, but it was actually mapped to DMA.
>  		 */
>  		dma_unmap_single(rt2x00dev->dev, skbdesc->skb_dma,
> -				 skb->len + rt2x00dev->hw->extra_tx_headroom,
> +				 skb->len + rt2x00dev->ops->extra_tx_headroom,
>  				 DMA_TO_DEVICE);
>  		skbdesc->flags &= ~SKBDESC_DMA_MAPPED_TX;
>  	}
> 


  reply	other threads:[~2009-12-22  8:13 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-23 21:44 [PATCH v2 0/8] Assorted fixes and cleanups for rt2x00 and mac80211 Gertjan van Wingerde
2009-11-23 21:44 ` [PATCH v2 1/8] rt2x00: Only initialize HT on rt2800 devices that support it Gertjan van Wingerde
2009-11-23 21:44   ` [PATCH v2 2/8] rt2x00: Remove unused variable frame_control from rt2x00mac_tx Gertjan van Wingerde
2009-11-23 21:44     ` [PATCH v2 3/8] rt2x00: Clean up use of rt2x00_intf_is_pci Gertjan van Wingerde
2009-11-23 21:44       ` [PATCH v2 4/8] rt2x00: Fix typo (lengt --> length) in rt2x00queue.c Gertjan van Wingerde
2009-11-23 21:44         ` [PATCH v2 5/8] rt2x00: Whitespace cleanup Gertjan van Wingerde
2009-11-23 21:44           ` [PATCH v2 6/8] rt2x00: Centralize setting of extra TX headroom requested by rt2x00 Gertjan van Wingerde
2009-11-23 21:44             ` [PATCH v2 7/8] mac80211: Add define for TX headroom reserved by mac80211 itself Gertjan van Wingerde
2009-11-23 21:44               ` [PATCH v2 8/8] rt2x00: Properly request tx headroom for alignment operations Gertjan van Wingerde
2009-11-24 17:19                 ` Ivo van Doorn
2009-11-24 19:12                   ` Gertjan van Wingerde
2009-11-24 20:04                     ` Ivo van Doorn
2009-11-25 19:47                 ` John W. Linville
2009-11-25 21:29                   ` Gertjan van Wingerde
2009-11-25 21:48                     ` John W. Linville
2009-12-20 15:42                 ` [BISECTED] " Markus Baier
2009-12-20 20:20                   ` Gertjan van Wingerde
2009-12-21  0:45                     ` Markus Baier
2009-12-21  6:33                     ` Pavel Roskin
2009-12-21 16:26                       ` Gertjan van Wingerde
2009-12-21 19:17                         ` John W. Linville
2009-12-22  0:22                           ` Gertjan van Wingerde
2009-12-22  5:25                         ` Pavel Roskin
2009-12-22  8:13                           ` Gertjan van Wingerde [this message]
2009-12-22 10:55                             ` Markus Baier
2009-12-22 14:18                               ` Gertjan van Wingerde
2009-12-22 15:03                             ` Pavel Roskin
2009-11-23 23:22               ` [PATCH v2 7/8] mac80211: Add define for TX headroom reserved by mac80211 itself Johannes Berg
2009-11-24 17:13             ` [PATCH v2 6/8] rt2x00: Centralize setting of extra TX headroom requested by rt2x00 Ivo van Doorn
2009-11-24 17:13           ` [PATCH v2 5/8] rt2x00: Whitespace cleanup Ivo van Doorn
2009-11-23 22:18   ` [rt2x00-users] [PATCH v2 1/8] rt2x00: Only initialize HT on rt2800 devices that support it David Ellingsworth
2009-11-24 17:12     ` 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=4B307FB1.5040806@gmail.com \
    --to=gwingerde@gmail.com \
    --cc=Markus_Baier@web.de \
    --cc=linux-wireless@vger.kernel.org \
    --cc=linville@tuxdriver.com \
    --cc=proski@gnu.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).