net/ice/base: add inner VLAN protocol type for QinQ filter
[dpdk.git] / drivers / net / sfc / sfc.h
index a530b12..b48a818 100644 (file)
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: BSD-3-Clause
- *
- * Copyright(c) 2019-2020 Xilinx, Inc.
+*
+ * Copyright(c) 2019-2021 Xilinx, Inc.
  * Copyright(c) 2016-2019 Solarflare Communications Inc.
  *
  * This software was jointly developed between OKTET Labs (under contract
 
 #include <rte_pci.h>
 #include <rte_bus_pci.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
 #include <rte_kvargs.h>
 #include <rte_spinlock.h>
 #include <rte_atomic.h>
 
 #include "efx.h"
 
+#include "sfc_efx_mcdi.h"
+#include "sfc_efx.h"
+
 #include "sfc_debug.h"
+#include "sfc_log.h"
 #include "sfc_filter.h"
-#include "sfc_mcdi.h"
+#include "sfc_sriov.h"
+#include "sfc_mae.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -155,6 +160,8 @@ struct sfc_rss {
        efx_rx_hash_type_t              hash_types;
        unsigned int                    tbl[EFX_RSS_TBL_SIZE];
        uint8_t                         key[EFX_RSS_KEY_SIZE];
+
+       uint32_t                        dummy_rss_context;
 };
 
 /* Adapter private data shared by primary and secondary processes */
@@ -170,6 +177,7 @@ struct sfc_adapter_shared {
        boolean_t                       isolated;
        uint32_t                        tunnel_encaps;
 
+       char                            log_prefix[SFC_LOG_PREFIX_MAX];
        struct rte_pci_addr             pci_addr;
        uint16_t                        port_id;
 
@@ -215,15 +223,19 @@ struct sfc_adapter {
        struct rte_kvargs               *kvargs;
        int                             socket_id;
        efsys_bar_t                     mem_bar;
+       /* Function control window offset */
+       efsys_dma_addr_t                fcw_offset;
        efx_family_t                    family;
        efx_nic_t                       *nic;
        rte_spinlock_t                  nic_lock;
        rte_atomic32_t                  restart_required;
 
-       struct sfc_mcdi                 mcdi;
+       struct sfc_efx_mcdi             mcdi;
+       struct sfc_sriov                sriov;
        struct sfc_intr                 intr;
        struct sfc_port                 port;
        struct sfc_filter               filter;
+       struct sfc_mae                  mae;
 
        struct sfc_flow_list            flow_list;
 
@@ -366,6 +378,9 @@ void sfc_stop(struct sfc_adapter *sa);
 
 void sfc_schedule_restart(struct sfc_adapter *sa);
 
+int sfc_mcdi_init(struct sfc_adapter *sa);
+void sfc_mcdi_fini(struct sfc_adapter *sa);
+
 int sfc_configure(struct sfc_adapter *sa);
 void sfc_close(struct sfc_adapter *sa);
 
@@ -389,6 +404,14 @@ int sfc_port_reset_mac_stats(struct sfc_adapter *sa);
 int sfc_set_rx_mode(struct sfc_adapter *sa);
 int sfc_set_rx_mode_unchecked(struct sfc_adapter *sa);
 
+struct sfc_hw_switch_id;
+
+int sfc_hw_switch_id_init(struct sfc_adapter *sa,
+                         struct sfc_hw_switch_id **idp);
+void sfc_hw_switch_id_fini(struct sfc_adapter *sa,
+                          struct sfc_hw_switch_id *idp);
+bool sfc_hw_switch_ids_equal(const struct sfc_hw_switch_id *left,
+                            const struct sfc_hw_switch_id *right);
 
 #ifdef __cplusplus
 }