[Arm-dev] [PATCH] net: thunderx: acpi: fix LMAC initialization

Fri Jan 13 10:44:15 UTC 2017
Vadim Lomovtsev <Vadim.Lomovtsev at caviumnetworks.com>

Hi Jim,

Could you please merge this patch to next kernel build/update?
This patch addresses MAC address instability.

Patch is applied upstream to next-20170113.
http://lists.infradead.org/pipermail/linux-arm-kernel/2017-January/479100.html

WBR,
Vadim

On Fri, Jan 13, 2017 at 02:16:52AM -0800, Vadim Lomovtsev wrote:
> While probing BGX we requesting appropriate QLM for it's configuration
> and get LMAC count by that request. Then, while reading configured
> MAC values from SSDT table we need to save them in proper mapping:
>   BGX[i]->lmac[j].mac = <MAC value>
> to later provide for initialization stuff. In order to fill
> such mapping properly we need to add lmac index to be used while
> acpi initialization since at this moment bgx->lmac_count already contains
> actual value.
> 
> Signed-off-by: Vadim Lomovtsev <Vadim.Lomovtsev at caviumnetworks.com>
> ---
>  drivers/net/ethernet/cavium/thunder/thunder_bgx.c | 11 ++++++-----
>  1 file changed, 6 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/net/ethernet/cavium/thunder/thunder_bgx.c b/drivers/net/ethernet/cavium/thunder/thunder_bgx.c
> index be30ad0..a3f4f83 100644
> --- a/drivers/net/ethernet/cavium/thunder/thunder_bgx.c
> +++ b/drivers/net/ethernet/cavium/thunder/thunder_bgx.c
> @@ -47,8 +47,9 @@ struct lmac {
>  struct bgx {
>  	u8			bgx_id;
>  	struct	lmac		lmac[MAX_LMAC_PER_BGX];
> -	int			lmac_count;
> +	u8			lmac_count;
>  	u8			max_lmac;
> +	u8                      acpi_lmac_idx;
>  	void __iomem		*reg_base;
>  	struct pci_dev		*pdev;
>  	bool                    is_dlm;
> @@ -1073,13 +1074,13 @@ static acpi_status bgx_acpi_register_phy(acpi_handle handle,
>  	if (acpi_bus_get_device(handle, &adev))
>  		goto out;
>  
> -	acpi_get_mac_address(dev, adev, bgx->lmac[bgx->lmac_count].mac);
> +	acpi_get_mac_address(dev, adev, bgx->lmac[bgx->acpi_lmac_idx].mac);
>  
> -	SET_NETDEV_DEV(&bgx->lmac[bgx->lmac_count].netdev, dev);
> +	SET_NETDEV_DEV(&bgx->lmac[bgx->acpi_lmac_idx].netdev, dev);
>  
> -	bgx->lmac[bgx->lmac_count].lmacid = bgx->lmac_count;
> +	bgx->lmac[bgx->acpi_lmac_idx].lmacid = bgx->acpi_lmac_idx;
> +	bgx->acpi_lmac_idx++; /* move to next LMAC */
>  out:
> -	bgx->lmac_count++;
>  	return AE_OK;
>  }
>  
> -- 
> 1.8.3.1
>