mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-02-25 12:37:11 -05:00
wifi: brcmfmac: Add brcmf_c_set_cur_etheraddr() helper
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@redhat.com> Acked-by: Arend van Spriel <aspriel@gmail.com> Signed-off-by: Kalle Valo <kvalo@kernel.org> Link: https://lore.kernel.org/r/20220708133712.102179-1-hdegoede@redhat.com
This commit is contained in:
committed by
Kalle Valo
parent
02a186f1e9
commit
cf1239e5b7
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user