On Thu, Jul 06, 2017 at 08:39:21AM +0200, Matthias May wrote:
> 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.
OpenFlow queue IDs aren't kernel skb_priorities. They never have been.
There is a mapping function.
> If I patch the line to
> *priority = queue_id;
> everything works as I expect it.
Good for you. You just broke every existing user.
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev