Subject: Re: [PATCH net-next 3/5] net: hns3: add ethtool -p support for phy device

From: Andrew Lunn <[email-masked]>
Date: Thu, 18 Jan 2018 15:25:15 +0100

> +static int hclge_set_led_status_phy(struct phy_device *phydev, int value)
> +{
> +	int ret, cur_page;
> +
> +	mutex_lock(&phydev->lock);
> +
> +	ret = phy_read(phydev, HCLGE_PHY_PAGE_REG);
> +	if (ret < 0)
> +		goto out;
> +	else
> +		cur_page = ret;
> +
> +	ret = phy_write(phydev, HCLGE_PHY_PAGE_REG, HCLGE_PHY_PAGE_LED);
> +	if (ret)
> +		goto out;
> +
> +	ret = phy_write(phydev, HCLGE_LED_FC_REG, value);
> +	if (ret)
> +		goto out;
> +
> +	ret = phy_write(phydev, HCLGE_PHY_PAGE_REG, cur_page);
> +
> +out:
> +	mutex_unlock(&phydev->lock);
> +	return ret;
> +}

Sorry, but NACK.

Please add an interface to phylib and the phy driver you are using to
do this.

>  #define HCLGE_PHY_PAGE_MDIX		0
>  #define HCLGE_PHY_PAGE_COPPER		0
> +#define HCLGE_PHY_PAGE_LED		3
>  
>  /* Page Selection Reg. */
>  #define HCLGE_PHY_PAGE_REG		22
> @@ -73,6 +74,15 @@
>  /* Copper Specific Status Register */
>  #define HCLGE_PHY_CSS_REG		17
>  
> +/* LED Function Control Register */
> +#define HCLGE_LED_FC_REG		16
> +
> +/* LED Polarity Control Register */
> +#define HCLGE_LED_PC_REG		17
> +
> +#define HCLGE_LED_FORCE_ON		9
> +#define HCLGE_LED_FORCE_OFF		8
> +

By the looks of these defines, you assume you have a Marvell PHY.
Please make this generic so anybody with a Marvell PHY can use it.

       Andrew