From: Patrick McHardy <kaber@trash.net>
To: Urs Thuermann <urs@isnogud.escape.de>
Cc: David Miller <davem@davemloft.net>,
Thomas Gleixner <tglx@linutronix.de>,
Oliver Hartkopp <oliver.hartkopp@volkswagen.de>,
Urs Thuermann <urs.thuermann@volkswagen.de>,
netdev@vger.kernel.org
Subject: Re: [patch 5/7] CAN: Add virtual CAN netdevice driver
Date: Wed, 30 May 2007 19:13:26 +0200 [thread overview]
Message-ID: <465DB0B6.109@trash.net> (raw)
In-Reply-To: <20070530131204.10843.5@janus.isnogud.escape.de>
Urs Thuermann wrote:
> +static int numdev = 4; /* default number of virtual CAN interfaces */
> +module_param(numdev, int, S_IRUGO);
> +MODULE_PARM_DESC(numdev, "Number of virtual CAN devices");
I have a set of patches coming up that introduce a rtnetlink API
for adding/modifying/deleting software network devices. I would
prefer if you could switch this driver over instead of doing the
"create N devices during loading" that many current drivers do,
leaving you with 20 unused devices after boot.
> +static int loopback = 0; /* vcan default: no loopback, just free the skb */
> +module_param(loopback, int, S_IRUGO);
> +MODULE_PARM_DESC(loopback, "Loop back sent frames. vcan default: 0 (Off)");
And it allows you have both loopback and non-loopback devices
in case that would be useful.
I'll send the patches by Friday.
> +static int vcan_tx(struct sk_buff *skb, struct net_device *dev)
> +{
> + struct net_device_stats *stats = netdev_priv(dev);
> + int loop;
> +
> + DBG("sending skbuff on interface %s\n", dev->name);
> +
> + stats->tx_packets++;
> + stats->tx_bytes += skb->len;
> +
> + /* tx socket reference pointer: Loopback required if not NULL */
> + loop = *(struct sock **)skb->cb != NULL;
Qdiscs might change skb->cb. Maybe use skb->sk?
> +static int vcan_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
> +{
> + return -EOPNOTSUPP;
> +}
Not needed.
> +
> +static int vcan_rebuild_header(struct sk_buff *skb)
> +{
> + DBG("skbuff %p\n", skb);
> + return 0;
> +}
Also not needed.
> +
> +static int vcan_header(struct sk_buff *skb, struct net_device *dev,
> + unsigned short type, void *daddr, void *saddr,
> + unsigned int len)
> +{
> + DBG("skbuff %p, device %p\n", skb, dev);
> + return 0;
> +}
Also not needed.
> +static struct net_device_stats *vcan_get_stats(struct net_device *dev)
> +{
> + struct net_device_stats *stats = netdev_priv(dev);
> +
> + return stats;
> +}
Not needed if you just use dev->stats.
> +static __init int vcan_init_module(void)
> +{
> + int i, result;
> +
> + printk(banner);
> +
> + /* register at least one interface */
> + if (numdev < 1)
> + numdev = 1;
> +
> + printk(KERN_INFO
> + "vcan: registering %d virtual CAN interfaces. (loopback %s)\n",
> + numdev, loopback ? "enabled" : "disabled");
> +
> + vcan_devs = kzalloc(numdev * sizeof(struct net_device *), GFP_KERNEL);
> + if (!vcan_devs) {
> + printk(KERN_ERR "vcan: Can't allocate vcan devices array!\n");
> + return -ENOMEM;
> + }
> +
> + for (i = 0; i < numdev; i++) {
> + vcan_devs[i] = alloc_netdev(STATSIZE, "vcan%d", vcan_init);
> + if (!vcan_devs[i]) {
> + printk(KERN_ERR "vcan: error allocating net_device\n");
> + result = -ENOMEM;
> + goto out;
> + }
> +
> + result = register_netdev(vcan_devs[i]);
> + if (result < 0) {
> + printk(KERN_ERR
> + "vcan: error %d registering interface %s\n",
> + result, vcan_devs[i]->name);
> + free_netdev(vcan_devs[i]);
> + vcan_devs[i] = NULL;
> + goto out;
> +
> + } else {
> + DBG("successfully registered interface %s\n",
> + vcan_devs[i]->name);
> + }
> + }
> +
> + return 0;
> +
> + out:
> + for (i = 0; i < numdev; i++) {
> + if (vcan_devs[i]) {
> + unregister_netdev(vcan_devs[i]);
> + free_netdev(vcan_devs[i]);
> + }
> + }
> +
> + kfree(vcan_devs);
> +
> + return result;
> +}
Looks quite large for such a simple task. Should get a lot
simpler by switching to the rtnetlink API.
next prev parent reply other threads:[~2007-05-30 17:14 UTC|newest]
Thread overview: 97+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-05-30 13:11 [patch 0/7] CAN: Add new PF_CAN protocol family, update Urs Thuermann
2007-05-30 13:11 ` [patch 1/7] CAN: Allocate protocol numbers for PF_CAN Urs Thuermann
2007-05-30 13:11 ` [patch 2/7] CAN: Add PF_CAN core module Urs Thuermann
2007-05-30 13:11 ` [patch 3/7] CAN: Add raw protocol Urs Thuermann
2007-05-30 13:11 ` [patch 4/7] CAN: Add broadcast manager (bcm) protocol Urs Thuermann
2007-05-30 13:11 ` [patch 5/7] CAN: Add virtual CAN netdevice driver Urs Thuermann
2007-05-30 17:13 ` Patrick McHardy [this message]
2007-05-30 18:39 ` Oliver Hartkopp
2007-05-30 19:16 ` Patrick McHardy
2007-05-30 19:48 ` Oliver Hartkopp
2007-05-30 19:58 ` Patrick McHardy
2007-05-31 5:13 ` Oliver Hartkopp
2007-05-31 20:25 ` Oliver Hartkopp
2007-06-01 14:54 ` Patrick McHardy
2007-06-02 9:51 ` Oliver Hartkopp
2007-06-02 19:58 ` Oliver Hartkopp
2007-06-03 19:16 ` Oliver Hartkopp
2007-06-04 11:53 ` Patrick McHardy
2007-06-04 12:44 ` Urs Thuermann
2007-06-06 11:39 ` Patrick McHardy
2007-06-04 12:17 ` Urs Thuermann
2007-06-04 16:32 ` Oliver Hartkopp
2007-06-04 18:26 ` Oliver Hartkopp
2007-06-02 8:09 ` Urs Thuermann
2007-06-03 18:27 ` Patrick McHardy
2007-05-30 17:28 ` Stephen Hemminger
2007-05-30 18:57 ` Oliver Hartkopp
2007-05-30 19:01 ` Stephen Hemminger
2007-05-30 19:25 ` Oliver Hartkopp
2007-05-30 13:11 ` [patch 6/7] CAN: Add maintainer entries Urs Thuermann
2007-05-30 13:11 ` [patch 7/7] CAN: Add documentation Urs Thuermann
-- strict thread matches above, loose matches on Subject: below --
2007-11-16 15:02 [PATCH 0/7] CAN: New PF_CAN protocol family for 2.6.25, update Urs Thuermann
2007-11-16 15:02 ` [PATCH 5/7] CAN: Add virtual CAN netdevice driver Urs Thuermann
2007-11-14 12:13 [PATCH 0/7] CAN: New PF_CAN protocol family for 2.6.25 Urs Thuermann
2007-11-14 12:13 ` [PATCH 5/7] CAN: Add virtual CAN netdevice driver Urs Thuermann
2007-11-14 12:51 ` Patrick McHardy
2007-11-14 13:36 ` Urs Thuermann
2007-11-14 13:45 ` Patrick McHardy
2007-10-05 10:49 [PATCH 0/7] CAN: Add new PF_CAN protocol family, try #10 Urs Thuermann
2007-10-05 10:49 ` [PATCH 5/7] CAN: Add virtual CAN netdevice driver Urs Thuermann
2007-10-02 13:10 [PATCH 0/7] CAN: Add new PF_CAN protocol family, try #9 Urs Thuermann
2007-10-02 13:10 ` [PATCH 5/7] CAN: Add virtual CAN netdevice driver Urs Thuermann
2007-10-02 14:20 ` Arnaldo Carvalho de Melo
2007-10-02 15:07 ` Oliver Hartkopp
2007-10-02 16:46 ` Arnaldo Carvalho de Melo
2007-10-02 21:02 ` Oliver Hartkopp
2007-10-02 21:43 ` Arnaldo Carvalho de Melo
2007-10-02 21:50 ` David Miller
2007-10-03 7:06 ` Oliver Hartkopp
2007-10-02 21:52 ` Stephen Hemminger
2007-10-02 22:04 ` David Miller
2007-10-03 17:47 ` Oliver Hartkopp
2007-10-04 11:52 ` Urs Thuermann
2007-09-25 12:20 [PATCH 0/7] CAN: Add new PF_CAN protocol family, try #8 Urs Thuermann
2007-09-25 12:20 ` [PATCH 5/7] CAN: Add virtual CAN netdevice driver Urs Thuermann
2007-09-25 13:26 ` YOSHIFUJI Hideaki / 吉藤英明
2007-09-25 14:00 ` Urs Thuermann
2007-09-25 14:47 ` Patrick McHardy
2007-09-25 17:55 ` Oliver Hartkopp
2007-09-25 17:53 ` Patrick McHardy
2007-09-25 19:09 ` Oliver Hartkopp
2007-09-20 18:43 [PATCH 0/7] CAN: Add new PF_CAN protocol family, try #7 Urs Thuermann
2007-09-20 18:43 ` [PATCH 5/7] CAN: Add virtual CAN netdevice driver Urs Thuermann
2007-09-27 15:54 ` Eric W. Biederman
2007-09-27 16:16 ` Eric W. Biederman
2007-09-27 19:18 ` David Miller
2007-09-28 8:48 ` Oliver Hartkopp
2007-09-28 16:52 ` Eric W. Biederman
2007-09-28 18:33 ` Oliver Hartkopp
2007-09-17 10:03 [PATCH 0/7] CAN: Add new PF_CAN protocol family, try #6 Urs Thuermann
2007-09-17 10:03 ` [PATCH 5/7] CAN: Add virtual CAN netdevice driver Urs Thuermann
2007-09-18 15:02 ` Patrick McHardy
2007-09-18 22:24 ` Urs Thuermann
2007-09-19 6:26 ` Oliver Hartkopp
2007-09-19 8:41 ` Patrick McHardy
2007-08-04 2:06 [patch 0/7] CAN: Add new PF_CAN protocol family, try #5 Urs Thuermann
2007-08-04 2:07 ` [patch 5/7] CAN: Add virtual CAN netdevice driver Urs Thuermann
2007-06-22 3:44 [patch 0/7] CAN: Add new PF_CAN protocol family, try #3 Urs Thuermann
2007-06-22 3:44 ` [patch 5/7] CAN: Add virtual CAN netdevice driver Urs Thuermann
2007-06-22 11:02 ` Patrick McHardy
2007-06-22 12:22 ` Urs Thuermann
2007-06-22 12:38 ` Patrick McHardy
2007-06-23 12:05 ` Oliver Hartkopp
2007-06-23 12:52 ` Patrick McHardy
2007-06-23 15:13 ` Oliver Hartkopp
2007-06-23 16:25 ` Patrick McHardy
2007-06-23 16:42 ` Oliver Hartkopp
2007-06-23 17:13 ` Patrick McHardy
2007-07-04 11:37 ` Urs Thuermann
2007-07-04 14:01 ` Patrick McHardy
2007-07-09 11:37 ` Urs Thuermann
2007-07-09 14:18 ` Patrick McHardy
2007-07-09 15:27 ` Oliver Hartkopp
2007-07-11 19:41 ` Oliver Hartkopp
2007-07-11 22:52 ` Patrick McHardy
2007-07-16 6:05 ` Oliver Hartkopp
2007-07-16 8:37 ` David Miller
2007-07-16 13:08 ` Patrick McHardy
2007-07-16 16:27 ` Oliver Hartkopp
2007-07-16 13:07 ` Patrick McHardy
2007-07-16 16:00 ` Oliver Hartkopp
2007-06-23 21:01 ` David Miller
2007-06-23 21:44 ` Oliver Hartkopp
2007-06-23 20:51 ` David Miller
2007-06-23 21:49 ` Oliver Hartkopp
2007-05-16 14:51 [patch 0/7] CAN: Add new PF_CAN protocol family Urs Thuermann
2007-05-16 14:51 ` [patch 5/7] CAN: Add virtual CAN netdevice driver Urs Thuermann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=465DB0B6.109@trash.net \
--to=kaber@trash.net \
--cc=davem@davemloft.net \
--cc=netdev@vger.kernel.org \
--cc=oliver.hartkopp@volkswagen.de \
--cc=tglx@linutronix.de \
--cc=urs.thuermann@volkswagen.de \
--cc=urs@isnogud.escape.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).