X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;ds=sidebyside;f=drivers%2Fnet%2Fsfc%2Fsfc.h;h=33445196bcc48f14ee0ca4173f4d0eac61a76ad5;hb=4ec1fc3ba88183071cf4441d74fdc5a6d5525ade;hp=543c36828ca8dbd342aa2b591480d2c459814447;hpb=a8ad8cf83f01afce616ffcc7a19bc44bc8609b96;p=dpdk.git diff --git a/drivers/net/sfc/sfc.h b/drivers/net/sfc/sfc.h index 543c36828c..33445196bc 100644 --- a/drivers/net/sfc/sfc.h +++ b/drivers/net/sfc/sfc.h @@ -45,6 +45,13 @@ extern "C" { #define SFC_DEV_TO_PCI(eth_dev) \ RTE_DEV_TO_PCI((eth_dev)->device) +#if EFSYS_OPT_RX_SCALE +/** RSS key length (bytes) */ +#define SFC_RSS_KEY_SIZE 40 +/** RSS hash offloads mask */ +#define SFC_RSS_OFFLOADS (ETH_RSS_IP | ETH_RSS_TCP) +#endif + /* * +---------------+ * | UNINITIALIZED |<-----------+ @@ -96,6 +103,13 @@ enum sfc_adapter_state { SFC_ADAPTER_NSTATES }; +enum sfc_dev_filter_mode { + SFC_DEV_FILTER_MODE_PROMISC = 0, + SFC_DEV_FILTER_MODE_ALLMULTI, + + SFC_DEV_FILTER_NMODES +}; + enum sfc_mcdi_state { SFC_MCDI_UNINITIALIZED = 0, SFC_MCDI_INITIALIZED, @@ -110,10 +124,13 @@ struct sfc_mcdi { 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; @@ -121,9 +138,23 @@ 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; + + boolean_t promisc; + boolean_t allmulti; + + 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 */ @@ -154,6 +185,7 @@ struct sfc_adapter { unsigned int txq_max_entries; + uint32_t evq_flags; unsigned int evq_count; struct sfc_evq_info *evq_info; @@ -165,6 +197,16 @@ struct sfc_adapter { unsigned int txq_count; struct sfc_txq_info *txq_info; + + unsigned int rss_channels; + +#if EFSYS_OPT_RX_SCALE + efx_rx_scale_support_t rss_support; + efx_rx_hash_support_t hash_support; + efx_rx_hash_type_t rss_hash_types; + unsigned int rss_tbl[EFX_RSS_TBL_SIZE]; + uint8_t rss_key[SFC_RSS_KEY_SIZE]; +#endif }; /* @@ -190,6 +232,12 @@ sfc_adapter_lock(struct sfc_adapter *sa) 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) { @@ -230,6 +278,8 @@ int sfc_port_start(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); +int sfc_set_rx_mode(struct sfc_adapter *sa); #ifdef __cplusplus