Hi, On 7/8/22 15:32, Hans de Goede wrote: > Add a little helper to send "cur_etheraddr" commands to the interface > and to handle the error reporting of it in a single place. > > Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx> Ugh, I accidentally used Kalle's old address. I'll resend this with the right address, sorry for the duplicate emails. Regards, Hans > --- > .../broadcom/brcm80211/brcmfmac/common.c | 18 +++++++++++++----- > .../broadcom/brcm80211/brcmfmac/common.h | 1 + > .../broadcom/brcm80211/brcmfmac/core.c | 8 ++------ > 3 files changed, 16 insertions(+), 11 deletions(-) > > diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c > index fe01da9e620d..dccd8f4ca1d0 100644 > --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c > +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c > @@ -190,6 +190,17 @@ static int brcmf_c_process_clm_blob(struct brcmf_if *ifp) > return err; > } > > +int brcmf_c_set_cur_etheraddr(struct brcmf_if *ifp, const u8 *addr) > +{ > + s32 err; > + > + err = brcmf_fil_iovar_data_set(ifp, "cur_etheraddr", addr, ETH_ALEN); > + if (err < 0) > + bphy_err(ifp->drvr, "Setting cur_etheraddr failed, %d\n", err); > + > + return err; > +} > + > int brcmf_c_preinit_dcmds(struct brcmf_if *ifp) > { > struct brcmf_pub *drvr = ifp->drvr; > @@ -204,12 +215,9 @@ int brcmf_c_preinit_dcmds(struct brcmf_if *ifp) > > if (is_valid_ether_addr(ifp->mac_addr)) { > /* set mac address */ > - err = brcmf_fil_iovar_data_set(ifp, "cur_etheraddr", ifp->mac_addr, > - ETH_ALEN); > - if (err < 0) { > - bphy_err(ifp->drvr, "Setting cur_etheraddr failed, %d\n", err); > + err = brcmf_c_set_cur_etheraddr(ifp, ifp->mac_addr); > + if (err < 0) > goto done; > - } > } else { > /* retrieve mac address */ > err = brcmf_fil_iovar_data_get(ifp, "cur_etheraddr", ifp->mac_addr, > diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h > index 15accc88d5c0..7329eb751945 100644 > --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h > +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h > @@ -65,6 +65,7 @@ void brcmf_release_module_param(struct brcmf_mp_device *module_param); > > /* Sets dongle media info (drv_version, mac address). */ > int brcmf_c_preinit_dcmds(struct brcmf_if *ifp); > +int brcmf_c_set_cur_etheraddr(struct brcmf_if *ifp, const u8 *addr); > > #ifdef CONFIG_DMI > void brcmf_dmi_probe(struct brcmf_mp_device *settings, u32 chip, u32 chiprev); > diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c > index 87aef211b35f..bd164a0821f9 100644 > --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c > +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c > @@ -233,16 +233,12 @@ static int brcmf_netdev_set_mac_address(struct net_device *ndev, void *addr) > { > struct brcmf_if *ifp = netdev_priv(ndev); > struct sockaddr *sa = (struct sockaddr *)addr; > - struct brcmf_pub *drvr = ifp->drvr; > int err; > > brcmf_dbg(TRACE, "Enter, bsscfgidx=%d\n", ifp->bsscfgidx); > > - err = brcmf_fil_iovar_data_set(ifp, "cur_etheraddr", sa->sa_data, > - ETH_ALEN); > - if (err < 0) { > - bphy_err(drvr, "Setting cur_etheraddr failed, %d\n", err); > - } else { > + err = brcmf_c_set_cur_etheraddr(ifp, sa->sa_data); > + if (err >= 0) { > brcmf_dbg(TRACE, "updated to %pM\n", sa->sa_data); > memcpy(ifp->mac_addr, sa->sa_data, ETH_ALEN); > eth_hw_addr_set(ifp->ndev, ifp->mac_addr);