MCPcopy Create free account
hub / github.com/F-Stack/f-stack / sfc_eth_dev_set_ops

Function sfc_eth_dev_set_ops

dpdk/drivers/net/sfc/sfc_ethdev.c:2807–2945  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2805}
2806
2807static int
2808sfc_eth_dev_set_ops(struct rte_eth_dev *dev)
2809{
2810 struct sfc_adapter *sa = sfc_adapter_by_eth_dev(dev);
2811 struct sfc_adapter_shared *sas = sfc_adapter_shared_by_eth_dev(dev);
2812 const struct sfc_dp_rx *dp_rx;
2813 const struct sfc_dp_tx *dp_tx;
2814 const efx_nic_cfg_t *encp;
2815 unsigned int avail_caps = 0;
2816 const char *rx_name = NULL;
2817 const char *tx_name = NULL;
2818 int rc;
2819
2820 switch (sa->family) {
2821 case EFX_FAMILY_HUNTINGTON:
2822 case EFX_FAMILY_MEDFORD:
2823 case EFX_FAMILY_MEDFORD2:
2824 avail_caps |= SFC_DP_HW_FW_CAP_EF10;
2825 avail_caps |= SFC_DP_HW_FW_CAP_RX_EFX;
2826 avail_caps |= SFC_DP_HW_FW_CAP_TX_EFX;
2827 break;
2828 case EFX_FAMILY_RIVERHEAD:
2829 avail_caps |= SFC_DP_HW_FW_CAP_EF100;
2830 break;
2831 default:
2832 break;
2833 }
2834
2835 encp = efx_nic_cfg_get(sa->nic);
2836 if (encp->enc_rx_es_super_buffer_supported)
2837 avail_caps |= SFC_DP_HW_FW_CAP_RX_ES_SUPER_BUFFER;
2838
2839 rc = sfc_kvargs_process(sa, SFC_KVARG_RX_DATAPATH,
2840 sfc_kvarg_string_handler, &rx_name);
2841 if (rc != 0)
2842 goto fail_kvarg_rx_datapath;
2843
2844 if (rx_name != NULL) {
2845 dp_rx = sfc_dp_find_rx_by_name(&sfc_dp_head, rx_name);
2846 if (dp_rx == NULL) {
2847 sfc_err(sa, "Rx datapath %s not found", rx_name);
2848 rc = ENOENT;
2849 goto fail_dp_rx;
2850 }
2851 if (!sfc_dp_match_hw_fw_caps(&dp_rx->dp, avail_caps)) {
2852 sfc_err(sa,
2853 "Insufficient Hw/FW capabilities to use Rx datapath %s",
2854 rx_name);
2855 rc = EINVAL;
2856 goto fail_dp_rx_caps;
2857 }
2858 } else {
2859 dp_rx = sfc_dp_find_rx_by_caps(&sfc_dp_head, avail_caps);
2860 if (dp_rx == NULL) {
2861 sfc_err(sa, "Rx datapath by caps %#x not found",
2862 avail_caps);
2863 rc = ENOENT;
2864 goto fail_dp_rx;

Callers 1

sfc_eth_dev_initFunction · 0.85

Calls 12

sfc_adapter_by_eth_devFunction · 0.85
efx_nic_cfg_getFunction · 0.85
sfc_kvargs_processFunction · 0.85
sfc_dp_find_rx_by_nameFunction · 0.85
sfc_dp_match_hw_fw_capsFunction · 0.85
sfc_dp_find_rx_by_capsFunction · 0.85
sfc_strdupFunction · 0.85
strcmpFunction · 0.85
sfc_dp_find_tx_by_nameFunction · 0.85
sfc_dp_find_tx_by_capsFunction · 0.85
rte_freeFunction · 0.85

Tested by

no test coverage detected