97e02581a1
When rules are being inserted from multiple cores, there are several race conditions during rte_flow operations. For example, when inserting rules from 2 cores simultaneously, both the cores try to fetch a free available filter entry and they both end up fetching the same entry. Both of them start overwriting the same filter entry before sending to firmware, which results in wrong rule being inserted to hardware. Fix the races by adding spinlock to serialize the rte_flow operations. Fixes: ee61f5113b17 ("net/cxgbe: parse and validate flows") Fixes: 9eb2c9a48072 ("net/cxgbe: implement flow create operation") Fixes: da23bc9d33f4 ("net/cxgbe: implement flow destroy operation") Fixes: 8d3c12e19368 ("net/cxgbe: implement flow query operation") Fixes: 86910379d335 ("net/cxgbe: implement flow flush operation") Cc: stable@dpdk.org Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>