Skip to content

Commit

Permalink
Merge tag 'staging-5.14-rc5' of git://git.kernel.org/pub/scm/linux/ke…
Browse files Browse the repository at this point in the history
…rnel/git/gregkh/staging

Pull staging driver fixes from Greg KH:
 "Here are a few small staging driver fixes for 5.14-rc5 to resolve some
  reported problems. They include:

   - mt7621 driver fix

   - rtl8723bs driver fixes

   - rtl8712 driver fixes.

  Nothing major, just small problems resolved.

  All have been in linux-next for a while with no reported issues"

* tag 'staging-5.14-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
  staging: mt7621-pci: avoid to re-disable clock for those pcies not in use
  staging: rtl8712: error handling refactoring
  staging: rtl8712: get rid of flush_scheduled_work
  staging: rtl8723bs: select CONFIG_CRYPTO_LIB_ARC4
  staging: rtl8723bs: Fix a resource leak in sd_int_dpc
  • Loading branch information
Linus Torvalds committed Aug 8, 2021
2 parents 6463e54 + c7b6565 commit 911c3c5
Show file tree
Hide file tree
Showing 9 changed files with 64 additions and 39 deletions.
1 change: 0 additions & 1 deletion drivers/staging/mt7621-pci/pci-mt7621.c
Original file line number Diff line number Diff line change
Expand Up @@ -422,7 +422,6 @@ static void mt7621_pcie_init_ports(struct mt7621_pcie *pcie)
dev_err(dev, "pcie%d no card, disable it (RST & CLK)\n",
slot);
mt7621_control_assert(port);
clk_disable_unprepare(port->clk);
port->enabled = false;

if (slot == 0) {
Expand Down
30 changes: 20 additions & 10 deletions drivers/staging/rtl8712/hal_init.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,21 +29,31 @@
#define FWBUFF_ALIGN_SZ 512
#define MAX_DUMP_FWSZ (48 * 1024)

static void rtl871x_load_fw_fail(struct _adapter *adapter)
{
struct usb_device *udev = adapter->dvobjpriv.pusbdev;
struct device *dev = &udev->dev;
struct device *parent = dev->parent;

complete(&adapter->rtl8712_fw_ready);

dev_err(&udev->dev, "r8712u: Firmware request failed\n");

if (parent)
device_lock(parent);

device_release_driver(dev);

if (parent)
device_unlock(parent);
}

static void rtl871x_load_fw_cb(const struct firmware *firmware, void *context)
{
struct _adapter *adapter = context;

if (!firmware) {
struct usb_device *udev = adapter->dvobjpriv.pusbdev;
struct usb_interface *usb_intf = adapter->pusb_intf;

dev_err(&udev->dev, "r8712u: Firmware request failed\n");
usb_put_dev(udev);
usb_set_intfdata(usb_intf, NULL);
r8712_free_drv_sw(adapter);
adapter->dvobj_deinit(adapter);
complete(&adapter->rtl8712_fw_ready);
free_netdev(adapter->pnetdev);
rtl871x_load_fw_fail(adapter);
return;
}
adapter->fw = firmware;
Expand Down
8 changes: 8 additions & 0 deletions drivers/staging/rtl8712/rtl8712_led.c
Original file line number Diff line number Diff line change
Expand Up @@ -1820,3 +1820,11 @@ void LedControl871x(struct _adapter *padapter, enum LED_CTL_MODE LedAction)
break;
}
}

void r8712_flush_led_works(struct _adapter *padapter)
{
struct led_priv *pledpriv = &padapter->ledpriv;

flush_work(&pledpriv->SwLed0.BlinkWorkItem);
flush_work(&pledpriv->SwLed1.BlinkWorkItem);
}
1 change: 1 addition & 0 deletions drivers/staging/rtl8712/rtl871x_led.h
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@ struct led_priv {
void r8712_InitSwLeds(struct _adapter *padapter);
void r8712_DeInitSwLeds(struct _adapter *padapter);
void LedControl871x(struct _adapter *padapter, enum LED_CTL_MODE LedAction);
void r8712_flush_led_works(struct _adapter *padapter);

#endif

8 changes: 8 additions & 0 deletions drivers/staging/rtl8712/rtl871x_pwrctrl.c
Original file line number Diff line number Diff line change
Expand Up @@ -224,3 +224,11 @@ void r8712_unregister_cmd_alive(struct _adapter *padapter)
}
mutex_unlock(&pwrctrl->mutex_lock);
}

void r8712_flush_rwctrl_works(struct _adapter *padapter)
{
struct pwrctrl_priv *pwrctrl = &padapter->pwrctrlpriv;

flush_work(&pwrctrl->SetPSModeWorkItem);
flush_work(&pwrctrl->rpwm_workitem);
}
1 change: 1 addition & 0 deletions drivers/staging/rtl8712/rtl871x_pwrctrl.h
Original file line number Diff line number Diff line change
Expand Up @@ -108,5 +108,6 @@ void r8712_cpwm_int_hdl(struct _adapter *padapter,
void r8712_set_ps_mode(struct _adapter *padapter, uint ps_mode,
uint smart_ps);
void r8712_set_rpwm(struct _adapter *padapter, u8 val8);
void r8712_flush_rwctrl_works(struct _adapter *padapter);

#endif /* __RTL871X_PWRCTRL_H_ */
51 changes: 23 additions & 28 deletions drivers/staging/rtl8712/usb_intf.c
Original file line number Diff line number Diff line change
Expand Up @@ -591,35 +591,30 @@ static void r871xu_dev_remove(struct usb_interface *pusb_intf)
{
struct net_device *pnetdev = usb_get_intfdata(pusb_intf);
struct usb_device *udev = interface_to_usbdev(pusb_intf);
struct _adapter *padapter = netdev_priv(pnetdev);

/* never exit with a firmware callback pending */
wait_for_completion(&padapter->rtl8712_fw_ready);
usb_set_intfdata(pusb_intf, NULL);
release_firmware(padapter->fw);
if (drvpriv.drv_registered)
padapter->surprise_removed = true;
if (pnetdev->reg_state != NETREG_UNINITIALIZED)
unregister_netdev(pnetdev); /* will call netdev_close() */
r8712_flush_rwctrl_works(padapter);
r8712_flush_led_works(padapter);
udelay(1);
/* Stop driver mlme relation timer */
r8712_stop_drv_timers(padapter);
r871x_dev_unload(padapter);
r8712_free_drv_sw(padapter);
free_netdev(pnetdev);

/* decrease the reference count of the usb device structure
* when disconnect
*/
usb_put_dev(udev);

if (pnetdev) {
struct _adapter *padapter = netdev_priv(pnetdev);

/* never exit with a firmware callback pending */
wait_for_completion(&padapter->rtl8712_fw_ready);
pnetdev = usb_get_intfdata(pusb_intf);
usb_set_intfdata(pusb_intf, NULL);
if (!pnetdev)
goto firmware_load_fail;
release_firmware(padapter->fw);
if (drvpriv.drv_registered)
padapter->surprise_removed = true;
if (pnetdev->reg_state != NETREG_UNINITIALIZED)
unregister_netdev(pnetdev); /* will call netdev_close() */
flush_scheduled_work();
udelay(1);
/* Stop driver mlme relation timer */
r8712_stop_drv_timers(padapter);
r871x_dev_unload(padapter);
r8712_free_drv_sw(padapter);
free_netdev(pnetdev);

/* decrease the reference count of the usb device structure
* when disconnect
*/
usb_put_dev(udev);
}
firmware_load_fail:
/* If we didn't unplug usb dongle and remove/insert module, driver
* fails on sitesurvey for the first time when device is up.
* Reset usb port for sitesurvey fail issue.
Expand Down
1 change: 1 addition & 0 deletions drivers/staging/rtl8723bs/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ config RTL8723BS
depends on m
select WIRELESS_EXT
select WEXT_PRIV
select CRYPTO_LIB_ARC4
help
This option enables support for RTL8723BS SDIO drivers, such as
the wifi found on the 1st gen Intel Compute Stick, the CHIP
Expand Down
2 changes: 2 additions & 0 deletions drivers/staging/rtl8723bs/hal/sdio_ops.c
Original file line number Diff line number Diff line change
Expand Up @@ -909,6 +909,8 @@ void sd_int_dpc(struct adapter *adapter)
} else {
rtw_c2h_wk_cmd(adapter, (u8 *)c2h_evt);
}
} else {
kfree(c2h_evt);
}
} else {
/* Error handling for malloc fail */
Expand Down

0 comments on commit 911c3c5

Please sign in to comment.