net/sfc: implement EF100 native Tx
[dpdk.git] / drivers / net / sfc / sfc.h
index 6c99e9e..ecdd716 100644 (file)
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause
- *
- * Copyright (c) 2016-2018 Solarflare Communications Inc.
- * All rights reserved.
+*
+ * Copyright(c) 2019-2020 Xilinx, Inc.
+ * Copyright(c) 2016-2019 Solarflare Communications Inc.
  *
  * This software was jointly developed between OKTET Labs (under contract
  * for Solarflare) and Solarflare Communications, Inc.
 
 #include "efx.h"
 
+#include "sfc_efx_mcdi.h"
+
+#include "sfc_debug.h"
+#include "sfc_log.h"
 #include "sfc_filter.h"
+#include "sfc_sriov.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -85,29 +90,11 @@ enum sfc_dev_filter_mode {
        SFC_DEV_FILTER_NMODES
 };
 
-enum sfc_mcdi_state {
-       SFC_MCDI_UNINITIALIZED = 0,
-       SFC_MCDI_INITIALIZED,
-       SFC_MCDI_BUSY,
-       SFC_MCDI_COMPLETED,
-
-       SFC_MCDI_NSTATES
-};
-
-struct sfc_mcdi {
-       rte_spinlock_t                  lock;
-       efsys_mem_t                     mem;
-       enum sfc_mcdi_state             state;
-       efx_mcdi_transport_t            transport;
-       uint32_t                        logtype;
-       uint32_t                        proxy_handle;
-       efx_rc_t                        proxy_result;
-};
-
 struct sfc_intr {
        efx_intr_type_t                 type;
        rte_intr_callback_fn            handler;
        boolean_t                       lsc_intr;
+       boolean_t                       rxq_intr;
 };
 
 struct sfc_rxq;
@@ -134,7 +121,7 @@ struct sfc_port {
        boolean_t                       promisc;
        boolean_t                       allmulti;
 
-       struct ether_addr               default_mac_addr;
+       struct rte_ether_addr           default_mac_addr;
 
        unsigned int                    max_mcast_addrs;
        unsigned int                    nb_mcast_addrs;
@@ -171,6 +158,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 */
@@ -186,6 +175,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;
 
@@ -236,11 +226,14 @@ struct sfc_adapter {
        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_flow_list            flow_list;
+
        unsigned int                    rxq_max;
        unsigned int                    txq_max;
 
@@ -250,6 +243,9 @@ struct sfc_adapter {
        unsigned int                    txq_max_entries;
        unsigned int                    txq_min_entries;
 
+       unsigned int                    evq_max_entries;
+       unsigned int                    evq_min_entries;
+
        uint32_t                        evq_flags;
        unsigned int                    evq_count;
 
@@ -283,6 +279,7 @@ struct sfc_adapter {
        struct sfc_txq                  *txq_ctrl;
 
        boolean_t                       tso;
+       boolean_t                       tso_encap;
 
        uint32_t                        rxd_wait_timeout_ns;
 };
@@ -400,6 +397,7 @@ void sfc_port_link_mode_to_info(efx_link_mode_t link_mode,
 int sfc_port_update_mac_stats(struct sfc_adapter *sa);
 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);
 
 
 #ifdef __cplusplus