]> rtime.felk.cvut.cz Git - lincan.git/blobdiff - lincan/src/usbcan.c
Hotplug device support functions renamed
[lincan.git] / lincan / src / usbcan.c
index 01d2f908bb47d1f59e90eca2406f7276c5aa5de3..4492f616d1e030c3ee238ba7c1391416a2ab9f85 100644 (file)
@@ -1213,6 +1213,12 @@ int usbcan_kthread(void *data)
        INIT_LIST_HEAD(&dev->tx_pend_list);
        INIT_LIST_HEAD(&dev->tx_ready_list);
 
+       if (1) {
+               struct sched_param param = { .sched_priority = 1 };
+               sched_setscheduler(current, SCHED_FIFO, &param);
+       }
+
+
        /* Prepare receive urbs  */
        for (i=0;i<USBCAN_TOT_RX_URBS;i++){
                struct usbcan_message *m;
@@ -1315,6 +1321,10 @@ int usbcan_kthread(void *data)
                        break;
                }
 
+               clear_bit(USBCAN_DATA_OK,&dev->flags);
+
+               mb();
+
                while(!list_empty(&dev->rx_ready_list)) {
                        struct usbcan_message *m;
                        m = list_first_entry(&dev->rx_ready_list, typeof(*m), list_node);
@@ -1449,7 +1459,7 @@ static int usbcan_probe(struct usb_interface *interface, const struct usb_device
        /* save our data pointer in this interface device */
        usb_set_intfdata(interface, usbdevs);
 
-       if (!(usbdevs->candev=register_usbdev("usbcan",(void *) usbdevs, usbcan_register_devs)))
+       if (!(usbdevs->candev=register_hotplug_dev("usbcan",(void *) usbdevs, usbcan_register_devs)))
                goto register_error;
 
        /* let the user know what node this device is now attached to */
@@ -1457,7 +1467,7 @@ static int usbcan_probe(struct usb_interface *interface, const struct usb_device
        return 0;
 
 register_error:
-       cleanup_usbdev(usbdevs->candev);
+       cleanup_hotplug_dev(usbdevs->candev);
 error:
        if (usbdevs){
                if (usbdevs->devs){
@@ -1497,7 +1507,7 @@ static void usbcan_disconnect(struct usb_interface *interface)
        if (usbdevs->devs){
                usb_put_dev((*usbdevs->devs)->udev);
        }
-       cleanup_usbdev(usbdevs->candev);
+       cleanup_hotplug_dev(usbdevs->candev);
        if (usbdevs->devs){
                for (j=0;j<usbdevs->count;j++){
                        if (!usbdevs->devs[j])  continue;