ixgbe: Error handler for duplicate filter locations in hardware for cls_u32 offloads
authorAmritha Nambiar <amritha.nambiar@intel.com>
Tue, 17 May 2016 01:33:20 +0000 (18:33 -0700)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Wed, 29 Jun 2016 17:44:02 +0000 (10:44 -0700)
commit12746fd21e9fe1bf9103a28f15abbf343a3a66d0
tree5b466648139623c162f85a5ca3c0621da78d40bb
parent1ecedc926be12a91271e41913ebeba8cf32e9a6c
ixgbe: Error handler for duplicate filter locations in hardware for cls_u32 offloads

For u32 classifier filters, avoid overwriting existing filter
in a hardware location without removing it first, to clean up
inconsistencies due to duplicate values for filter location.

Verified with the following filters:

Create child hash tables:
handle 1: u32 divisor 1
handle 2: u32 divisor 1

Link to the child hash table from parent hash table:
handle 800:0:11 u32 ht 800: link 1: \
offset at 0 mask 0f00 shift 6 plus 0 eat \
match ip protocol 6 ff match ip dst 15.0.0.1/32

handle 800:0:12 u32 ht 800: link 2: \
offset at 0 mask 0f00 shift 6 plus 0 eat \
match ip protocol 17 ff match ip dst 16.0.0.1/32

Add filter into child hash table:
handle 1:0:3 u32 ht 1: \
match tcp src 22 ffff action drop

Add another filter to the same location:
handle 2:0:3 u32 ht 2: \
match tcp src 33 ffff action drop

Signed-off-by: Amritha Nambiar <amritha.nambiar@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c