Re: [PATCH 2.6] Patch to hook up PPP to simple class sysfs support

From: Hanna Linder
Date: Thu Mar 04 2004 - 21:07:23 EST




Thanks Chris. Your changes fixed the reload oops I was seeing.

root@w-hlinder2 root]# modprobe ppp_generic
[root@w-hlinder2 root]# tree /sys/class/ppp
/sys/class/ppp
`-- ppp
`-- dev

1 directory, 1 file
[root@w-hlinder2 root]# rmmod ppp_generic
[root@w-hlinder2 root]# tree /sys/class/ppp
/sys/class/ppp [error opening dir]

0 directories, 0 files
[root@w-hlinder2 root]# modprobe ppp_generic
[root@w-hlinder2 root]# tree /sys/class/ppp
/sys/class/ppp
`-- ppp
`-- dev

1 directory, 1 file

Please consider the patch below for inclusion.

Thanks.


--On Wednesday, March 03, 2004 07:55:39 PM -0800 Chris Wright <chrisw@xxxxxxxx> wrote:

>
> something like below.
>
> thanks,
> -chris
>
> ===== drivers/net/ppp_generic.c 1.43 vs edited =====
> --- 1.43/drivers/net/ppp_generic.c Wed Feb 18 19:42:37 2004
> +++ edited/drivers/net/ppp_generic.c Wed Mar 3 19:08:24 2004
> @@ -45,6 +45,7 @@
> #include <linux/smp_lock.h>
> #include <linux/rwsem.h>
> #include <linux/stddef.h>
> +#include <linux/device.h>
> #include <net/slhc_vj.h>
> #include <asm/atomic.h>
>
> @@ -271,6 +272,8 @@
> static int ppp_disconnect_channel(struct channel *pch);
> static void ppp_destroy_channel(struct channel *pch);
>
> +static struct class_simple *ppp_class;
> +
> /* Translates a PPP protocol number to a NP index (NP == network protocol) */
> static inline int proto_to_npindex(int proto)
> {
> @@ -804,15 +807,29 @@
> printk(KERN_INFO "PPP generic driver version " PPP_VERSION "\n");
> err = register_chrdev(PPP_MAJOR, "ppp", &ppp_device_fops);
> if (!err) {
> + ppp_class = class_simple_create(THIS_MODULE, "ppp");
> + if (IS_ERR(ppp_class)) {
> + err = PTR_ERR(ppp_class);
> + goto out_chrdev;
> + }
> + class_simple_device_add(ppp_class, MKDEV(PPP_MAJOR, 0), NULL, "ppp");
> err = devfs_mk_cdev(MKDEV(PPP_MAJOR, 0),
> S_IFCHR|S_IRUSR|S_IWUSR, "ppp");
> if (err)
> - unregister_chrdev(PPP_MAJOR, "ppp");
> + goto out_class;
> }
>
> +out:
> if (err)
> printk(KERN_ERR "failed to register PPP device (%d)\n", err);
> return err;
> +
> +out_class:
> + class_simple_device_remove(MKDEV(PPP_MAJOR,0));
> + class_simple_destroy(ppp_class);
> +out_chrdev:
> + unregister_chrdev(PPP_MAJOR, "ppp");
> + goto out;
> }
>
> /*
> @@ -2545,6 +2562,8 @@
> if (unregister_chrdev(PPP_MAJOR, "ppp") != 0)
> printk(KERN_ERR "PPP: failed to unregister PPP device\n");
> devfs_remove("ppp");
> + class_simple_device_remove(MKDEV(PPP_MAJOR, 0));
> + class_simple_destroy(ppp_class);
> }
>
> /*
>


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/