diff options
Diffstat (limited to 'drivers/usb/net/pegasus.c')
-rw-r--r-- | drivers/usb/net/pegasus.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/usb/net/pegasus.c b/drivers/usb/net/pegasus.c index 33abbd2176b6..d48c024cff59 100644 --- a/drivers/usb/net/pegasus.c +++ b/drivers/usb/net/pegasus.c | |||
@@ -163,6 +163,7 @@ static int get_registers(pegasus_t * pegasus, __u16 indx, __u16 size, | |||
163 | 163 | ||
164 | /* using ATOMIC, we'd never wake up if we slept */ | 164 | /* using ATOMIC, we'd never wake up if we slept */ |
165 | if ((ret = usb_submit_urb(pegasus->ctrl_urb, GFP_ATOMIC))) { | 165 | if ((ret = usb_submit_urb(pegasus->ctrl_urb, GFP_ATOMIC))) { |
166 | set_current_state(TASK_RUNNING); | ||
166 | if (ret == -ENODEV) | 167 | if (ret == -ENODEV) |
167 | netif_device_detach(pegasus->net); | 168 | netif_device_detach(pegasus->net); |
168 | if (netif_msg_drv(pegasus)) | 169 | if (netif_msg_drv(pegasus)) |
@@ -855,7 +856,7 @@ static void intr_callback(struct urb *urb) | |||
855 | pegasus->stats.rx_missed_errors += ((d[3] & 0x7f) << 8) | d[4]; | 856 | pegasus->stats.rx_missed_errors += ((d[3] & 0x7f) << 8) | d[4]; |
856 | } | 857 | } |
857 | 858 | ||
858 | status = usb_submit_urb(urb, SLAB_ATOMIC); | 859 | status = usb_submit_urb(urb, GFP_ATOMIC); |
859 | if (status == -ENODEV) | 860 | if (status == -ENODEV) |
860 | netif_device_detach(pegasus->net); | 861 | netif_device_detach(pegasus->net); |
861 | if (status && netif_msg_timer(pegasus)) | 862 | if (status && netif_msg_timer(pegasus)) |
@@ -1280,9 +1281,9 @@ static inline void setup_pegasus_II(pegasus_t * pegasus) | |||
1280 | static struct workqueue_struct *pegasus_workqueue = NULL; | 1281 | static struct workqueue_struct *pegasus_workqueue = NULL; |
1281 | #define CARRIER_CHECK_DELAY (2 * HZ) | 1282 | #define CARRIER_CHECK_DELAY (2 * HZ) |
1282 | 1283 | ||
1283 | static void check_carrier(void *data) | 1284 | static void check_carrier(struct work_struct *work) |
1284 | { | 1285 | { |
1285 | pegasus_t *pegasus = data; | 1286 | pegasus_t *pegasus = container_of(work, pegasus_t, carrier_check.work); |
1286 | set_carrier(pegasus->net); | 1287 | set_carrier(pegasus->net); |
1287 | if (!(pegasus->flags & PEGASUS_UNPLUG)) { | 1288 | if (!(pegasus->flags & PEGASUS_UNPLUG)) { |
1288 | queue_delayed_work(pegasus_workqueue, &pegasus->carrier_check, | 1289 | queue_delayed_work(pegasus_workqueue, &pegasus->carrier_check, |
@@ -1318,7 +1319,7 @@ static int pegasus_probe(struct usb_interface *intf, | |||
1318 | 1319 | ||
1319 | tasklet_init(&pegasus->rx_tl, rx_fixup, (unsigned long) pegasus); | 1320 | tasklet_init(&pegasus->rx_tl, rx_fixup, (unsigned long) pegasus); |
1320 | 1321 | ||
1321 | INIT_WORK(&pegasus->carrier_check, check_carrier, pegasus); | 1322 | INIT_DELAYED_WORK(&pegasus->carrier_check, check_carrier); |
1322 | 1323 | ||
1323 | pegasus->intf = intf; | 1324 | pegasus->intf = intf; |
1324 | pegasus->usb = dev; | 1325 | pegasus->usb = dev; |