From c8c8b2e6a4d0d81e4a3c8ab3eb5a973f0f50b084 Mon Sep 17 00:00:00 2001 From: Jiri Vanek Date: Mon, 9 Apr 2012 13:56:34 +0200 Subject: [PATCH] Added local echo support --- kernel/2.6/drivers/net/can/usb/ctu_usbcan.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) 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); -- 2.39.2