diff options
| author | 2022-07-30 16:39:37 +0200 | |
|---|---|---|
| committer | 2022-08-16 15:13:56 +0200 | |
| commit | 57f14afac3f776f68ee74ed7df77925d81ea71cc (patch) | |
| tree | f48a7fc15ffa8fa5e55064a50c3cb42b50ebe134 | |
| parent | staging: rtl8192u: fix rmmod warn when device is renamed (diff) | |
staging: r8188eu: handle errors from ReadAdapterInfo8188EU
Update ReadAdapterInfo8188EU to return 0 for success or a negative
error code. If rtw_read8 fails, we can just relay the error it returns.
Update rtw_usb_if1_init to check the return value from
ReadAdapterInfo8188EU. For now, rtw_usb_if1_init does not yet pass errors
from ReadAdapterInfo8188EU on to its caller.
Suggested-by: Pavel Skripkin <paskripkin@gmail.com>
Tested-by: Philipp Hortmann <philipp.g.hortmann@gmail.com> # Edimax N150
Signed-off-by: Martin Kaiser <martin@kaiser.cx>
Link: https://lore.kernel.org/r/20220730143939.671951-2-martin@kaiser.cx
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| -rw-r--r-- | drivers/staging/r8188eu/hal/usb_halinit.c | 7 | ||||
| -rw-r--r-- | drivers/staging/r8188eu/include/hal_intf.h | 2 | ||||
| -rw-r--r-- | drivers/staging/r8188eu/os_dep/usb_intf.c | 3 |
3 files changed, 7 insertions, 5 deletions
diff --git a/drivers/staging/r8188eu/hal/usb_halinit.c b/drivers/staging/r8188eu/hal/usb_halinit.c index e3013017dc6e..8b36fb56076e 100644 --- a/drivers/staging/r8188eu/hal/usb_halinit.c +++ b/drivers/staging/r8188eu/hal/usb_halinit.c @@ -914,7 +914,7 @@ static void Hal_EfuseParseMACAddr_8188EU(struct adapter *adapt, u8 *hwinfo, bool } } -void ReadAdapterInfo8188EU(struct adapter *Adapter) +int ReadAdapterInfo8188EU(struct adapter *Adapter) { struct eeprom_priv *eeprom = &Adapter->eeprompriv; struct led_priv *ledpriv = &Adapter->ledpriv; @@ -925,13 +925,13 @@ void ReadAdapterInfo8188EU(struct adapter *Adapter) /* check system boot selection */ res = rtw_read8(Adapter, REG_9346CR, &eeValue); if (res) - return; + return res; eeprom->bautoload_fail_flag = !(eeValue & EEPROM_EN); efuse_buf = kmalloc(EFUSE_MAP_LEN_88E, GFP_KERNEL); if (!efuse_buf) - return; + return -ENOMEM; memset(efuse_buf, 0xFF, EFUSE_MAP_LEN_88E); if (!(eeValue & BOOT_FROM_EEPROM) && !eeprom->bautoload_fail_flag) { @@ -953,6 +953,7 @@ void ReadAdapterInfo8188EU(struct adapter *Adapter) ledpriv->bRegUseLed = true; kfree(efuse_buf); + return 0; } void UpdateHalRAMask8188EUsb(struct adapter *adapt, u32 mac_id, u8 rssi_level) diff --git a/drivers/staging/r8188eu/include/hal_intf.h b/drivers/staging/r8188eu/include/hal_intf.h index ab6856d8a090..3ed5b7e031cd 100644 --- a/drivers/staging/r8188eu/include/hal_intf.h +++ b/drivers/staging/r8188eu/include/hal_intf.h @@ -11,7 +11,7 @@ typedef s32 (*c2h_id_filter)(u8 id); void rtl8188eu_interface_configure(struct adapter *adapt); -void ReadAdapterInfo8188EU(struct adapter *Adapter); +int ReadAdapterInfo8188EU(struct adapter *Adapter); void rtl8188eu_init_default_value(struct adapter *adapt); void rtl8188e_SetHalODMVar(struct adapter *Adapter, void *pValue1, bool bSet); u32 rtl8188eu_InitPowerOn(struct adapter *adapt); diff --git a/drivers/staging/r8188eu/os_dep/usb_intf.c b/drivers/staging/r8188eu/os_dep/usb_intf.c index cc2b44f60c46..e1a0447fd1e7 100644 --- a/drivers/staging/r8188eu/os_dep/usb_intf.c +++ b/drivers/staging/r8188eu/os_dep/usb_intf.c @@ -332,7 +332,8 @@ static struct adapter *rtw_usb_if1_init(struct dvobj_priv *dvobj, rtl8188eu_interface_configure(padapter); /* step read efuse/eeprom data and get mac_addr */ - ReadAdapterInfo8188EU(padapter); + if (ReadAdapterInfo8188EU(padapter) < 0) + goto handle_dualmac; /* step 5. */ if (rtw_init_drv_sw(padapter) == _FAIL) |
