opnsense-src/sys/dev/cxgbe/tom
Navdeep Parhar 43bbae1948 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
2021-04-26 14:09:59 -07:00
..
t4_connect.c cxgbe(4): Allow a T6 adapter to switch between TOE and NIC TLS mode. 2021-03-25 12:39:41 -07:00
t4_cpl_io.c cxgbe(4): Separate the sw- and hw-specific parts of resource allocations 2021-04-26 14:09:59 -07:00
t4_ddp.c cxgbe ddp: Use CPL_COOKIE_DDP* instead of DDP_BUF*_INVALIDATED. 2021-03-22 10:05:02 -07:00
t4_listen.c TOE: Use a read lock on the PCB for syncache_add(). 2021-04-13 16:31:04 -07:00
t4_tls.c cxgbe: Make the TOE TLS stats per-queue instead of per-port. 2021-03-26 15:19:58 -07:00
t4_tls.h Re-enable receive flow control for TOE TLS sockets. 2020-10-19 20:08:50 +00:00
t4_tom.c cxgbe/t4_tom: Implement tod_pmtu_update. 2021-04-22 14:48:57 -07:00
t4_tom.h cxgbe/t4_tom: restore socket's protosw before entering TIME_WAIT. 2021-03-31 10:54:32 -07:00
t4_tom_l2t.c cxgbe/tom: Put the ifnet or VLAN's PCP value in the 802.1Q tag of frames 2018-08-17 19:22:46 +00:00
t4_tom_l2t.h sys/dev: further adoption of SPDX licensing ID tags. 2017-11-27 14:52:40 +00:00