296373 |
04-Mar-2016 |
marius |
- Copy stable/10@296371 to releng/10.3 in preparation for 10.3-RC1 builds. - Update newvers.sh to reflect RC1. - Update __FreeBSD_version to reflect 10.3. - Update default pkg(8) configuration to use the quarterly branch.
Approved by: re (implicit) |
286895 |
18-Aug-2015 |
np |
MFC r285527 and r286338. This takes the firmware from 1.11.27.0 to 1.14.4.0.
r286338: cxgbe(4): Update T5 and T4 firmwares bundled with the driver to 1.14.4.0. The changes in the firmwares since 1.11.27.0 are listed here (straight copy-paste from the "Release Notes.txt" accompanying the Chelsio Unified Wire 2.11.1.0 release on the website).
22.1. T5 Firmware +++++++++++++++++++++++++++++++++
Version : 1.14.4.0 Date : 08/05/2015 ================================================================================
FIXES -----
BASE: - Fixes a potential data path hang by properly programming PMTX congestion threshold settings. - Fixes a potential initialization error when accessing a configuration file stored on the flash. - Fixes a regression where SGE resources can be miss-sized if iWARP is disabled.
ETH: - Fixes a timing issue that would prevent CR4 links from coming up with some switches.
FOFCoE: - Defers fcoe linkdown mailbox command handling till LOGO is sent. - Updates vlan prio for all outstanding IOs during dcbx update.
ENHANCEMENTS ------------
BASE: - Adds support for PAUSE OFF watchdog. - Reports devlog access information in PCIE_FW_PF register 7.
ETH: - Enhances segmentation offload to include VxLAN and Geneve. - Adds PTP support. - Adds new interface to allow the driver to query the VI rss table base addresses. - Allows the driver to program the SGE ingrext contxt CongDrop field.
OFLD: - Adds new interface for the driver to specify offloaded connections TCP snd and rcv scale factors.
iSCSI: - Adds support for iscsi segmentatation offload (ISO). - Adds support for iscsi t10-dif offload.
FOiSCSI: - Sets FORCE_BIT for cut through processing for FOiSCSI.
FOFCoE: - Adds support for FCoE BB6. - Improves WRITE performance.
================================================================================ ================================================================================
Version : 1.13.32.0 Date : 03/25/2015 ================================================================================
FIXES -----
BASE: - Fixes FW_CAPS_CONFIG_CMD return value on error (was positive instead of negative) - Fixes FW_PARAMS_PARAM_DEV_FLOWC_BUFFIFO_SZ indication (was wrong on certain adapter configurations) - Fixes config file based PL_TIMEOUT register programming
ETH: - Fixes a potential EO UDP SEG header corruption - Fixes an issue where 1000Base-X was not enabled correctly when using QSA modules
OFLD: - Fixes timeout issue with half-open connections - Fixes FW_FLOWC_WR processing when state is set to finwait1
FOFCoE: - Fixes fcoe xchg leaks in linkdown/peer down path - Fixes cleanup in FCoE linkdown and fixed buf timer flowid abuse - Fixes fw crash by clearing fcf flowc during bye
FOiSCSI: - Don't create a new tcp socket if ERL0 attempt has timed out.
ENHANCEMENTS ------------
BASE: - Adds support for VFs on PFs 4 to 7 - Adds support for QPs/CQs on any physical and virtual function
ETH: - Stops sending LACP frames on loopback interface - Adds an AUTOEQU indication to CPL_SGE_EGR_UPDATE - Adds support for CR4 links (BEAN/AEC on 40G TwinAx cables)
OFLD: - Improves default settings of LAN and CLUSTER TCP timer settings - Sends Negative Advice CPLs to software
FOISCSI: - Adds IPv6 support for foiscsi. Keeps backward compatibility with old foiscsi drivers which doesn't support ipv6.
FOFCoE: - Added fcoe debug support in flowc dump
================================================================================ ================================================================================
Version : 1.12.25.0 Date : 10/22/2014 ================================================================================
FIXES -----
BASE: - Improves precision of the Weight Round Robing Traffic Management Algorithm - Fixes an issue where the link would intermittently fail to come up - Fixes an issue where adapters with an external PHY couldn't run at 100Mbps - Fixes an issue where active optical cables were not recognized - Fixes link advertising issues on T520-BT (speed and pause frames) that would cause the link to negotiate unexpected settings - Forces link restart when auto-negotiation is disabled - Fix an issue where pause frames wouldn't be fully disabled even if requested
ETH: - Fixes NVGRE Segmentation Offload network header generation.
DCBX: - Fixes an issue where some settings were not being sent to the switch correctly - Fixes an issue where back-to-back DCBX port updates could get overwritten by FW - Fixes a firmware crash on DCBX APP information request before link up
FOiSCSI: - Fixes abort task leak in tmf response handling - Fixes TCP RST handling while in iSCSI ERL0 - Fixes a firmware crash on BYE without INIT
ENHANCEMENTS -------------
BASE: - Adds link partner settings reporting when available - Adds QSA support (in conjunction with QSA VPD) - Adds T520-BT LED support - Reports NOTSUPPORTED for modules with an unhandled identifier
DCBX: - Adds version reporting (indicating which version FW is trying to negotiate) - Adds IEEE support - Reports LLDP time outs
FOiSCSI: - Add support for multiple iSCSI DDP client - Sends DHCP renew request when lease expires
================================================================================
22.2. T4 Firmware +++++++++++++++++
Version : 1.14.4.0 Date : 08/05/2015 ================================================================================
FIXES -----
BASE: - Fixes a potential initialization error when accessing a configuration file stored on the flash. - Initialize PCIE_DBG_INDIR_REQ.Enable to 0, as hardware failed to do so and register dumps could result in errors.
ETH: - Fixes an issue that sometimes prevented the link from coming up in CR adapters.
ENHANCEMENTS ------------
BASE: - Adds support for PAUSE OFF watchdog. - Reports devlog access information in PCIE_FW_PF register 7.
ETH: - Adds new interface to allow the driver to query the VI rss table base addresses.
OFLD: - Adds new interface for the driver to specify offloaded connections TCP snd and rcv scale factors.
================================================================================ ================================================================================
Version : 1.13.32.0 Date : 03/25/2015 ================================================================================
FIXES -----
BASE: - Fixes FW_CAPS_CONFIG_CMD return value on error (was positive instead of negative) - Fixes FW_PARAMS_PARAM_DEV_FLOWC_BUFFIFO_SZ indication (was wrong on certain adapter configurations) - Fixes config file based PL_TIMEOUT register programming
ETH: - Fixes a potential EO UDP SEG header corruption
OFLD: - Fixes timeout issue with half-open connections - Fixes FW_FLOWC_WR processing when state is set to finwait1
FOiSCSI: - Don't create a new tcp socket if ERL0 attempt has timed out.
ENHANCEMENTS ------------
ETH: - Stops sending LACP frames on loopback interface - Adds an AUTOEQU indication to CPL_SGE_EGR_UPDATE
OFLD: - Improves default settings of LAN and CLUSTER TCP timer settings - Sends Negative Advice CPLs to software
================================================================================ ================================================================================
Version : 1.12.25.0 Date : 10/22/2014 ================================================================================
FIXES -----
BASE: - Improves precision of the Weight Round Robing Traffic Management Algorithm - Forces link restart when auto-negotiation is disabled - Fix an issue where pause frames wouldn't be fully disabled even if requested
DCBX: - Fixes an issue where some settings were not being sent to the switch correctly - Fixes an issue where back-to-back DCBX port updates could get overwritten by FW - Fixes a firmware crash on DCBX APP information request before link up
FOiSCSI: - Fixes abort task leak in tmf response handling - Fixes TCP RST handling while in iSCSI ERL0 - Fixes a firmware crash on BYE without INIT
ENHANCEMENTS ------------
BASE: - Adds link partner settings reporting when available - Firmware now reports NOTSUPPORTED for modules with an unhandled identifier
DCBX: - Adds version reporting (indicating which version FW is trying to negotiate) - Adds IEEE support - Reports LLDP time outs
FOiSCSI: - Adds support for multiple iSCSI DDP clients - Sends DHCP renew request when lease expires
================================================================================
Obtained from: Chelsio Communications Sponsored by: Chelsio Communications
|
284092 |
06-Jun-2015 |
np |
MFC r280878:
cxgbe/tom: return rx credits promptly if the socket buffer's low water mark cannot be reached because the window advertised to the peer isn't wide enough. While here, tweak the normal credit return too.
|
284089 |
06-Jun-2015 |
np |
MFC r278239 and r278374.
r278239: cxgbe(4): reserve id for iSCSI upper layer driver.
r278374: cxgbe(4): tidy up some of the interaction between the Upper Layer Drivers (ULDs) and the base if_cxgbe driver.
Track the per-adapter activation of ULDs in a new "active_ulds" field. This was done pretty arbitrarily before this change -- via TOM_INIT_DONE in adapter->flags for TOM, and the (1 << MAX_NPORTS) bit in adapter->offload_map for iWARP.
iWARP and hw-accelerated iSCSI rely on the TOE (supported by the TOM ULD). The rules are: a) If the iWARP and/or iSCSI ULDs are available when TOE is enabled then iWARP and/or iSCSI are enabled too. b) When the iWARP and iSCSI modules are loaded they go looking for adapters with TOE enabled and enable themselves on that adapter. c) You cannot deactivate or unload the TOM module from underneath iWARP or iSCSI. Any such attempt will fail with EBUSY.
|
283856 |
01-Jun-2015 |
np |
MFC r273480, r273750, r273753, r273797, and r274461.
r273480: cxgbe/iw_cxgbe: wake up waiters after flushing the qp.
r273750: Some cxgbe/iw_cxgbe fixes: - Free rt in c4iw_connect only if it is allocated. - Call soclose instead of so_shutdown if there is an abort from the peer. - Close socket and return failure if TOE is not enabled.
r273753: iwcm_event status needs to be populated for close_complete_upcall
r273797: Always request a completion for every work request for iWARP. The initial MPA exchange must be tracked this way so that t4_tom's state for the tid is all clean at the time the tid transitions to RDMA mode. Once it does, t4_tom is out of the way and iw_cxgbe uses the qp endpoints directly.
r274461: iw_cxgbe: don't forget to close the socket in c4iw_connect if soconnect fails.
|
283854 |
31-May-2015 |
np |
MFC r272719:
cxgbe/tom: don't leak resources tied to an active open request that cannot be sent to the chip because a prerequisite L2 resolution failed.
|
281315 |
09-Apr-2015 |
jhb |
MFC 279892: Resize receive socket buffers that support autosizing when receiving TCP data via direct data placement.
|
281245 |
08-Apr-2015 |
np |
MFC r276729, r276775.
r276729: cxgbe/tom: use vmem(9) as the DDP page pod allocator.
r276775: cxgbe/tom: allocate page pod addresses instead of ppod#.
|
281244 |
08-Apr-2015 |
np |
MFC r276597:
cxgbe/tom: do not engage the TOE's payload chopper for payload < 2 MSS or for 10Gbps ports.
|
281214 |
07-Apr-2015 |
np |
MFC r276574:
cxgbe/tom: fix the MSS calculation for IPv6 connections handled by the TOE.
|
281213 |
07-Apr-2015 |
np |
MFC r276570:
cxgbe/tom: log some more details in send_flowc_wr.
|
281211 |
07-Apr-2015 |
np |
MFC r275733:
Move KTR_CXGBE from t4_tom.h to adapter.h so that the base if_cxgbe code can use it too.
|
278319 |
06-Feb-2015 |
jhb |
MFC 275808: Check for SS_NBIO in so->so_state instead of sb->sb_flags in soreceive_stream().
|
270297 |
21-Aug-2014 |
np |
MFC r266571, r266757, r268536, r269076, r269364, r269366, r269411, r269413, r269428, r269440, r269537, r269644, r269731, and the cxgbe portion of r270063.
r266571: cxgbe(4): Remove stray if_up from the code that creates the tracing ifnet.
r266757: cxgbe(4): netmap support for Terminator 5 (T5) based 10G/40G cards. Netmap gets its own hardware-assisted virtual interface and won't take over or disrupt the "normal" interface in any way. You can use both simultaneously.
For kernels with DEV_NETMAP, cxgbe(4) carves out an ncxl<N> interface (note the 'n' prefix) in the hardware to accompany each cxl<N> interface. These two ifnet's per port share the same wire but really are separate interfaces in the hardware and software. Each gets its own L2 MAC addresses (unicast and multicast), MTU, checksum caps, etc. You should run netmap on the 'n' interfaces only, that's what they are for.
With this, pkt-gen is able to transmit > 45Mpps out of a single 40G port of a T580 card. 2 port tx is at ~56Mpps total (28M + 28M) as of now. Single port receive is at 33Mpps but this is very much a work in progress. I expect it to be closer to 40Mpps once done. In any case the current effort can already saturate multiple 10G ports of a T5 card at the smallest legal packet size. T4 gear is totally untested.
trantor:~# ./pkt-gen -i ncxl0 -f tx -D 00:07:43:ab:cd:ef 881.952141 main [1621] interface is ncxl0 881.952250 extract_ip_range [275] range is 10.0.0.1:0 to 10.0.0.1:0 881.952253 extract_ip_range [275] range is 10.1.0.1:0 to 10.1.0.1:0 881.962540 main [1804] mapped 334980KB at 0x801dff000 Sending on netmap:ncxl0: 4 queues, 1 threads and 1 cpus. 10.0.0.1 -> 10.1.0.1 (00:00:00:00:00:00 -> 00:07:43:ab:cd:ef) 881.962562 main [1882] Sending 512 packets every 0.000000000 s 881.962563 main [1884] Wait 2 secs for phy reset 884.088516 main [1886] Ready... 884.088535 nm_open [457] overriding ifname ncxl0 ringid 0x0 flags 0x1 884.088607 sender_body [996] start 884.093246 sender_body [1064] drop copy 885.090435 main_thread [1418] 45206353 pps (45289533 pkts in 1001840 usec) 886.091600 main_thread [1418] 45322792 pps (45375593 pkts in 1001165 usec) 887.092435 main_thread [1418] 45313992 pps (45351784 pkts in 1000834 usec) 888.094434 main_thread [1418] 45315765 pps (45406397 pkts in 1002000 usec) 889.095434 main_thread [1418] 45333218 pps (45378551 pkts in 1001000 usec) 890.097434 main_thread [1418] 45315247 pps (45405877 pkts in 1002000 usec) 891.099434 main_thread [1418] 45326515 pps (45417168 pkts in 1002000 usec) 892.101434 main_thread [1418] 45333039 pps (45423705 pkts in 1002000 usec) 893.103434 main_thread [1418] 45324105 pps (45414708 pkts in 1001999 usec) 894.105434 main_thread [1418] 45318042 pps (45408723 pkts in 1002001 usec) 895.106434 main_thread [1418] 45332430 pps (45377762 pkts in 1001000 usec) 896.107434 main_thread [1418] 45338072 pps (45383410 pkts in 1001000 usec) ...
r268536: cxgbe(4): Add an iSCSI softc to the adapter structure.
r269076: Some hooks in cxgbe(4) for the offloaded iSCSI driver.
r269364: Improve compliance with style.Makefile(5).
r269366: List one file per line in the Makefiles. This makes it easier to read diffs when a file is added or removed.
r269411: cxgbe(4): minor optimizations in ingress queue processing.
Reorganize struct sge_iq. Make the iq entry size a compile time constant. While here, eliminate RX_FL_ESIZE and use EQ_ESIZE directly.
r269413: cxgbe(4): Fix an off by one error when looking for the BAR2 doorbell address of an egress queue.
r269428: cxgbe(4): some optimizations in freelist handling.
r269440: cxgbe(4): Remove an unused version of t4_enable_vi.
r269537: cxgbe(4): Do not run any sleepable code in the SIOCSIFFLAGS handler when IFF_PROMISC or IFF_ALLMULTI is being flipped. bpf(4) holds its global mutex around ifpromisc in at least the bpf_dtor path.
r269644: cxgbe(4): Let caller specify whether it's ok to sleep in t4_sched_config and t4_sched_params.
r269731: cxgbe(4): Do not poke T4-only registers on a T5 (and vice versa).
Relnotes: Yes (native netmap support for Chelsio T4/T5 cards)
|
270051 |
16-Aug-2014 |
bz |
MFC r266596:
Move the tcp_fields_to_host() and tcp_fields_to_net() (inline) functions to the tcp_var.h header file in order to avoid further duplication with upcoming commits.
Reviewed by: np
|
265426 |
06-May-2014 |
np |
MFC r259382:
Read card capabilities after firmware initialization, instead of setting them up as part of firmware initialization (which the driver gets to do only if it's the master driver).
Read the range of tids available for the ETHOFLD functionality if it's enabled.
New is_ftid() and is_etid() functions to test whether a tid falls within the range of filter tids or ETHOFLD tids respectively.
|
259804 |
24-Dec-2013 |
np |
MFC r259527:
Do not create a hardware IPv6 server if the listen address is not in6addr_any and is not in the CLIP table either. This fixes a reported TOE+IPv6 NULL-dereference panic in do_pass_open_rpl().
While here, stop creating hardware servers for any loopback address. It's just a waste of server tids.
|
256791 |
20-Oct-2013 |
np |
MFC r256459.
cxgbe(4): Update T4 and T5 firmwares to 1.9.12.0
Approved by: re (glebius)
|
256281 |
10-Oct-2013 |
gjb |
Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation
|
255411 |
09-Sep-2013 |
np |
Rework the tx credit mechanism between the cxgbe/tom driver and the card. This helps smooth out some burstiness in the exchange.
Approved by: re (glebius)
|
255410 |
09-Sep-2013 |
np |
Fix a miscalculation that caused cxgbe/tom to auto-increment a TOE socket's tx buffer size too aggressively.
Approved by: re (delphij)
|
255198 |
03-Sep-2013 |
np |
For TOE connections, the window scale factor in CPL_PASS_ACCEPT_REQ is set to 15 to indicate that the peer did not send a window scale option with its SYN. Do not send a window scale option in the SYN|ACK reply in that case.
|
255006 |
28-Aug-2013 |
np |
Change t4_list_lock and t4_uld_list_lock from mutexes to sx'es.
- tom_uninit had to be reworked not to hold the adapter lock (a mutex) around t4_deactivate_uld, which acquires the uld_list_lock. - the ifc_match for the interface cloner that creates the tracer ifnet had to be reworked as the kernel calls ifc_match with the global if_cloners_mtx held.
|
255005 |
28-Aug-2013 |
np |
Add hooks in base cxgbe(4) for the iWARP upper-layer driver. Update a couple of assertions in the TOE driver as well.
|
252728 |
04-Jul-2013 |
np |
- Make note of interface MTU change if the rx queues exist, and not just when the interface is up. - Add a tunable to control the TOE's rx coalesce feature (enabled by default as it always has been). Consider the interface MTU or the coalesce size when deciding which cluster zone to use to fill the offload rx queue's free list. The tunable is: dev.{t4nex,t5nex}.<N>.toe.rx_coalesce
MFC after: 1 day
|
252716 |
04-Jul-2013 |
np |
Pay attention to TCP_NODELAY when it's set/unset after the connection is established.
MFC after: 1 day
|
252711 |
04-Jul-2013 |
np |
The T5 allows the driver to specify the ISS. Do so; use the ISS picked by the kernel.
MFC after: 1 day
|
252705 |
04-Jul-2013 |
np |
- Read all TP parameters in one place. - Read the filter mode, calculate various shifts, and use them properly during active open (in select_ntuple).
MFC after: 1 day
|
251638 |
11-Jun-2013 |
np |
cxgbe/tom: Allow caller to select the queue (control or data) used to send the CPL_SET_TCB_FIELD request in t4_set_tcb_field().
MFC after: 1 week
|
251518 |
08-Jun-2013 |
np |
cxgbe/tom: Fix bad signed/unsigned mixup in the stid allocator. This fixes a panic when allocating a mixture of IPv6 and IPv4 stids.
MFC after: 1 week
|
250218 |
03-May-2013 |
np |
cxgbe/tom: Do not use M_PROTO1 to mark rx zero-copy mbufs as special. All the M_PROTOn flags are clobbered when an mbuf is appended to the socket buffer.
MFC after: 1 week
|
250117 |
30-Apr-2013 |
np |
Fix DDP breakage introduced in r248925. Bitwise OR has higher precedence than ternary conditional.
MFC after: 1 week
|
249627 |
18-Apr-2013 |
np |
cxgbe/tom: Update the CLIP table on the chip when there are changes to the list of IPv6 addresses on the system. The table is used for TOE+IPv6 only.
|
249385 |
11-Apr-2013 |
np |
cxgbe/tom: Slight simplification of code that calculates options2.
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
|
245937 |
26-Jan-2013 |
np |
Install an extra hold on the newly allocated synq entry so that it cannot be freed while do_pass_accept_req is running. This closes a race where do_pass_establish on another CPU (the driver chose a different queue for the new tid) expands the synq entry into a full PCB and then releases the only hold on it, all while do_pass_accept_req is still running.
MFC after: 3 days
|
245935 |
26-Jan-2013 |
np |
Add a couple of missing error codes. Treat CPL_ERR_KEEPALV_NEG_ADVICE as negative advice and not a fatal error.
MFC after: 3 days
|
245468 |
15-Jan-2013 |
np |
cxgbe/tom: Add support for fully offloaded TCP/IPv6 connections (passive open).
MFC after: 1 week
|
245467 |
15-Jan-2013 |
np |
cxgbe/tom: Add support for fully offloaded TCP/IPv6 connections (active open).
MFC after: 1 week
|
245448 |
15-Jan-2013 |
np |
cxgbe/tom: Basic CLIP table management.
This is the Compressed Local IPv6 table on the chip. To save space, the chip uses an index into this table instead of a full IPv6 address in some of its hardware data structures.
For now the driver fills this table with all the local IPv6 addresses that it sees at the time the table is initialized. I'll improve this later so that the table is updated whenever new IPv6 addresses are configured or existing ones deleted.
MFC after: 1 week
|
245441 |
15-Jan-2013 |
np |
cxgbe/tom: Miscellaneous updates for TOE+IPv6 support (more to follow).
- Teach find_best_mtu_idx() to deal with IPv6 endpoints.
- Install correct protosw in offloaded TCP/IPv6 sockets when DDP is enabled.
- Move set_tcp_ddp_ulp_mode to t4_tom.c so that t4_tom.h can be included without having to drag in t4_msg.h too. This was bothering the iWARP driver for some reason.
MFC after: 1 week
|
245434 |
14-Jan-2013 |
np |
cxgbe(4): Updates to the hardware L2 table management code.
- Add full support for IPv6 addresses.
- Read the size of the L2 table during attach. Do not assume that PCIe physical function 4 of the card has all of the table to itself.
- Use FNV instead of Jenkins to hash L3 addresses and drop the private copy of jhash.h from the driver.
MFC after: 1 week
|
245276 |
11-Jan-2013 |
np |
Overhaul the stid allocator so that it can be used for IPv6 servers too. The entry for an IPv6 server in the TCAM takes up the equivalent of two ordinary stids and must be properly aligned too.
MFC after: 1 week
|
245274 |
11-Jan-2013 |
np |
cxgbe(4): Add functions to help synchronize "slow" operations (those not on the fast data path) and use them instead of frobbing the adapter lock and busy flag directly.
Other changes made while reworking all slow operations: - Wait for the reply to a filter request (add/delete). This guarantees that the operation is complete by the time the ioctl returns. - Tidy up the tid_info structure. - Do not allow the tx queue size to be set to something that's not a power of 2.
MFC after: 1 week
|
243857 |
04-Dec-2012 |
glebius |
Mechanically substitute flags from historic mbuf allocator with malloc(9) flags in sys/dev.
|
243681 |
29-Nov-2012 |
np |
cxgbe/tom: Handle the case where the chip falls out of DDP mode by itself. The hole in the receive sequence space corresponds to the number of bytes placed directly up to that point.
MFC after: 1 week
|
243680 |
29-Nov-2012 |
np |
cxgbe/tom: Add a flag to indicate that the L2 table entry for an embryonic connection has been setup and never attempt to abort a tid before this is done. This fixes a bad race where a listening socket is closed when the driver is in the middle of step (b) here. The symptom of this were "ARP miss" errors from the driver followed by tid leaks.
A hardware-offloaded passive open works this way:
a) A SYN "hits" the TCAM entry for a server tid and the chip delivers it to the queue associated with the server tid (say, queue A). It waits for a response from the driver telling it what to do.
b) The driver decides it is ok to proceed. It adds the new tid to the list of embryonic connections associated with the server tid and then hands off the SYN to the kernel's syncache to make sure that the kernel okays it too. If it does then the driver provides an L2 table entry, queue id (say, queue B), etc. and instructs the chip to send the SYN/ACK response.
c) The chip delivers a status to queue B depending on how the third step of the 3-way handshake goes. The driver removes the tid from its list of embryonic connections and either expands the syncache entry or destroys the tid. In any case all subsequent messages for the new tid will be delivered to queue B, not queue A. Anything running in queue B knows that the L2 entry has long been setup and the new flag is of no interest from here on. If the listener is closed it will deal with so_comp as normal.
MFC after: 1 week
|
243110 |
16-Nov-2012 |
np |
cxgbe/tom: Plug mbuf leak.
MFC after: 3 days
|
242671 |
06-Nov-2012 |
np |
Make sure the inp hasn't been dropped before trying to access its socket and tcpcb.
MFC after: 3 days
|
242666 |
06-Nov-2012 |
np |
Remove the tid from the software table (and bump down the in-use counter) when the syncache doesn't want the driver to reply to an incoming SYN. This fixes a harmless bug where tids_in_use would go out of sync with the hardware counter.
MFC after: 3 days
|
241733 |
19-Oct-2012 |
ed |
Prefer __containerof() over __member2struct().
The former works better with qualifiers, but also properly type checks the input pointer.
|
241642 |
17-Oct-2012 |
np |
Always provide sndbuf and MSS values in a flowc command, even when the driver is going to abort the connection right after the flowc.
MFC after: 3 days
|
241626 |
17-Oct-2012 |
np |
Whitespace cleanup.
MFC after: 3 days
|
241394 |
10-Oct-2012 |
kevlo |
Revert previous commit...
Pointyhat to: kevlo (myself)
|
241370 |
09-Oct-2012 |
kevlo |
Prefer NULL over 0 for pointers
|
240452 |
13-Sep-2012 |
np |
Use native FreeBSD facilities everywhere except the shared code in common/
MFC after: 1 week
|
239544 |
21-Aug-2012 |
np |
Deal with the case where a syncache entry added by the TOE driver is evicted from the syncache but a later syncache_expand succeeds because of syncookies. The TOE driver has to resort to more direct means to install its hooks in the socket in this case.
|
239528 |
21-Aug-2012 |
np |
Avoid a NULL pointer dereference.
|
239527 |
21-Aug-2012 |
np |
Cannot hold a mutex around vm_fault_quick_hold_pages, so don't. Tweak some comments while here.
|
239514 |
21-Aug-2012 |
np |
Minor cleanup: use bitwise ops instead of pointless wrappers around setbit/clrbit.
|
239511 |
21-Aug-2012 |
np |
Correctly handle the case where an inp has already been dropped by the time the TOE driver reports that an active open failed. toe_connect_failed is supposed to handle this but it should be provided the inpcb instead of the tcpcb which may no longer be around.
|
239344 |
17-Aug-2012 |
np |
Support for TCP DDP (Direct Data Placement) in the T4 TOE module.
Basically, this is automatic rx zero copy when feasible. TCP payload is DMA'd directly into the userspace buffer described by the uio submitted in soreceive by an application.
- Works with sockets that are being handled by the TCP offload engine of a T4 chip (you need t4_tom.ko module loaded after cxgbe, and an "ifconfig +toe" on the cxgbe interface). - Does not require any modification to the application. - Not enabled by default. Use hw.t4nex.<X>.toe.ddp="1" to enable it.
|
239338 |
16-Aug-2012 |
np |
Add a routine (t4_set_tcb_field) to update arbitrary parts of a hardware TCB. Filters are programmed by modifying the TCB too (via a different routine) and the reply to any TCB update is delivered via a CPL_SET_TCB_RPL. Figure out whether the reply is for a filter-write or something else and route it appropriately.
MFC after: 2 weeks
|
237436 |
22-Jun-2012 |
np |
cxgbe(4): update to firmware interface 1.5.2.0; updates to shared code.
|
237263 |
19-Jun-2012 |
np |
- Updated TOE support in the kernel.
- Stateful TCP offload drivers for Terminator 3 and 4 (T3 and T4) ASICs. These are available as t3_tom and t4_tom modules that augment cxgb(4) and cxgbe(4) respectively. The cxgb/cxgbe drivers continue to work as usual with or without these extra features.
- iWARP driver for Terminator 3 ASIC (kernel verbs). T4 iWARP in the works and will follow soon.
Build-tested with make universe.
30s overview ============ What interfaces support TCP offload? Look for TOE4 and/or TOE6 in the capabilities of an interface: # ifconfig -m | grep TOE
Enable/disable TCP offload on an interface (just like any other ifnet capability): # ifconfig cxgbe0 toe # ifconfig cxgbe0 -toe
Which connections are offloaded? Look for toe4 and/or toe6 in the output of netstat and sockstat: # netstat -np tcp | grep toe # sockstat -46c | grep toe
Reviewed by: bz, gnn Sponsored by: Chelsio communications. MFC after: ~3 months (after 9.1, and after ensuring MFC is feasible)
|