X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;ds=sidebyside;f=drivers%2Fnet%2Fsfc%2Fsfc.c;h=fd4156f786d245b6b307aa3fa29134febf5d5fa2;hb=de90612f4061a1bd538ad894f1ed18bcf11d335b;hp=4e4c4e445dcda47e180e60ee80d00e18dbe20090;hpb=113a14a63e64ee042898a10d2262f1fa8beb198f;p=dpdk.git diff --git a/drivers/net/sfc/sfc.c b/drivers/net/sfc/sfc.c index 4e4c4e445d..fd4156f786 100644 --- a/drivers/net/sfc/sfc.c +++ b/drivers/net/sfc/sfc.c @@ -342,6 +342,15 @@ sfc_try_start(struct sfc_adapter *sa) goto fail_nic_init; encp = efx_nic_cfg_get(sa->nic); + + /* + * Refresh (since it may change on NIC reset/restart) a copy of + * supported tunnel encapsulations in shared memory to be used + * on supported Rx packet type classes get. + */ + sa->priv.shared->tunnel_encaps = + encp->enc_tunnel_encapsulations_supported; + if (encp->enc_tunnel_encapsulations_supported != 0) { sfc_log_init(sa, "apply tunnel config"); rc = efx_tunnel_reconfigure(sa->nic); @@ -642,7 +651,7 @@ static const uint8_t default_rss_key[EFX_RSS_KEY_SIZE] = { static int sfc_rss_attach(struct sfc_adapter *sa) { - struct sfc_rss *rss = &sa->rss; + struct sfc_rss *rss = &sfc_sa2shared(sa)->rss; int rc; rc = efx_intr_init(sa->nic, sa->intr.type, NULL); @@ -728,6 +737,13 @@ sfc_attach(struct sfc_adapter *sa) encp = efx_nic_cfg_get(sa->nic); + /* + * Make a copy of supported tunnel encapsulations in shared + * memory to be used on supported Rx packet type classes get. + */ + sa->priv.shared->tunnel_encaps = + encp->enc_tunnel_encapsulations_supported; + if (sa->priv.dp_tx->features & SFC_DP_TX_FEAT_TSO) { sa->tso = encp->enc_fw_assisted_tso_v2_enabled; if (!sa->tso) @@ -740,9 +756,24 @@ sfc_attach(struct sfc_adapter *sa) if (rc != 0) goto fail_estimate_rsrc_limits; + sa->evq_max_entries = encp->enc_evq_max_nevs; + SFC_ASSERT(rte_is_power_of_2(sa->evq_max_entries)); + + sa->evq_min_entries = encp->enc_evq_min_nevs; + SFC_ASSERT(rte_is_power_of_2(sa->evq_min_entries)); + + sa->rxq_max_entries = encp->enc_rxq_max_ndescs; + SFC_ASSERT(rte_is_power_of_2(sa->rxq_max_entries)); + + sa->rxq_min_entries = encp->enc_rxq_min_ndescs; + SFC_ASSERT(rte_is_power_of_2(sa->rxq_min_entries)); + sa->txq_max_entries = encp->enc_txq_max_ndescs; SFC_ASSERT(rte_is_power_of_2(sa->txq_max_entries)); + sa->txq_min_entries = encp->enc_txq_min_ndescs; + SFC_ASSERT(rte_is_power_of_2(sa->txq_min_entries)); + rc = sfc_intr_attach(sa); if (rc != 0) goto fail_intr_attach; @@ -1084,12 +1115,12 @@ sfc_register_logtype(const struct rte_pci_addr *pci_addr, ++lt_prefix_str_size; /* Reserve space for prefix separator */ lt_str_size_max = lt_prefix_str_size + PCI_PRI_STR_SIZE + 1; } else { - return RTE_LOGTYPE_PMD; + return sfc_logtype_driver; } lt_str = rte_zmalloc("logtype_str", lt_str_size_max, 0); if (lt_str == NULL) - return RTE_LOGTYPE_PMD; + return sfc_logtype_driver; strncpy(lt_str, lt_prefix_str, lt_prefix_str_size); lt_str[lt_prefix_str_size - 1] = '.'; @@ -1100,5 +1131,8 @@ sfc_register_logtype(const struct rte_pci_addr *pci_addr, ret = rte_log_register_type_and_pick_level(lt_str, ll_default); rte_free(lt_str); - return (ret < 0) ? RTE_LOGTYPE_PMD : ret; + if (ret < 0) + return sfc_logtype_driver; + + return ret; }