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

Function sfc_set_fw_subvariant

dpdk/drivers/net/sfc/sfc.c:383–434  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

381}
382
383static int
384sfc_set_fw_subvariant(struct sfc_adapter *sa)
385{
386 struct sfc_adapter_shared *sas = sfc_sa2shared(sa);
387 const efx_nic_cfg_t *encp = efx_nic_cfg_get(sa->nic);
388 uint64_t tx_offloads = sa->eth_dev->data->dev_conf.txmode.offloads;
389 unsigned int txq_index;
390 efx_nic_fw_subvariant_t req_fw_subvariant;
391 efx_nic_fw_subvariant_t cur_fw_subvariant;
392 int rc;
393
394 if (!encp->enc_fw_subvariant_no_tx_csum_supported) {
395 sfc_info(sa, "no-Tx-checksum subvariant not supported");
396 return 0;
397 }
398
399 for (txq_index = 0; txq_index < sas->txq_count; ++txq_index) {
400 struct sfc_txq_info *txq_info = &sas->txq_info[txq_index];
401
402 if (txq_info->state & SFC_TXQ_INITIALIZED)
403 tx_offloads |= txq_info->offloads;
404 }
405
406 if (tx_offloads & (RTE_ETH_TX_OFFLOAD_IPV4_CKSUM |
407 RTE_ETH_TX_OFFLOAD_TCP_CKSUM |
408 RTE_ETH_TX_OFFLOAD_UDP_CKSUM |
409 RTE_ETH_TX_OFFLOAD_OUTER_IPV4_CKSUM))
410 req_fw_subvariant = EFX_NIC_FW_SUBVARIANT_DEFAULT;
411 else
412 req_fw_subvariant = EFX_NIC_FW_SUBVARIANT_NO_TX_CSUM;
413
414 rc = efx_nic_get_fw_subvariant(sa->nic, &cur_fw_subvariant);
415 if (rc != 0) {
416 sfc_err(sa, "failed to get FW subvariant: %d", rc);
417 return rc;
418 }
419 sfc_info(sa, "FW subvariant is %u vs required %u",
420 cur_fw_subvariant, req_fw_subvariant);
421
422 if (cur_fw_subvariant == req_fw_subvariant)
423 return 0;
424
425 rc = efx_nic_set_fw_subvariant(sa->nic, req_fw_subvariant);
426 if (rc != 0) {
427 sfc_err(sa, "failed to set FW subvariant %u: %d",
428 req_fw_subvariant, rc);
429 return rc;
430 }
431 sfc_info(sa, "FW subvariant set to %u", req_fw_subvariant);
432
433 return 0;
434}
435
436static int
437sfc_try_start(struct sfc_adapter *sa)

Callers 1

sfc_try_startFunction · 0.85

Calls 4

sfc_sa2sharedFunction · 0.85
efx_nic_cfg_getFunction · 0.85

Tested by

no test coverage detected