Vlan support in sk(4) driver



  • hi there,
    is there a vlan support in sk(4) Marvell 88E1011 Gigabit PHY driver?
    all i can find is that

    The following interfaces support long frames for vlan natively: bfe(4), cas(4), dc(4), fwe(4), fxp(4), gem(4), hme(4), le(4), nfe(4), nve(4), rl(4), sf(4), sis(4), sk(4), ste(4), tl(4), tx(4), vr(4), and xl(4)

    but when i try to connect unifi ap with some vlans to the interface vlans don't work



  • bump?



  • To set VLAN tagging, go to Interfaces > (assign) > VLANS
    You'll see a note that says:

    Not all drivers/NICs support 802.1Q VLAN tagging properly. On cards that do not explicitly support it, VLAN tagging will still work, but the reduced MTU may cause problems. See the pfSense handbook for information on supported cards.

    pfsense is based on FreeBSD, so a quick search for "sk FreeBSD" pulls up the man page for sk interfaces which is useless unless you compare it to something else. On my watchguard x750e I have sk and msk interfaces, so lets see what we can find about msk interfaces. Here is an excerpt from the man page for msk(4):

         The msk device driver provides support for	various	NICs based on the Mar-
         vell/SysKonnect Yukon II Gigabit Ethernet controller chip.
    
         All NICs supported	by the msk driver have TCP/UDP/IP checksum offload for
         transmit, TCP segmentation	offload	(TSO), hardware	VLAN tag strip-
         ping/insertion features and an interrupt moderation mechanism as well as
         a 64-bit multicast	hash filter.  The Yukon	II supports TBI	(ten bit
         interface)	and GMII transceivers, which means it can be used with either
         copper or 1000baseX fiber applications.
    
         The Yukon II also supports	Jumbo Frames (up to 9022 bytes), which can be
         configured	via the	interface MTU setting.	Selecting an MTU larger	than
         1500 bytes	with the ifconfig(8) utility configures	the adapter to receive
         and transmit Jumbo	Frames.
    
    

    The sk driver has no such feature, and is instead handled by the FreeBSD vlan(4) driver. I'm assuming that's what you were looking for?

    Also, since FreeBSD is a posix compliant operating system, one can run *nix shell commands like "ifconfig sk0" to see what the adapter supports according to the driver loaded. I get to it by clicking on Diagnostics > Command Prompt and I see this on my firewall:

    $ ifconfig sk1
    sk1: flags=8843 <up,broadcast,running,simplex,multicast>metric 0 mtu 1500
    	options=8000b <rxcsum,txcsum,vlan_mtu,linkstate>ether 00:90:7f:3f:0a:8c
    	inet6 fe80::290:7fff:fe3f:a8c%sk1 prefixlen 64 scopeid 0x6 
    	inet 64.233.160.1 netmask 0xffffe000 broadcast 255.255.255.255 
    	nd6 options=21 <performnud,auto_linklocal>media: Ethernet autoselect (1000baseT <full-duplex>)
    	status: active</full-duplex></performnud,auto_linklocal></rxcsum,txcsum,vlan_mtu,linkstate></up,broadcast,running,simplex,multicast> 
    ```Compared to the msk interface:
    

    $ ifconfig msk0
    msk0: flags=8943 <up,broadcast,running,promisc,simplex,multicast>metric 0 mtu 1500
    options=c001b <rxcsum,txcsum,vlan_mtu,vlan_hwtagging,vlan_hwtso,linkstate>ether 00:90:7f:3f:0a:91
    inet6 fe80::290:7fff:fe3f:a91%msk0 prefixlen 64 scopeid 0x1
    inet 10.0.0.1 netmask 0xfffffc00 broadcast 10.0.3.255
    nd6 options=21 <performnud,auto_linklocal>media: Ethernet autoselect (1000baseT <full-duplex,flowcontrol,rxpause,txpause>)
    status: active</full-duplex,flowcontrol,rxpause,txpause></performnud,auto_linklocal></rxcsum,txcsum,vlan_mtu,vlan_hwtagging,vlan_hwtso,linkstate></up,broadcast,running,promisc,simplex,multicast>

    It looks like hardware vlan tagging is supported by the msk(4) driver and not the sk(4) driver.


  • thanks for your reply fibrewire
    i've been using this device (http://www.portwell.com/pdf/ca/NAD-2081.pdf) with pfsense for few years now and i know for sure i had vlans configured on it with the older pfsense version. back then i didn't even checked if sk driver supports vlans. i just configured it because my provider required it. and it worked.
    now i'm using this box in a different setting with newer pfsense and was going to use vlans on one of the interfaces to run corporate and free wifi via unifi ap. it didn't work.  :-\



  • According to the pdf it has 4 switching ports and 4 expansion ports via pci32 interface. Have you tried using the switched ports in place of the expansion ports or vice-versa? I would look under Interfaces > (assign) and see if there are four or eight sk interfaces available. If only four then you have a different type of interface available that may support hardware vlans.



  • i have the one with 4 onboard ports.
    here is how pfsense sees them

    
    skc0: <marvell gigabit="" ethernet="">port 0xd000-0xd0ff mem 0xec02c000-0xec02ffff irq 12 at device 0.0 on pci1
    skc0: Marvell Yukon Lite Gigabit Ethernet rev. (0x9)
    sk0: <marvell semiconductor,="" inc.="" yukon="">on skc0
    sk0: Ethernet address: xx:xx:xx:xx:xx:xx
    miibus0: <mii bus="">on sk0
    e1000phy0: <marvell 88e1011="" gigabit="" phy="">PHY 0 on miibus0
    e1000phy0:  none, 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-master, 1000baseT-FDX, 1000baseT-FDX-master, auto
    skc1: <marvell gigabit="" ethernet="">port 0xd400-0xd4ff mem 0xec020000-0xec023fff irq 10 at device 1.0 on pci1
    skc1: Marvell Yukon Lite Gigabit Ethernet rev. (0x9)
    sk1: <marvell semiconductor,="" inc.="" yukon="">on skc1
    sk1: Ethernet address: xx:xx:xx:xx:xx:xx
    miibus1: <mii bus="">on sk1
    e1000phy1: <marvell 88e1011="" gigabit="" phy="">PHY 0 on miibus1
    e1000phy1:  none, 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-master, 1000baseT-FDX, 1000baseT-FDX-master, auto
    skc2: <marvell gigabit="" ethernet="">port 0xd800-0xd8ff mem 0xec024000-0xec027fff irq 11 at device 2.0 on pci1
    skc2: Marvell Yukon Lite Gigabit Ethernet rev. (0x9)
    sk2: <marvell semiconductor,="" inc.="" yukon="">on skc2
    sk2: Ethernet address: xx:xx:xx:xx:xx:xx
    miibus2: <mii bus="">on sk2
    e1000phy2: <marvell 88e1011="" gigabit="" phy="">PHY 0 on miibus2
    e1000phy2:  none, 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-master, 1000baseT-FDX, 1000baseT-FDX-master, auto
    skc3: <marvell gigabit="" ethernet="">port 0xdc00-0xdcff mem 0xec028000-0xec02bfff irq 5 at device 3.0 on pci1
    skc3: Marvell Yukon Lite Gigabit Ethernet rev. (0x9)
    sk3: <marvell semiconductor,="" inc.="" yukon="">on skc3
    sk3: Ethernet address: xx:xx:xx:xx:xx:xx
    miibus3: <mii bus="">on sk3
    e1000phy3: <marvell 88e1011="" gigabit="" phy="">PHY 0 on miibus3
    e1000phy3:  none, 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-master, 1000baseT-FDX, 1000baseT-FDX-master, auto</marvell></mii></marvell></marvell></marvell></mii></marvell></marvell></marvell></mii></marvell></marvell></marvell></mii></marvell></marvell>