On 29/05/2016 21:53, Maurice Janssen wrote: > Hi, > > I'm trying to replace a PC Engines Alix board with an APU 2c4 board, but > I'm having some issues to get it up and running. > I have a fiber connection and my ISP requires a PPPoE connection over > VLAN 6. > > With the old setup, this works like a charm. > With the new setup, I can't get the PPPoE connection to work. > When I use tcpdump on the ethernet interface, I can see the PADI packets > leave the system on VLAN6, but there is no answer at all. OpenBSD keeps > sending a PADI every minute or so, to no avail. > > I have tried to get it running with 5.9-stable (amd64), with a recent > snapshot (amd64), with 5.9-stable (i386, as that works fine on the > Alix), but none of them work. > > When I have a working connection on the old router and then quickly move > the cable (the one that is connected to the fiber/copper converter) to > the new router, I can see some packets (belonging to the 'old' PPPoE > connection) arriving on the new router (with tcpdump). So at the > ethernet level the link is OK. > > Does anyone have a clue what could be causing this? Some VLAN-tagging > issue with the I210 NIC on the APU? Does anyone have a similar setup > working? > > Thanks a lot in advance, > Maurice >
Hi I have a similar setup. For me the problem was that the provider did not accept vlan packages with a prio value other than 0. Unfortunately, if that's the problem for you too, it can't be fixed by configuration. You will have to compile a new kernel. The following patch will make the prio field always be 0, that solved it for me. Index: sys/net/if_vlan.c =================================================================== RCS file: /cvs/src/sys/net/if_vlan.c,v retrieving revision 1.151 diff -u -p -r1.151 if_vlan.c --- sys/net/if_vlan.c 13 Jan 2016 03:18:26 -0000 1.151 +++ sys/net/if_vlan.c 30 May 2016 05:22:08 -0000 @@ -270,8 +270,7 @@ vlan_start(struct ifnet *ifp) */ } else if ((p->if_capabilities & IFCAP_VLAN_HWTAGGING) && (ifv->ifv_type == ETHERTYPE_VLAN)) { - m->m_pkthdr.ether_vtag = ifv->ifv_tag + - (prio << EVL_PRIO_BITS); + m->m_pkthdr.ether_vtag = ifv->ifv_tag; m->m_flags |= M_VLANTAG; } else { struct ether_vlan_header evh; @@ -279,8 +278,7 @@ vlan_start(struct ifnet *ifp) m_copydata(m, 0, ETHER_HDR_LEN, (caddr_t)&evh); evh.evl_proto = evh.evl_encap_proto; evh.evl_encap_proto = htons(ifv->ifv_type); - evh.evl_tag = htons(ifv->ifv_tag + - (prio << EVL_PRIO_BITS)); + evh.evl_tag = htons(ifv->ifv_tag); m_adj(m, ETHER_HDR_LEN); M_PREPEND(m, sizeof(evh), M_DONTWAIT); if (m == NULL) { Daniel