]> rtime.felk.cvut.cz Git - socketcan-devel.git/commitdiff
Added local echo support
authorJiri Vanek <vanekjir@fel.cvut.cz>
Mon, 9 Apr 2012 11:56:34 +0000 (13:56 +0200)
committerJiri Vanek <vanekjir@fel.cvut.cz>
Mon, 9 Apr 2012 11:56:34 +0000 (13:56 +0200)
kernel/2.6/drivers/net/can/usb/ctu_usbcan.c

index f386579cb6e57cf1d91396672434479fc41dce85..000018fa6c0961aabcc25d6ba5c9bcd7b4a92b6c 100644 (file)
@@ -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);