case I40E_DEV_ID_QSFP_B:
                case I40E_DEV_ID_QSFP_C:
                case I40E_DEV_ID_10G_BASE_T:
+               case I40E_DEV_ID_20G_KR2:
                        hw->mac.type = I40E_MAC_XL710;
                        break;
                case I40E_DEV_ID_VF:
        case I40E_PHY_TYPE_10GBASE_KX4:
        case I40E_PHY_TYPE_10GBASE_KR:
        case I40E_PHY_TYPE_40GBASE_KR4:
+       case I40E_PHY_TYPE_20GBASE_KR2:
                media = I40E_MEDIA_TYPE_BACKPLANE;
                break;
        case I40E_PHY_TYPE_SGMII:
 
        case I40E_PHY_TYPE_40GBASE_LR4:
                ecmd->supported = SUPPORTED_40000baseLR4_Full;
                break;
+       case I40E_PHY_TYPE_20GBASE_KR2:
+               ecmd->supported = SUPPORTED_Autoneg |
+                                 SUPPORTED_20000baseKR2_Full;
+               ecmd->advertising = ADVERTISED_Autoneg |
+                                   ADVERTISED_20000baseKR2_Full;
+               break;
        case I40E_PHY_TYPE_10GBASE_KX4:
                ecmd->supported = SUPPORTED_Autoneg |
                                  SUPPORTED_10000baseKX4_Full;
                /* need a SPEED_40000 in ethtool.h */
                ethtool_cmd_speed_set(ecmd, 40000);
                break;
+       case I40E_LINK_SPEED_20GB:
+               ethtool_cmd_speed_set(ecmd, SPEED_20000);
+               break;
        case I40E_LINK_SPEED_10GB:
                ethtool_cmd_speed_set(ecmd, SPEED_10000);
                break;
                if (hw_link_info->requested_speeds & I40E_LINK_SPEED_100MB)
                        ecmd->advertising |= ADVERTISED_100baseT_Full;
                break;
+       case I40E_DEV_ID_20G_KR2:
+               /* backplane 20G */
+               ecmd->supported = SUPPORTED_20000baseKR2_Full;
+               ecmd->advertising = ADVERTISED_20000baseKR2_Full;
+               break;
        default:
                /* all the rest are 10G/1G */
                ecmd->supported = SUPPORTED_10000baseT_Full |
            advertise & ADVERTISED_10000baseKX4_Full ||
            advertise & ADVERTISED_10000baseKR_Full)
                config.link_speed |= I40E_LINK_SPEED_10GB;
+       if (advertise & ADVERTISED_20000baseKR2_Full)
+               config.link_speed |= I40E_LINK_SPEED_20GB;
        if (advertise & ADVERTISED_40000baseKR4_Full ||
            advertise & ADVERTISED_40000baseCR4_Full ||
            advertise & ADVERTISED_40000baseSR4_Full ||
 
        {PCI_VDEVICE(INTEL, I40E_DEV_ID_QSFP_B), 0},
        {PCI_VDEVICE(INTEL, I40E_DEV_ID_QSFP_C), 0},
        {PCI_VDEVICE(INTEL, I40E_DEV_ID_10G_BASE_T), 0},
+       {PCI_VDEVICE(INTEL, I40E_DEV_ID_20G_KR2), 0},
        /* required last entry */
        {0, }
 };
        case I40E_LINK_SPEED_40GB:
                strlcpy(speed, "40 Gbps", SPEED_SIZE);
                break;
+       case I40E_LINK_SPEED_20GB:
+               strncpy(speed, "20 Gbps", SPEED_SIZE);
+               break;
        case I40E_LINK_SPEED_10GB:
                strlcpy(speed, "10 Gbps", SPEED_SIZE);
                break;
 
 #define I40E_DEV_ID_QSFP_B             0x1584
 #define I40E_DEV_ID_QSFP_C             0x1585
 #define I40E_DEV_ID_10G_BASE_T         0x1586
+#define I40E_DEV_ID_20G_KR2            0x1587
 #define I40E_DEV_ID_VF                 0x154C
 #define I40E_DEV_ID_VF_HV              0x1571
 
 
                case I40E_DEV_ID_QSFP_B:
                case I40E_DEV_ID_QSFP_C:
                case I40E_DEV_ID_10G_BASE_T:
+               case I40E_DEV_ID_20G_KR2:
                        hw->mac.type = I40E_MAC_XL710;
                        break;
                case I40E_DEV_ID_VF:
 
 #define I40E_DEV_ID_QSFP_B             0x1584
 #define I40E_DEV_ID_QSFP_C             0x1585
 #define I40E_DEV_ID_10G_BASE_T         0x1586
-#define I40E_DEV_ID_VF         0x154C
+#define I40E_DEV_ID_20G_KR2            0x1587
+#define I40E_DEV_ID_VF                 0x154C
 #define I40E_DEV_ID_VF_HV              0x1571
 
 #define i40e_is_40G_device(d)          ((d) == I40E_DEV_ID_QSFP_A  || \