.. | .. |
---|
61 | 61 | * Note: |
---|
62 | 62 | * |
---|
63 | 63 | * Always update our wiki's device list (located at: |
---|
64 | | - * http://wireless.kernel.org/en/users/Drivers/ar9170/devices ), |
---|
| 64 | + * https://wireless.wiki.kernel.org/en/users/Drivers/ar9170/devices ), |
---|
65 | 65 | * whenever you add a new device. |
---|
66 | 66 | */ |
---|
67 | 67 | static const struct usb_device_id carl9170_usb_ids[] = { |
---|
.. | .. |
---|
377 | 377 | } |
---|
378 | 378 | } |
---|
379 | 379 | |
---|
380 | | -static void carl9170_usb_tasklet(unsigned long data) |
---|
| 380 | +static void carl9170_usb_tasklet(struct tasklet_struct *t) |
---|
381 | 381 | { |
---|
382 | | - struct ar9170 *ar = (struct ar9170 *) data; |
---|
| 382 | + struct ar9170 *ar = from_tasklet(ar, t, usb_tasklet); |
---|
383 | 383 | |
---|
384 | 384 | if (!IS_INITIALIZED(ar)) |
---|
385 | 385 | return; |
---|
.. | .. |
---|
1082 | 1082 | init_completion(&ar->cmd_wait); |
---|
1083 | 1083 | init_completion(&ar->fw_boot_wait); |
---|
1084 | 1084 | init_completion(&ar->fw_load_wait); |
---|
1085 | | - tasklet_init(&ar->usb_tasklet, carl9170_usb_tasklet, |
---|
1086 | | - (unsigned long)ar); |
---|
| 1085 | + tasklet_setup(&ar->usb_tasklet, carl9170_usb_tasklet); |
---|
1087 | 1086 | |
---|
1088 | 1087 | atomic_set(&ar->tx_cmd_urbs, 0); |
---|
1089 | 1088 | atomic_set(&ar->tx_anch_urbs, 0); |
---|
.. | .. |
---|
1107 | 1106 | static void carl9170_usb_disconnect(struct usb_interface *intf) |
---|
1108 | 1107 | { |
---|
1109 | 1108 | struct ar9170 *ar = usb_get_intfdata(intf); |
---|
1110 | | - struct usb_device *udev; |
---|
1111 | 1109 | |
---|
1112 | 1110 | if (WARN_ON(!ar)) |
---|
1113 | 1111 | return; |
---|
1114 | 1112 | |
---|
1115 | | - udev = ar->udev; |
---|
1116 | 1113 | wait_for_completion(&ar->fw_load_wait); |
---|
1117 | 1114 | |
---|
1118 | 1115 | if (IS_INITIALIZED(ar)) { |
---|