From: Jiri Vanek Date: Mon, 9 Apr 2012 11:56:34 +0000 (+0200) Subject: Added local echo support X-Git-Url: http://rtime.felk.cvut.cz/gitweb/socketcan-devel.git/commitdiff_plain/c8c8b2e6a4d0d81e4a3c8ab3eb5a973f0f50b084 Added local echo support --- diff --git a/kernel/2.6/drivers/net/can/usb/ctu_usbcan.c b/kernel/2.6/drivers/net/can/usb/ctu_usbcan.c index f386579..000018f 100644 --- a/kernel/2.6/drivers/net/can/usb/ctu_usbcan.c +++ b/kernel/2.6/drivers/net/can/usb/ctu_usbcan.c @@ -58,6 +58,7 @@ struct usbcan_message { struct urb *u; struct ctu_usbcan_usb *dev; u8 msg[USBCAN_TRANSFER_SIZE]; + u32 echo_index; u8 dlc; struct list_head list_node; }; @@ -131,6 +132,8 @@ static void ctu_usbcan_tx_callback(struct urb *urb){ stats->tx_packets++; stats->tx_bytes += m->dlc; + + can_get_echo_skb(m->dev->netdev, m->echo_index); set_bit(USBCAN_DATA_OK,&m->dev->flags); usbcan_usb_message_move_list(m->dev, m, &m->dev->tx_ready_list); @@ -202,10 +205,10 @@ static netdev_tx_t ctu_usbcan_start_xmit(struct sk_buff *skb, struct net_device m->dlc = (u8) len; - - usbcan_usb_message_move_list(dev, m, &dev->tx_pend_list); + can_put_echo_skb(skb, netdev, m->echo_index); + /* odeslani */ retval = usb_submit_urb(m->u, GFP_ATOMIC); if (retval){ @@ -423,6 +426,8 @@ int usbcan_kthread(void *data) u->dev = dev->udev; m->dev = dev; + m->echo_index = i; + usb_fill_bulk_urb(u, dev->udev, usb_sndbulkpipe(dev->udev, dev->bulk_out_endpointAddr), m->msg, USBCAN_TRANSFER_SIZE, ctu_usbcan_tx_callback, m);