[PATCH v2 02/34] common/sfc_efx/base: detect MCDI Table Access API support

Ivan Malov ivan.malov at arknetworks.am
Sun Jun 4 02:00:19 CEST 2023


From: Denis Pryazhennikov <denis.pryazhennikov at arknetworks.am>

Future patches will add an implementation of MCDI Table
Access API in libefx. This patch adds a way to determine
if this API is supported.

Signed-off-by: Denis Pryazhennikov <denis.pryazhennikov at arknetworks.am>
Reviewed-by: Ivan Malov <ivan.malov at arknetworks.am>
Reviewed-by: Andy Moreton <amoreton at xilinx.com>
---
 drivers/common/sfc_efx/base/efx.h          | 2 ++
 drivers/common/sfc_efx/base/hunt_nic.c     | 2 ++
 drivers/common/sfc_efx/base/medford2_nic.c | 2 ++
 drivers/common/sfc_efx/base/medford_nic.c  | 2 ++
 drivers/common/sfc_efx/base/rhead_nic.c    | 9 +++++++++
 drivers/common/sfc_efx/base/siena_nic.c    | 2 ++
 6 files changed, 19 insertions(+)

diff --git a/drivers/common/sfc_efx/base/efx.h b/drivers/common/sfc_efx/base/efx.h
index 49e29dcc1c..f9b090e35e 100644
--- a/drivers/common/sfc_efx/base/efx.h
+++ b/drivers/common/sfc_efx/base/efx.h
@@ -1672,6 +1672,8 @@ typedef struct efx_nic_cfg_s {
 	boolean_t		enc_mae_admin;
 	/* NIC support for MAE action set v2 features. */
 	boolean_t		enc_mae_aset_v2_supported;
+	/* NIC support for MCDI Table Access API. */
+	boolean_t		enc_table_api_supported;
 	/* Firmware support for "FLAG" and "MARK" filter actions */
 	boolean_t		enc_filter_action_flag_supported;
 	boolean_t		enc_filter_action_mark_supported;
diff --git a/drivers/common/sfc_efx/base/hunt_nic.c b/drivers/common/sfc_efx/base/hunt_nic.c
index 08ae324482..04595a39c8 100644
--- a/drivers/common/sfc_efx/base/hunt_nic.c
+++ b/drivers/common/sfc_efx/base/hunt_nic.c
@@ -192,6 +192,8 @@ hunt_board_cfg(
 	/* All Huntington devices have a PCIe Gen3, 8 lane connector */
 	encp->enc_max_pcie_link_gen = EFX_PCIE_LINK_SPEED_GEN3;
 
+	encp->enc_table_api_supported = B_FALSE;
+
 	return (0);
 
 fail4:
diff --git a/drivers/common/sfc_efx/base/medford2_nic.c b/drivers/common/sfc_efx/base/medford2_nic.c
index 6d19524573..49adabffb2 100644
--- a/drivers/common/sfc_efx/base/medford2_nic.c
+++ b/drivers/common/sfc_efx/base/medford2_nic.c
@@ -152,6 +152,8 @@ medford2_board_cfg(
 	encp->enc_required_pcie_bandwidth_mbps = bandwidth;
 	encp->enc_max_pcie_link_gen = EFX_PCIE_LINK_SPEED_GEN3;
 
+	encp->enc_table_api_supported = B_FALSE;
+
 	return (0);
 
 fail4:
diff --git a/drivers/common/sfc_efx/base/medford_nic.c b/drivers/common/sfc_efx/base/medford_nic.c
index b111e3eded..9a460b2b9b 100644
--- a/drivers/common/sfc_efx/base/medford_nic.c
+++ b/drivers/common/sfc_efx/base/medford_nic.c
@@ -150,6 +150,8 @@ medford_board_cfg(
 	encp->enc_required_pcie_bandwidth_mbps = bandwidth;
 	encp->enc_max_pcie_link_gen = EFX_PCIE_LINK_SPEED_GEN3;
 
+	encp->enc_table_api_supported = B_FALSE;
+
 	return (0);
 
 fail4:
diff --git a/drivers/common/sfc_efx/base/rhead_nic.c b/drivers/common/sfc_efx/base/rhead_nic.c
index eda6c1c4f9..a773aea38d 100644
--- a/drivers/common/sfc_efx/base/rhead_nic.c
+++ b/drivers/common/sfc_efx/base/rhead_nic.c
@@ -176,6 +176,15 @@ rhead_board_cfg(
 	encp->enc_required_pcie_bandwidth_mbps = bandwidth;
 	encp->enc_max_pcie_link_gen = EFX_PCIE_LINK_SPEED_GEN3;
 
+	/*
+	 * FIXME: MCDI table API support depends on an EF100 firmware build
+	 * and an EF100 platform. It should be discovered by using a capability
+	 * flag from MCDI that is not implemented yet.
+	 * Right now we can safely rely on the return code from the libefx
+	 * MCDI Table API.
+	 */
+	encp->enc_table_api_supported = B_TRUE;
+
 	return (0);
 
 fail3:
diff --git a/drivers/common/sfc_efx/base/siena_nic.c b/drivers/common/sfc_efx/base/siena_nic.c
index 9f14faf271..1f1fb7d2af 100644
--- a/drivers/common/sfc_efx/base/siena_nic.c
+++ b/drivers/common/sfc_efx/base/siena_nic.c
@@ -205,6 +205,8 @@ siena_board_cfg(
 	encp->enc_mae_supported = B_FALSE;
 	encp->enc_mae_admin = B_FALSE;
 
+	encp->enc_table_api_supported = B_FALSE;
+
 	encp->enc_dma_mapping = EFX_NIC_DMA_MAPPING_FLAT;
 
 	return (0);
-- 
2.30.2



More information about the dev mailing list