efsys_mem_t mem;
enum sfc_mcdi_state state;
efx_mcdi_transport_t transport;
+ bool logging;
};
struct sfc_intr {
efx_intr_type_t type;
+ rte_intr_callback_fn handler;
+ boolean_t lsc_intr;
};
struct sfc_evq_info;
+struct sfc_rxq_info;
+struct sfc_txq_info;
struct sfc_port {
+ unsigned int lsc_seq;
+
+ uint32_t phy_adv_cap_mask;
+ uint32_t phy_adv_cap;
+
unsigned int flow_ctrl;
boolean_t flow_ctrl_autoneg;
size_t pdu;
+
+ rte_spinlock_t mac_stats_lock;
+ uint64_t *mac_stats_buf;
+ efsys_mem_t mac_stats_dma_mem;
+
+ uint32_t mac_stats_mask[EFX_MAC_STATS_MASK_NPAGES];
};
/* Adapter private data */
unsigned int rxq_max;
unsigned int txq_max;
+ unsigned int txq_max_entries;
+
+ uint32_t evq_flags;
unsigned int evq_count;
struct sfc_evq_info *evq_info;
unsigned int mgmt_evq_index;
rte_spinlock_t mgmt_evq_lock;
+
+ unsigned int rxq_count;
+ struct sfc_rxq_info *rxq_info;
+
+ unsigned int txq_count;
+ struct sfc_txq_info *txq_info;
};
/*
rte_spinlock_lock(&sa->lock);
}
+static inline int
+sfc_adapter_trylock(struct sfc_adapter *sa)
+{
+ return rte_spinlock_trylock(&sa->lock);
+}
+
static inline void
sfc_adapter_unlock(struct sfc_adapter *sa)
{
void sfc_port_stop(struct sfc_adapter *sa);
void sfc_port_link_mode_to_info(efx_link_mode_t link_mode,
struct rte_eth_link *link_info);
+int sfc_port_update_mac_stats(struct sfc_adapter *sa);
#ifdef __cplusplus