net/cxgbe: fix races on flow API operations
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>