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 <j...@perches.com> 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); >