Merge tag 'wireless-drivers-next-for-davem-2019-06-26' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next
Kalle Valu says: ==================== wireless-drivers-next patches for 5.3 First set of patches for 5.3, but not that many patches this time. This pull request fails to compile with the tip tree due to ktime_get_boot_ns() API changes there. It should be easy for Linus to fix it in p54 driver once he pulls this, an example resolution here: https://lkml.kernel.org/r/20190625160432.533aa140@canb.auug.org.au Major changes: airo * switch to use skcipher interface p54 * support boottime in scan results rtw88 * add fast xmit support * add random mac address on scan support rt2x00 * add software watchdog to detect hangs, it's disabled by default ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -30,6 +30,8 @@ MODULE_ALIAS("prism54usb");
|
||||
MODULE_FIRMWARE("isl3886usb");
|
||||
MODULE_FIRMWARE("isl3887usb");
|
||||
|
||||
static struct usb_driver p54u_driver;
|
||||
|
||||
/*
|
||||
* Note:
|
||||
*
|
||||
@@ -918,9 +920,9 @@ static void p54u_load_firmware_cb(const struct firmware *firmware,
|
||||
{
|
||||
struct p54u_priv *priv = context;
|
||||
struct usb_device *udev = priv->udev;
|
||||
struct usb_interface *intf = priv->intf;
|
||||
int err;
|
||||
|
||||
complete(&priv->fw_wait_load);
|
||||
if (firmware) {
|
||||
priv->fw = firmware;
|
||||
err = p54u_start_ops(priv);
|
||||
@@ -929,26 +931,22 @@ static void p54u_load_firmware_cb(const struct firmware *firmware,
|
||||
dev_err(&udev->dev, "Firmware not found.\n");
|
||||
}
|
||||
|
||||
complete(&priv->fw_wait_load);
|
||||
/*
|
||||
* At this point p54u_disconnect may have already freed
|
||||
* the "priv" context. Do not use it anymore!
|
||||
*/
|
||||
priv = NULL;
|
||||
|
||||
if (err) {
|
||||
struct device *parent = priv->udev->dev.parent;
|
||||
dev_err(&intf->dev, "failed to initialize device (%d)\n", err);
|
||||
|
||||
dev_err(&udev->dev, "failed to initialize device (%d)\n", err);
|
||||
|
||||
if (parent)
|
||||
device_lock(parent);
|
||||
|
||||
device_release_driver(&udev->dev);
|
||||
/*
|
||||
* At this point p54u_disconnect has already freed
|
||||
* the "priv" context. Do not use it anymore!
|
||||
*/
|
||||
priv = NULL;
|
||||
|
||||
if (parent)
|
||||
device_unlock(parent);
|
||||
usb_lock_device(udev);
|
||||
usb_driver_release_interface(&p54u_driver, intf);
|
||||
usb_unlock_device(udev);
|
||||
}
|
||||
|
||||
usb_put_dev(udev);
|
||||
usb_put_intf(intf);
|
||||
}
|
||||
|
||||
static int p54u_load_firmware(struct ieee80211_hw *dev,
|
||||
@@ -969,14 +967,14 @@ static int p54u_load_firmware(struct ieee80211_hw *dev,
|
||||
dev_info(&priv->udev->dev, "Loading firmware file %s\n",
|
||||
p54u_fwlist[i].fw);
|
||||
|
||||
usb_get_dev(udev);
|
||||
usb_get_intf(intf);
|
||||
err = request_firmware_nowait(THIS_MODULE, 1, p54u_fwlist[i].fw,
|
||||
device, GFP_KERNEL, priv,
|
||||
p54u_load_firmware_cb);
|
||||
if (err) {
|
||||
dev_err(&priv->udev->dev, "(p54usb) cannot load firmware %s "
|
||||
"(%d)!\n", p54u_fwlist[i].fw, err);
|
||||
usb_put_dev(udev);
|
||||
usb_put_intf(intf);
|
||||
}
|
||||
|
||||
return err;
|
||||
@@ -1008,8 +1006,6 @@ static int p54u_probe(struct usb_interface *intf,
|
||||
skb_queue_head_init(&priv->rx_queue);
|
||||
init_usb_anchor(&priv->submitted);
|
||||
|
||||
usb_get_dev(udev);
|
||||
|
||||
/* really lazy and simple way of figuring out if we're a 3887 */
|
||||
/* TODO: should just stick the identification in the device table */
|
||||
i = intf->altsetting->desc.bNumEndpoints;
|
||||
@@ -1050,10 +1046,8 @@ static int p54u_probe(struct usb_interface *intf,
|
||||
priv->upload_fw = p54u_upload_firmware_net2280;
|
||||
}
|
||||
err = p54u_load_firmware(dev, intf);
|
||||
if (err) {
|
||||
usb_put_dev(udev);
|
||||
if (err)
|
||||
p54_free_common(dev);
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -1069,7 +1063,6 @@ static void p54u_disconnect(struct usb_interface *intf)
|
||||
wait_for_completion(&priv->fw_wait_load);
|
||||
p54_unregister_common(dev);
|
||||
|
||||
usb_put_dev(interface_to_usbdev(intf));
|
||||
release_firmware(priv->fw);
|
||||
p54_free_common(dev);
|
||||
}
|
||||
|
Referens i nytt ärende
Block a user