2008-01-09 13:03:51

by Guy Cohen

[permalink] [raw]
Subject: WMM QoS classification with local bridging (bridge_packets=1)

Hi,

I'm running in AP mode with 4956 and I see that frames transmitted
from one client through the AP to a second client will not have the
correct TID set in the QoS header after being forwarded from the AP.

At the end of ieee80211_deliver_skb there is this code that redirects
rx frames sent to local stations back to the wireless driver:

if (xmit_skb) {
/* send to wireless media */
xmit_skb->protocol = __constant_htons(ETH_P_802_3);
skb_reset_network_header(xmit_skb);
skb_reset_mac_header(xmit_skb);
dev_queue_xmit(xmit_skb);
}

Then in classify_1d:

if (skb->protocol != __constant_htons(ETH_P_IP) ||
skb->len < offset + sizeof(*ip))
return 0;

The thing is that the protocol is set to ETH_P_802_3 and not IP...

What do you think is the right way to fix this? Parse the frame in
deliver_skb and set the protocol to be IP (when IP frame), or leave
that as is and in classify_1d parse the frame instead of testing the
protocol field?

I'm running with a slightly older version of mac, but I think it is
the same behavior in wireless-dev 2.6 latest sources.

Thanks,
Guy.


2008-01-10 12:15:14

by Johannes Berg

[permalink] [raw]
Subject: Re: WMM QoS classification with local bridging (bridge_packets=1)

Hi,

> What do you think is the right way to fix this? Parse the frame in
> deliver_skb and set the protocol to be IP (when IP frame), or leave
> that as is and in classify_1d parse the frame instead of testing the
> protocol field?

Can you explain the spec requirements? I'm mostly ignorant of the
11e/11n specs. It seems like if the TID should be preserved we should do
that regardless of whether the packet is IP/non-IP so neither of these
solutions would work. But maybe that's not what is required?

johannes


Attachments:
signature.asc (828.00 B)
This is a digitally signed message part