#
346806 |
|
28-Apr-2019 |
np |
cxgbetool(8): Make sure getline is available.
This is a direct commit to stable/11.
|
#
346805 |
|
28-Apr-2019 |
np |
MFC r317849 (partial), r332506, and r332787.
r317849 (partial, required by r332506): cxgbe/t4_tom: Per-connection rate limiting for TCP sockets handled by the TOE.
Sponsored by: Chelsio Communications
r332506: cxgbe(4): Add support for Connection Offload Policy (aka COP).
COP allows fine-grained control on whether to offload a TCP connection using t4_tom, and what settings to apply to a connection selected for offload. t4_tom must still be loaded and IFCAP_TOE must still be enabled for full TCP offload to take place on an interface. The difference is that IFCAP_TOE used to be the only knob and would enable TOE for all new connections on the inteface, but now the driver will also consult the COP, if any, before offloading to the hardware TOE.
A policy is a plain text file with any number of rules, one per line. Each rule has a "match" part consisting of a socket-type (L = listen, A = active open, P = passive open, D = don't care) and a pcap-filter(7) expression, and a "settings" part that specifies whether to offload the connection or not and the parameters to use if so. The general format of a rule is: [socket-type] expr => settings
Example. See cxgbetool(8) for more information. [L] ip && port http => offload [L] port 443 => !offload [L] port ssh => offload [P] src net 192.168/16 && dst port ssh => offload !nagle !timestamp cong newreno [P] dst port ssh => offload !nagle ecn cong tahoe [P] dst port http => offload [A] dst port 443 => offload tls [A] dst net 192.168/16 => offload !timestamp cong highspeed
The driver processes the rules for each new listen, active open, or passive open and stops at the first match. There is an implicit rule at the end of every policy that prohibits offload when no rule in the policy matches: [D] all => !offload
This is a reworked and expanded version of a patch submitted by Krishnamraju Eraparaju @ Chelsio.
Sponsored by: Chelsio Communications
r332787: cxgbe(4): Fix bugs in the handling of COP rules that match on VLAN tag.
Retrieve the tag from the correct ifnet and use the provided tag (instead of hardcoded 0xffff, implying no tag) in the routines that process offload policy.
Submitted by: Krishnamraju Eraparaju @ Chelsio Sponsored by: Chelsio Communications
|
#
339393 |
|
16-Oct-2018 |
np |
MFC r330887: cxgbetool(8): Add the ability to decode hardware TCBs.
Sponsored by: Chelsio Communications
|
#
330310 |
|
03-Mar-2018 |
np |
MFC r321105:
cxgbetool(8): Add loadboot and loadboot-cfg subcommands to install or remove bootrom and boot config.
|
#
330307 |
|
03-Mar-2018 |
np |
MFC r319506, r319872, r321063, r321103, r321179, r321390, r321435, r321582, r321671, r322014, r322034, r322055, r322123, r322167, r322425, r322549, r322914, r322960, r322962, r322964, r322985, r322990, r323006, r323026, r323041, r323069, r323078, r323343, r323514, r323520, r324296, r324379, r324386, r324443, r324945, r325596, r325680, r325880, r325883-r325884, r325961, r326026, r326042, r327062, r327093, r327332, r327528, r328420, and r328423.
r319506: cxgbe(4): Update the statistics for compound tx work requests once per work request, not once per frame.
r319872: cxgbe(4): Do not request an FEC setting that the port does not support.
r321063: cxgbe(4): Various link/media related improvements.
- Deal with changes to port_type, and not just port_mod when a transceiver is changed. This fixes hot swapping of transceivers of different types (QSFP+ or QSA or QSFP28 in a QSFP28 port, SFP+ or SFP28 in a SFP28 port, etc.).
- Always refresh media information for ifconfig if the port is down. The firmware does not generate tranceiver-change interrupts unless at least one VI is enabled on the physical port. Before this change ifconfig diplayed potentially stale information for ports that were administratively down.
- Always recalculate and reapply L1 config on a transceiver change.
- Display PAUSE settings in ifconfig. The driver sysctls for this continue to work as well.
r321103: cxgbe(4): New ioctls to flash bootrom and boot config to the card.
r321179: cxgbe/t4_tom: Log more details about the newly ESTABLISHED tid to the trace buffer.
r321390: cxgbe(4): Install the firmware bundled with the driver to the card if it doesn't seem to have one. This lets the driver recover automatically from incomplete firmware upgrades (panic, reboot, power loss, etc. in the middle of an upgrade).
r321435: cxgbe(4): Display some more TOE parameters related to retransmission and keepalive in the sysctl MIB. Provide tunables to change some of these parameters. These are supposed to be setup by the firmware so these tunables are for experimentation only.
r321582: cxgbe(4): Some updates to the common code.
- Updated register ranges. - Helper routines for access to TP registers. - Updated routine to read flash parameters.
r321671: cxgbe/iw_cxgbe: Log the end point's history and flags to the trace buffer just before it's freed.
r322014: cxgbe(4): Initial import of the "collect" component of Chelsio unified debug (cudbg) code, hooked up to the main driver via an ioctl.
The ioctl can be used to collect the chip's internal state in a compressed dump file. These dumps can be decoded with the "view" component of cudbg.
r322034: cxgbe(4): Always use the first and not the last virtual interface associated with a port in begin_synchronized_op.
r322055: cxgbe(4): Allow the TOE timer tunables to be set with microsecond precision. These timers are already displayed in microseconds in the sysctl MIB. Add variables to track these tunables while here.
r322123: cxgbe(4): Avoid a NULL dereference that would occur during module unload if there were problems earlier during attach.
r322167: cxgbe(4): Add the T6 and T5 Unified Wire configuration files to the kernel, just like for T4, when the driver is compiled into the kernel.
r322425: cxgbe(4): Save the last reported link parameters and compare them with the current state to determine whether to generate a link-state change notification. This fixes a bug introduced in r321063 that caused the driver to sometimes skip these notifications.
r322549: cxgbe/t4_tom: Use correct name for the ISS-valid bit in options2.
r322914: cxgbe(4): Dump the mailbox contents in the same format as CH_DUMP_MBOX.
r322960: cxgbe(4): Verify that the driver accesses the firmware mailbox in a thread-safe manner.
r322962: cxgbe(4): Remove write only variable from t4_port_init.
r322964: cxgbe(4): vi_mac_funcs should include the base Ethernet function. It is already used in the driver as if it does.
r322985: cxgbe(4): Maintain one ifmedia per physical port instead of one per Virtual Interface (VI). All autonomous VIs that share a port share the same media.
r322990: cxgbe(4): Do not access the mailbox without appropriate locks while creating hardware VIs.
This fixes a bad race on systems with hw.cxgbe.num_vis > 1.
r323006: cxgbe(4): Update T6/T5/T4 firmwares to 1.16.59.0.
r323026: cxgbe(4): Zero out the memory allocated for the debug dump. cudbg_collect seems to expect it this way.
r323041: cxgbe(4): Add two new debug flags -- one to allow manual firmware install after full initialization, and another to disable the TCB cache (T6+). The latter works as a tunable only.
Note that debug_flags are for debugging only and should not be set normally.
r323069: cxgbe/t4_tom: Add a knob to select the congestion control algorigthm used by the TOE hardware for fully offloaded connections. The knob affects new connections only.
r323078: cxgbe/t4_tom: There may not be a tid to update if the connection isn't established.
r323343: cxgbe(4): Fix a couple of problems in the sge_wrq data path.
- start_wrq_wr must not drain the wr_list if there are incomplete_wrs pending. This can happen when a t4_wrq_tx runs between two start_wrq_wr.
- commit_wrq_wr must examine the cookie's pidx and ndesc with the queue's lock held. Otherwise there is a bad race when incomplete WRs are being completed and commit_wrq_wr for the WR that is ahead in the queue updates the next incomplete WR's cookie's pidx/ndesc but the commit_wrq_wr for the second one is using stale values that it read without the lock.
r323514: cxgbetool(8): mode must be specified when creating the dump file.
r323520: cxgbe(4): Ignore capabilities that depend on TOE when the firmware reports TOE is not available.
r324296: cxgbe(4): Provide knobs to set the holdoff parameters of TOE rx queues separately from NIC rx queues instead of using the same parameters for both types of queues.
r324379: cxgbetool(8): Do not create a large file devoid of useful content when the dumpstate ioctl fails. Make the file world-readable while here.
r324386: cxgbe(4): Update T6, T5, and T4 firmwares to 1.16.63.0.
r324443: cxgbetool(8): Do not close uninitialized fd on malloc failure.
r324945: cxgbe(4): Read the MPS buffer group map from the firmware as it could be different from hardware defaults. The congestion channel map, which is still fixed, needs to be tracked separately now. Change the congestion setting for TOE rx queues to match the drivers on other OSes while here.
r325596: cxgbe(4): Do not request settings not supported by the port.
r325680: cxgbe(4): Excluce mdi from the check against port capabilities.
r325880: cxgbe(4): Combine all _10g and _1g tunables and drop the suffix from their names. The finer-grained knobs weren't practically useful.
r325883: cxgbe(4): Sanitize t4_num_vis during MOD_LOAD like all other t4_* tunables. Add num_vis to the intrs_and_queues structure as it affects the number of interrupts requested and queues created. In future cfg_itype_and_nqueues might lower it incrementally instead of going straight to 1 when enough interrupts aren't available.
r325884: cxgbe(4): Remove rsrv_noflowq from intrs_and_queues structure as it does not influence or get affected by the number of interrupts or queues.
r325961: cxgbe(4): Add core Vdd to the sysctl MIB.
r326026: cxgbe(4): Add a custom board to the device id list.
r326042: cxgbe(4): Fix unsafe mailbox access in cudbg.
r327062: cxgbe(4): Read the MFG diags version from the VPD and make it available in the sysctl MIB.
r327093: cxgbe(4): Do not forward interrupts to queues with freelists. This leaves the firmware event queue (fwq) as the only queue that can take interrupts for others.
This simplifies cfg_itype_and_nqueues and queue allocation in the driver at the cost of a little (never?) used configuration. It also allows service_iq to be split into two specialized variants in the future.
r327332: cxgbe(4): Reduce duplication by consolidating minor variations of the same code into a single routine.
r327528: cxgbe(4): Add a knob to enable/disable PCIe relaxed ordering. Disable it by default when running on Intel CPUs.
r328420: cxgbe(4): Do not display harmless warning in non-debug builds.
r328423: cxgbe(4): Accept old names of a couple of tunables.
Sponsored by: Chelsio Communications
|
#
319388 |
|
01-Jun-2017 |
ngie |
MFC r314579,r314785:
r314579 (by np):
Add cxgbetool(8) to the base system.
Move cxgbetool from tools/tools to usr.sbin. Compile and install it on platforms where cxgbe(4) is built by default. Knobs (WITH_CXGBETOOL and WITHOUT_CXGBETOOL) have been added so that the user can override the default setting.
r314785:
Fix some trivial manlint warnings
Sentences should begin on new lines, per manlint.
Bump .Dd for the change |
#
314579 |
|
03-Mar-2017 |
np |
Add cxgbetool(8) to the base system.
Move cxgbetool from tools/tools to usr.sbin. Compile and install it on platforms where cxgbe(4) is built by default. Knobs (WITH_CXGBETOOL and WITHOUT_CXGBETOOL) have been added so that the user can override the default setting.
Reviewed by: ngie@, gnn@, bdrewery@ MFC after: 1 month Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D9854
|
#
306823 |
|
07-Oct-2016 |
np |
cxgbetool: Add a loadcfg subcommand to allow a user to upload a firmware configuration file to the card.
|
#
306138 |
|
21-Sep-2016 |
np |
Fix typo.
|
#
306137 |
|
21-Sep-2016 |
np |
cxgbetool: Add T6 support to the SGE context decoder.
Obtained from: Chelsio Communications Sponsored by: Chelsio Communications
|
#
301516 |
|
06-Jun-2016 |
np |
cxgbetool: Allow max-rate > 10Gbps for rate-limited traffic.
Sponsored by: Chelsio Communications
|
#
296481 |
|
08-Mar-2016 |
np |
cxgbe(4): Overhaul the shared code that deals with the chip's TP block, which is responsible for filtering and RSS.
Add the ability to use filters that match on PF/VF (aka "VNIC id") while here. This is mutually exclusive with filtering on outer VLAN tag with Q-in-Q.
Sponsored by: Chelsio Communications
|
#
296471 |
|
07-Mar-2016 |
np |
cxgbe(4): Updated register dumps.
- Get the list of registers to read during a regdump from the shared code instead of the OS specific code. This follows a similar move internally. The shared code includes the list for T6.
- Update cxgbetool to be able to decode T5 VF, T6, and T6 VF register dumps (and catch up with some updates to T4 and T5 register decode).
Obtained from: Chelsio Communications Sponsored by: Chelsio Communications
|
#
296236 |
|
29-Feb-2016 |
np |
Fix some whitespace nits in cxgbetool.c. No functional change.
|
#
287297 |
|
29-Aug-2015 |
rodrigc |
- Replace N(a)/N(i)/N(T)/LEN(a)/ARRAY_SIZE(a) with nitems() - Add missing <err.h> for err() and <sys/sysctl.h> for sysctlbyname() - NULL -> 0 for 5th parameter of sysctlbyname()
Submitted by: Andriy Voskoboinyk <s3erios@gmail com> Differential Revision: https://reviews.freebsd.org/D3442
|
#
284984 |
|
30-Jun-2015 |
np |
cxgbetool: fix code that decodes T5 SGE contexts. Some of the fields that changed between T4 and T5 were not displayed correctly.
Obtained from: Chelsio MFC after: 3 days Differential Revision:
|
#
273360 |
|
21-Oct-2014 |
np |
cxgbetool: Catch up with r185979. One of MAP_ANON, MAP_PRIVATE, MAP_SHARED, or MAP_STACK must be specified.
This fixes the "loadfw" subcommand.
MFC after: 1 week
|
#
269106 |
|
26-Jul-2014 |
np |
Add a 'raw' parameter to the 'modinfo' subcommand. This is handy when trying to figure out why a QSFP+/SFP+ connector or cable wasn't identified correctly by cxgbe(4). Its output looks like this:
# cxgbetool t5nex0 modinfo 0 raw 00: 03 04 21 00 00 00 00 00 ..!. .... 08: 04 00 00 00 67 00 00 00 .... g... 10: 00 00 05 00 41 6d 70 68 .... Amph 18: 65 6e 6f 6c 20 20 20 20 enol 20: 20 20 20 20 00 41 50 48 .APH 28: 35 37 31 35 34 30 30 30 5715 4000 30: 33 20 20 20 20 20 20 20 3 38: 4b 20 20 20 01 00 00 fa K .... 40: 00 00 00 00 41 50 46 31 .... APF1 48: 30 30 34 30 30 33 30 30 0040 0300 50: 30 33 20 20 31 30 30 31 03 1001 58: 33 30 20 20 00 00 00 97 30 ....
MFC after: 3 days
|
#
261534 |
|
06-Feb-2014 |
np |
cxgbetool: Display the congestion channel map in hex.
MFC after: 1 week
|
#
259048 |
|
06-Dec-2013 |
np |
Two new cxgbetool subcommands to set up scheduler classes and to bind them to NIC queues.
Obtained from: Chelsio
|
#
258698 |
|
27-Nov-2013 |
np |
cxgbetool: "modinfo" command to display SFP+ module information.
trantor:~# cxgbetool t5nex0 modinfo 1 ID: SFP Vendor FINISAR CORP. SN AJ10JQR PN FTLX8571D3BCL Rev A Temp: +35C Vcc 3.225600V TX Bias 2.176000uA TX Power 0.588800mW RX Power 0.486400mW
Submitted by: gnn
|
#
253870 |
|
01-Aug-2013 |
np |
Teach cxgbetool to display T5 congestion manager context.
|
#
253691 |
|
26-Jul-2013 |
np |
Add support for packet-sniffing tracers to cxgbe(4). This works with all T4 and T5 based cards and is useful for analyzing TSO, LRO, TOE, and for general purpose monitoring without tapping any cxgbe or cxl ifnet directly.
Tracers on the T4/T5 chips provide access to Ethernet frames exactly as they were received from or transmitted on the wire. On transmit, a tracer will capture a frame after TSO segmentation, hw VLAN tag insertion, hw L3 & L4 checksum insertion, etc. It will also capture frames generated by the TCP offload engine (TOE traffic is normally invisible to the kernel). On receive, a tracer will capture a frame before hw VLAN extraction, runt filtering, other badness filtering, before the steering/drop/L2-rewrite filters or the TOE have had a go at it, and of course before sw LRO in the driver.
There are 4 tracers on a chip. A tracer can trace only in one direction (tx or rx). For now cxgbetool will set up tracers to capture the first 128B of every transmitted or received frame on a given port. This is a small subset of what the hardware can do. A pseudo ifnet with the same name as the nexus driver (t4nex0 or t5nex0) will be created for tracing. The data delivered to this ifnet is an additional copy made inside the chip. Normal delivery to cxgbe<n> or cxl<n> will be made as usual.
/* watch cxl0, which is the first port hanging off t5nex0. */ # cxgbetool t5nex0 tracer 0 tx0 (watch what cxl0 is transmitting) # cxgbetool t5nex0 tracer 1 rx0 (watch what cxl0 is receiving) # cxgbetool t5nex0 tracer list # tcpdump -i t5nex0 <== all that cxl0 sees and puts on the wire
If you were doing TSO, a tcpdump on cxl0 may have shown you ~64K "frames" with no L3/L4 checksum but this will show you the frames that were actually transmitted.
/* all done */ # cxgbetool t5nex0 tracer 0 disable # cxgbetool t5nex0 tracer 1 disable # cxgbetool t5nex0 tracer list # ifconfig t5nex0 destroy
|
#
252470 |
|
01-Jul-2013 |
np |
Count the number of hits for a filter by default.
MFC after: 3 days
|
#
249368 |
|
11-Apr-2013 |
np |
Set and display the IP fragment bit correctly when dealing with the filter mode.
MFC after: 3 days.
|
#
248925 |
|
30-Mar-2013 |
np |
cxgbe(4): Add support for Chelsio's Terminator 5 (aka T5) ASIC. This includes support for the NIC and TOE features of the 40G, 10G, and 1G/100M cards based on the T5.
The ASIC is mostly backward compatible with the Terminator 4 so cxgbe(4) has been updated instead of writing a brand new driver. T5 cards will show up as cxl (short for cxlgb) ports attached to the t5nex bus driver.
Sponsored by: Chelsio
|
#
247854 |
|
05-Mar-2013 |
np |
Fix compile warning by including ctype.h for isdigit().
MFC after: 1 day
|
#
245520 |
|
17-Jan-2013 |
np |
Allow "ivlan" (inner VLAN) to be used as an alias for "vlan" when specifying match criteria. "vlan" continues to be valid here, and it continues to be valid when deleting, rewriting, inserting, or stacking an 802.1q tag to a matching packet.
MFC after: 3 days
|
#
241416 |
|
10-Oct-2012 |
np |
Add a "clearstats" subcommand to cxgbetool that lets you clear the MAC statistics for any port.
For example: # cxgbetool t4nex0 clearstats 0
Submitted by: gnn@ MFC after: 3 days
|
#
241401 |
|
10-Oct-2012 |
np |
Add an "i2c" subcommand to cxgbetool. You can use this to read information from the transceivers connected to the ports of a cxgbe(4) based card.
# cxgbetool t4nex0 i2c <port_id> <dev_addr> <addr> [<count>]
For example: # cxgbetool t4nex0 i2c 0 0xa0 3 0x10 [16]
(As per SFF-8472 the SFP+ module is at 0xa0 and bit 4 in the value at address 3 indicates it's a 10Gbase-SR module, which it is.)
|
#
228594 |
|
16-Dec-2011 |
np |
Catch up with new driver ioctls in cxgbe.
MFC after: 1 month
|
#
228561 |
|
16-Dec-2011 |
np |
Many updates to cxgbe(4)
- Device configuration via plain text config file. Also able to operate when not attached to the chip as the master driver.
- Generic "work request" queue that serves as the base for both ctrl and ofld tx queues.
- Generic interrupt handler routine that can process any event on any kind of ingress queue (via a dispatch table).
- A couple of new driver ioctls. cxgbetool can now install a firmware to the card ("loadfw" command) and can read the card's memory ("memdump" and "tcb" commands).
- Lots of assorted information within dev.t4nex.X.misc.* This is primarily for debugging and won't show up in sysctl -a.
- Code to manage the L2 tables on the chip.
- Updates to cxgbe(4) man page to go with the tunables that have changed.
- Updates to the shared code in common/
- Updates to the driver-firmware interface (now at fw 1.4.16.0)
MFC after: 1 month
|
#
222974 |
|
11-Jun-2011 |
np |
Add "context" subcommand to fetch and display SGE context.
|
#
222900 |
|
09-Jun-2011 |
np |
cxgbetool: a tool for the cxgbe(4) driver.
|