Just tested the new ppp module... And it seems to work fine. In the first "scerario" I didn't see any difference with applied attached diffs... (no problems, no matter with or without patch) 2'nd scenario with loadable module: I compiled kernel without ppp, then loaded this ppp module... and also-there is no problems(at least in my case). If I can provide any usefull details - feel free to let me know.:)
On Fri, Aug 05, 2016 at 10:18:25PM +0000, Mike wrote: > Yes, I am ready to test it today! I think I will be able to wrote about > the results tommorrow... But I have a question about module - I hope, it > doesn't require to build all modules to test this one? (If it requires - > it's not that bad, anyway...) > > On Fri, Aug 05, 2016 at 05:17:48PM +0800, Paul Goyette wrote: > > Folks, > > > > I've been working on turning the current ppp code (enabled with OPTIONS PPP > > in your config file) into a loadable module, and I'd like to find a few > > folks to help test. > > > > I'd really like testing for two scenarios: > > > > * built-in module (same as current kernels), just using the > > attached diffs; this will verify that I haven't broken any > > current functionality > > > > * loadable module - this will require building a custom kernel > > with the 'OPTIONS PPP' removed, and an install of the new > > kernel _plus_ the new loadable image > > > > /stand/$ARCH/7.99.xx/modules/ppp/ppp.kmod > > > > You'll need to 'modload ppp' before trying to use it. > > > > (I fully expect that this second scenario will fail in some > > obscure manner; I'd hope to get a complete traceback and/or > > detailed description of what you were doing when it failed.) > > > > > > There are three files attached. The first two need to be placed in a new > > $SRCDIR/sys/modules/ppp directory, while the third file is just a set of > > diffs that need to be applied. > > > > Any volunteers? > > > > > > > > +------------------+--------------------------+------------------------+ > > | Paul Goyette | PGP Key fingerprint: | E-mail addresses: | > > | (Retired) | FA29 0E3B 35AF E8AE 6651 | paul at whooppee.com | > > | Kernel Developer | 0786 F758 55DE 53BA 7731 | pgoyette at netbsd.org | > > +------------------+--------------------------+------------------------+ > > > # $NetBSD: cgd.ioconf,v 1.1 2015/08/20 11:05:00 christos Exp $ > > > > ioconf ppp > > > > include "conf/files" > > > > pseudo-device ppp > > > # $NetBSD$ > > > > .include "../Makefile.inc" > > > > .PATH: ${S}/net > > > > KMOD= ppp > > IOCONF= ppp.ioconf > > SRCS= if_ppp.c ppp_tty.c > > > > CPPFLAGS+= -DINET > > CPPFLAGS+= -DPPP_FILTER > > CPPFLAGS+= -DPPP_DEFLATE > > CPPFLAGS+= -DPPP_BSDCOMP > > > > .include <bsd.kmodule.mk> > > > Index: distrib/sets/lists/modules/mi > > =================================================================== > > RCS file: /cvsroot/src/distrib/sets/lists/modules/mi,v > > retrieving revision 1.87 > > diff -u -p -r1.87 mi > > --- distrib/sets/lists/modules/mi 4 Aug 2016 23:54:45 -0000 1.87 > > +++ distrib/sets/lists/modules/mi 5 Aug 2016 08:35:12 -0000 > > @@ -198,6 +198,8 @@ > > ./@MODULEDIR@/pf/pf.kmod base-kernel-modules kmod > > ./@MODULEDIR@/portal base-obsolete > > obsolete > > ./@MODULEDIR@/portal/portal.kmod base-obsolete obsolete > > +./@MODULEDIR@/ppp base-kernel-modules kmod > > +./@MODULEDIR@/ppp/ppp.kmod base-kernel-modules kmod > > ./@MODULEDIR@/ppp_bsdcomp base-kernel-modules kmod > > ./@MODULEDIR@/ppp_bsdcomp/ppp_bsdcomp.kmod base-kernel-modules kmod > > ./@MODULEDIR@/ppp_deflate base-kernel-modules kmod > > Index: sys/modules/Makefile > > =================================================================== > > RCS file: /cvsroot/src/sys/modules/Makefile,v > > retrieving revision 1.168 > > diff -u -p -r1.168 Makefile > > --- sys/modules/Makefile 4 Aug 2016 23:53:47 -0000 1.168 > > +++ sys/modules/Makefile 5 Aug 2016 08:49:06 -0000 > > @@ -79,6 +79,7 @@ SUBDIR+= opencrypto > > SUBDIR+= overlay > > SUBDIR+= pciverbose > > SUBDIR+= pf > > +SUBDIR+= ppp > > SUBDIR+= ppp_bsdcomp > > SUBDIR+= ppp_deflate > > SUBDIR+= procfs > > Index: sys/net/bsd-comp.c > > =================================================================== > > RCS file: /cvsroot/src/sys/net/bsd-comp.c,v > > retrieving revision 1.20 > > diff -u -p -r1.20 bsd-comp.c > > --- sys/net/bsd-comp.c 29 Nov 2008 23:15:20 -0000 1.20 > > +++ sys/net/bsd-comp.c 5 Aug 2016 08:56:54 -0000 > > @@ -1090,7 +1090,7 @@ bsd_decompress(void *state, struct mbuf > > #endif /* DEBUG */ > > } > > > > -MODULE(MODULE_CLASS_MISC, ppp_bsdcomp, NULL); > > +MODULE(MODULE_CLASS_MISC, ppp_bsdcomp, "ppp"); > > > > static int > > ppp_bsdcomp_modcmd(modcmd_t cmd, void *arg) > > Index: sys/net/if_ppp.c > > =================================================================== > > RCS file: /cvsroot/src/sys/net/if_ppp.c,v > > retrieving revision 1.152 > > diff -u -p -r1.152 if_ppp.c > > --- sys/net/if_ppp.c 10 Jun 2016 13:27:16 -0000 1.152 > > +++ sys/net/if_ppp.c 5 Aug 2016 08:56:54 -0000 > > @@ -104,9 +104,8 @@ > > #include <sys/cdefs.h> > > __KERNEL_RCSID(0, "$NetBSD: if_ppp.c,v 1.152 2016/06/10 13:27:16 ozaki-r > > Exp $"); > > > > -#include "ppp.h" > > - > > #ifdef _KERNEL_OPT > > +#include "ppp.h" > > #include "opt_inet.h" > > #include "opt_gateway.h" > > #include "opt_ppp.h" > > @@ -133,6 +132,8 @@ __KERNEL_RCSID(0, "$NetBSD: if_ppp.c,v 1 > > #include <sys/kauth.h> > > #include <sys/intr.h> > > #include <sys/socketvar.h> > > +#include <sys/device.h> > > +#include <sys/module.h> > > > > #include <net/if.h> > > #include <net/if_types.h> > > @@ -181,6 +182,8 @@ static void ppp_ifstart(struct ifnet *if > > > > static void pppintr(void *); > > > > +extern struct linesw ppp_disc; > > + > > /* > > * Some useful mbuf macros not in mbuf.h. > > */ > > @@ -214,11 +217,11 @@ struct if_clone ppp_cloner = > > IF_CLONE_INITIALIZER("ppp", ppp_clone_create, ppp_clone_destroy); > > > > #ifdef PPP_COMPRESS > > -ONCE_DECL(ppp_compressor_mtx_init); > > static LIST_HEAD(, compressor) ppp_compressors = { NULL }; > > static kmutex_t ppp_compressors_mtx; > > > > static int ppp_compressor_init(void); > > +static int ppp_compressor_destroy(void); > > static struct compressor *ppp_get_compressor(uint8_t); > > static void ppp_compressor_rele(struct compressor *); > > #endif /* PPP_COMPRESS */ > > @@ -230,7 +233,16 @@ static void ppp_compressor_rele(struct c > > void > > pppattach(int n __unused) > > { > > - extern struct linesw ppp_disc; > > + > > + /* > > + * Nothing to do here, initialization is handled by the > > + * module initialization code in pppinit() below). > > + */ > > +} > > + > > +static void > > +pppinit(void) > > +{ > > > > if (ttyldisc_attach(&ppp_disc) != 0) > > panic("pppattach"); > > @@ -238,7 +250,18 @@ pppattach(int n __unused) > > mutex_init(&ppp_list_lock, MUTEX_DEFAULT, IPL_NONE); > > LIST_INIT(&ppp_softc_list); > > if_clone_attach(&ppp_cloner); > > - RUN_ONCE(&ppp_compressor_mtx_init, ppp_compressor_init); > > +} > > + > > +static int > > +pppdetach(void) > > +{ > > + int error; > > + > > + if (!LIST_EMPTY(&ppp_softc_list)) > > + error = EBUSY; > > + if (error == 0) > > + error = ttyldisc_detach(&ppp_disc); > > + return error; > > } > > > > static struct ppp_softc * > > @@ -1798,6 +1821,14 @@ ppp_compressor_init(void) > > return 0; > > } > > > > +static int > > +ppp_compressor_destroy(void) > > +{ > > + > > + mutex_destroy(&ppp_compressors_mtx); > > + return 0; > > +} > > + > > static void > > ppp_compressor_rele(struct compressor *cp) > > { > > @@ -1865,8 +1896,6 @@ ppp_register_compressor(struct compresso > > int error = 0; > > size_t i; > > > > - RUN_ONCE(&ppp_compressor_mtx_init, ppp_compressor_init); > > - > > mutex_enter(&ppp_compressors_mtx); > > for (i = 0; i < ncomp; i++) { > > if (ppp_get_compressor_noload(pc[i].compress_proto, > > @@ -1907,3 +1936,74 @@ ppp_unregister_compressor(struct compres > > > > return error; > > } > > + > > +/* > > + * Module infrastructure > > + */ > > + > > +#ifdef PPP_FILTER > > +#define PPP_DEP "bpf_filter," > > +#else > > +#define PPP_DEP > > +#endif > > + > > +MODULE(MODULE_CLASS_DRIVER, ppp, PPP_DEP "slcompress"); > > + > > +#ifdef _MODULE > > +CFDRIVER_DECL(ppp, DV_IFNET, NULL); > > +#endif > > + > > +static int > > +ppp_modcmd(modcmd_t cmd, void *arg) > > +{ > > + int error = 0; > > + > > + switch (cmd) { > > + case MODULE_CMD_INIT: > > + /* Init the compressor sub-sub-system */ > > + ppp_compressor_init(); > > + > > +#ifdef _MODULE > > + error = config_cfdriver_attach(&ppp_cd); > > + if (error) { > > + aprint_error("%s: unable to register cfdriver for" > > + "%s, error %d\n", __func__, ppp_cd.cd_name, error); > > + ppp_compressor_destroy(); > > + break; > > + } > > + > > +#endif > > + /* Init the unit list and line discipline stuff */ > > + pppinit(); > > + break; > > + > > + case MODULE_CMD_FINI: > > + /* > > + * Make sure it's ok to detach - no units left, and > > + * line discipline is removed > > + */ > > + error = pppdetach(); > > + if (error != 0) > > + break; > > +#ifdef _MODULE > > + /* Remove device from autoconf database */ > > + error = config_cfdriver_detach(&ppp_cd); > > + if (error) { > > + aprint_error("%s: failed to detach %s cfdriver, " > > + "error %d\n", __func__, ppp_cd.cd_name, error); > > + break; > > + } > > +#endif > > + ppp_compressor_destroy(); > > + break; > > + > > + case MODULE_CMD_STAT: > > + error = ENOTTY; > > + break; > > + default: > > + error = ENOTTY; > > + break; > > + } > > + > > + return error; > > +} > > Index: sys/net/ppp-deflate.c > > =================================================================== > > RCS file: /cvsroot/src/sys/net/ppp-deflate.c,v > > retrieving revision 1.21 > > diff -u -p -r1.21 ppp-deflate.c > > --- sys/net/ppp-deflate.c 5 Apr 2016 23:44:05 -0000 1.21 > > +++ sys/net/ppp-deflate.c 5 Aug 2016 08:56:54 -0000 > > @@ -664,7 +664,7 @@ z_incomp(void *arg, struct mbuf *mi) > > state->stats.unc_packets++; > > } > > > > -MODULE(MODULE_CLASS_MISC, ppp_deflate, "zlib"); > > +MODULE(MODULE_CLASS_MISC, ppp_deflate, "zlib,ppp"); > > > > static int > > ppp_deflate_modcmd(modcmd_t cmd, void *arg) > > Index: sys/net/ppp_tty.c > > =================================================================== > > RCS file: /cvsroot/src/sys/net/ppp_tty.c,v > > retrieving revision 1.61 > > diff -u -p -r1.61 ppp_tty.c > > --- sys/net/ppp_tty.c 20 Jun 2016 06:46:37 -0000 1.61 > > +++ sys/net/ppp_tty.c 5 Aug 2016 08:56:54 -0000 > > @@ -95,9 +95,8 @@ > > #include <sys/cdefs.h> > > __KERNEL_RCSID(0, "$NetBSD: ppp_tty.c,v 1.61 2016/06/20 06:46:37 knakahara > > Exp $"); > > > > -#include "ppp.h" > > - > > #ifdef _KERNEL_OPT > > +#include "ppp.h" > > #include "opt_ppp.h" > > #endif > > #define VJC >