freebsd-dev/sys/dev/cxgbe
Navdeep Parhar 62291463de 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.
3) "dmesg | grep vcxl | grep netmap" to verify that the interface has
netmap queues.
4) 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.
5) 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
2016-06-23 02:53:00 +00:00
..
common sys/dev: minor spelling fixes. 2016-05-03 03:41:25 +00:00
cxgbei Reduce the priority of cxgbei(4) driver, so it doesn't get chosen 2016-06-01 12:04:04 +00:00
firmware cxgbe(4): Update T5 and T4 firmwares to 1.15.37.0. 2016-05-13 17:38:59 +00:00
iw_cxgbe iw_cxgbe: Make sure that send_abort results in a TCP RST and not a FIN. 2016-06-14 21:02:36 +00:00
tom Account for AIO socket operations in thread/process resource usage. 2016-06-21 22:19:06 +00:00
adapter.h cxgbe(4): Merge netmap support from the ncxgbe/ncxl interfaces to the 2016-06-23 02:53:00 +00:00
if_cxl.c
offload.h Use DDP to implement zerocopy TCP receive with aio_read(). 2016-05-07 00:33:35 +00:00
osdep.h cxgbe(4): Remove __devinit and SPEED_<foo> as part of catch up with 2016-03-08 08:13:37 +00:00
t4_ioctl.h cxgbe(4): Create a reusable struct type for scheduling class parameters. 2016-06-06 20:42:46 +00:00
t4_l2t.c sys/dev: minor spelling fixes. 2016-05-03 03:41:25 +00:00
t4_l2t.h
t4_main.c cxgbe(4): Merge netmap support from the ncxgbe/ncxl interfaces to the 2016-06-23 02:53:00 +00:00
t4_mp_ring.c sys/dev: minor spelling fixes. 2016-05-03 03:41:25 +00:00
t4_mp_ring.h
t4_netmap.c cxgbe(4): Merge netmap support from the ncxgbe/ncxl interfaces to the 2016-06-23 02:53:00 +00:00
t4_sge.c cxgbe(4): Merge netmap support from the ncxgbe/ncxl interfaces to the 2016-06-23 02:53:00 +00:00
t4_tracer.c