net/sfc: start to make MCDI helpers interface shareable
[dpdk.git] / drivers / net / sfc / sfc.h
index ecd20e5..b3ac752 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.
@@ -21,7 +21,9 @@
 
 #include "efx.h"
 
+#include "sfc_debug.h"
 #include "sfc_filter.h"
+#include "sfc_mcdi.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -85,29 +87,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 +118,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;
@@ -236,11 +220,13 @@ struct sfc_adapter {
        rte_spinlock_t                  nic_lock;
        rte_atomic32_t                  restart_required;
 
-       struct sfc_mcdi                 mcdi;
+       struct sfc_efx_mcdi             mcdi;
        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;
 
@@ -404,6 +390,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