318 lines
11 KiB
Groff
318 lines
11 KiB
Groff
.\" Copyright (c) 2011-2014, Chelsio Inc
|
|
.\" All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions are met:
|
|
.\"
|
|
.\" 1. Redistributions of source code must retain the above copyright notice,
|
|
.\" this list of conditions and the following disclaimer.
|
|
.\"
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\"
|
|
.\" 3. Neither the name of the Chelsio Inc nor the names of its
|
|
.\" contributors may be used to endorse or promote products derived from
|
|
.\" this software without specific prior written permission.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
.\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
.\" POSSIBILITY OF SUCH DAMAGE.
|
|
.\"
|
|
.\" * Other names and brands may be claimed as the property of others.
|
|
.\"
|
|
.\" $FreeBSD$
|
|
.\"
|
|
.Dd March 20, 2014
|
|
.Dt CXGBE 4
|
|
.Os
|
|
.Sh NAME
|
|
.Nm cxgbe
|
|
.Nd "Chelsio T4 and T5 based 40Gb, 10Gb, and 1Gb Ethernet adapter driver"
|
|
.Sh SYNOPSIS
|
|
To compile this driver into the kernel,
|
|
place the following lines in your
|
|
kernel configuration file:
|
|
.Bd -ragged -offset indent
|
|
.Cd "device cxgbe"
|
|
.Ed
|
|
.Pp
|
|
To load the driver as a
|
|
module at boot time, place the following lines in
|
|
.Xr loader.conf 5 :
|
|
.Bd -literal -offset indent
|
|
t4fw_cfg_load="YES"
|
|
t5fw_cfg_load="YES"
|
|
if_cxgbe_load="YES"
|
|
.Ed
|
|
.Sh DESCRIPTION
|
|
The
|
|
.Nm
|
|
driver provides support for PCI Express Ethernet adapters based on
|
|
the Chelsio Terminator 4 and Terminator 5 ASICs (T4 and T5).
|
|
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 questions related to hardware
|
|
requirements, see
|
|
.Pa http://www.chelsio.com/ .
|
|
.Pp
|
|
Note that ports of T5 cards are named cxl and attach to a t5nex parent device
|
|
(in contrast to ports named cxgbe that attach to a t4nex parent for a T4 card).
|
|
Loader tunables with the hw.cxgbe prefix apply to both T4 and T5 cards.
|
|
The sysctl MIBs are at dev.t5nex and dev.cxl for T5 cards and at dev.t4nex and
|
|
dev.cxgbe for T4 cards.
|
|
.Pp
|
|
For more information on configuring this device, see
|
|
.Xr ifconfig 8 .
|
|
.Sh HARDWARE
|
|
The
|
|
.Nm
|
|
driver supports 40Gb, 10Gb and 1Gb Ethernet adapters based on the T5 ASIC
|
|
(ports will be named cxl):
|
|
.Pp
|
|
.Bl -bullet -compact
|
|
.It
|
|
Chelsio T580-CR
|
|
.It
|
|
Chelsio T580-LP-CR
|
|
.It
|
|
Chelsio T580-LP-SO-CR
|
|
.It
|
|
Chelsio T560-CR
|
|
.It
|
|
Chelsio T540-CR
|
|
.It
|
|
Chelsio T540-LP-CR
|
|
.It
|
|
Chelsio T522-CR
|
|
.It
|
|
Chelsio T520-LL-CR
|
|
.It
|
|
Chelsio T520-CR
|
|
.It
|
|
Chelsio T520-SO
|
|
.It
|
|
Chelsio T520-BT
|
|
.It
|
|
Chelsio T504-BT
|
|
.El
|
|
.Pp
|
|
The
|
|
.Nm
|
|
driver supports 10Gb and 1Gb Ethernet adapters based on the T4 ASIC:
|
|
.Pp
|
|
.Bl -bullet -compact
|
|
.It
|
|
Chelsio T420-CR
|
|
.It
|
|
Chelsio T422-CR
|
|
.It
|
|
Chelsio T440-CR
|
|
.It
|
|
Chelsio T420-BCH
|
|
.It
|
|
Chelsio T440-BCH
|
|
.It
|
|
Chelsio T440-CH
|
|
.It
|
|
Chelsio T420-SO
|
|
.It
|
|
Chelsio T420-CX
|
|
.It
|
|
Chelsio T420-BT
|
|
.It
|
|
Chelsio T404-BT
|
|
.El
|
|
.Sh LOADER TUNABLES
|
|
Tunables can be set at the
|
|
.Xr loader 8
|
|
prompt before booting the kernel or stored in
|
|
.Xr loader.conf 5 .
|
|
.Bl -tag -width indent
|
|
.It Va hw.cxgbe.ntxq10g
|
|
The number of tx queues to use for a 10Gb or 40Gb port.
|
|
The default is 16 or the number
|
|
of CPU cores in the system, whichever is less.
|
|
.It Va hw.cxgbe.nrxq10g
|
|
The number of rx queues to use for a 10Gb or 40Gb port.
|
|
The default is 8 or the number
|
|
of CPU cores in the system, whichever is less.
|
|
.It Va hw.cxgbe.ntxq1g
|
|
The number of tx queues to use for a 1Gb port.
|
|
The default is 4 or the number
|
|
of CPU cores in the system, whichever is less.
|
|
.It Va hw.cxgbe.nrxq1g
|
|
The number of rx queues to use for a 1Gb port.
|
|
The default is 2 or the number
|
|
of CPU cores in the system, whichever is less.
|
|
.It Va hw.cxgbe.nofldtxq10g
|
|
The number of TOE tx queues to use for a 10Gb or 40Gb port.
|
|
The default is 8 or the
|
|
number of CPU cores in the system, whichever is less.
|
|
.It Va hw.cxgbe.nofldrxq10g
|
|
The number of TOE rx queues to use for a 10Gb or 40Gb port.
|
|
The default is 2 or the
|
|
number of CPU cores in the system, whichever is less.
|
|
.It Va hw.cxgbe.nofldtxq1g
|
|
The number of TOE tx queues to use for a 1Gb port.
|
|
The default is 2 or the
|
|
number of CPU cores in the system, whichever is less.
|
|
.It Va hw.cxgbe.nofldrxq1g
|
|
The number of TOE rx queues to use for a 1Gb port.
|
|
The default is 1.
|
|
.It Va hw.cxgbe.holdoff_timer_idx_10G
|
|
.It Va hw.cxgbe.holdoff_timer_idx_1G
|
|
The timer index value to use 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.cxgbe.X.holdoff_tmr_idx or dev.cxl.X.holdoff_tmr_idx sysctl.
|
|
.It Va hw.cxgbe.holdoff_pktc_idx_10G
|
|
.It Va hw.cxgbe.holdoff_pktc_idx_1G
|
|
The packet-count index value to use 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 generated based solely on the holdoff timer value.
|
|
Different interfaces can be assigned different values via the
|
|
dev.cxgbe.X.holdoff_pktc_idx or dev.cxl.X.holdoff_pktc_idx sysctl.
|
|
This sysctl works only when the interface has never been marked up (as done by
|
|
ifconfig up).
|
|
.It Va hw.cxgbe.qsize_txq
|
|
The size, in number of entries, of the descriptor ring used for a tx
|
|
queue.
|
|
A buf_ring of the same size is also allocated for additional
|
|
software queuing.
|
|
See
|
|
.Xr ifnet 9 .
|
|
The default value is 1024.
|
|
Different interfaces can be assigned different values via the
|
|
dev.cxgbe.X.qsize_txq sysctl or dev.cxl.X.qsize_txq sysctl.
|
|
This sysctl works only when the interface has never been marked up (as done by
|
|
ifconfig up).
|
|
.It Va hw.cxgbe.qsize_rxq
|
|
The size, in number of entries, of the descriptor ring used for an
|
|
rx queue.
|
|
The default value is 1024.
|
|
Different interfaces can be assigned different values via the
|
|
dev.cxgbe.X.qsize_rxq or dev.cxl.X.qsize_rxq sysctl.
|
|
This sysctl works only when the interface has never been marked up (as done by
|
|
ifconfig up).
|
|
.It Va hw.cxgbe.interrupt_types
|
|
The interrupt types that the driver is allowed to use.
|
|
Bit 0 represents INTx (line interrupts), bit 1 MSI, bit 2 MSI-X.
|
|
The default is 7 (all allowed).
|
|
The driver will select the best possible type out of the allowed types by
|
|
itself.
|
|
.It Va 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.
|
|
.It Va hw.cxgbe.fl_pktshift
|
|
The number of bytes of padding inserted before the begining of an Ethernet
|
|
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.
|
|
.It Va 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 disables trailer padding completely.
|
|
.It Va hw.cxgbe.cong_drop
|
|
Controls the hardware response to congestion.
|
|
-1 disables congestion feedback and is not recommended.
|
|
0 instructs the hardware to backpressure its pipeline on congestion.
|
|
This usually results in the port emitting pause frames.
|
|
1 instructs the hardware to drop frames destined for congested queues.
|
|
.It Va 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.
|
|
.It Va 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 prohibits the driver from doing so.
|
|
.It Va hw.cxgbe.largest_rx_cluster
|
|
.It Va 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 will never attempt to allocate a receive buffer larger than
|
|
largest_rx_cluster and will fall 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.
|
|
.It Va hw.cxgbe.config_file
|
|
Select a pre-packaged device configuration file.
|
|
A configuration file contains a recipe for partitioning and configuring the
|
|
hardware 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.t4nex.X.cf
|
|
and dev.t4nex.X.cfcsum (dev.t5nex for T5 cards) sysctls.
|
|
.It Va hw.cxgbe.linkcaps_allowed
|
|
.It Va hw.cxgbe.niccaps_allowed
|
|
.It Va hw.cxgbe.toecaps_allowed
|
|
.It Va hw.cxgbe.rdmacaps_allowed
|
|
.It Va hw.cxgbe.iscsicaps_allowed
|
|
.It Va 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 applications only and should not be used in
|
|
normal operation.
|
|
The capabilities for which hardware resources have been reserved are listed in
|
|
dev.t4nex.X.*caps or dev.t5nex.X.*caps sysctls.
|
|
.El
|
|
.Sh SUPPORT
|
|
For general information and support,
|
|
go to the Chelsio support website at:
|
|
.Pa http://www.chelsio.com/ .
|
|
.Pp
|
|
If an issue is identified with this driver with a supported adapter,
|
|
email all the specific information related to the issue to
|
|
.Aq support@chelsio.com .
|
|
.Sh SEE ALSO
|
|
.Xr altq 4 ,
|
|
.Xr arp 4 ,
|
|
.Xr cxgb 4 ,
|
|
.Xr netintro 4 ,
|
|
.Xr ng_ether 4 ,
|
|
.Xr ifconfig 8
|
|
.Sh HISTORY
|
|
The
|
|
.Nm
|
|
device driver first appeared in
|
|
.Fx 9.0 .
|
|
Support for T5 cards first appeared in
|
|
.Fx 9.2
|
|
and
|
|
.Fx 10.0 .
|
|
.Sh AUTHORS
|
|
.An -nosplit
|
|
The
|
|
.Nm
|
|
driver was written by
|
|
.An Navdeep Parhar Aq np@FreeBSD.org .
|