HomeFreeBSD

cxgbe(4): Merge netmap support from the ncxgbe/ncxl interfaces to the

Description

cxgbe(4): Merge netmap support from the ncxgbe/ncxl interfaces to the
vcxgbe/vcxl interfaces and retire the 'n' interfaces. The main
cxgbe/cxl interfaces and tunables related to them are not affected by
any of this and will continue to operate as usual.

The driver used to create an additional 'n' interface for every
cxgbe/cxl interface if "device netmap" was in the kernel. The 'n'
interface shared the wire with the main interface but was otherwise
autonomous (with its own MAC address, etc.). It did not have normal
tx/rx but had a specialized netmap-only data path. r291665 added
another set of virtual interfaces (the 'v' interfaces) to the driver.
These had normal tx/rx but no netmap support.

This revision consolidates the features of both the interfaces into the
'v' interface which now has a normal data path, TOE support, and native
netmap support. The 'v' interfaces need to be created explicitly with
the hw.cxgbe.num_vis tunable. This means "device netmap" will not
result in the automatic creation of any virtual interfaces.

The following tunables can be used to override the default number of
queues allocated for each 'v' interface. nofld* = 0 will disable TOE on
the virtual interface and nnm* = 0 to will disable native netmap
support.

number of normal NIC queues

hw.cxgbe.ntxq_vi
hw.cxgbe.nrxq_vi

number of TOE queues

hw.cxgbe.nofldtxq_vi
hw.cxgbe.nofldrxq_vi

number of netmap queues

hw.cxgbe.nnmtxq_vi
hw.cxgbe.nnmrxq_vi

hw.cxgbe.nnm{t,r}xq{10,1}g tunables have been removed.

  • tl;dr version ---

The workflow for netmap on cxgbe starting with FreeBSD 11 is:

  1. "device netmap" in the kernel config.
  2. "hw.cxgbe.num_vis=2" in loader.conf. num_vis > 2 is ok too, you'll

end up with multiple autonomous netmap-capable interfaces for every
port.

  1. "dmesg | grep vcxl | grep netmap" to verify that the interface has

netmap queues.

  1. Use any of the 'v' interfaces for netmap. pkt-gen -i vcxl<n>... .

One major improvement is that the netmap interface has a normal data
path as expected.

  1. Just ignore the cxl interfaces if you want to use netmap only. No

need to bring them up. The vcxl interfaces are completely independent

and everything should just work.

Approved by: re@ (gjb@)
Relnotes: Yes
Sponsored by: Chelsio Communications

Details

Provenance
npAuthored on
Parents
rS302109: MFC 299927,300101,300102,300105,300107
Branches
Unknown
Tags
Unknown