Search Linux Wireless

Re: [PATCH] mac80211: remove payload alignment warning

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 2009-11-30 at 12:39 +0200, Kalle Valo wrote:
> From: Kalle Valo <kalle.valo@xxxxxxxxx>
> 
> The payload alignment warning enabled by MAC80211_DEBUG_PACKET_ALIGNMENT is
> difficult. To fix it, a firmware change is needed but in most cases that's
> very difficult. So the benefit from the warning is low and most probably
> it just creates more confusion for people who just enable all warnings
> (like it did for me).
> 
> Remove the unaligned IP payload warning and the kconfig option. But
> leave the unlialigned packet warning, it will be enabled with
> MAC80211_VERBOSE_DEBUG.
> 
> Signed-off-by: Kalle Valo <kalle.valo@xxxxxxxxx>

Thanks.

Acked-by: Johannes Berg <johannes@xxxxxxxxxxxxxxxx>

> ---
>  net/mac80211/Kconfig |   12 ------------
>  net/mac80211/rx.c    |   27 +++++++--------------------
>  2 files changed, 7 insertions(+), 32 deletions(-)
> 
> diff --git a/net/mac80211/Kconfig b/net/mac80211/Kconfig
> index a10d508..a952b7f 100644
> --- a/net/mac80211/Kconfig
> +++ b/net/mac80211/Kconfig
> @@ -96,18 +96,6 @@ menuconfig MAC80211_DEBUG_MENU
>  	---help---
>  	  This option collects various mac80211 debug settings.
>  
> -config MAC80211_DEBUG_PACKET_ALIGNMENT
> -	bool "Enable packet alignment debugging"
> -	depends on MAC80211_DEBUG_MENU
> -	---help---
> -	  This option is recommended for driver authors and strongly
> -	  discouraged for everybody else, it will trigger a warning
> -	  when a driver hands mac80211 a buffer that is aligned in
> -	  a way that will cause problems with the IP stack on some
> -	  architectures.
> -
> -	  Say N unless you're writing a mac80211 based driver.
> -
>  config MAC80211_NOINLINE
>  	bool "Do not inline TX/RX handlers"
>  	depends on MAC80211_DEBUG_MENU
> diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
> index 57b8a0a..18a0248 100644
> --- a/net/mac80211/rx.c
> +++ b/net/mac80211/rx.c
> @@ -361,7 +361,9 @@ static void ieee80211_parse_qos(struct ieee80211_rx_data *rx)
>   * boundary. In the case of regular frames, this simply means aligning the
>   * payload to a four-byte boundary (because either the IP header is directly
>   * contained, or IV/RFC1042 headers that have a length divisible by four are
> - * in front of it).
> + * in front of it).  If the payload data is not properly aligned and the
> + * architecture doesn't support efficient unaligned operations, mac80211
> + * will align the data.
>   *
>   * With A-MSDU frames, however, the payload data address must yield two modulo
>   * four because there are 14-byte 802.3 headers within the A-MSDU frames that
> @@ -375,25 +377,10 @@ static void ieee80211_parse_qos(struct ieee80211_rx_data *rx)
>   */
>  static void ieee80211_verify_alignment(struct ieee80211_rx_data *rx)
>  {
> -	struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)rx->skb->data;
> -	int hdrlen;
> -
> -#ifndef CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT
> -	return;
> +#ifdef CONFIG_MAC80211_VERBOSE_DEBUG
> +	WARN_ONCE((unsigned long)rx->skb->data & 1,
> +		  "unaligned packet at 0x%p\n", rx->skb->data);
>  #endif
> -
> -	if (WARN_ONCE((unsigned long)rx->skb->data & 1,
> -		      "unaligned packet at 0x%p\n", rx->skb->data))
> -		return;
> -
> -	if (!ieee80211_is_data_present(hdr->frame_control))
> -		return;
> -
> -	hdrlen = ieee80211_hdrlen(hdr->frame_control);
> -	if (rx->flags & IEEE80211_RX_AMSDU)
> -		hdrlen += ETH_HLEN;
> -	WARN_ONCE(((unsigned long)(rx->skb->data + hdrlen)) & 3,
> -		  "unaligned IP payload at 0x%p\n", rx->skb->data + hdrlen);
>  }
>  
> 
> @@ -1512,7 +1499,7 @@ ieee80211_deliver_skb(struct ieee80211_rx_data *rx)
>  	if (skb) {
>  		int align __maybe_unused;
>  
> -#if defined(CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT) || !defined(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS)
> +#ifndef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS
>  		/*
>  		 * 'align' will only take the values 0 or 2 here
>  		 * since all frames are required to be aligned
> 
> 

Attachment: signature.asc
Description: This is a digitally signed message part


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux