X-Git-Url: http://rtime.felk.cvut.cz/gitweb/linux-lin.git/blobdiff_plain/1e920bfd0d3f0f9f5a4998ee8f8551e721354271..9e7a6be1e8e430e8b420a2b7c712d716c4d90765:/sllin/sllin.c diff --git a/sllin/sllin.c b/sllin/sllin.c index d177f54..6b50223 100644 --- a/sllin/sllin.c +++ b/sllin/sllin.c @@ -123,7 +123,6 @@ struct sllin { #define SLF_TXEVENT 3 /* Tx wake event */ #define SLF_MSGEVENT 4 /* CAN message to sent */ - unsigned char leased; dev_t line; struct task_struct *kwthread; wait_queue_head_t kwt_wq; @@ -240,49 +239,49 @@ static void sll_bump(struct sllin *sl) /* 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; - */ - } - +// 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; +// */ +// } +// } /* @@ -296,8 +295,8 @@ static void sllin_write_wakeup(struct tty_struct *tty) struct sllin *sl = (struct sllin *) tty->disc_data; /* First make sure we're connected. */ - if (!sl || sl->magic != SLLIN_MAGIC || !netif_running(sl->dev)) - return; + //if (!sl || sl->magic != SLLIN_MAGIC || !netif_running(sl->dev)) + // return; if (sl->lin_state != SLSTATE_BREAK_SENT) remains = sl->tx_lim - sl->tx_cnt; @@ -439,8 +438,8 @@ static void sllin_receive_buf(struct tty_struct *tty, printk(KERN_INFO "sllin_receive_buf invoked\n"); - if (!sl || sl->magic != SLLIN_MAGIC || !netif_running(sl->dev)) - return; + //if (!sl || sl->magic != SLLIN_MAGIC || !netif_running(sl->dev)) + // return; /* Read the characters out of the buffer */ while (count--) { @@ -660,7 +659,7 @@ static void sll_sync(void) break; sl = netdev_priv(dev); - if (sl->tty || sl->leased) + if (sl->tty) continue; if (dev->flags & IFF_UP) dev_close(dev); @@ -834,8 +833,6 @@ static void sllin_close(struct tty_struct *tty) tty->disc_data = NULL; sl->tty = NULL; - if (!sl->leased) - sl->line = 0; /* Flush network side */ unregister_netdev(sl->dev);