net/ixgbe/base: support XFI backplane for X550
Add initial support for a XFI backplane interface on some new platforms. The XFI backplane requires a custom tuned link. Hardware/Firmware owns the link config for XF backplane and software must not interfere. Signed-off-by: Wei Dai <wei.dai@intel.com>
This commit is contained in:
parent
21e5e138cd
commit
8bead349c6
@ -205,6 +205,7 @@ s32 ixgbe_set_mac_type(struct ixgbe_hw *hw)
|
||||
case IXGBE_DEV_ID_X550EM_X_10G_T:
|
||||
case IXGBE_DEV_ID_X550EM_X_1G_T:
|
||||
case IXGBE_DEV_ID_X550EM_X_SFP:
|
||||
case IXGBE_DEV_ID_X550EM_X_XFI:
|
||||
hw->mac.type = ixgbe_mac_X550EM_x;
|
||||
hw->mvals = ixgbe_mvals_X550EM_x;
|
||||
break;
|
||||
|
@ -146,6 +146,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||
#define IXGBE_DEV_ID_X550EM_X_SFP 0x15AC
|
||||
#define IXGBE_DEV_ID_X550EM_X_10G_T 0x15AD
|
||||
#define IXGBE_DEV_ID_X550EM_X_1G_T 0x15AE
|
||||
#define IXGBE_DEV_ID_X550EM_X_XFI 0x15B0
|
||||
#define IXGBE_DEV_ID_X550_VF_HV 0x1564
|
||||
#define IXGBE_DEV_ID_X550_VF 0x1565
|
||||
#define IXGBE_DEV_ID_X550EM_A_VF 0x15C5
|
||||
@ -3644,6 +3645,7 @@ enum ixgbe_phy_type {
|
||||
ixgbe_phy_aq,
|
||||
ixgbe_phy_x550em_kr,
|
||||
ixgbe_phy_x550em_kx4,
|
||||
ixgbe_phy_x550em_xfi,
|
||||
ixgbe_phy_x550em_ext_t,
|
||||
ixgbe_phy_cu_unknown,
|
||||
ixgbe_phy_qt,
|
||||
|
@ -450,6 +450,9 @@ STATIC s32 ixgbe_identify_phy_x550em(struct ixgbe_hw *hw)
|
||||
case IXGBE_DEV_ID_X550EM_X_KX4:
|
||||
hw->phy.type = ixgbe_phy_x550em_kx4;
|
||||
break;
|
||||
case IXGBE_DEV_ID_X550EM_X_XFI:
|
||||
hw->phy.type = ixgbe_phy_x550em_xfi;
|
||||
break;
|
||||
case IXGBE_DEV_ID_X550EM_X_KR:
|
||||
case IXGBE_DEV_ID_X550EM_A_KR:
|
||||
case IXGBE_DEV_ID_X550EM_A_KR_L:
|
||||
@ -1573,6 +1576,7 @@ enum ixgbe_media_type ixgbe_get_media_type_X550em(struct ixgbe_hw *hw)
|
||||
switch (hw->device_id) {
|
||||
case IXGBE_DEV_ID_X550EM_X_KR:
|
||||
case IXGBE_DEV_ID_X550EM_X_KX4:
|
||||
case IXGBE_DEV_ID_X550EM_X_XFI:
|
||||
case IXGBE_DEV_ID_X550EM_A_KR:
|
||||
case IXGBE_DEV_ID_X550EM_A_KR_L:
|
||||
media_type = ixgbe_media_type_backplane;
|
||||
@ -2395,6 +2399,12 @@ s32 ixgbe_init_phy_ops_X550em(struct ixgbe_hw *hw)
|
||||
phy->ops.read_reg = ixgbe_read_phy_reg_x550em;
|
||||
phy->ops.write_reg = ixgbe_write_phy_reg_x550em;
|
||||
break;
|
||||
case ixgbe_phy_x550em_xfi:
|
||||
/* link is managed by HW */
|
||||
phy->ops.setup_link = NULL;
|
||||
phy->ops.read_reg = ixgbe_read_phy_reg_x550em;
|
||||
phy->ops.write_reg = ixgbe_write_phy_reg_x550em;
|
||||
break;
|
||||
case ixgbe_phy_x550em_ext_t:
|
||||
/* If internal link mode is XFI, then setup iXFI internal link,
|
||||
* else setup KR now.
|
||||
@ -3669,6 +3679,7 @@ u32 ixgbe_get_supported_physical_layer_X550em(struct ixgbe_hw *hw)
|
||||
|
||||
switch (hw->phy.type) {
|
||||
case ixgbe_phy_x550em_kr:
|
||||
case ixgbe_phy_x550em_xfi:
|
||||
physical_layer = IXGBE_PHYSICAL_LAYER_10GBASE_KR |
|
||||
IXGBE_PHYSICAL_LAYER_1000BASE_KX;
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user