Set the "value" in the filter spec and not the "mask". Also, remove
duplicate comparison for hardware supported match items already done
earlier.

Fixes: af44a577988b ("net/cxgbe: support to offload flows to HASH region")
Cc: sta...@dpdk.org

Signed-off-by: Rahul Lakkireddy <rahul.lakkire...@chelsio.com>
---
 drivers/net/cxgbe/cxgbe_filter.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/net/cxgbe/cxgbe_filter.c b/drivers/net/cxgbe/cxgbe_filter.c
index ef1102be3..3a7912e48 100644
--- a/drivers/net/cxgbe/cxgbe_filter.c
+++ b/drivers/net/cxgbe/cxgbe_filter.c
@@ -263,8 +263,8 @@ static u64 hash_filter_ntuple(const struct filter_entry *f)
        u64 ntuple = 0;
        u16 tcp_proto = IPPROTO_TCP; /* TCP Protocol Number */
 
-       if (tp->port_shift >= 0)
-               ntuple |= (u64)f->fs.mask.iport << tp->port_shift;
+       if (tp->port_shift >= 0 && f->fs.mask.iport)
+               ntuple |= (u64)f->fs.val.iport << tp->port_shift;
 
        if (tp->protocol_shift >= 0) {
                if (!f->fs.val.proto)
@@ -278,9 +278,6 @@ static u64 hash_filter_ntuple(const struct filter_entry *f)
        if (tp->macmatch_shift >= 0 && f->fs.mask.macidx)
                ntuple |= (u64)(f->fs.val.macidx) << tp->macmatch_shift;
 
-       if (ntuple != tp->hash_filter_mask)
-               return 0;
-
        return ntuple;
 }
 
-- 
2.18.0

Reply via email to