Search Linux Wireless

Re: [PATCH 06/15] mac80211: adding 802.11n essential A-MSDU Rx capability

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

 



On Mon, 2007-11-26 at 16:14 +0200, Ron Rindjunsky wrote:
> This patch adds the ability to receive and handle A-MSDU frames.
> 
> Signed-off-by: Ron Rindjunsky <ron.rindjunsky@xxxxxxxxx>

Acked-by: Johannes Berg <johannes@xxxxxxxxxxxxxxxx>

Thanks for your patience on this. I have another question that is
identical in the other code and that we should, if necessary, fix in a
separate patch to fix both instances of this:


> +		payload = frame->data;
> +		ethertype = (payload[6] << 8) | payload[7];
> +
> +		if (likely((compare_ether_addr(payload, rfc1042_header) == 0 &&
[...]
> +		} else {
> +			memcpy(skb_push(frame, sizeof(__be16)), &len,
> +				sizeof(__be16));
> +			memcpy(skb_push(frame, ETH_ALEN), src, ETH_ALEN);
> +			memcpy(skb_push(frame, ETH_ALEN), dst, ETH_ALEN);

Here, as well as in the regular data frame handler, we push the length
of the frame into the ethernet header. Later then, eth_type_trans() will
load up the skb->protocol field. The thing I'm not entirely sure about
is this: We can have frames longer than 1536 bytes, but only if the
length is smaller than 1536 does eth_type_trans() assume that it's a
length, if we have a frame longer won't it go wrong? I haven't quite
managed to wrap my head around the rules for wrapping data into an
802.11 frame nor in an 802.3 setting so this may be totally incorrect.

johannes

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