X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fsfc%2Fsfc.h;h=8c6c02fe49bd09bb95e5d1e8ff1529c5622a39e4;hb=c7c915e1e3c81fb51fa881efe89e694a0b5b8817;hp=83c44302a2d46d811ee0eccce65f27f9f804d7dd;hpb=3b809c27b1fec82a975ddbd597c68cdbbc709e8d;p=dpdk.git diff --git a/drivers/net/sfc/sfc.h b/drivers/net/sfc/sfc.h index 83c44302a2..8c6c02fe49 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, @@ -126,10 +140,16 @@ 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; @@ -177,6 +197,18 @@ struct sfc_adapter { unsigned int txq_count; struct sfc_txq_info *txq_info; + + boolean_t tso; + + 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 }; /* @@ -249,6 +281,7 @@ 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