Revision tags: release/13.1.0 |
|
#
e9e7bc82 |
| 04-Feb-2022 |
Navdeep Parhar <np@FreeBSD.org> |
cxgbe(4): Changes to the fatal error handler.
* New error_flags that can be used from the error ithread and elsewhere without a synch_op. * Stop the adapter immediately in t4_fatal_err but defer m
cxgbe(4): Changes to the fatal error handler.
* New error_flags that can be used from the error ithread and elsewhere without a synch_op. * Stop the adapter immediately in t4_fatal_err but defer most of the rest of the handling to a task. The task is allowed to sleep, unlike the ithread. Remove async_event_task as it is no longer needed. * Dump the devlog, CIMLA, and PCIE_FW exactly once on any fatal error involving the firmware or the CIM block. While here, dump some additional info (see dump_cim_regs) for these errors. * If both reset_on_fatal_err and panic_on_fatal_err are set then attempt a reset first and do not panic the system if it is successful.
MFC after: 1 week Sponsored by: Chelsio Communications
show more ...
|
#
94e6b3fe |
| 10-Jan-2022 |
Navdeep Parhar <np@FreeBSD.org> |
cxgbe(4): Fix build warning for LINT-NOIP.
MFC after: 1 week Sponsored by: Chelsio Communications
|
#
39d5cbdc |
| 05-Jan-2022 |
Navdeep Parhar <np@FreeBSD.org> |
cxgbe(4): Fix "set but not used [-Wunused-but-set-variable]" warnings.
MFC after: 1 week Sponsored by: Chelsio Communications
|
#
b99651c5 |
| 29-Dec-2021 |
Navdeep Parhar <np@FreeBSD.org> |
cxgbe(4): Fix panic on driver detach after a partially failed attach.
sge->ctrlq is not always allocated during attach (eg. if firmware initialization fails) and detach should be able to deal with t
cxgbe(4): Fix panic on driver detach after a partially failed attach.
sge->ctrlq is not always allocated during attach (eg. if firmware initialization fails) and detach should be able to deal with this.
MFC after: 1 week Sponsored by: Chelsio Communications
show more ...
|
Revision tags: release/12.3.0 |
|
#
14a634df |
| 24-Sep-2021 |
Mark Johnston <markj@FreeBSD.org> |
cxgbe: Mark received packets as initialized for KMSAN
The KMSAN runtime needs to have its shadow maps updated when devices update host memory, otherwise it assumes that device-populated memory is un
cxgbe: Mark received packets as initialized for KMSAN
The KMSAN runtime needs to have its shadow maps updated when devices update host memory, otherwise it assumes that device-populated memory is uninitialized. For most drivers this is handled transparently by busdma, but cxgbe doesn't make use of dma maps for receive buffers and so requires special treatment.
Reported by: mjg Tested by: mjg Reviewed by: np Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D32102
show more ...
|
#
c782ea8b |
| 14-Sep-2021 |
John Baldwin <jhb@FreeBSD.org> |
Add a switch structure for send tags.
Move the type and function pointers for operations on existing send tags (modify, query, next, free) out of 'struct ifnet' and into a new 'struct if_snd_tag_sw'
Add a switch structure for send tags.
Move the type and function pointers for operations on existing send tags (modify, query, next, free) out of 'struct ifnet' and into a new 'struct if_snd_tag_sw'. A pointer to this structure is added to the generic part of send tags and is initialized by m_snd_tag_init() (which now accepts a switch structure as a new argument in place of the type).
Previously, device driver ifnet methods switched on the type to call type-specific functions. Now, those type-specific functions are saved in the switch structure and invoked directly. In addition, this more gracefully permits multiple implementations of the same tag within a driver. In particular, NIC TLS for future Chelsio adapters will use a different implementation than the existing NIC TLS support for T6 adapters.
Reviewed by: gallatin, hselasky, kib (older version) Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D31572
show more ...
|
#
4d4cf62e |
| 11-Sep-2021 |
John Baldwin <jhb@FreeBSD.org> |
cxgbei: Handle errors in PDUs.
When a PDU with an error (bad padding, header digest, or data digest) is received, log the error via ICL_WARN() and then reset the connection via the ic_error callback
cxgbei: Handle errors in PDUs.
When a PDU with an error (bad padding, header digest, or data digest) is received, log the error via ICL_WARN() and then reset the connection via the ic_error callback.
While here, add per-rxq counters for errors.
Sponsored by: Chelsio Communications
show more ...
|
#
5b27e4b2 |
| 06-Aug-2021 |
John Baldwin <jhb@FreeBSD.org> |
cxgbei: Support for ISO (iSCSI segmentation offload).
ISO can be disabled before establishing a connection by setting dev.tNnex.N.toe.iso to 0.
Sponsored by: Chelsio Communications Differential Rev
cxgbei: Support for ISO (iSCSI segmentation offload).
ISO can be disabled before establishing a connection by setting dev.tNnex.N.toe.iso to 0.
Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D31223
show more ...
|
#
76c89022 |
| 20-Jul-2021 |
Navdeep Parhar <np@FreeBSD.org> |
cxgbe(4): Initialize abs_id for ctrl and ofld queues.
MFC after: 1 week Sponsored by: Chelsio Communications
|
#
5ef87bf8 |
| 27-May-2021 |
Navdeep Parhar <np@FreeBSD.org> |
cxgbe(4): Fix an incorrect assert.
CTRL and OFLD tx queues do not have automatic tx credit flush enabled so it is okay for the cidx not to be the same as the pidx when the queue is destroyed.
Repor
cxgbe(4): Fix an incorrect assert.
CTRL and OFLD tx queues do not have automatic tx credit flush enabled so it is okay for the cidx not to be the same as the pidx when the queue is destroyed.
Reported by: Jithesh Arakkan @ Chelsio MFC after: 1 week Sponsored by: Chelsio Communications
show more ...
|
#
df8437a9 |
| 26-May-2021 |
Andrew Gallatin <gallatin@FreeBSD.org> |
cxgbe: fix enabling lro & rxtimestamps
A recent change caused iq flags, like LRO, to be set before init_iq(). However, init_iq() clears those flags, so they became effectively impossible to set. T
cxgbe: fix enabling lro & rxtimestamps
A recent change caused iq flags, like LRO, to be set before init_iq(). However, init_iq() clears those flags, so they became effectively impossible to set. This change moves the initializion of these flags to after the call to init_iq(). This fixes LRO.
Differential Revision: https://reviews.freebsd.org/D30460 Reviewed by: np, rrs Sponsored by: Netflix Fixes: 43bbae19483fbde0a91e61acad8a6e71e334c8b8 <https://reviews.freebsd.org/R10:43bbae19483fbde0a91e61acad8a6e71e334c8b8>"
show more ...
|
#
ffbb373c |
| 22-May-2021 |
Navdeep Parhar <np@FreeBSD.org> |
cxgbe(4): Fix build warnings with NOINET kernels.
MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D26334
|
#
a9f0cf48 |
| 20-May-2021 |
John Baldwin <jhb@FreeBSD.org> |
cxgbe: Fix some merge-o's for the per-rxq iSCSI counters.
I botched a few of the changes when rebasing the changes in 4b6ed0758dc6fad17081d7bd791cb0edbddbddb8 across the changes in 43bbae19483fbde0a
cxgbe: Fix some merge-o's for the per-rxq iSCSI counters.
I botched a few of the changes when rebasing the changes in 4b6ed0758dc6fad17081d7bd791cb0edbddbddb8 across the changes in 43bbae19483fbde0a91e61acad8a6e71e334c8b8.
- Move the counter allocations into alloc_ofld_rxq().
- Free the counters freeing an ofld rxq.
Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D30267
show more ...
|
#
4b6ed075 |
| 14-May-2021 |
John Baldwin <jhb@FreeBSD.org> |
cxgbe: Make the TOE ISCSI RX stats per-queue instead of per adapter.
Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D29903
|
#
b9820bca |
| 28-Apr-2021 |
Navdeep Parhar <np@FreeBSD.org> |
cxgbe(4): Do not panic when tx is called with invalid checksum requests.
There is no need to panic in if_transmit if the checksums requested are inconsistent with the frame being transmitted. This
cxgbe(4): Do not panic when tx is called with invalid checksum requests.
There is no need to panic in if_transmit if the checksums requested are inconsistent with the frame being transmitted. This typically indicates that the kernel and driver were built with different INET/INET6 options, or there is some other kernel bug. The driver should just throw away the requests that it doesn't understand and move on.
MFC after: 1 week Sponsored by: Chelsio Communications
show more ...
|
#
43bbae19 |
| 26-Apr-2021 |
Navdeep Parhar <np@FreeBSD.org> |
cxgbe(4): Separate the sw- and hw-specific parts of resource allocations
The driver uses both software resources (locks, callouts, memory for descriptors and for bookkeeping, sysctls, etc.) and hard
cxgbe(4): Separate the sw- and hw-specific parts of resource allocations
The driver uses both software resources (locks, callouts, memory for descriptors and for bookkeeping, sysctls, etc.) and hardware resources (VIs, DMA queues, TCAM entries, etc.) to operate the NIC. This commit splits the single *_ALLOCATED flag used to track all these resources into separate *_SW_ALLOCATED and *_HW_ALLOCATED flags.
This is the simplified pseudocode that now applies to most queues (foo can be ctrlq/txq/rxq/ofld_txq/ofld_rxq):
/* Idempotent */ alloc_foo { if (!SW_ALLOCATED) init_iq/init_eq/init_fl no-fail sw init alloc_iq_fl/alloc_eq/alloc_wrq may-fail sw alloc add_foo_sysctls, etc. no-fail post-alloc items if (!HW_ALLOCATED) alloc_iq_fl_hwq/alloc_eq_hwq hw resource allocation }
/* Idempotent */ free_foo { if (!HW_ALLOCATED) free_iq_fl_hwq/free_eq_hwq release hw resources if (!SW_ALLOCATED) free_iq_fl/free_eq/free_wrq release sw resources }
The routines that take the driver to FULL_INIT_DONE and VI_INIT_DONE and back are now all idempotent. The quiesce routines pay attention to the HW_ALLOCATED flag and will not wait on the hardware for pidx/cidx updates and other completions if this flag is not set.
MFC after: 1 month Sponsored by: Chelsio Communications
show more ...
|
#
d107ee06 |
| 14-Apr-2021 |
Navdeep Parhar <np@FreeBSD.org> |
cxgbe(4): RSS hash for VXLAN traffic is computed from the inner frame.
Sponsored by: Chelsio Communications
|
#
568e69e4 |
| 12-Apr-2021 |
John Baldwin <jhb@FreeBSD.org> |
cxgbe: Add counters for iSCSI PDUs transmitted via TOE.
Reviewed by: np MFC after: 1 week Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D29297
|
Revision tags: release/13.0.0 |
|
#
fe496dc0 |
| 26-Mar-2021 |
John Baldwin <jhb@FreeBSD.org> |
cxgbe: Make the TOE TLS stats per-queue instead of per-port.
This avoids some atomics by using counter_u64 for TX and relying on existing single-threading (single ithread per rxq) for RX.
Reviewed
cxgbe: Make the TOE TLS stats per-queue instead of per-port.
This avoids some atomics by using counter_u64 for TX and relying on existing single-threading (single ithread per rxq) for RX.
Reviewed by: np Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D29383
show more ...
|
#
077ba6a8 |
| 26-Mar-2021 |
John Baldwin <jhb@FreeBSD.org> |
cxgbe: Add a struct sge_ofld_txq type.
This type mirrors struct sge_ofld_rxq and holds state for TCP offload transmit queues. Currently it only holds a work queue but will include additional state
cxgbe: Add a struct sge_ofld_txq type.
This type mirrors struct sge_ofld_rxq and holds state for TCP offload transmit queues. Currently it only holds a work queue but will include additional state in future changes.
Reviewed by: np Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D29382
show more ...
|
#
15f33555 |
| 24-Mar-2021 |
Navdeep Parhar <np@FreeBSD.org> |
cxgbe(4): Allow a T6 adapter to switch between TOE and NIC TLS mode.
The hw.cxgbe.kern_tls tunable was used for this in the past and if it was set then all T6 adapters would be configured for NIC TL
cxgbe(4): Allow a T6 adapter to switch between TOE and NIC TLS mode.
The hw.cxgbe.kern_tls tunable was used for this in the past and if it was set then all T6 adapters would be configured for NIC TLS operation and could not be reconfigured for TOE without a reload. With this change ifconfig can be used to manipulate toe and txtls caps like any other caps. hw.cxgbe.kern_tls continues to work as usual but its effects are not permanent any more.
* Enable nic_ktls_ofld in the default configuration file and use the firmware instead of direct register manipulation to apply/rollback NIC TLS configuration. This allows the driver to switch the hardware between TOE and NIC TLS mode in a safe manner. Note that the configuration is adapter-wide and not per-port.
* Remove the kern_tls config file as it works with 100G T6 cards only and leads to firmware crashes with 25G cards. The configurations included with the driver (with the exception of the FPGA configs) are supposed to work with all adapters.
Reported by: Veeresh U.K. at Chelsio MFC after: 2 weeks Sponsored by: Chelsio Communications Reviewed by: jhb@ Differential Revision: https://reviews.freebsd.org/D29291
show more ...
|
#
473f6163 |
| 19-Mar-2021 |
Navdeep Parhar <np@FreeBSD.org> |
cxgbe(4): use standard sysctl routines to deal with 16b values.
These routines to handle 8b and 16b types were added in r289773 5+ years ago.
MFC after: 2 weeks Sponsored by: Chelsio Communications
|
#
fae028dd |
| 18-Feb-2021 |
Navdeep Parhar <np@FreeBSD.org> |
cxgbe(4): Break up t4_read_chip_settings.
Read the PF-only hardware settings directly in get_params__post_init. Split the rest into two routines used by both the PF and VF drivers: one that reads th
cxgbe(4): Break up t4_read_chip_settings.
Read the PF-only hardware settings directly in get_params__post_init. Split the rest into two routines used by both the PF and VF drivers: one that reads the SGE rx buffer configuration and another that verifies miscellaneous hardware configuration.
MFC after: 1 week Sponsored by: Chelsio Communications
show more ...
|
#
294e62be |
| 17-Feb-2021 |
Alexander Motin <mav@FreeBSD.org> |
cxgbe(4): Save proper zone index on low memory in refill_fl().
When refill_fl() fails to allocate large (9/16KB) mbuf cluster, it falls back to safe (4KB) ones. But it still saved into sd->zidx the
cxgbe(4): Save proper zone index on low memory in refill_fl().
When refill_fl() fails to allocate large (9/16KB) mbuf cluster, it falls back to safe (4KB) ones. But it still saved into sd->zidx the original fl->zidx instead of fl->safe_zidx. It caused problems with the later use of that cluster, including memory and/or data corruption.
While there, make refill_fl() to use the safe zone for all following clusters for the call, since it is unlikely that large succeed.
MFC after: 3 days Sponsored by: iXsystems, Inc. Reviewed by: np, jhb Differential Revision: https://reviews.freebsd.org/D28716
show more ...
|
#
3447df8b |
| 01-Feb-2021 |
Navdeep Parhar <np@FreeBSD.org> |
cxgbe(4): Fixes to tx coalescing.
- The behavior implemented in r362905 resulted in delayed transmission of packets in some cases, causing performance issues. Use a different heuristic to predi
cxgbe(4): Fixes to tx coalescing.
- The behavior implemented in r362905 resulted in delayed transmission of packets in some cases, causing performance issues. Use a different heuristic to predict tx requests.
- Add a tunable/sysctl (hw.cxgbe.tx_coalesce) to disable tx coalescing entirely. It can be changed at any time. There is no change in default behavior.
show more ...
|