Thanks Ilya for pointing it out. It should be inserted after key length 
calculation.

Acked-by: Yipeng Wang <[email protected]>

>-----Original Message-----
>From: Ilya Maximets [mailto:[email protected]]
>Sent: Wednesday, July 25, 2018 9:10 AM
>To: [email protected]; Wang, Yipeng1 <[email protected]>
>Cc: Ben Pfaff <[email protected]>; Stokes, Ian <[email protected]>; Jan 
>Scheurich <[email protected]>; O Mahony, Billy
><[email protected]>; Ilya Maximets <[email protected]>
>Subject: [PATCH] dpif-netdev: Fix zero length keys insertion to EMC.
>
>'key.len' should be calculated before inserting to EMC, otherwise
>resulting entry will match with any packet with the same hash.
>
>CC: Yipeng Wang <[email protected]>
>Fixes: 60d8ccae135f ("dpif-netdev: Add SMC cache after EMC cache")
>Signed-off-by: Ilya Maximets <[email protected]>
>---
> lib/dpif-netdev.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
>diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
>index 13a20f0..0a833dc 100644
>--- a/lib/dpif-netdev.c
>+++ b/lib/dpif-netdev.c
>@@ -5810,9 +5810,9 @@ smc_lookup_batch(struct dp_netdev_pmd_thread *pmd,
>                 if (OVS_LIKELY(dpcls_rule_matches_key(&flow->cr, &keys[i]) &&
>                 flow->flow.in_port.odp_port == packet->md.in_port.odp_port)) {
>                     /* SMC hit and emc miss, we insert into EMC */
>-                    emc_probabilistic_insert(pmd, &keys[i], flow);
>                     keys[i].len =
>                         netdev_flow_key_size(miniflow_n_values(&keys[i].mf));
>+                    emc_probabilistic_insert(pmd, &keys[i], flow);
>                     dp_netdev_queue_batches(packet, flow,
>                     miniflow_get_tcp_flags(&keys[i].mf), batches, n_batches);
>                     n_smc_hit++;
>--
>2.7.4

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to