As described in the two patches at the end of this message, the datapath cannot match all the fields that ovs supports. So some flows are processed only on the slow path and not on the datapath. Therefore, the flows whose parsing result is ODP_FIT_TOO_LITTLE don't need to be installed on the datapath. In handle_upcalls, flows of this type can be directly blocked to avoid a large number of "failed to put[create] (Invalid argument)" logs in some scenarios, for example, when a large number of IGMP control packets are received.
CC: Ben Pfaff <[email protected]> Fixes: c645550bb249 ("odp-util: Always report ODP_FIT_TOO_LITTLE for IGMP.") Fixes: 687bafbb8a79 ("ofproto-dpif-upcall: Slow path flows that datapath can't fully match.") Signed-off-by: Hongzhi Guo <[email protected]> --- ofproto/ofproto-dpif-upcall.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ofproto/ofproto-dpif-upcall.c b/ofproto/ofproto-dpif-upcall.c index e022fde27..cadd1f059 100644 --- a/ofproto/ofproto-dpif-upcall.c +++ b/ofproto/ofproto-dpif-upcall.c @@ -1581,6 +1581,11 @@ handle_upcalls(struct udpif *udpif, struct upcall *upcalls, if (should_install_flow(udpif, upcall)) { struct udpif_key *ukey = upcall->ukey; + /* OVS userspace solve it, no need to install this flow. */ + if (upcall->fitness == ODP_FIT_TOO_LITTLE) { + continue; + } + if (ukey_install(udpif, ukey)) { upcall->ukey_persists = true; put_op_init(&ops[n_ops++], ukey, DPIF_FP_CREATE); -- 2.21.0.windows.1 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
