Merge "net: usb: Handle interface suspend properly"
diff --git a/drivers/net/usb/rmnet_usb_ctrl.c b/drivers/net/usb/rmnet_usb_ctrl.c
index 1476bb3..c69bdc2 100644
--- a/drivers/net/usb/rmnet_usb_ctrl.c
+++ b/drivers/net/usb/rmnet_usb_ctrl.c
@@ -338,15 +338,6 @@
return retval;
}
-int rmnet_usb_ctrl_suspend(struct rmnet_ctrl_dev *dev)
-{
- if (work_busy(&dev->get_encap_work))
- return -EBUSY;
-
- usb_kill_anchored_urbs(&dev->rx_submitted);
-
- return 0;
-}
static int rmnet_usb_ctrl_alloc_rx(struct rmnet_ctrl_dev *dev)
{
int retval = -ENOMEM;
diff --git a/drivers/net/usb/rmnet_usb_data.c b/drivers/net/usb/rmnet_usb_data.c
index fdfe468..4a1423d 100644
--- a/drivers/net/usb/rmnet_usb_data.c
+++ b/drivers/net/usb/rmnet_usb_data.c
@@ -87,65 +87,35 @@
{
struct usbnet *unet;
struct rmnet_ctrl_dev *dev;
- int retval = 0;
unet = usb_get_intfdata(iface);
- if (!unet) {
- pr_err("%s:data device not found\n", __func__);
- retval = -ENODEV;
- goto fail;
- }
dev = (struct rmnet_ctrl_dev *)unet->data[1];
- if (!dev) {
- dev_err(&iface->dev, "%s: ctrl device not found\n",
- __func__);
- retval = -ENODEV;
- goto fail;
- }
- retval = usbnet_suspend(iface, message);
- if (!retval) {
- retval = rmnet_usb_ctrl_suspend(dev);
- iface->dev.power.power_state.event = message.event;
- } else {
- dev_dbg(&iface->dev,
- "%s: device is busy can not suspend\n", __func__);
- }
+ if (work_busy(&dev->get_encap_work))
+ return -EBUSY;
-fail:
- return retval;
+ if (usbnet_suspend(iface, message))
+ return -EBUSY;
+
+ usb_kill_anchored_urbs(&dev->rx_submitted);
+
+ return 0;
}
static int rmnet_usb_resume(struct usb_interface *iface)
{
int retval = 0;
- int oldstate;
struct usbnet *unet;
struct rmnet_ctrl_dev *dev;
unet = usb_get_intfdata(iface);
- if (!unet) {
- pr_err("%s:data device not found\n", __func__);
- retval = -ENODEV;
- goto fail;
- }
dev = (struct rmnet_ctrl_dev *)unet->data[1];
- if (!dev) {
- dev_err(&iface->dev, "%s: ctrl device not found\n", __func__);
- retval = -ENODEV;
- goto fail;
- }
- oldstate = iface->dev.power.power_state.event;
- iface->dev.power.power_state.event = PM_EVENT_ON;
- retval = usbnet_resume(iface);
- if (!retval) {
- if (oldstate & PM_EVENT_SUSPEND)
- retval = rmnet_usb_ctrl_start_rx(dev);
- }
-fail:
+ usbnet_resume(iface);
+ retval = rmnet_usb_ctrl_start_rx(dev);
+
return retval;
}