-// struct sk_buff *skb;
-// struct can_frame cf;
-// int i, dlc_pos, tmp;
-// unsigned long ultmp;
-// char cmd = sl->rbuff[0];
-//
-// if ((cmd != 't') && (cmd != 'T') && (cmd != 'r') && (cmd != 'R'))
-// return;
-//
-// if (cmd & 0x20) /* tiny chars 'r' 't' => standard frame format */
-// dlc_pos = 4; /* dlc position tiiid */
-// else
-// dlc_pos = 9; /* dlc position Tiiiiiiiid */
-//
-// if (!((sl->rbuff[dlc_pos] >= '0') && (sl->rbuff[dlc_pos] < '9')))
-// return;
-//
-// cf.can_dlc = sl->rbuff[dlc_pos] - '0'; /* get can_dlc from ASCII val */
-//
-// sl->rbuff[dlc_pos] = 0; /* terminate can_id string */
-//
-// if (strict_strtoul(sl->rbuff+1, 16, &ultmp))
-// return;
-//
-// cf.can_id = ultmp;
-//
-// if (!(cmd & 0x20)) /* NO tiny chars => extended frame format */
-// cf.can_id |= CAN_EFF_FLAG;
-//
-// if ((cmd | 0x20) == 'r') /* RTR frame */
-// cf.can_id |= CAN_RTR_FLAG;
-//
-// *(u64 *) (&cf.data) = 0; /* clear payload */
-//
-// for (i = 0, dlc_pos++; i < cf.can_dlc; i++) {
-//
-// tmp = asc2nibble(sl->rbuff[dlc_pos++]);
-// if (tmp > 0x0F)
-// return;
-// cf.data[i] = (tmp << 4);
-// tmp = asc2nibble(sl->rbuff[dlc_pos++]);
-// if (tmp > 0x0F)
-// return;
-// cf.data[i] |= tmp;
-// }
-//
-//
-// skb = dev_alloc_skb(sizeof(struct can_frame));
-// if (!skb)
-// return;
-//
-// skb->dev = sl->dev;
-// skb->protocol = htons(ETH_P_CAN);
-// skb->pkt_type = PACKET_BROADCAST;
-// skb->ip_summed = CHECKSUM_UNNECESSARY;
-// memcpy(skb_put(skb, sizeof(struct can_frame)),
-// &cf, sizeof(struct can_frame));
-// netif_rx(skb);
-//
-// sl->dev->stats.rx_packets++;
-// sl->dev->stats.rx_bytes += cf.can_dlc;
-}
-
-
- /************************************************************************
- * STANDARD SLLIN ENCAPSULATION *
- ************************************************************************/
-
-/* Convert particular CAN frame into LIN frame and send it to TTY queue. */
-static void sll_encaps(struct sllin *sl, struct can_frame *cf)
-{
-// int actual, idx, i;
-// char lframe[16] = {0x00, 0x55}; /* Fake break, Sync byte */
-// struct tty_struct *tty = sl->tty;
-//
-// pr_debug("sllin: %s() invoked\n", __FUNCTION__);
-//
-// /* We do care only about SFF frames */
-// if (cf->can_id & CAN_EFF_FLAG)
-// return;
-//
-// /* Send only header */
-// if (cf->can_id & CAN_RTR_FLAG) {
-// pr_debug("sllin: %s() RTR CAN frame\n", __FUNCTION__);
-// lframe[2] = (u8)cf->can_id; /* Get one byte LIN ID */
-//
-// sltty_change_speed(tty, sl->lin_baud * 2 / 3);
-// tty->ops->write(tty, &lframe[0], 1);
-// sltty_change_speed(tty, sl->lin_baud);
-// tty->ops->write(tty, &lframe[1], 1);
-// tty->ops->write(tty, &lframe[2], 1);
-// } else {
-// pr_debug("sllin: %s() non-RTR CAN frame\n", __FUNCTION__);
-// /* idx = strlen(sl->xbuff);
-//
-// for (i = 0; i < cf->can_dlc; i++)
-// sprintf(&sl->xbuff[idx + 2*i], "%02X", cf->data[i]);
-//
-// * Order of next two lines is *very* important.
-// * When we are sending a little amount of data,
-// * the transfer may be completed inside the ops->write()
-// * routine, because it's running with interrupts enabled.
-// * In this case we *never* got WRITE_WAKEUP event,
-// * if we did not request it before write operation.
-// * 14 Oct 1994 Dmitry Gorodchanin.
-//
-// set_bit(TTY_DO_WRITE_WAKEUP, &sl->tty->flags);
-// actual = sl->tty->ops->write(sl->tty, sl->xbuff, strlen(sl->xbuff));
-// sl->xleft = strlen(sl->xbuff) - actual;
-// sl->xhead = sl->xbuff + actual;
-// sl->dev->stats.tx_bytes += cf->can_dlc;
-// */
-// }
-//