aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Brandeburg <jesse.brandeburg@intel.com>2015-03-27 03:12:09 -0400
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2015-03-27 03:12:09 -0400
commitae24b4095c2f9547d0f2ab2845155aabe4e564d0 (patch)
tree33cf76b7218df4d96d0b4ec563c915a1dcf6f72f
parent5a352dd0a3aac03b443c94828dfd7144261c8636 (diff)
i40e/i40evf: implement KR2 support
The new devices need a new device ID some other defines to handle the new 20G speed for KR2. Change-ID: I03f717e364afe59657e8c9ce5ffaad856b4b21df Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Signed-off-by: Piotr Raczynski <piotr.raczynski@intel.com> Tested-by: Jim Young <james.m.young@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e_common.c2
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e_ethtool.c16
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e_main.c4
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e_type.h1
-rw-r--r--drivers/net/ethernet/intel/i40evf/i40e_common.c1
-rw-r--r--drivers/net/ethernet/intel/i40evf/i40e_type.h3
6 files changed, 26 insertions, 1 deletions
diff --git a/drivers/net/ethernet/intel/i40e/i40e_common.c b/drivers/net/ethernet/intel/i40e/i40e_common.c
index d9f1fcb9c2be..b7cacde92de0 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_common.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_common.c
@@ -51,6 +51,7 @@ static i40e_status i40e_set_mac_type(struct i40e_hw *hw)
51 case I40E_DEV_ID_QSFP_B: 51 case I40E_DEV_ID_QSFP_B:
52 case I40E_DEV_ID_QSFP_C: 52 case I40E_DEV_ID_QSFP_C:
53 case I40E_DEV_ID_10G_BASE_T: 53 case I40E_DEV_ID_10G_BASE_T:
54 case I40E_DEV_ID_20G_KR2:
54 hw->mac.type = I40E_MAC_XL710; 55 hw->mac.type = I40E_MAC_XL710;
55 break; 56 break;
56 case I40E_DEV_ID_VF: 57 case I40E_DEV_ID_VF:
@@ -841,6 +842,7 @@ static enum i40e_media_type i40e_get_media_type(struct i40e_hw *hw)
841 case I40E_PHY_TYPE_10GBASE_KX4: 842 case I40E_PHY_TYPE_10GBASE_KX4:
842 case I40E_PHY_TYPE_10GBASE_KR: 843 case I40E_PHY_TYPE_10GBASE_KR:
843 case I40E_PHY_TYPE_40GBASE_KR4: 844 case I40E_PHY_TYPE_40GBASE_KR4:
845 case I40E_PHY_TYPE_20GBASE_KR2:
844 media = I40E_MEDIA_TYPE_BACKPLANE; 846 media = I40E_MEDIA_TYPE_BACKPLANE;
845 break; 847 break;
846 case I40E_PHY_TYPE_SGMII: 848 case I40E_PHY_TYPE_SGMII:
diff --git a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
index b7d0aaac5480..c848b1862512 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
@@ -274,6 +274,12 @@ static void i40e_get_settings_link_up(struct i40e_hw *hw,
274 case I40E_PHY_TYPE_40GBASE_LR4: 274 case I40E_PHY_TYPE_40GBASE_LR4:
275 ecmd->supported = SUPPORTED_40000baseLR4_Full; 275 ecmd->supported = SUPPORTED_40000baseLR4_Full;
276 break; 276 break;
277 case I40E_PHY_TYPE_20GBASE_KR2:
278 ecmd->supported = SUPPORTED_Autoneg |
279 SUPPORTED_20000baseKR2_Full;
280 ecmd->advertising = ADVERTISED_Autoneg |
281 ADVERTISED_20000baseKR2_Full;
282 break;
277 case I40E_PHY_TYPE_10GBASE_KX4: 283 case I40E_PHY_TYPE_10GBASE_KX4:
278 ecmd->supported = SUPPORTED_Autoneg | 284 ecmd->supported = SUPPORTED_Autoneg |
279 SUPPORTED_10000baseKX4_Full; 285 SUPPORTED_10000baseKX4_Full;
@@ -353,6 +359,9 @@ static void i40e_get_settings_link_up(struct i40e_hw *hw,
353 /* need a SPEED_40000 in ethtool.h */ 359 /* need a SPEED_40000 in ethtool.h */
354 ethtool_cmd_speed_set(ecmd, 40000); 360 ethtool_cmd_speed_set(ecmd, 40000);
355 break; 361 break;
362 case I40E_LINK_SPEED_20GB:
363 ethtool_cmd_speed_set(ecmd, SPEED_20000);
364 break;
356 case I40E_LINK_SPEED_10GB: 365 case I40E_LINK_SPEED_10GB:
357 ethtool_cmd_speed_set(ecmd, SPEED_10000); 366 ethtool_cmd_speed_set(ecmd, SPEED_10000);
358 break; 367 break;
@@ -418,6 +427,11 @@ static void i40e_get_settings_link_down(struct i40e_hw *hw,
418 if (hw_link_info->requested_speeds & I40E_LINK_SPEED_100MB) 427 if (hw_link_info->requested_speeds & I40E_LINK_SPEED_100MB)
419 ecmd->advertising |= ADVERTISED_100baseT_Full; 428 ecmd->advertising |= ADVERTISED_100baseT_Full;
420 break; 429 break;
430 case I40E_DEV_ID_20G_KR2:
431 /* backplane 20G */
432 ecmd->supported = SUPPORTED_20000baseKR2_Full;
433 ecmd->advertising = ADVERTISED_20000baseKR2_Full;
434 break;
421 default: 435 default:
422 /* all the rest are 10G/1G */ 436 /* all the rest are 10G/1G */
423 ecmd->supported = SUPPORTED_10000baseT_Full | 437 ecmd->supported = SUPPORTED_10000baseT_Full |
@@ -633,6 +647,8 @@ static int i40e_set_settings(struct net_device *netdev,
633 advertise & ADVERTISED_10000baseKX4_Full || 647 advertise & ADVERTISED_10000baseKX4_Full ||
634 advertise & ADVERTISED_10000baseKR_Full) 648 advertise & ADVERTISED_10000baseKR_Full)
635 config.link_speed |= I40E_LINK_SPEED_10GB; 649 config.link_speed |= I40E_LINK_SPEED_10GB;
650 if (advertise & ADVERTISED_20000baseKR2_Full)
651 config.link_speed |= I40E_LINK_SPEED_20GB;
636 if (advertise & ADVERTISED_40000baseKR4_Full || 652 if (advertise & ADVERTISED_40000baseKR4_Full ||
637 advertise & ADVERTISED_40000baseCR4_Full || 653 advertise & ADVERTISED_40000baseCR4_Full ||
638 advertise & ADVERTISED_40000baseSR4_Full || 654 advertise & ADVERTISED_40000baseSR4_Full ||
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index bc87968098d9..048d8ec88458 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -75,6 +75,7 @@ static const struct pci_device_id i40e_pci_tbl[] = {
75 {PCI_VDEVICE(INTEL, I40E_DEV_ID_QSFP_B), 0}, 75 {PCI_VDEVICE(INTEL, I40E_DEV_ID_QSFP_B), 0},
76 {PCI_VDEVICE(INTEL, I40E_DEV_ID_QSFP_C), 0}, 76 {PCI_VDEVICE(INTEL, I40E_DEV_ID_QSFP_C), 0},
77 {PCI_VDEVICE(INTEL, I40E_DEV_ID_10G_BASE_T), 0}, 77 {PCI_VDEVICE(INTEL, I40E_DEV_ID_10G_BASE_T), 0},
78 {PCI_VDEVICE(INTEL, I40E_DEV_ID_20G_KR2), 0},
78 /* required last entry */ 79 /* required last entry */
79 {0, } 80 {0, }
80}; 81};
@@ -4639,6 +4640,9 @@ static void i40e_print_link_message(struct i40e_vsi *vsi, bool isup)
4639 case I40E_LINK_SPEED_40GB: 4640 case I40E_LINK_SPEED_40GB:
4640 strlcpy(speed, "40 Gbps", SPEED_SIZE); 4641 strlcpy(speed, "40 Gbps", SPEED_SIZE);
4641 break; 4642 break;
4643 case I40E_LINK_SPEED_20GB:
4644 strncpy(speed, "20 Gbps", SPEED_SIZE);
4645 break;
4642 case I40E_LINK_SPEED_10GB: 4646 case I40E_LINK_SPEED_10GB:
4643 strlcpy(speed, "10 Gbps", SPEED_SIZE); 4647 strlcpy(speed, "10 Gbps", SPEED_SIZE);
4644 break; 4648 break;
diff --git a/drivers/net/ethernet/intel/i40e/i40e_type.h b/drivers/net/ethernet/intel/i40e/i40e_type.h
index 83032d2c2275..67c7bc9e9c21 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_type.h
+++ b/drivers/net/ethernet/intel/i40e/i40e_type.h
@@ -44,6 +44,7 @@
44#define I40E_DEV_ID_QSFP_B 0x1584 44#define I40E_DEV_ID_QSFP_B 0x1584
45#define I40E_DEV_ID_QSFP_C 0x1585 45#define I40E_DEV_ID_QSFP_C 0x1585
46#define I40E_DEV_ID_10G_BASE_T 0x1586 46#define I40E_DEV_ID_10G_BASE_T 0x1586
47#define I40E_DEV_ID_20G_KR2 0x1587
47#define I40E_DEV_ID_VF 0x154C 48#define I40E_DEV_ID_VF 0x154C
48#define I40E_DEV_ID_VF_HV 0x1571 49#define I40E_DEV_ID_VF_HV 0x1571
49 50
diff --git a/drivers/net/ethernet/intel/i40evf/i40e_common.c b/drivers/net/ethernet/intel/i40evf/i40e_common.c
index f07b9ff2b823..39fcb1dc4ea6 100644
--- a/drivers/net/ethernet/intel/i40evf/i40e_common.c
+++ b/drivers/net/ethernet/intel/i40evf/i40e_common.c
@@ -51,6 +51,7 @@ i40e_status i40e_set_mac_type(struct i40e_hw *hw)
51 case I40E_DEV_ID_QSFP_B: 51 case I40E_DEV_ID_QSFP_B:
52 case I40E_DEV_ID_QSFP_C: 52 case I40E_DEV_ID_QSFP_C:
53 case I40E_DEV_ID_10G_BASE_T: 53 case I40E_DEV_ID_10G_BASE_T:
54 case I40E_DEV_ID_20G_KR2:
54 hw->mac.type = I40E_MAC_XL710; 55 hw->mac.type = I40E_MAC_XL710;
55 break; 56 break;
56 case I40E_DEV_ID_VF: 57 case I40E_DEV_ID_VF:
diff --git a/drivers/net/ethernet/intel/i40evf/i40e_type.h b/drivers/net/ethernet/intel/i40evf/i40e_type.h
index eba6e4b34f70..9c79cb6abb2b 100644
--- a/drivers/net/ethernet/intel/i40evf/i40e_type.h
+++ b/drivers/net/ethernet/intel/i40evf/i40e_type.h
@@ -44,7 +44,8 @@
44#define I40E_DEV_ID_QSFP_B 0x1584 44#define I40E_DEV_ID_QSFP_B 0x1584
45#define I40E_DEV_ID_QSFP_C 0x1585 45#define I40E_DEV_ID_QSFP_C 0x1585
46#define I40E_DEV_ID_10G_BASE_T 0x1586 46#define I40E_DEV_ID_10G_BASE_T 0x1586
47#define I40E_DEV_ID_VF 0x154C 47#define I40E_DEV_ID_20G_KR2 0x1587
48#define I40E_DEV_ID_VF 0x154C
48#define I40E_DEV_ID_VF_HV 0x1571 49#define I40E_DEV_ID_VF_HV 0x1571
49 50
50#define i40e_is_40G_device(d) ((d) == I40E_DEV_ID_QSFP_A || \ 51#define i40e_is_40G_device(d) ((d) == I40E_DEV_ID_QSFP_A || \