On Tue, Dec 15, 2015 at 10:50:05AM -0600, Dan Williams wrote: > On Tue, 2015-12-15 at 17:06 +0100, Guillaume Nault wrote: > > Kernel space shouldn't handle PADT packets since PADT belongs to > > PPPoE's control plane. > > With "handle_padt" module option, user space can now decide to avoid > > kernel interpretation of PADT packets and be responsible for session > > disconnection. > > In general, module options like this kinda suck. How about a new PPPoE > ioctl so the option can be toggled for a given socket/session instead? > Then at least you're not locked into a specific PPPoE implementation > for all sessions on the machine. > I've considered this approach too, but by using per session option, we still have to register pppoed_ptype in pppoe_init() and thus call pppoe_disc_recv() for any ETH_P_PPP_DISC frame, just in case a session needs kernel space PADT handling. This makes the approach much less interesting IMO, hence the original choice for module wide behaviour. On the other hand, I understand the need for minimising module options. Thinking a bit more about it, we could drop dev_add_pack() from pppoe_init() and let pppoe_connect() register ETH_P_PPP_DISC when necessary. We could even do it per device, as pppoe_connect() knows the lower device. The problem is to know when unregistering ETH_P_PPP_DISC. We could probably use a reference counter, but I'd prefer to avoid complicating pppoe's connection and disconnection code given that recent history has shown its relative fragility. -- To unsubscribe from this list: send the line "unsubscribe linux-ppp" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html