sfc: fix ARFS expiry check on EF10
authorEdward Cree <ecree@solarflare.com>
Fri, 27 Apr 2018 14:08:57 +0000 (15:08 +0100)
committerDavid S. Miller <davem@davemloft.net>
Sat, 28 Apr 2018 00:21:07 +0000 (20:21 -0400)
Owing to a missing conditional, the result of rps_may_expire_flow() was
 being ignored and filters were being removed even if we'd decided not to
 expire them.

Fixes: f8d6203780b7 ("sfc: ARFS filter IDs")
Signed-off-by: Edward Cree <ecree@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/sfc/ef10.c

index 63036d9bf3e63efaaf41d267af35b4970bcbc142..d90a7b1f4088623ccd664d136389482b242a3456 100644 (file)
@@ -4784,8 +4784,9 @@ expire:
         * will set rule->filter_id to EFX_ARFS_FILTER_ID_PENDING, meaning that
         * the rule is not removed by efx_rps_hash_del() below.
         */
-       ret = efx_ef10_filter_remove_internal(efx, 1U << spec->priority,
-                                             filter_idx, true) == 0;
+       if (ret)
+               ret = efx_ef10_filter_remove_internal(efx, 1U << spec->priority,
+                                                     filter_idx, true) == 0;
        /* While we can't safely dereference rule (we dropped the lock), we can
         * still test it for NULL.
         */