net/ice/base: align macro names to specification
[dpdk.git] / drivers / net / sfc / sfc_filter.c
index 77e2ea5..05a9799 100644 (file)
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  *
- * Copyright (c) 2017-2018 Solarflare Communications Inc.
- * All rights reserved.
+ * Copyright(c) 2019-2020 Xilinx, Inc.
+ * Copyright(c) 2017-2019 Solarflare Communications Inc.
  *
  * This software was jointly developed between OKTET Labs (under contract
  * for Solarflare) and Solarflare Communications, Inc.
@@ -12,6 +12,7 @@
 #include "efx.h"
 
 #include "sfc.h"
+#include "sfc_debug.h"
 #include "sfc_log.h"
 
 boolean_t
@@ -75,6 +76,7 @@ int
 sfc_filter_attach(struct sfc_adapter *sa)
 {
        int rc;
+       unsigned int i;
 
        sfc_log_init(sa, "entry");
 
@@ -88,6 +90,19 @@ sfc_filter_attach(struct sfc_adapter *sa)
 
        efx_filter_fini(sa->nic);
 
+       sa->filter.supports_ip_proto_or_addr_filter = B_FALSE;
+       sa->filter.supports_rem_or_local_port_filter = B_FALSE;
+       for (i = 0; i < sa->filter.supported_match_num; ++i) {
+               if (sa->filter.supported_match[i] &
+                   (EFX_FILTER_MATCH_IP_PROTO | EFX_FILTER_MATCH_LOC_HOST |
+                    EFX_FILTER_MATCH_REM_HOST))
+                       sa->filter.supports_ip_proto_or_addr_filter = B_TRUE;
+
+               if (sa->filter.supported_match[i] &
+                   (EFX_FILTER_MATCH_LOC_PORT | EFX_FILTER_MATCH_REM_PORT))
+                       sa->filter.supports_rem_or_local_port_filter = B_TRUE;
+       }
+
        sfc_log_init(sa, "done");
 
        return 0;