From 4bd2c6a20d91b03499ce99e3b00248653811e8da Mon Sep 17 00:00:00 2001 From: Luiz Otavio O Souza Date: Thu, 3 Jul 2014 20:16:48 +0000 Subject: [PATCH] Properly advertise that if_arge can handle long frames (if_arge is set to handle packets up to 1536 bytes) This fixes the need to frag that could happen when using vlans on top of if_arge (which is a common case for the use the switch ports as individual NICs). Previously to this commit any vlan setup with if_arge as parent would have the MTU of the parent interface reduced by the size of dot1q header (4 bytes). Tested on TP-Link 1043ND (where the WAN port is just a switch port setup to tag packets in a different VLAN than the LAN ports). Reported and tested by: Harm Weites (harm at weites.com) --- sys/mips/atheros/if_arge.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sys/mips/atheros/if_arge.c b/sys/mips/atheros/if_arge.c index f4ead993004..85617387f5d 100644 --- a/sys/mips/atheros/if_arge.c +++ b/sys/mips/atheros/if_arge.c @@ -703,6 +703,9 @@ arge_attach(device_t dev) ifp->if_snd.ifq_maxlen = ifqmaxlen; IFQ_SET_READY(&ifp->if_snd); + /* Tell the upper layer(s) we support long frames. */ + ifp->if_capabilities |= IFCAP_VLAN_MTU; + ifp->if_capenable = ifp->if_capabilities; #ifdef DEVICE_POLLING ifp->if_capabilities |= IFCAP_POLLING;