Simon Horman <[email protected]> writes: > From: John Hurley <[email protected]> > > Openstack may set an skb mark of 0 in tunnel rules. This is considered to > be an unused/unset value. However, it prevents the rule from being > offloaded. > > Check if the key value of the skb mark is 0 when it is in use (mask is > set to all ones). If it is then ignore the field and continue with TC offload. > > Only the exact-match case is covered by this patch as it addresses the > Openstack use-case and seems most robust against feature evolution: f.e. in > future there may exist hardware offload scenarios where an operation, such > as a BPF offload, sets the SKB mark before proceeding tho the in-HW OVS. > datapath. > > Signed-off-by: John Hurley <[email protected]> > Co-Authored: Simon Horman <[email protected]> > Signed-off-by: Simon Horman <[email protected]> > > ---
With the change to the Co-Authored tag: Acked-by: Aaron Conole <[email protected]> > v0 [John Hurley] > > v1 [Simon Horman] > * Check for exact rather than masked match on skb 0 > > v2 [Simon Horman] > * Add co-authored tag > Add explanation of check against exact-match to changelog > --- > lib/netdev-offload-tc.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/lib/netdev-offload-tc.c b/lib/netdev-offload-tc.c > index 4988dadc3f50..5781d163e276 100644 > --- a/lib/netdev-offload-tc.c > +++ b/lib/netdev-offload-tc.c > @@ -1619,6 +1619,11 @@ netdev_tc_flow_put(struct netdev *netdev, struct match > *match, > mask->ct_label = OVS_U128_ZERO; > } > > + /* ignore exact match on skb_mark of 0. */ > + if (mask->pkt_mark == UINT32_MAX && !key->pkt_mark) { > + mask->pkt_mark = 0; > + } > + > err = test_key_and_mask(match); > if (err) { > return err; _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
