All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gertjan van Wingerde <gwingerde@gmail.com>
To: Ivo van Doorn <ivdoorn@gmail.com>
Cc: users@rt2x00.serialmonkey.com, linux-wireless@vger.kernel.org
Subject: Re: [PATCH 5/6] rt2x00: Properly request tx headroom for alignment operations.
Date: Mon, 23 Nov 2009 21:51:02 +0100	[thread overview]
Message-ID: <4B0AF5B6.40102@gmail.com> (raw)
In-Reply-To: <200911231933.04875.IvDoorn@gmail.com>

On 11/23/09 19:33, Ivo van Doorn wrote:
> On Monday 23 November 2009, Gertjan van Wingerde wrote:
>> Current rt2x00 drivers may result in a "ieee80211_tx_status: headroom too
>> small" error message when a frame needs to be properly aligned before
>> transmitting it.
>> This is because the space needed to ensure proper alignment isn't
>> requested from mac80211.
>> Fix this by adding sufficient amount of alignment space to the amount
>> of headroom requested for TX frames.
>>
>> Reported-by: David Ellingsworth <david@identd.dyndns.org>
>> Signed-off-by: Gertjan van Wingerde <gwingerde@gmail.com>
>> Tested-by: David Ellingsworth <david@identd.dyndns.org>
>> ---
>>  drivers/net/wireless/rt2x00/rt2400pci.c   |   30 +++++++++++++++-------------
>>  drivers/net/wireless/rt2x00/rt2500pci.c   |   30 +++++++++++++++-------------
>>  drivers/net/wireless/rt2x00/rt2500usb.c   |   29 ++++++++++++++-------------
>>  drivers/net/wireless/rt2x00/rt2800lib.c   |    7 +----
>>  drivers/net/wireless/rt2x00/rt2800pci.c   |   31 +++++++++++++++--------------
>>  drivers/net/wireless/rt2x00/rt2800usb.c   |   25 ++++++++++++-----------
>>  drivers/net/wireless/rt2x00/rt2x00.h      |    7 ++++++
>>  drivers/net/wireless/rt2x00/rt2x00queue.c |    6 ++--
>>  drivers/net/wireless/rt2x00/rt61pci.c     |   28 ++++++++++++++------------
>>  drivers/net/wireless/rt2x00/rt73usb.c     |   27 +++++++++++++------------
>>  10 files changed, 117 insertions(+), 103 deletions(-)
>>
>> diff --git a/drivers/net/wireless/rt2x00/rt2400pci.c b/drivers/net/wireless/rt2x00/rt2400pci.c
>> index 6e68bc7..f534d70 100644
>> --- a/drivers/net/wireless/rt2x00/rt2400pci.c
>> +++ b/drivers/net/wireless/rt2x00/rt2400pci.c
>> @@ -1432,7 +1432,8 @@ static int rt2400pci_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
>>  			       IEEE80211_HW_SIGNAL_DBM |
>>  			       IEEE80211_HW_SUPPORTS_PS |
>>  			       IEEE80211_HW_PS_NULLFUNC_STACK;
>> -	rt2x00dev->hw->extra_tx_headroom = 0;
>> +	rt2x00dev->hw->extra_tx_headroom = rt2x00dev->ops->extra_tx_headroom +
>> +	    					RT2X00_ALIGN_SIZE;
> 
> Can't rt2x00lib initialize rt2x00dev->hw->extra_tx_headroom?
> The drivers aren't performing the aligning, so it is logical that rt2x00lib
> adds the required bytes rather than the drivers. The driver already sets
> the value in ops->extra_tx_headroom, so it can rely on rt2x00lib to do the rest.
> 

I guess that that can be done as an extra cleanup. Will do in a revision.

>> diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
>> index b809c49..de358b5 100644
>> --- a/drivers/net/wireless/rt2x00/rt2800lib.c
>> +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
>> @@ -2030,11 +2030,8 @@ int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
>>  	    IEEE80211_HW_SUPPORTS_PS |
>>  	    IEEE80211_HW_PS_NULLFUNC_STACK;
>>  
>> -	if (rt2x00_intf_is_usb(rt2x00dev))
>> -		rt2x00dev->hw->extra_tx_headroom =
>> -			TXINFO_DESC_SIZE + TXWI_DESC_SIZE;
>> -	else if (rt2x00_intf_is_pci(rt2x00dev))
>> -		rt2x00dev->hw->extra_tx_headroom = TXWI_DESC_SIZE;
>> +	rt2x00dev->hw->extra_tx_headroom = rt2x00dev->ops->extra_tx_headroom +
>> +	    					RT2X00_L2PAD_SIZE;
> 
> In this case we don't use RT2X00_ALIGN_SIZE, but the driver does set a flag to tell
> rt2x00lib that L2padding should be used rather then aligning. So this case would still
> hold when it is moved to rt2x00lib.
> 

Yep, will do in a revision.

>>  /*
>> + * Constants for extra TX headroom for alignment purposes.
>> + */
>> +#define RT2X00_ALIGN_SIZE	4
>> +#define RT2X00_L2PAD_SIZE	8
> 
> #define RT2X00_L2PAD_SIZE		RT2X00_ALIGN_SIZE + 4
> 
> Would probably better indicate why you are using 8.
> 

I'll add some comments on what these values represent. Don't think that defining RT2X00_L2PAD_SIZE
in your proposed way would help explaining, but some proper comments will.

---
Gertjan.

  reply	other threads:[~2009-11-23 20:51 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-23  7:15 [PATCH 0/6] Assorted fixes and cleanups for rt2x00 and mac80211 Gertjan van Wingerde
2009-11-23  7:16 ` [PATCH 1/6] rt2x00: Only initialize HT on rt2800 devices that support it Gertjan van Wingerde
2009-11-23  7:16   ` [PATCH 2/6] rt2x00: Remove unused variable frame_control from rt2x00mac_tx Gertjan van Wingerde
2009-11-23  7:16     ` [PATCH 3/6] rt2x00: Clean up use of rt2x00_intf_is_pci Gertjan van Wingerde
2009-11-23  7:16       ` [PATCH 4/6] rt2x00: Fix typo (lengt --> length) in rt2x00queue.c Gertjan van Wingerde
2009-11-23  7:16         ` [PATCH 5/6] rt2x00: Properly request tx headroom for alignment operations Gertjan van Wingerde
2009-11-23  7:16           ` [PATCH 6/6] mac80211: Allow extra TX headroom to be consumed by drivers Gertjan van Wingerde
2009-11-23 10:41             ` Johannes Berg
2009-11-23 19:26               ` Gertjan van Wingerde
2009-11-23  7:35           ` [PATCH 5/6] rt2x00: Properly request tx headroom for alignment operations Julian Calaby
2009-11-23 19:18             ` Gertjan van Wingerde
2009-11-23 10:38           ` Johannes Berg
2009-11-23 19:25             ` Gertjan van Wingerde
2009-11-23 18:33           ` Ivo van Doorn
2009-11-23 20:51             ` Gertjan van Wingerde [this message]
2009-11-23 18:29         ` [PATCH 4/6] rt2x00: Fix typo (lengt --> length) in rt2x00queue.c Ivo van Doorn
2009-11-23 18:13       ` [PATCH 3/6] rt2x00: Clean up use of rt2x00_intf_is_pci Ivo van Doorn
2009-11-23 18:12     ` [PATCH 2/6] rt2x00: Remove unused variable frame_control from rt2x00mac_tx Ivo van Doorn
2009-11-23  9:58   ` [PATCH 1/6] rt2x00: Only initialize HT on rt2800 devices that support it Simon Raffeiner
2009-11-23 19:20     ` Gertjan van Wingerde
2009-11-23 18:12   ` Ivo van Doorn
2009-11-23 19:30     ` Gertjan van Wingerde

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=4B0AF5B6.40102@gmail.com \
    --to=gwingerde@gmail.com \
    --cc=ivdoorn@gmail.com \
    --cc=linux-wireless@vger.kernel.org \
    --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.