Re: PPPoE Modem hangup after random time - how to debug?

Guillaume Nault
2020-05-04T13:01:49Z

On Sun, May 03, 2020 at 12:31:51PM +0200, David Balažic wrote:
> On Wed, 22 Apr 2020 at 19:45, David Balažic <xerces9@gmail.com> wrote:
> >
> > Hi!
> >
> > I have a router running openwrt connected to a GPON ONT, running a
> > PPPoE connection (hw details below).
> >
> > The problem is, that after some random time one to 20 hours, the
> > connection breaks. Then in about a minute it reconnects (successfully,
> > each time).
>
> Mystery solved.
>
> I added a debug output to kernel pppoe.c:
>
> pr_info("pppoe: pppoe_disc_rcv /my patch/ PADT received, sid=%d, SRC:
> %02x:%02x:%02x:%02x:%02x:%02x, DST: %02x:%02x:%02x:%02x:%02x:%02x\n",
> ph->sid,
> eth_hdr(skb)->h_source[0],
> eth_hdr(skb)->h_source[1],
> eth_hdr(skb)->h_source[2],
> eth_hdr(skb)->h_source[3],
> eth_hdr(skb)->h_source[4],
> eth_hdr(skb)->h_source[5],
> eth_hdr(skb)->h_dest[0],
> eth_hdr(skb)->h_dest[1],
> eth_hdr(skb)->h_dest[2],
> eth_hdr(skb)->h_dest[3],
> eth_hdr(skb)->h_dest[4],
> eth_hdr(skb)->h_dest[5]
> );
>
You can use "%pM" for printing MAC addresses. Also, it'd be interesting
to have information about promisc mode:
"dev %s, flags: %#x, promiscuity %u",
dev->name, dev->flags, dev->promiscuity,

> When the problem happens, it prints:
>
> pppoe: pppoe_disc_rcv /my patch/ PADT received, sid=1, SRC:
> a4:7b:2c:9e:c7:44, DST: 44:4e:6d:fd:c7:39
>
> My HWaddr is c4:xxxxxx:ed
>
> After that, the pppoe module closes the connection.
>
> So the problem was as already suspected, that pppoe does not properly
> check if the received PADT packet belongs to its ppp session.
>
Given the logs you posted previously, it looks like the frame was
accepted because your interface was in promiscuous mode.

> I'll patch it up soon (if someone does not beat me to it).
>
Please verify that the problem still happens when the device is _not_
in promisc mode.

> Regards,
> David
>