[dpdk-dev] [PATCH 21/69] net/i40e/base: change reading LPI state
Xiaolong Ye
xiaolong.ye at intel.com
Mon Dec 2 08:48:47 CET 2019
Special method of reading LPI state from BCM PHY has to
be used only when 2.5 or 5G speed is used. For other speeds
the state should be read from MAC register as on other devices.
Signed-off-by: Krzysztof Galazka <krzysztof.galazka at intel.com>
Reviewed-by: Pietruszewski Piotr <piotr.pietruszewski at intel.com>
Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov at intel.com>
Reviewed-by: Joyner Eric <eric.joyner at intel.com>
Reviewed-by: Kirsher Jeffrey T <jeffrey.t.kirsher at intel.com>
Signed-off-by: Xiaolong Ye <xiaolong.ye at intel.com>
---
drivers/net/i40e/base/i40e_common.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/drivers/net/i40e/base/i40e_common.c b/drivers/net/i40e/base/i40e_common.c
index 51ab0c4b8..02187da24 100644
--- a/drivers/net/i40e/base/i40e_common.c
+++ b/drivers/net/i40e/base/i40e_common.c
@@ -7049,24 +7049,26 @@ enum i40e_status_code i40e_led_set_phy(struct i40e_hw *hw, bool on,
#ifdef CARLSVILLE_HW
/**
- * i40e_get_phy_lpi_status - read LPI status from external PHY or MAC
+ * i40e_get_phy_lpi_status - read LPI status from PHY or MAC register
* @hw: pointer to the hw struct
* @stat: pointer to structure with status of rx and tx lpi
*
- * Read LPI state directly from external PHY or MAC, depending on device ID.
+ * Read LPI state directly from external PHY register or from MAC
+ * register, depending on device ID and current link speed.
*/
#else
/**
- * i40e_get_phy_lpi_status - read LPI status from MAC
+ * i40e_get_phy_lpi_status - read LPI status using MAC register
* @hw: pointer to the hw struct
* @stat: pointer to structure with status of rx and tx lpi
*
- * Read LPI state directly from MAC.
+ * Read LPI state from MAC register.
*/
#endif
#ifndef EXTERNAL_RELEASE
/*
* Implemented for Broadcom Orca PHY used in Carlsville.
+ * It requires special handling when 2.5 or 5G speed is used.
* Refer to FVL DCR335 for details.
*/
#endif
@@ -7080,7 +7082,9 @@ enum i40e_status_code i40e_get_phy_lpi_status(struct i40e_hw *hw,
stat->tx_lpi_status = 0;
#ifdef CARLSVILLE_HW
- if (hw->device_id == I40E_DEV_ID_10G_BASE_T_BC) {
+ if (hw->device_id == I40E_DEV_ID_10G_BASE_T_BC &&
+ (hw->phy.link_info.link_speed == I40E_LINK_SPEED_2_5GB ||
+ hw->phy.link_info.link_speed == I40E_LINK_SPEED_5GB)) {
#ifndef EXTERNAL_RELEASE
/* For accessing LPI status in Broadcom PHY we're using AQ command only.
* Broadcom PHY supports API >= 1.7, so there is no need for supporting
--
2.17.1
More information about the dev
mailing list