Hey Jarno,
Thx a lot for the comments, and sorry about my careless testing...
I saw for dpif-netdev, the upcall processing also calls
odp_flow_key_from_mask()... but totally missed that the wildcard is
actually obtains from: *wc = upcall.xout.wc; /* in upcall_cb(). */
I'll adopt your suggested
Alex,
I took a closer look at the test case and it actually verifies that the CFI in
the mask is NOT set:
+AT_CHECK([cat ovs-vswitchd.log | grep 'in_port=[[1]]' | FILTER_FLOW_INSTALL |
STRIP_XOUT], [0], [dnl
+recirc_id=0,ip,in_port=1,vlan_tci=0x100a/0x0fff,nw_frag=no, actions:
Note the mask:
Alex,
I though it surprising that fixing the mask in the netlink attributes would fix
the problem for the userspace datapath used in the test case, as the userspace
datapath does not use the netlink attribute format in flow setup at all.
I tested just the test case without the OVS code change,
OVS datapath has check which prevents the installation of flow
that matches VLAN TCI but does not have exact match for VLAN_CFI
bit. To follow this rule, ovs userspace must make sure the
flow key for datapath flow matching VLAN TCI has exact match for
VLAN_CFI bit.
Before this commit, this is not