57 lines
2.0 KiB
Diff
57 lines
2.0 KiB
Diff
|
From ac331e948346f2706cd82b2d259800621b9db04f Mon Sep 17 00:00:00 2001
|
||
|
From: Edward Cree <ecree@solarflare.com>
|
||
|
Date: Mon, 14 Jul 2014 08:39:07 +0100
|
||
|
Subject: [PATCH 2/2] sfc: Add 40G link capability decoding
|
||
|
|
||
|
Needed to select 40G mode on a 10G/40G capable card.
|
||
|
|
||
|
Signed-off-by: Shradha Shah <sshah@solarflare.com>
|
||
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||
|
---
|
||
|
drivers/net/ethernet/sfc/mcdi_port.c | 11 +++++++++++
|
||
|
1 file changed, 11 insertions(+)
|
||
|
|
||
|
diff --git a/drivers/net/ethernet/sfc/mcdi_port.c b/drivers/net/ethernet/sfc/mcdi_port.c
|
||
|
index e5fc4e1..fb19b70 100644
|
||
|
--- a/drivers/net/ethernet/sfc/mcdi_port.c
|
||
|
+++ b/drivers/net/ethernet/sfc/mcdi_port.c
|
||
|
@@ -183,6 +183,8 @@ static u32 mcdi_to_ethtool_cap(u32 media, u32 cap)
|
||
|
result |= SUPPORTED_1000baseKX_Full;
|
||
|
if (cap & (1 << MC_CMD_PHY_CAP_10000FDX_LBN))
|
||
|
result |= SUPPORTED_10000baseKX4_Full;
|
||
|
+ if (cap & (1 << MC_CMD_PHY_CAP_40000FDX_LBN))
|
||
|
+ result |= SUPPORTED_40000baseKR4_Full;
|
||
|
break;
|
||
|
|
||
|
case MC_CMD_MEDIA_XFP:
|
||
|
@@ -190,6 +192,12 @@ static u32 mcdi_to_ethtool_cap(u32 media, u32 cap)
|
||
|
result |= SUPPORTED_FIBRE;
|
||
|
break;
|
||
|
|
||
|
+ case MC_CMD_MEDIA_QSFP_PLUS:
|
||
|
+ result |= SUPPORTED_FIBRE;
|
||
|
+ if (cap & (1 << MC_CMD_PHY_CAP_40000FDX_LBN))
|
||
|
+ result |= SUPPORTED_40000baseCR4_Full;
|
||
|
+ break;
|
||
|
+
|
||
|
case MC_CMD_MEDIA_BASE_T:
|
||
|
result |= SUPPORTED_TP;
|
||
|
if (cap & (1 << MC_CMD_PHY_CAP_10HDX_LBN))
|
||
|
@@ -237,6 +245,8 @@ static u32 ethtool_to_mcdi_cap(u32 cap)
|
||
|
result |= (1 << MC_CMD_PHY_CAP_1000FDX_LBN);
|
||
|
if (cap & (SUPPORTED_10000baseT_Full | SUPPORTED_10000baseKX4_Full))
|
||
|
result |= (1 << MC_CMD_PHY_CAP_10000FDX_LBN);
|
||
|
+ if (cap & (SUPPORTED_40000baseCR4_Full | SUPPORTED_40000baseKR4_Full))
|
||
|
+ result |= (1 << MC_CMD_PHY_CAP_40000FDX_LBN);
|
||
|
if (cap & SUPPORTED_Pause)
|
||
|
result |= (1 << MC_CMD_PHY_CAP_PAUSE_LBN);
|
||
|
if (cap & SUPPORTED_Asym_Pause)
|
||
|
@@ -285,6 +295,7 @@ static u32 mcdi_to_ethtool_media(u32 media)
|
||
|
|
||
|
case MC_CMD_MEDIA_XFP:
|
||
|
case MC_CMD_MEDIA_SFP_PLUS:
|
||
|
+ case MC_CMD_MEDIA_QSFP_PLUS:
|
||
|
return PORT_FIBRE;
|
||
|
|
||
|
case MC_CMD_MEDIA_BASE_T:
|