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

Reply via email to