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, ¶m);
+ }
+
+
/* Prepare receive urbs */
for (i=0;i<USBCAN_TOT_RX_URBS;i++){
struct usbcan_message *m;
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);
/* 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 */
return 0;
register_error:
- cleanup_usbdev(usbdevs->candev);
+ cleanup_hotplug_dev(usbdevs->candev);
error:
if (usbdevs){
if (usbdevs->devs){
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;