Hi sorry for late reply, didn't get this email. On 03.12.2019 16:16, Ilya Maximets wrote: > From: Ilya Maximets <i.maxim...@samsung.com> > On 03.12.2019 14:45, Roi Dayan wrote: > > From: Paul Blakey <pa...@mellanox.com> > > > > Each recirculation id will create a tc chain, and we translate > > the recirculation action to a tc goto chain action. > > > > We check for kernel support for this by probing OvS Datapath for the > > tc recirc id sharing feature. If supported, we can offload rules > > that match on recirc_id, and recirculation action safely. > > --- > > > > Changelog: > > V2->V3: > > Merged part of probe for recirc_id support in here to help future git > > bisect. > > Added tunnel released check to avoid bug with mirroring > > Removed cascading condition in netdev_tc_flow_put() check of recirc_id > > support > > > > V1->V2: > > moved make_tc_id_chain helper to tc.h as static inline > > updated is_tc_id_eq with chain compare instead of find_ufid > > > > Signed-off-by: Paul Blakey <pa...@mellanox.com> > > This tag should go before the '---', otherwise it'll not be part of a > commit-message. > You may see that checkpatch complains about missing signed-off on some of the > patches.
Yea we say it, but since I wanted to remove this changelog for last revision it was just easier to manage than git notes :) will do it for next one. > > --- > > lib/dpif-netlink.c | 1 + > > lib/netdev-offload-tc.c | 61 > > +++++++++++++++++++++++++++++++++++++++++-------- > > lib/tc.c | 49 ++++++++++++++++++++++++++++++++++----- > > lib/tc.h | 18 ++++++++++++++- > > 4 files changed, 112 insertions(+), 17 deletions(-) > > > > diff --git a/lib/dpif-netlink.c b/lib/dpif-netlink.c > > index 92da918544d1..f0e870543ae5 100644 > > --- a/lib/dpif-netlink.c > > +++ b/lib/dpif-netlink.c [....] > > @@ -983,12 +995,6 @@ test_key_and_mask(struct match *match) > > return EOPNOTSUPP; > > } > > > > - if (mask->recirc_id && key->recirc_id) { > > - VLOG_DBG_RL(&rl, "offloading attribute recirc_id isn't supported"); > > - return EOPNOTSUPP; > > - } > > - mask->recirc_id = 0; > > - > > if (mask->dp_hash) { > > VLOG_DBG_RL(&rl, "offloading attribute dp_hash isn't supported"); > > return EOPNOTSUPP; > > @@ -1139,6 +1145,25 @@ flower_match_to_tun_opt(struct tc_flower *flower, > > const struct flow_tnl *tnl, > > flower->mask.tunnel.metadata.present.len = tnl->metadata.present.len; > > } > > > > +static bool > > +recirc_id_sharing_support(struct dpif *dpif) > > +{ > > + static struct ovsthread_once once = OVSTHREAD_ONCE_INITIALIZER; > > + static bool supported = false; > > + int err; > > + > > + if (ovsthread_once_start(&once)) { > > + err = dpif_set_features(dpif, OVS_DP_F_TC_RECIRC_SHARING); > > I don't think that it's the right thing to do to change datapath configuration > from the netdev-offload implementation. This also requires you to have access > to the dpif-provider internals breaking the OVS architecture of modules. (You > may see that this patch set doesn't build at some point because you need to know > the internal structure of a dpif instance.) > > I'd suggest to move this to the common feature probing code, i.e. to ofproto. > After that you may pass supported features via offload_info structure. > > Thoughts? > We are calling dpif_set_features, not accessing dpif internals. The thing is, that this sets a feature and not just probes for a feature. It enables a static branch on the kernel side which we might not want to enable any time, and an offloading a recirc() action was our hook to know that this is wanted, as we talked about in the kernel patch. I'm not sure how to do that from ofproto layer. _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev