[dpdk-dev] [PATCH 07/11] net/sfc/base: infer port mode bandwidth from max link speed
Andrew Rybchenko
arybchenko at solarflare.com
Mon Sep 24 15:50:26 CEST 2018
From: Richard Houldsworth <rhouldsworth at solarflare.com>
Limit the port mode bandwidth calculations by the maximum
reported link speed. This system detects 25G vs 10G cards,
and 100G port modes vs 40G.
Signed-off-by: Richard Houldsworth <rhouldsworth at solarflare.com>
Signed-off-by: Andrew Rybchenko <arybchenko at solarflare.com>
---
drivers/net/sfc/base/ef10_nic.c | 23 ++++++++++++++++++++---
1 file changed, 20 insertions(+), 3 deletions(-)
diff --git a/drivers/net/sfc/base/ef10_nic.c b/drivers/net/sfc/base/ef10_nic.c
index 8cd76d690..c197ff957 100644
--- a/drivers/net/sfc/base/ef10_nic.c
+++ b/drivers/net/sfc/base/ef10_nic.c
@@ -133,9 +133,11 @@ ef10_nic_get_port_mode_bandwidth(
{
uint32_t port_modes;
uint32_t current_mode;
- uint32_t single_lane = 10000;
- uint32_t dual_lane = 50000;
- uint32_t quad_lane = 40000;
+ efx_port_t *epp = &(enp->en_port);
+
+ uint32_t single_lane;
+ uint32_t dual_lane;
+ uint32_t quad_lane;
uint32_t bandwidth;
efx_rc_t rc;
@@ -145,6 +147,21 @@ ef10_nic_get_port_mode_bandwidth(
goto fail1;
}
+ if (epp->ep_phy_cap_mask & (1 << EFX_PHY_CAP_25000FDX))
+ single_lane = 25000;
+ else
+ single_lane = 10000;
+
+ if (epp->ep_phy_cap_mask & (1 << EFX_PHY_CAP_50000FDX))
+ dual_lane = 50000;
+ else
+ dual_lane = 20000;
+
+ if (epp->ep_phy_cap_mask & (1 << EFX_PHY_CAP_100000FDX))
+ quad_lane = 100000;
+ else
+ quad_lane = 40000;
+
switch (current_mode) {
case TLV_PORT_MODE_1x1_NA: /* mode 0 */
bandwidth = single_lane;
--
2.17.1
More information about the dev
mailing list