[ovs-dev] offset of 0x10001 in dpif_netlink_queue_to_priority

Matthias May matthias.may at neratec.com
Thu Jul 6 06:39:21 UTC 2017


On 06/07/17 02:24, Ben Pfaff wrote:
> On Tue, Jul 04, 2017 at 05:09:21PM +0200, Matthias May wrote:
>> Hi
>>
>> I'm trying to map the vlan_pcp onto 802.11 tid.
>>
>> net/wireless/util.c in mac80211 specifies:
>>
>>> 	/* skb->priority values from 256->263 are magic values to
>>> 	 * directly indicate a specific 802.1d priority.  This is used
>>> 	 * to allow 802.1d priority to be passed directly in from VLAN
>>> 	 * tags, etc.
>>> 	 */
>>> 	if (skb->priority >= 256 && skb->priority <= 263)
>>> 		return skb->priority - 256;
>>
>> However the function dpif_netlink_queue_to_priority in /lib/dpif-netlink.c sets:
>>>    if (queue_id < 0xf000) {
>>>        *priority = TC_H_MAKE(1 << 16, queue_id + 1);
>>
>> With this the lowest skb_priority I can set is 0x10001, slightly over the magic values I need to use ;)
>>
>> Why is this offset of 0x10000 + 1 in place?
>> Is something else in ovs about which I'm not aware dependant on this offset?
> 
> It's because this is mapping from an OpenFlow queue ID to a kernel
> skb_priority value.  These aren't the same namespace and so you need a
> mapping function.
> 

What do you mean "not the same namespace"?
I need to set the skb_priority, set_queue sets the skb_priority but with an offset.
If I patch the line to
*priority = queue_id;
everything works as I expect it.

BR
Matthias


More information about the dev mailing list