svn commit: r303205 - in head/sys: conf dev/cxgbe modules/cxgbe/if_cxgbe

John Baldwin jhb at freebsd.org
Fri Jul 22 23:22:23 UTC 2016


On Friday, July 22, 2016 10:46:41 PM John Baldwin wrote:
> Author: jhb
> Date: Fri Jul 22 22:46:41 2016
> New Revision: 303205
> URL: https://svnweb.freebsd.org/changeset/base/303205
> 
> Log:
>   Add a driver to create VF devices on Chelsio T4/T5 NICs.
>   
>   Chelsio NICs are a bit unique compared to some other NICs in that they
>   expose different functionality on different physical functions.  In
>   particular, PF4 is used to manage the NIC interfaces ('t4nex' and 't5nex').
>   However, PF4 is not able to create VF devices.  Instead, VFs are only
>   supported by physical functions 0 through 3.  This commit adds 't4iov'
>   and 't5iov' drivers that attach to PF0-3.
>   
>   One extra wrinkle is that the iov devices cannot enable SR-IOV until the
>   firwmare has been initialized by the main PF4 driver.  To handle this
>   case, a new t4_if kobj interface has been added to permit cross-calls
>   between the PF drivers.  The PF4 driver notifies sibling drivers when it
>   is fully attached.  It also requests sibling drivers to detach before it
>   detaches.  Sibling drivers query the PF4 driver during their attach
>   routine to see if it is attached.  If not, the sibling drivers defer
>   their attach actions until the PF4 driver informs them it is attached.
>   
>   VF devices are associated with a single port on the NIC.  VF devices
>   created from PF0 are associated with the first port on the NIC, VFs
>   from PF1 are associated with the second port, etc.  VF devices can
>   only be created from a PF device that has an associated port.  Thus,
>   on a 2-port card, VFs are only supported on PF0 and PF1.
>   
>   Reviewed by:	np (earlier versions)
>   MFC after:	1 month
>   Sponsored by:	Chelsio Communications

Note that this only permits the creation of VFs, it does not include a driver
for these VFs.  I have a mostly working driver, but it is against an older
HEAD and has to be rebased.  In addition, Linux VF drivers will not work
without some hacks to the FreeBSD cxgbe/cxl driver because the Linux VF driver
only wants page-sized buffers whereas the FreeBSD drivers use 2k buffers
(since that is an mbuf cluster).

-- 
John Baldwin


More information about the svn-src-head mailing list