Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
CXGBE(4)	       FreeBSD Kernel Interfaces Manual		      CXGBE(4)

NAME
     cxgbe -- Chelsio T4-, T5-,	and T6-based 100Gb, 40Gb, 25Gb,	10Gb, and 1Gb
     Ethernet adapter driver

SYNOPSIS
     To	compile	this driver into the kernel, place the following lines in your
     kernel configuration file:

	   device cxgbe

     To	load the driver	as a module at boot time, place	the following lines in
     loader.conf(5):

	   t4fw_cfg_load="YES"
	   t5fw_cfg_load="YES"
	   t6fw_cfg_load="YES"
	   if_cxgbe_load="YES"

DESCRIPTION
     The cxgbe driver provides support for PCI Express Ethernet	adapters based
     on	the Chelsio Terminator 4, Terminator 5,	and Terminator 6 ASICs (T4,
     T5, and T6).  The driver supports Jumbo Frames, Transmit/Receive checksum
     offload, TCP segmentation offload (TSO), Large Receive Offload (LRO),
     VLAN tag insertion/extraction, VLAN checksum offload, VLAN	TSO, and
     Receive Side Steering (RSS).  For further hardware	information and	ques-
     tions related to hardware requirements, see http://www.chelsio.com/.

     The cxgbe driver uses different names for devices based on	the associated
     ASIC:

	   ASIC	   Port	Name	Parent Device	 Virtual Interface
	   T4	   cxgbe	t4nex		 vcxgbe
	   T5	   cxl		t5nex		 vcxl
	   T6	   cc		t6nex		 vcc

     Loader tunables with the hw.cxgbe prefix apply to all cards.  The driver
     provides sysctl MIBs for both ports and parent devices using the names
     above.  For example, a T5 adapter provides	port MIBs under	dev.cxl	and
     adapter-wide MIBs under dev.t5nex.	 References to sysctl MIBs in the
     remainder of this page use	dev.<port> for port MIBs and dev.<nexus> for
     adapter-wide MIBs.

     For more information on configuring this device, see ifconfig(8).

HARDWARE
     The cxgbe driver supports 100Gb and 25Gb Ethernet adapters	based on the
     T6	ASIC:

     +o	 Chelsio T6225-CR
     +o	 Chelsio T6225-SO-CR
     +o	 Chelsio T62100-LP-CR
     +o	 Chelsio T62100-SO-CR
     +o	 Chelsio T62100-CR

     The cxgbe driver supports 40Gb, 10Gb and 1Gb Ethernet adapters based on
     the T5 ASIC:

     +o	 Chelsio T580-CR
     +o	 Chelsio T580-LP-CR
     +o	 Chelsio T580-LP-SO-CR
     +o	 Chelsio T560-CR
     +o	 Chelsio T540-CR
     +o	 Chelsio T540-LP-CR
     +o	 Chelsio T522-CR
     +o	 Chelsio T520-LL-CR
     +o	 Chelsio T520-CR
     +o	 Chelsio T520-SO
     +o	 Chelsio T520-BT
     +o	 Chelsio T504-BT

     The cxgbe driver supports 10Gb and	1Gb Ethernet adapters based on the T4
     ASIC:

     +o	 Chelsio T420-CR
     +o	 Chelsio T422-CR
     +o	 Chelsio T440-CR
     +o	 Chelsio T420-BCH
     +o	 Chelsio T440-BCH
     +o	 Chelsio T440-CH
     +o	 Chelsio T420-SO
     +o	 Chelsio T420-CX
     +o	 Chelsio T420-BT
     +o	 Chelsio T404-BT

