APPLIED[D/E]: [PATCH 1/4][D/E] net: hns3: fix port setting handle for fibre port

Kleber Souza kleber.souza at canonical.com
Tue Jan 7 11:32:38 UTC 2020


On 2020-01-01 17:09, Ike Panhc wrote:
> From: Guangbin Huang <huangguangbin2 at huawei.com>
> 
> BugLink: https://launchpad.net/bugs/1853984
> 
> For hardware doesn't support use specified speed and duplex
> to negotiate, it's unnecessary to check and modify the port
> speed and duplex for fibre port when autoneg is on.
> 
> Fixes: 22f48e24a23d ("net: hns3: add autoneg and change speed support for fibre port")
> Signed-off-by: Guangbin Huang <huangguangbin2 at huawei.com>
> Signed-off-by: Huazhong Tan <tanhuazhong at huawei.com>
> Signed-off-by: David S. Miller <davem at davemloft.net>
> (cherry picked from commit 24283ece5a0f1040842367966c8e0245b871e309)
> Signed-off-by: Ike Panhc <ike.pan at canonical.com>
> ---
>  .../net/ethernet/hisilicon/hns3/hns3_ethtool.c    | 15 +++++++++++++++
>  1 file changed, 15 insertions(+)
> 
> diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c b/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
> index 0998647da15d..dddb0ccc2ee8 100644
> --- a/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
> +++ b/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
> @@ -684,6 +684,12 @@ static int hns3_check_ksettings_param(struct net_device *netdev,
>  	u8 duplex;
>  	int ret;
>  
> +	/* hw doesn't support use specified speed and duplex to negotiate,
> +	 * unnecessary to check them when autoneg on.
> +	 */
> +	if (cmd->base.autoneg)
> +		return 0;
> +
>  	if (ops->get_ksettings_an_result) {
>  		ops->get_ksettings_an_result(handle, &autoneg, &speed, &duplex);
>  		if (cmd->base.autoneg == autoneg && cmd->base.speed == speed &&
> @@ -740,6 +746,15 @@ static int hns3_set_link_ksettings(struct net_device *netdev,
>  			return ret;
>  	}
>  
> +	/* hw doesn't support use specified speed and duplex to negotiate,
> +	 * ignore them when autoneg on.
> +	 */
> +	if (cmd->base.autoneg) {
> +		netdev_info(netdev,
> +			    "autoneg is on, ignore the speed and duplex\n");
> +		return 0;
> +	}
> +
>  	if (ops->cfg_mac_speed_dup_h)
>  		ret = ops->cfg_mac_speed_dup_h(handle, cmd->base.speed,
>  					       cmd->base.duplex);
> 

Applied to disco/linux and eoan/linux.

Thanks,
Kleber




More information about the kernel-team mailing list