mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 00:53:34 +02:00
Merge branch '100GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue
Tony Nguyen says: ==================== Intel Wired LAN Driver Updates 2025-10-28 (ice, ixgbe, igb, igc) For ice, Grzegorz fixes setting of PHY lane number and logical PF ID for E82x devices. He also corrects access of CGU (Clock Generation Unit) on dual complex devices. Kohei Enju resolves issues with error path cleanup for probe when in recovery mode on ixgbe and ensures PHY is powered on for link testing on igc. Lastly, he converts incorrect use of -ENOTSUPP to -EOPNOTSUPP on igb, igc, and ixgbe. * '100GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue: ixgbe: use EOPNOTSUPP instead of ENOTSUPP in ixgbe_ptp_feature_enable() igc: use EOPNOTSUPP instead of ENOTSUPP in igc_ethtool_get_sset_count() igb: use EOPNOTSUPP instead of ENOTSUPP in igb_get_sset_count() igc: power up the PHY before the link test ixgbe: fix memory leak and use-after-free in ixgbe_recovery_probe() ice: fix usage of logical PF id ice: fix destination CGU for dual complex E825 ice: fix lane number calculation ==================== Link: https://patch.msgid.link/20251028202515.675129-1-anthony.l.nguyen@intel.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
commit
f99c579211
|
|
@ -4382,6 +4382,15 @@ int ice_get_phy_lane_number(struct ice_hw *hw)
|
|||
unsigned int lane;
|
||||
int err;
|
||||
|
||||
/* E82X does not have sequential IDs, lane number is PF ID.
|
||||
* For E825 device, the exception is the variant with external
|
||||
* PHY (0x579F), in which there is also 1:1 pf_id -> lane_number
|
||||
* mapping.
|
||||
*/
|
||||
if (hw->mac_type == ICE_MAC_GENERIC ||
|
||||
hw->device_id == ICE_DEV_ID_E825C_SGMII)
|
||||
return hw->pf_id;
|
||||
|
||||
options = kcalloc(ICE_AQC_PORT_OPT_MAX, sizeof(*options), GFP_KERNEL);
|
||||
if (!options)
|
||||
return -ENOMEM;
|
||||
|
|
@ -6496,6 +6505,28 @@ u32 ice_get_link_speed(u16 index)
|
|||
return ice_aq_to_link_speed[index];
|
||||
}
|
||||
|
||||
/**
|
||||
* ice_get_dest_cgu - get destination CGU dev for given HW
|
||||
* @hw: pointer to the HW struct
|
||||
*
|
||||
* Get CGU client id for CGU register read/write operations.
|
||||
*
|
||||
* Return: CGU device id to use in SBQ transactions.
|
||||
*/
|
||||
static enum ice_sbq_dev_id ice_get_dest_cgu(struct ice_hw *hw)
|
||||
{
|
||||
/* On dual complex E825 only complex 0 has functional CGU powering all
|
||||
* the PHYs.
|
||||
* SBQ destination device cgu points to CGU on a current complex and to
|
||||
* access primary CGU from the secondary complex, the driver should use
|
||||
* cgu_peer as a destination device.
|
||||
*/
|
||||
if (hw->mac_type == ICE_MAC_GENERIC_3K_E825 && ice_is_dual(hw) &&
|
||||
!ice_is_primary(hw))
|
||||
return ice_sbq_dev_cgu_peer;
|
||||
return ice_sbq_dev_cgu;
|
||||
}
|
||||
|
||||
/**
|
||||
* ice_read_cgu_reg - Read a CGU register
|
||||
* @hw: Pointer to the HW struct
|
||||
|
|
@ -6510,8 +6541,8 @@ u32 ice_get_link_speed(u16 index)
|
|||
int ice_read_cgu_reg(struct ice_hw *hw, u32 addr, u32 *val)
|
||||
{
|
||||
struct ice_sbq_msg_input cgu_msg = {
|
||||
.dest_dev = ice_get_dest_cgu(hw),
|
||||
.opcode = ice_sbq_msg_rd,
|
||||
.dest_dev = ice_sbq_dev_cgu,
|
||||
.msg_addr_low = addr
|
||||
};
|
||||
int err;
|
||||
|
|
@ -6542,8 +6573,8 @@ int ice_read_cgu_reg(struct ice_hw *hw, u32 addr, u32 *val)
|
|||
int ice_write_cgu_reg(struct ice_hw *hw, u32 addr, u32 val)
|
||||
{
|
||||
struct ice_sbq_msg_input cgu_msg = {
|
||||
.dest_dev = ice_get_dest_cgu(hw),
|
||||
.opcode = ice_sbq_msg_wr,
|
||||
.dest_dev = ice_sbq_dev_cgu,
|
||||
.msg_addr_low = addr,
|
||||
.data = val
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1479,7 +1479,7 @@ static void ice_init_prof_masks(struct ice_hw *hw, enum ice_block blk)
|
|||
per_pf = ICE_PROF_MASK_COUNT / hw->dev_caps.num_funcs;
|
||||
|
||||
hw->blk[blk].masks.count = per_pf;
|
||||
hw->blk[blk].masks.first = hw->pf_id * per_pf;
|
||||
hw->blk[blk].masks.first = hw->logical_pf_id * per_pf;
|
||||
|
||||
memset(hw->blk[blk].masks.masks, 0, sizeof(hw->blk[blk].masks.masks));
|
||||
|
||||
|
|
|
|||
|
|
@ -50,6 +50,7 @@ enum ice_sbq_dev_id {
|
|||
ice_sbq_dev_phy_0 = 0x02,
|
||||
ice_sbq_dev_cgu = 0x06,
|
||||
ice_sbq_dev_phy_0_peer = 0x0D,
|
||||
ice_sbq_dev_cgu_peer = 0x0F,
|
||||
};
|
||||
|
||||
enum ice_sbq_msg_opcode {
|
||||
|
|
|
|||
|
|
@ -2281,7 +2281,7 @@ static int igb_get_sset_count(struct net_device *netdev, int sset)
|
|||
case ETH_SS_PRIV_FLAGS:
|
||||
return IGB_PRIV_FLAGS_STR_LEN;
|
||||
default:
|
||||
return -ENOTSUPP;
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -810,7 +810,7 @@ static int igc_ethtool_get_sset_count(struct net_device *netdev, int sset)
|
|||
case ETH_SS_PRIV_FLAGS:
|
||||
return IGC_PRIV_FLAGS_STR_LEN;
|
||||
default:
|
||||
return -ENOTSUPP;
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2094,6 +2094,9 @@ static void igc_ethtool_diag_test(struct net_device *netdev,
|
|||
netdev_info(adapter->netdev, "Offline testing starting");
|
||||
set_bit(__IGC_TESTING, &adapter->state);
|
||||
|
||||
/* power up PHY for link test */
|
||||
igc_power_up_phy_copper(&adapter->hw);
|
||||
|
||||
/* Link test performed before hardware reset so autoneg doesn't
|
||||
* interfere with test result
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -11507,10 +11507,10 @@ static int ixgbe_recovery_probe(struct ixgbe_adapter *adapter)
|
|||
shutdown_aci:
|
||||
mutex_destroy(&adapter->hw.aci.lock);
|
||||
ixgbe_release_hw_control(adapter);
|
||||
devlink_free(adapter->devlink);
|
||||
clean_up_probe:
|
||||
disable_dev = !test_and_set_bit(__IXGBE_DISABLED, &adapter->state);
|
||||
free_netdev(netdev);
|
||||
devlink_free(adapter->devlink);
|
||||
pci_release_mem_regions(pdev);
|
||||
if (disable_dev)
|
||||
pci_disable_device(pdev);
|
||||
|
|
|
|||
|
|
@ -641,7 +641,7 @@ static int ixgbe_ptp_feature_enable(struct ptp_clock_info *ptp,
|
|||
* disabled
|
||||
*/
|
||||
if (rq->type != PTP_CLK_REQ_PPS || !adapter->ptp_setup_sdp)
|
||||
return -ENOTSUPP;
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (on)
|
||||
adapter->flags2 |= IXGBE_FLAG2_PTP_PPS_ENABLED;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user