canque_filter_msg2edges(obj->qends, &obj->rx_msg);
skip_msg:
- set_bit(USBCAN_MESSAGE_URB_PENDING,&m->flags);
DEBUGMSG("Renewing RX urb\n");
usbcan_usb_message_move_list(dev, m, &dev->rx_pend_list);
skip_msg:
set_bit(USBCAN_FREE_TX_URB,&dev->flags);
- set_bit(USBCAN_MESSAGE_FREE,&m->flags);
set_bit(USBCAN_TX_PENDING,&dev->flags);
can_msgobj_set_fl(obj,TX_PENDING);
clear_bit(USBCAN_FREE_TX_URB,&dev->flags);
- clear_bit(USBCAN_MESSAGE_FREE,&m->flags);
*(u8 *)(m->msg)=0;
len = m->slot->msg.length;
*ptr=0;
}
- set_bit(USBCAN_MESSAGE_URB_PENDING,&m->flags);
usbcan_usb_message_move_list(dev, m, &dev->tx_pend_list);
retval = usb_submit_urb (m->u, GFP_KERNEL);
if (retval){
CANMSG("%d. URB error %d\n",i,retval);
- clear_bit(USBCAN_MESSAGE_URB_PENDING,&m->flags);
set_bit(USBCAN_FREE_TX_URB,&dev->flags);
- set_bit(USBCAN_MESSAGE_FREE,&m->flags);
obj->ret = -1;
canque_notify_inends(m->qedge, CANQUEUE_NOTIFY_ERRTX_SEND);
canque_free_outslot(obj->qends, m->qedge, m->slot);
set_bit(USBCAN_MESSAGE_DATA_OK,&m->flags);
DEBUGMSG("%s > TX flag set\n", __FUNCTION__);
set_bit(USBCAN_DATA_TX,&m->dev->flags);
- clear_bit(USBCAN_MESSAGE_URB_PENDING,&m->flags);
usbcan_usb_message_move_list(m->dev, m, &m->dev->tx_ready_list);
if (test_bit(USBCAN_THREAD_RUNNING,&m->dev->flags))
wake_up_process(m->dev->comthread);
CANMSG("%s > Urb shutting down with status: %d\n", __FUNCTION__, urb->status);
// set_bit(USBCAN_TERMINATE,&m->dev->flags);
set_bit(USBCAN_MESSAGE_TERMINATE,&m->flags);
- clear_bit(USBCAN_MESSAGE_URB_PENDING,&m->flags);
return;
default:
//CANMSG("%s > Nonzero status received: %d\n", __FUNCTION__, urb->status);
if (retval<0){
CANMSG("%s > Retrying urb failed with result %d\n", __FUNCTION__, retval);
set_bit(USBCAN_ERROR,&m->dev->flags);
- clear_bit(USBCAN_MESSAGE_URB_PENDING,&m->flags);
usbcan_usb_message_move_list(m->dev, m, &m->dev->tx_ready_list);
if (test_bit(USBCAN_THREAD_RUNNING,&m->dev->flags))
wake_up_process(m->dev->comthread);
struct usbcan_message *m = urb->context;
int retval;
- if (!test_bit(USBCAN_THREAD_RUNNING,&m->dev->flags))
+ if (!test_bit(USBCAN_THREAD_RUNNING,&m->dev->flags))
return;
if (test_bit(USBCAN_MESSAGE_TERMINATE,&m->flags))
return;
set_bit(USBCAN_MESSAGE_DATA_OK,&m->flags);
DEBUGMSG("%s > RX flag set\n", __FUNCTION__);
set_bit(USBCAN_DATA_RX,&m->dev->flags);
- clear_bit(USBCAN_MESSAGE_URB_PENDING,&m->flags);
usbcan_usb_message_move_list(m->dev, m, &m->dev->rx_ready_list);
if (test_bit(USBCAN_THREAD_RUNNING,&m->dev->flags))
wake_up_process(m->dev->comthread);
CANMSG("%s > Urb shutting down with status: %d\n", __FUNCTION__, urb->status);
// set_bit(USBCAN_TERMINATE,&m->dev->flags);
set_bit(USBCAN_MESSAGE_TERMINATE,&m->flags);
- clear_bit(USBCAN_MESSAGE_URB_PENDING,&m->flags);
return;
default:
//CANMSG("%s > Nonzero status received: %d\n", __FUNCTION__, urb->status);
if (retval<0){
CANMSG("%s > Retrying urb failed with result %d\n", __FUNCTION__, retval);
set_bit(USBCAN_ERROR,&m->dev->flags);
- clear_bit(USBCAN_MESSAGE_URB_PENDING,&m->flags);
usbcan_usb_message_move_list(m->dev, m, &m->dev->rx_ready_list);
if (test_bit(USBCAN_THREAD_RUNNING,&m->dev->flags))
wake_up_process(m->dev->comthread);
CANMSG("Error allocating %d. usb receive urb\n",i);
goto error;
}
- m = kmalloc(sizeof(struct usbcan_message), GFP_KERNEL);
+ m = kzalloc(sizeof(struct usbcan_message), GFP_KERNEL);
if(!m) {
usb_free_urb(u);
CANMSG("Error allocating %d. receive usbcan_message\n",i);
usb_fill_bulk_urb(u, dev->udev,
usb_rcvbulkpipe(dev->udev, dev->bulk_in_endpointAddr),
m->msg, USBCAN_TRANSFER_SIZE, usbcan_rx_callback, m);
- set_bit(USBCAN_MESSAGE_TYPE_RX, &m->flags);
+
list_add_tail(&m->list_node, &dev->rx_ready_list);
}
CANMSG("Error allocating %d. usb transmit urb\n",i);
goto error;
}
- m = kmalloc(sizeof(struct usbcan_message), GFP_KERNEL);
+ m = kzalloc(sizeof(struct usbcan_message), GFP_KERNEL);
if(!m) {
usb_free_urb(u);
CANMSG("Error allocating %d. transmit usbcan_message\n",i);
usb_sndbulkpipe(dev->udev, dev->bulk_out_endpointAddr),
m->msg, USBCAN_TRANSFER_SIZE, usbcan_tx_callback, m);
- set_bit(USBCAN_MESSAGE_FREE,&m->flags);
- set_bit(USBCAN_MESSAGE_TYPE_TX,&m->flags);
list_add_tail(&m->list_node, &dev->tx_idle_list);
}
for (i=0;i<USBCAN_TOT_RX_URBS;i++){
struct usbcan_message *m;
m = list_first_entry(&dev->rx_ready_list, typeof(*m), list_node);
- set_bit(USBCAN_MESSAGE_URB_PENDING,&m->flags);
usbcan_usb_message_move_list(dev, m, &dev->rx_pend_list);
retval=usb_submit_urb(m->u, GFP_KERNEL);