Search Linux Wireless

Re: [PATCH] libertas: make if_sdio align packets

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

 



On Mon, 2007-10-22 at 19:05 +0200, Pierre Ossman wrote:
> Incoming packets have to be aligned or the IP stack becomes upset.
> Make sure to shift them two bytes to achieve this.
> 
> Signed-off-by: Pierre Ossman <drzeus@xxxxxxxxx>

Acked-by: Dan Williams <dcbw@xxxxxxxxxx>

John; if you don't have if_sdio.c, please rebase from Linus or something
since it went in with Pierre's SDIO stack.

> ---
> 
> diff --git a/drivers/net/wireless/libertas/if_sdio.c b/drivers/net/wireless/libertas/if_sdio.c
> index 5b13705..56dd568 100644
> --- a/drivers/net/wireless/libertas/if_sdio.c
> +++ b/drivers/net/wireless/libertas/if_sdio.c
> @@ -175,12 +175,20 @@ static int if_sdio_handle_data(struct if_sdio_card *card,
>  		goto out;
>  	}
>  
> -	skb = dev_alloc_skb(MRVDRV_ETH_RX_PACKET_BUFFER_SIZE);
> +	skb = dev_alloc_skb(MRVDRV_ETH_RX_PACKET_BUFFER_SIZE + NET_IP_ALIGN);
>  	if (!skb) {
>  		ret = -ENOMEM;
>  		goto out;
>  	}
>  
> +	/*
> +	 * The IP stack is littered with silly assumptions on alignment,
> +	 * so we need to do a bit of layering violation here and make
> +	 * assumptions about the size of the headers between us and the
> +	 * IP stack.
> +	 */
> +	skb_reserve(skb, NET_IP_ALIGN);
> +
>  	data = skb_put(skb, size);
>  
>  	memcpy(data, buffer, size);

-
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[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