Date: Wed, 01 Aug 2001 23:43:44 +0100 From: Brian Somers <brian@Awfulhak.org> To: Julian Elischer <julian@elischer.org> Cc: Thomas Pornin <Thomas.Pornin@ens.fr>, freebsd-net@FreeBSD.ORG, freebsd-alpha@FreeBSD.ORG, Brian Somers <brian@freebsd-services.com>, FreeBSD-gnats-submit@FreeBSD.ORG Subject: kern/27767: (was: PPPoE + Alpha + 32/64 bits) Message-ID: <200108012243.f71Mhi809898@hak.lan.Awfulhak.org> In-Reply-To: Message from Julian Elischer <julian@elischer.org> of "Wed, 01 Aug 2001 13:01:12 PDT." <Pine.BSF.4.21.0108011243090.35786-100000@InterJet.elischer.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi, I think the attached will fix it properly -- but I haven't got an alpha to test with, so can someone do the honours for me ? Ta. > can you send us a patch that works for you? > we can make it #ifdef __Alpha__ or something. > > can you ocnfirm that the outgoing packet has a tag-lenth of '8' > and that teh return tag has a length of '4'? > (maybe 9 and 5) > > sounds like a brain-dead router at the other end.. > > > On Wed, 1 Aug 2001, Thomas Pornin wrote: > > > Hello, > > > > I recently connected my FreeBSD/Alpha (4.3-RELEASE) to an ADSL link > > using an Alcatel Speed Touch Home modem. As is, it was not working; > > after some digging, I found that there is a bug either in the ng_pppoe > > support, or in the modem. > > > > The problem is in the pppoe_finduniq() function. In order to identify > > sessions, the PPPoE code sends a tag with the first packet it sends to > > the modem; this tag is in fact a 64-bit pointer to some data structure > > in kernel space. When a packet of type PADO_CODE or PADS_CODE is > > received, the tag is compared with known pointers. > > > > However, only 32 bits are present in the return tag. So, if the original > > pointer is 0xfffffc00003b3d00, the tag contains only 0x003b3d00, which > > are the first four bytes of data (in little-endian representation). If > > I modify the pppoe_finduniq() function to accept matches on these four > > bytes, the connection is established, and remains fully functionnal > > afterwards. > > > > Some details: The Alpha is little-endian, but the data in the packets is > > big-endian. If the original pointer is 0xfffffc00003b3d00, the rebuilt > > tag from the response packet is actually 0x003b3d0000000000. I do not > > know if the 8-bytes tag is sent correctly, or if the modem is buggy, or > > whatever. > > > > Machine configuration: > > AXPpci33 at 166 MHz, 32 MB ram > > ethernet PCI adapter RealTek 8029 10baseT (ed0) > > modem Alcatel Speed Touch Home (ethernet) > > FreeBSD 4.3-RELEASE (with a small patch to enable ed0) > > > > Feel free to ask for any detail. > > > > > > --Thomas Pornin -- Brian <brian@freebsd-services.com> <brian@Awfulhak.org> http://www.freebsd-services.com/ <brian@[uk.]FreeBSD.org> Don't _EVER_ lose your sense of humour ! <brian@[uk.]OpenBSD.org> Index: ng_pppoe.c =================================================================== RCS file: /home/ncvs/src/sys/netgraph/ng_pppoe.c,v retrieving revision 1.45 diff -u -r1.45 ng_pppoe.c --- ng_pppoe.c 2001/07/25 03:34:07 1.45 +++ ng_pppoe.c 2001/08/01 22:40:15 @@ -868,7 +868,7 @@ struct { struct pppoe_tag hdr; union uniq data; - } uniqtag; + } __attribute ((packed)) uniqtag; /* * kick the state machine into starting up @@ -910,7 +910,7 @@ struct { struct pppoe_tag hdr; union uniq data; - } uniqtag; + } __attribute ((packed)) uniqtag; negp neg = NULL; struct mbuf *m; To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-alpha" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200108012243.f71Mhi809898>