Re: [PATCH 1/9] staging: ks7010: Replace manual array copy with ether_addr_copy().

From: Quytelda Kahja
Date: Fri Mar 30 2018 - 02:03:19 EST


If we just want to have the address field full of zeros during the
driver probe, is there a reason we should zero it explicitly here?
When the 'struct net_device' is first allocated using
alloc_etherdev(), the dev_addr field is explicitly set to zeros (in
the subfunction dev_addr_init() in net/core/dev_addr_lists.c), so it
should be zeroed already at this point in the code.

Thank you,
Quytelda Kahja

On Wed, Mar 28, 2018 at 11:02 PM, Joe Perches <joe@xxxxxxxxxxx> wrote:
> On Wed, 2018-03-28 at 22:51 -0700, Quytelda Kahja wrote:
>> Copying the dummy HW address into the struct net_device doesn't need
>> to be done byte by byte; use ether_addr_copy() instead.
>> Additionally, dev->dev_addr is not eight bytes long.
>> ether_setup() sets the dev->addr_len to ETH_ALEN (defined as 6)
>> in the net core code.
> []
>> diff --git a/drivers/staging/ks7010/ks_wlan_net.c b/drivers/staging/ks7010/ks_wlan_net.c
> []
>> @@ -2900,15 +2900,7 @@ int ks_wlan_net_start(struct net_device *dev)
>> timer_setup(&update_phyinfo_timer, ks_wlan_update_phyinfo_timeout, 0);
>>
>> /* dummy address set */
>> - memcpy(priv->eth_addr, dummy_addr, ETH_ALEN);
>
> why remove the copy of dummy_addr into priv->eth_addr ?
>
> Also, dummy_addr could be removed and eth_zero_addr()
> used instead.
>
>> - dev->dev_addr[0] = priv->eth_addr[0];
>> - dev->dev_addr[1] = priv->eth_addr[1];
>> - dev->dev_addr[2] = priv->eth_addr[2];
>> - dev->dev_addr[3] = priv->eth_addr[3];
>> - dev->dev_addr[4] = priv->eth_addr[4];
>> - dev->dev_addr[5] = priv->eth_addr[5];
>> - dev->dev_addr[6] = 0x00;
>> - dev->dev_addr[7] = 0x00;
>> + ether_addr_copy(dev->dev_addr, priv->eth_addr);
>
> Perhaps
>
> eth_zero_addr(priv->eth_addr);
> eth_zero_addr(dev->dev_addr);
>