Skip to content

Commit 847cf3b

Browse files
committed
Merge branch '10GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue
Tony Nguyen says: ==================== ixgbe, ixgbevf: Add support for Intel(R) E610 device Piotr Kwapulinski says: Add initial support for Intel(R) E610 Series of network devices. The E610 is based on X550 but adds firmware managed link, enhanced security capabilities and support for updated server manageability. * '10GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue: ixgbevf: Add support for Intel(R) E610 device PCI: Add PCI_VDEVICE_SUB helper macro ixgbe: Enable link management in E610 device ixgbe: Clean up the E610 link management related code ixgbe: Add ixgbe_x540 multiple header inclusion protection ixgbe: Add support for EEPROM dump in E610 device ixgbe: Add support for NVM handling in E610 device ixgbe: Add link management support for E610 device ixgbe: Add support for E610 device capabilities detection ixgbe: Add support for E610 FW Admin Command Interface ==================== Link: https://patch.msgid.link/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
2 parents 4c61d80 + 4c44b45 commit 847cf3b

24 files changed

+4455
-53
lines changed

drivers/net/ethernet/intel/ixgbe/Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# SPDX-License-Identifier: GPL-2.0
2-
# Copyright(c) 1999 - 2018 Intel Corporation.
2+
# Copyright(c) 1999 - 2024 Intel Corporation.
33
#
44
# Makefile for the Intel(R) 10GbE PCI Express ethernet driver
55
#
@@ -9,7 +9,7 @@ obj-$(CONFIG_IXGBE) += ixgbe.o
99
ixgbe-y := ixgbe_main.o ixgbe_common.o ixgbe_ethtool.o \
1010
ixgbe_82599.o ixgbe_82598.o ixgbe_phy.o ixgbe_sriov.o \
1111
ixgbe_mbx.o ixgbe_x540.o ixgbe_x550.o ixgbe_lib.o ixgbe_ptp.o \
12-
ixgbe_xsk.o
12+
ixgbe_xsk.o ixgbe_e610.o
1313

1414
ixgbe-$(CONFIG_IXGBE_DCB) += ixgbe_dcb.o ixgbe_dcb_82598.o \
1515
ixgbe_dcb_82599.o ixgbe_dcb_nl.o

drivers/net/ethernet/intel/ixgbe/ixgbe.h

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* SPDX-License-Identifier: GPL-2.0 */
2-
/* Copyright(c) 1999 - 2018 Intel Corporation. */
2+
/* Copyright(c) 1999 - 2024 Intel Corporation. */
33

