Urs Thuermann wrote:
> +static int vcan_open(struct net_device *dev)
> +{
> +     DBG("%s: interface up\n", dev->name);
> +
> +     netif_start_queue(dev);
> +     return 0;
> +}
> +
> +static int vcan_stop(struct net_device *dev)
> +{
> +     DBG("%s: interface down\n", dev->name);
> +
> +     netif_stop_queue(dev);
> +     return 0;
> +}


These two functions look unnecessary, there's no need to manage
the queue for pure software devices.

> +static int vcan_tx(struct sk_buff *skb, struct net_device *dev)
> +{
> +     struct net_device_stats *stats = &dev->stats;
> +     int loop;
> +
> +     DBG("sending skbuff on interface %s\n", dev->name);
> +
> +     stats->tx_packets++;
> +     stats->tx_bytes += skb->len;
> +
> +     /* set flag whether this packet has to be looped back */
> +     loop = skb->pkt_type == PACKET_LOOPBACK;
> +
> +     if (!echo) {
> +             /* no echo handling available inside this driver */
> +
> +             if (loop) {
> +                     /*
> +                      * only count the packets here, because the
> +                      * CAN core already did the echo for us
> +                      */
> +                     stats->rx_packets++;
> +                     stats->rx_bytes += skb->len;
> +             }
> +             kfree_skb(skb);
> +             return 0;

Please use the NETDEV_TX codes.

Besides these minor issues, looks fine.

-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to