/* parse tty input stream */ static void slcan_unesc(struct slcan *sl, unsigned char s) { #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23) struct net_device_stats *stats = slc_get_stats(sl->dev); #else struct net_device_stats *stats = &sl->dev->stats; #endif if ((s == '\r') || (s == '\a')) { /* CR or BEL ends the pdu */ if (!test_and_clear_bit(SLF_ERROR, &sl->flags) && (sl->rcount > 4)) { slc_bump(sl); } sl->rcount = 0; } else { if (!test_bit(SLF_ERROR, &sl->flags)) { if (sl->rcount < SLC_MTU) { sl->rbuff[sl->rcount++] = s; return; } else { stats->rx_over_errors++; set_bit(SLF_ERROR, &sl->flags); } } } }
/* parse tty input stream */ static void slcan_unesc(struct slcan *sl, unsigned char s) { if ((s == '\r') || (s == '\a')) { /* CR or BEL ends the pdu */ if (!test_and_clear_bit(SLF_ERROR, &sl->flags) && (sl->rcount > 4)) { slc_bump(sl); } sl->rcount = 0; } else { if (!test_bit(SLF_ERROR, &sl->flags)) { if (sl->rcount < SLC_MTU) { sl->rbuff[sl->rcount++] = s; return; } else { sl->dev->stats.rx_over_errors++; set_bit(SLF_ERROR, &sl->flags); } } } }