44
#ifndef _IXGBE_H_
55
#define _IXGBE_H_
@@ -20,6 +20,7 @@
2020
#include "ixgbe_type.h"
2121
#include "ixgbe_common.h"
2222
#include "ixgbe_dcb.h"
23+
#include "ixgbe_e610.h"
2324
#if IS_ENABLED(CONFIG_FCOE)
2425
#define IXGBE_FCOE
2526
#include "ixgbe_fcoe.h"
@@ -173,6 +174,7 @@ enum ixgbe_tx_flags {
173174
#define VMDQ_P(p) ((p) + adapter->ring_feature[RING_F_VMDQ].offset)
174175
#define IXGBE_82599_VF_DEVICE_ID 0x10ED
175176
#define IXGBE_X540_VF_DEVICE_ID 0x1515
177+
#define IXGBE_E610_VF_DEVICE_ID 0x57AD
176178

177179
#define UPDATE_VF_COUNTER_32bit(reg, last_counter, counter) \
178180
{ \
@@ -654,13 +656,17 @@ struct ixgbe_adapter {
654656
#define IXGBE_FLAG2_RSS_FIELD_IPV6_UDP BIT(9)
655657
#define IXGBE_FLAG2_PTP_PPS_ENABLED BIT(10)
656658
#define IXGBE_FLAG2_PHY_INTERRUPT BIT(11)
659+
#define IXGBE_FLAG2_FW_ASYNC_EVENT BIT(12)
657660
#define IXGBE_FLAG2_VLAN_PROMISC BIT(13)
658661
#define IXGBE_FLAG2_EEE_CAPABLE BIT(14)
659662
#define IXGBE_FLAG2_EEE_ENABLED BIT(15)
660663
#define IXGBE_FLAG2_RX_LEGACY BIT(16)
661664
#define IXGBE_FLAG2_IPSEC_ENABLED BIT(17)
662665
#define IXGBE_FLAG2_VF_IPSEC_ENABLED BIT(18)
663666
#define IXGBE_FLAG2_AUTO_DISABLE_VF BIT(19)
667+
#define IXGBE_FLAG2_PHY_FW_LOAD_FAILED BIT(20)
668+
#define IXGBE_FLAG2_NO_MEDIA BIT(21)
669+
#define IXGBE_FLAG2_MOD_POWER_UNSUPPORTED BIT(22)
664670

665671
/* Tx fast path data */
666672
int num_tx_queues;
@@ -793,6 +799,7 @@ struct ixgbe_adapter {
793799
u32 vferr_refcount;
794800
struct ixgbe_mac_addr *mac_table;
795801
struct kobject *info_kobj;
802+
u16 lse_mask;
796803
#ifdef CONFIG_IXGBE_HWMON
797804
struct hwmon_buff *ixgbe_hwmon_buff;
798805
#endif /* CONFIG_IXGBE_HWMON */
@@ -849,6 +856,7 @@ static inline u8 ixgbe_max_rss_indices(struct ixgbe_adapter *adapter)
849856
case ixgbe_mac_X550:
850857
case ixgbe_mac_X550EM_x:
851858
case ixgbe_mac_x550em_a:
859+
case ixgbe_mac_e610:
852860
return IXGBE_MAX_RSS_INDICES_X550;
853861
default:
854862
return 0;
@@ -874,6 +882,7 @@ enum ixgbe_state_t {
874882
__IXGBE_PTP_RUNNING,
875883
__IXGBE_PTP_TX_IN_PROGRESS,
876884
__IXGBE_RESET_REQUESTED,
885+
__IXGBE_PHY_INIT_COMPLETE,
877886
};
878887

879888
struct ixgbe_cb {
@@ -896,6 +905,7 @@ enum ixgbe_boards {
896905
board_x550em_x_fw,
897906
board_x550em_a,
898907
board_x550em_a_fw,
908+
board_e610,
899909
};
900910

901911
extern const struct ixgbe_info ixgbe_82598_info;
@@ -906,6 +916,7 @@ extern const struct ixgbe_info ixgbe_X550EM_x_info;
906916
extern const struct ixgbe_info ixgbe_x550em_x_fw_info;
907917
extern const struct ixgbe_info ixgbe_x550em_a_info;
908918
extern const struct ixgbe_info ixgbe_x550em_a_fw_info;
919+
extern const struct ixgbe_info ixgbe_e610_info;
909920
#ifdef CONFIG_IXGBE_DCB
910921
extern const struct dcbnl_rtnl_ops ixgbe_dcbnl_ops;
911922
#endif

drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-License-Identifier: GPL-2.0
2-
/* Copyright(c) 1999 - 2018 Intel Corporation. */
2+
/* Copyright(c) 1999 - 2024 Intel Corporation. */
33

44
#include <linux/pci.h>
55
#include <linux/delay.h>
@@ -1615,6 +1615,7 @@ int ixgbe_fdir_set_input_mask_82599(struct ixgbe_hw *hw,
16151615
case ixgbe_mac_X550:
16161616
case ixgbe_mac_X550EM_x:
16171617
case ixgbe_mac_x550em_a:
1618+
case ixgbe_mac_e610:
16181619
IXGBE_WRITE_REG(hw, IXGBE_FDIRSCTPM, ~fdirtcpm);
16191620
break;
16201621
default:

drivers/net/ethernet/intel/ixgbe/ixgbe_common.c

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-License-Identifier: GPL-2.0
2-
/* Copyright(c) 1999 - 2018 Intel Corporation. */
2+
/* Copyright(c) 1999 - 2024 Intel Corporation. */
33

44
#include <linux/pci.h>
55
#include <linux/delay.h>
@@ -58,6 +58,7 @@ bool ixgbe_device_supports_autoneg_fc(struct ixgbe_hw *hw)
5858
switch (hw->device_id) {
5959
case IXGBE_DEV_ID_X550EM_A_SFP:
6060
case IXGBE_DEV_ID_X550EM_A_SFP_N:
61+
case IXGBE_DEV_ID_E610_SFP:
6162
supported = false;
6263
break;
6364
default:
@@ -88,6 +89,8 @@ bool ixgbe_device_supports_autoneg_fc(struct ixgbe_hw *hw)
8889
case IXGBE_DEV_ID_X550EM_A_10G_T:
8990
case IXGBE_DEV_ID_X550EM_A_1G_T:
9091
case IXGBE_DEV_ID_X550EM_A_1G_T_L:
92+
case IXGBE_DEV_ID_E610_10G_T:
93+
case IXGBE_DEV_ID_E610_2_5G_T:
9194
supported = true;
9295
break;
9396
default:
@@ -469,9 +472,14 @@ int ixgbe_clear_hw_cntrs_generic(struct ixgbe_hw *hw)
469472
}
470473
}
471474

472-
if (hw->mac.type == ixgbe_mac_X550 || hw->mac.type == ixgbe_mac_X540) {
475+
if (hw->mac.type == ixgbe_mac_X550 ||
476+
hw->mac.type == ixgbe_mac_X540 ||
477+
hw->mac.type == ixgbe_mac_e610) {
473478
if (hw->phy.id == 0)
474479
hw->phy.ops.identify(hw);
480+
}
481+
482+
if (hw->mac.type == ixgbe_mac_X550 || hw->mac.type == ixgbe_mac_X540) {
475483
hw->phy.ops.read_reg(hw, IXGBE_PCRC8ECL, MDIO_MMD_PCS, &i);
476484
hw->phy.ops.read_reg(hw, IXGBE_PCRC8ECH, MDIO_MMD_PCS, &i);
477485
hw->phy.ops.read_reg(hw, IXGBE_LDPCECL, MDIO_MMD_PCS, &i);
@@ -660,7 +668,11 @@ int ixgbe_get_bus_info_generic(struct ixgbe_hw *hw)
660668
hw->bus.type = ixgbe_bus_type_pci_express;
661669

662670
/* Get the negotiated link width and speed from PCI config space */
663-
link_status = ixgbe_read_pci_cfg_word(hw, IXGBE_PCI_LINK_STATUS);
671+
if (hw->mac.type == ixgbe_mac_e610)
672+
link_status = ixgbe_read_pci_cfg_word(hw, IXGBE_PCI_LINK_STATUS_E610);
673+
else
674+
link_status = ixgbe_read_pci_cfg_word(hw,
675+
IXGBE_PCI_LINK_STATUS);
664676

665677
hw->bus.width = ixgbe_convert_bus_width(link_status);
666678
hw->bus.speed = ixgbe_convert_bus_speed(link_status);
@@ -2918,6 +2930,10 @@ u16 ixgbe_get_pcie_msix_count_generic(struct ixgbe_hw *hw)
29182930
pcie_offset = IXGBE_PCIE_MSIX_82599_CAPS;
29192931
max_msix_count = IXGBE_MAX_MSIX_VECTORS_82599;
29202932
break;
2933+
case ixgbe_mac_e610:
2934+
pcie_offset = IXGBE_PCIE_MSIX_E610_CAPS;
2935+
max_msix_count = IXGBE_MAX_MSIX_VECTORS_82599;
2936+
break;
29212937
default:
29222938
return 1;
29232939
}
@@ -3366,7 +3382,8 @@ int ixgbe_check_mac_link_generic(struct ixgbe_hw *hw, ixgbe_link_speed *speed,
33663382
*speed = IXGBE_LINK_SPEED_1GB_FULL;
33673383
break;
33683384
case IXGBE_LINKS_SPEED_100_82599:
3369-
if ((hw->mac.type >= ixgbe_mac_X550) &&
3385+
if ((hw->mac.type >= ixgbe_mac_X550 ||
3386+
hw->mac.type == ixgbe_mac_e610) &&
33703387
(links_reg & IXGBE_LINKS_SPEED_NON_STD))
33713388
*speed = IXGBE_LINK_SPEED_5GB_FULL;
33723389
else

drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_nl.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-License-Identifier: GPL-2.0
2-
/* Copyright(c) 1999 - 2018 Intel Corporation. */
2+
/* Copyright(c) 1999 - 2024 Intel Corporation. */
33

44
#include "ixgbe.h"
55
#include <linux/dcbnl.h>
@@ -154,6 +154,7 @@ static void ixgbe_dcbnl_get_perm_hw_addr(struct net_device *netdev,
154154
case ixgbe_mac_82599EB:
155155
case ixgbe_mac_X540:
156156
case ixgbe_mac_X550:
157+
case ixgbe_mac_e610:
157158
for (j = 0; j < netdev->addr_len; j++, i++)
158159
perm_addr[i] = adapter->hw.mac.san_addr[j];
159160
break;

0 commit comments

Comments
 (0)