Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 8 Jan 2011 18:45:37 -1000 (HST)
From:      Jeff Roberson <jroberson@jroberson.net>
To:        freebsd-net@freebsd.org
Subject:   vlan changes to support ipoib
Message-ID:  <alpine.BSF.2.00.1101081838330.1404@desktop>

next in thread | raw e-mail | index | archive | help
Hi Folks,

I have made some changes to vlans and I was wondering if anyone would care 
to review or test.  Especially current vlan users.  The diff is here:

http://people.freebsd.org/~jeff/vlan.diff

I can't say that I like adding all of the function pointers but with vlan 
support available as a loadable module I have little choice.  The new 
functions allow a driver to fetch the virtual interface associated with a 
tag, cache and fetch a cookie pointer in a virtual interface, and fetch 
the tag of a virtual interface.

Additionally, the driver was changed to make no assumptions about address 
size unless the type is IFT_ETHER.  This means for multicast entries we 
store a full sockaddr_dl rather than an ethernet address.  It actually 
simplifies the code here.  I also simplified the VLAN_ARRAY stuff by 
moving it into functions that match the hash names so there aren't ifdef's 
everywhere.  I've tested both hash and array.

I also changed the global mtx to an sx lock so the vlan_config event 
handlers can allocate memory.  The way ipoib works requires a full new 
ipoib softc when a vlan is created.  I didn't want to duplicate the vlan 
config logic so I store that softc using the cookie field and fetch it 
when necessary.  As a result ipoib also doesn't need the weird 
vlan_input() recursion since the packets appear on the correct device as 
they are received.

I am committing this to my infiniband tree immediately but I would like 
some review before I merge to current.

Thanks,
Jeff



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?alpine.BSF.2.00.1101081838330.1404>