LOADER TUNABLES
     Tunables can be set at the	loader(8) prompt before	booting	the kernel or
     stored in loader.conf(5).	There are multiple tunables that control the
     number of queues of various types.	 A negative value for such a tunable
     instructs the driver to create up to that many queues if there are	enough
     CPU cores available.

     hw.cxgbe.ntxq10g
	     Number of tx queues used for a 10Gb or higher-speed port.	The
	     default is	16 or the number of CPU	cores in the system, whichever
	     is	less.

     hw.cxgbe.nrxq10g
	     Number of rx queues used for a 10Gb or higher-speed port.	The
	     default is	8 or the number	of CPU cores in	the system, whichever
	     is	less.

     hw.cxgbe.ntxq1g
	     Number of tx queues used for a 1Gb	port.  The default is 4	or the
	     number of CPU cores in the	system,	whichever is less.

     hw.cxgbe.nrxq1g
	     Number of rx queues used for a 1Gb	port.  The default is 2	or the
	     number of CPU cores in the	system,	whichever is less.

     hw.cxgbe.nofldtxq10g
	     Number of TOE tx queues used for a	10Gb or	higher-speed port.
	     The default is 8 or the number of CPU cores in the	system,	which-
	     ever is less.

     hw.cxgbe.nofldrxq10g
	     Number of TOE rx queues used for a	10Gb or	higher-speed port.
	     The default is 2 or the number of CPU cores in the	system,	which-
	     ever is less.

     hw.cxgbe.nofldtxq1g
	     Number of TOE tx queues used for a	1Gb port.  The default is 2 or
	     the number	of CPU cores in	the system, whichever is less.

     hw.cxgbe.nofldrxq1g
	     Number of TOE rx queues used for a	1Gb port.  The default is 1.

     hw.cxgbe.num_vis
	     Number of virtual interfaces (VIs)	created	for each port.	Each
	     virtual interface creates a separate network interface.  The
	     first virtual interface on	each port is required and represents
	     the primary network interface on the port.	 Additional virtual
	     interfaces	on a port are named using the Virtual Interface	name
	     from the table above.  Additional virtual interfaces use a	single
	     pair of queues for	rx and tx as well an additional	pair of	queues
	     for TOE rx	and tx.	 The default is	1.

     hw.cxgbe.holdoff_timer_idx_10G

     hw.cxgbe.holdoff_timer_idx_1G
	     Timer index value used to delay interrupts.  The holdoff timer
	     list has the values 1, 5, 10, 50, 100, and	200 by default (all
	     values are	in microseconds) and the index selects a value from
	     this list.	 The default value is 1	which means the	timer value is
	     5us.  Different interfaces	can be assigned	different values at
	     any time via the dev.<port>.X.holdoff_tmr_idx sysctl.

     hw.cxgbe.holdoff_pktc_idx_10G

     hw.cxgbe.holdoff_pktc_idx_1G
	     Packet-count index	value used to delay interrupts.	 The packet-
	     count list	has the	values 1, 8, 16, and 32	by default, and	the
	     index selects a value from	this list.  The	default	value is -1
	     which means packet	counting is disabled and interrupts are	gener-
	     ated based	solely on the holdoff timer value.  Different inter-
	     faces can be assigned different values via	the dev.<port>.X.hold-
	     off_pktc_idx sysctl.  This	sysctl works only when the interface
	     has never been marked up (as done by ifconfig up).

     hw.cxgbe.qsize_txq
	     Number of entries in a transmit queue's descriptor	ring.  A
	     buf_ring of the same size is also allocated for additional	soft-
	     ware queuing.  See	ifnet(9).  The default value is	1024.  Differ-
	     ent interfaces can	be assigned different values via the
	     dev.<port>.X.qsize_txq sysctl.  This sysctl works only when the
	     interface has never been marked up	(as done by ifconfig up).

     hw.cxgbe.qsize_rxq
	     Number of entries in a receive queue's descriptor ring.  The
	     default value is 1024.  Different interfaces can be assigned dif-
	     ferent values via the dev.<port>.X.qsize_rxq sysctl.  This	sysctl
	     works only	when the interface has never been marked up (as	done
	     by	ifconfig up).

     hw.cxgbe.interrupt_types
	     Permitted interrupt types.	 Bit 0 represents INTx (line inter-
	     rupts), bit 1 MSI,	and bit	2 MSI-X.  The default is 7 (all
	     allowed).	The driver selects the best possible type out of the
	     allowed types.

     hw.cxgbe.fw_install
	     0 prohibits the driver from installing a firmware on the card.  1
	     allows the	driver to install a new	firmware if internal driver
	     heuristics	indicate that the new firmware is preferable to	the
	     one already on the	card.  2 instructs the driver to always
	     install the new firmware on the card as long as it	is compatible
	     with the driver and is a different	version	than the one already
	     on	the card.  The default is 1.

     hw.cxgbe.fl_pktshift
	     Number of padding bytes inserted before the beginning of an Eth-
	     ernet frame in the	receive	buffer.	 The default value of 2
	     ensures that the Ethernet payload (usually	the IP header) is at a
	     4 byte aligned address.  0-7 are all valid	values.

     hw.cxgbe.fl_pad
	     A non-zero	value ensures that writes from the hardware to a
	     receive buffer are	padded up to the specified boundary.  The
	     default is	-1 which lets the driver pick a	pad boundary.  0 dis-
	     ables trailer padding completely.

     hw.cxgbe.cong_drop
	     Controls the hardware response to congestion.  -1 disables	con-
	     gestion feedback and is not recommended.  0 instructs the hard-
	     ware to backpressure its pipeline on congestion.  This usually
	     results in	the port emitting PAUSE	frames.	 1 instructs the hard-
	     ware to drop frames destined for congested	queues.

     hw.cxgbe.pause_settings
	     PAUSE frame settings.  Bit	0 is rx_pause, bit 1 is	tx_pause.
	     rx_pause =	1 instructs the	hardware to heed incoming PAUSE
	     frames, 0 instructs it to ignore them.  tx_pause =	1 allows the
	     hardware to emit PAUSE frames when	its receive FIFO reaches a
	     high threshold, 0 prohibits the hardware from emitting PAUSE
	     frames.  The default is 3 (both rx_pause and tx_pause = 1).  This
	     tunable establishes the default PAUSE settings for	all ports.
	     Settings can be displayed and controlled on a per-port basis via
	     the dev.<port>.X.pause_settings sysctl.

     hw.cxgbe.fec
	     FEC (Forward Error	Correction) settings.  0 diables FEC.  Bit 0
	     enables RS	FEC, bit 1 enables BASE-R RS, bit 3 is reserved.  The
	     default is	-1 which lets the driver pick a	value.	This tunable
	     establishes the default FEC settings for all ports.  Settings can
	     be	displayed and controlled on a per-port basis via the
	     dev.<port>.X.fec sysctl.

     hw.cxgbe.autoneg
	     Link autonegotiation settings.  This tunable establishes the
	     default autonegotiation settings for all ports.  Settings can be
	     displayed and controlled on a per-port basis via the
	     dev.<port>.X.autoneg sysctl.  0 disables autonegotiation.	1
	     enables autonegotiation.  The default is -1 which lets the	driver
	     pick a value.  dev.<port>.X.autoneg is -1 for port	and module
	     combinations that do not support autonegotiation.

     hw.cxgbe.buffer_packing
	     Allow the hardware	to deliver multiple frames in the same receive
	     buffer opportunistically.	The default is -1 which	lets the
	     driver decide.  0 or 1 explicitly disable or enable this feature.

     hw.cxgbe.allow_mbufs_in_cluster
	     1 allows the driver to lay	down one or more mbufs within the
	     receive buffer opportunistically.	This is	the default.  0	pro-
	     hibits the	driver from doing so.

     hw.cxgbe.largest_rx_cluster

     hw.cxgbe.safest_rx_cluster
	     Sizes of rx clusters.  Each of these must be set to one of	the
	     sizes available (usually 2048, 4096, 9216,	and 16384) and
	     largest_rx_cluster	must be	greater	than or	equal to
	     safest_rx_cluster.	 The defaults are 16384	and 4096 respectively.
	     The driver	never attempts to allocate a receive buffer larger
	     than largest_rx_cluster and falls back to allocating buffers of
	     safest_rx_cluster size if an allocation larger than
	     safest_rx_cluster fails.  Note that largest_rx_cluster merely
	     establishes a ceiling -- the driver is allowed to allocate
	     buffers of	smaller	sizes.

     hw.cxgbe.config_file
	     Select a pre-packaged device configuration	file.  A configuration
	     file contains a recipe for	partitioning and configuring the hard-
	     ware resources on the card.  This tunable is for specialized
	     applications only and should not be used in normal	operation.
	     The configuration profile currently in use	is available in	the
	     dev.<nexus>.X.cf and dev.<nexus>.X.cfcsum sysctls.

     hw.cxgbe.linkcaps_allowed

     hw.cxgbe.niccaps_allowed

     hw.cxgbe.toecaps_allowed

     hw.cxgbe.rdmacaps_allowed

     hw.cxgbe.iscsicaps_allowed

     hw.cxgbe.fcoecaps_allowed
	     Disallowing capabilities provides a hint to the driver and
	     firmware to not reserve hardware resources	for that feature.
	     Each of these is a	bit field with a bit for each sub-capability
	     within the	capability.  This tunable is for specialized applica-
	     tions only	and should not be used in normal operation.  The capa-
	     bilities for which	hardware resources have	been reserved are
	     listed in dev.<nexus>.X.*caps sysctls.

SUPPORT
     For general information and support, go to	the Chelsio support website
     at: http://www.chelsio.com/.

     If	an issue is identified with this driver	with a supported adapter,
     email all the specific information	related	to the issue to
     <support@chelsio.com>.

SEE ALSO
     altq(4), arp(4), cxgb(4), cxgbev(4), netintro(4), ng_ether(4),
     ifconfig(8)

HISTORY
     The cxgbe device driver first appeared in FreeBSD 9.0.  Support for T5
     cards first appeared in FreeBSD 9.2 and FreeBSD 10.0.  Support for	T6
     cards first appeared in FreeBSD 11.1 and FreeBSD 12.0.

AUTHORS
     The cxgbe driver was written by Navdeep Parhar <np@FreeBSD.org>.

FreeBSD	11.1		       December	22, 2016		  FreeBSD 11.1

NAME | SYNOPSIS | DESCRIPTION | HARDWARE | LOADER TUNABLES | SUPPORT | SEE ALSO | HISTORY | AUTHORS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=cxgbe&sektion=4&manpath=FreeBSD+11.1-RELEASE+and+Ports>

home | help