<feed xmlns='http://www.w3.org/2005/Atom'>
<title>src/sys/dev/cxgbe/t4_netmap.c, branch release/13.2.0</title>
<subtitle>FreeBSD source tree</subtitle>
<id>https://cgit-dev.freebsd.org/src/atom?h=release%2F13.2.0</id>
<link rel='self' href='https://cgit-dev.freebsd.org/src/atom?h=release%2F13.2.0'/>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/'/>
<updated>2023-02-02T07:18:51Z</updated>
<entry>
<title>cxgbe(4): Add another setting to the knob that controls congestion.</title>
<updated>2023-02-02T07:18:51Z</updated>
<author>
<name>Navdeep Parhar</name>
<email>np@FreeBSD.org</email>
</author>
<published>2022-09-09T22:16:22Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=5adfcaeacafa73522cf98403428e7785a7aecc82'/>
<id>urn:sha1:5adfcaeacafa73522cf98403428e7785a7aecc82</id>
<content type='text'>
hw.cxgbe.cong_drop=2 will generate backpressure *and* drop frames for
queues that are congested.

Sponsored by:	Chelsio Communications

(cherry picked from commit df275ae5090048fb7a8c082d509fae57e891957a)
</content>
</entry>
<entry>
<title>cxgbe(4): Specify the ingress queue's type when creating it.</title>
<updated>2023-02-02T07:18:45Z</updated>
<author>
<name>Navdeep Parhar</name>
<email>np@FreeBSD.org</email>
</author>
<published>2022-09-08T18:47:38Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=af0f5fe24c9b16341ee9c981d572150b74c41fa9'/>
<id>urn:sha1:af0f5fe24c9b16341ee9c981d572150b74c41fa9</id>
<content type='text'>
The firmware takes the type into account when setting up the PCIe
channel for the queue.

Sponsored by:	Chelsio Communications

(cherry picked from commit c387ff0045d620d60ed8250360d4196a4c962a13)
</content>
</entry>
<entry>
<title>cxgbe: Various whitespace fixes.</title>
<updated>2023-01-24T05:11:47Z</updated>
<author>
<name>John Baldwin</name>
<email>jhb@FreeBSD.org</email>
</author>
<published>2022-11-15T20:03:57Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=b0cb849d7f629408dd6ed532e26db3f4cf076131'/>
<id>urn:sha1:b0cb849d7f629408dd6ed532e26db3f4cf076131</id>
<content type='text'>
Mostly trailing whitespace and spaces before tabs.

Sponsored by:	Chelsio Communications
Differential Revision:	https://reviews.freebsd.org/D37350

(cherry picked from commit 21186bdb2d6a14dbfff7b4366425285b8612cc22)
</content>
</entry>
<entry>
<title>cxgbe(4): Separate the sw- and hw-specific parts of resource allocations</title>
<updated>2021-10-20T13:55:38Z</updated>
<author>
<name>Navdeep Parhar</name>
<email>np@FreeBSD.org</email>
</author>
<published>2021-04-26T21:03:06Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=8ec8f56ce25b0bcb95bba5ae52d284bcbd88617e'/>
<id>urn:sha1:8ec8f56ce25b0bcb95bba5ae52d284bcbd88617e</id>
<content type='text'>
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.

Sponsored by:	Chelsio Communications

(cherry picked from commit 43bbae19483fbde0a91e61acad8a6e71e334c8b8)
</content>
</entry>
<entry>
<title>cxgbe(4): use standard sysctl routines to deal with 16b values.</title>
<updated>2021-05-16T03:06:35Z</updated>
<author>
<name>Navdeep Parhar</name>
<email>np@FreeBSD.org</email>
</author>
<published>2021-03-19T17:56:24Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=564d1f6aef5e72a94e53f70b727c675481086622'/>
<id>urn:sha1:564d1f6aef5e72a94e53f70b727c675481086622</id>
<content type='text'>
These routines to handle 8b and 16b types were added in r289773 5+ years
ago.

Sponsored by:	Chelsio Communications

(cherry picked from commit 473f6163e310b773dfd7e500e255d01d7328dd16)
</content>
</entry>
<entry>
<title>cxgbe(4): Stop but don't free netmap queues when netmap is switched off.</title>
<updated>2020-12-03T08:30:29Z</updated>
<author>
<name>Navdeep Parhar</name>
<email>np@FreeBSD.org</email>
</author>
<published>2020-12-03T08:30:29Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=8eba75ed68854188c01a2058fe1f826b3428dbfa'/>
<id>urn:sha1:8eba75ed68854188c01a2058fe1f826b3428dbfa</id>
<content type='text'>
It is common for freelists to be starving when a netmap application
stops.  Mailbox commands to free queues can hang in such a situation.
Avoid that by not freeing the queues when netmap is switched off.
Instead, use an alternate method to stop the queues without releasing
the context ids.  If netmap is enabled again later then the same queue
is reinitialized for use.  Move alloc_nm_rxq and txq to t4_netmap.c
while here.

MFC after:	1 week
Sponsored by:	Chelsio Communications
</content>
</entry>
<entry>
<title>cxgbe(4): Revert r367917.</title>
<updated>2020-12-02T20:54:03Z</updated>
<author>
<name>Navdeep Parhar</name>
<email>np@FreeBSD.org</email>
</author>
<published>2020-12-02T20:54:03Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=f42f3b2955e5afa770275fd76b4f754fbd67bbeb'/>
<id>urn:sha1:f42f3b2955e5afa770275fd76b4f754fbd67bbeb</id>
<content type='text'>
r367917 fixed the backpressure on the netmap rxq being stopped but that
doesn't help if some other netmap rxq is starved (because it is stopping
too although the driver doesn't know this yet) and blocks the pipeline.
An alternate fix that works in all cases will be checked in instead.

Sponsored by:	Chelsio Communications
</content>
</entry>
<entry>
<title>cxgbe(4): Catch up with in-flight netmap rx before destroying queues.</title>
<updated>2020-11-21T03:27:32Z</updated>
<author>
<name>Navdeep Parhar</name>
<email>np@FreeBSD.org</email>
</author>
<published>2020-11-21T03:27:32Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=b3718e2d7ebfe7fc0bb57bd0906aacc28dd755b2'/>
<id>urn:sha1:b3718e2d7ebfe7fc0bb57bd0906aacc28dd755b2</id>
<content type='text'>
The netmap application using the driver is responsible for replenishing
the receive freelists and they may be totally depleted when the
application exits.  Packets in flight, if any, might block the pipeline
in case there aren't enough buffers left in the freelist.  Avoid this by
filling up the freelists with a driver allocated buffer.

MFC after:	1 week
Sponsored by:	Chelsio Communications
</content>
</entry>
<entry>
<title>cxgbe(4): fix the size of the iq/eq maps.</title>
<updated>2020-10-22T08:40:25Z</updated>
<author>
<name>Navdeep Parhar</name>
<email>np@FreeBSD.org</email>
</author>
<published>2020-10-22T08:40:25Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=b20b25e744778ac54d54f5486035e70d6570f4d9'/>
<id>urn:sha1:b20b25e744778ac54d54f5486035e70d6570f4d9</id>
<content type='text'>
The firmware can allocate ingress and egress context ids anywhere from
its configured range.  Size the iq/eq maps to match the entire range
instead of assuming that the firmware always allocates the first
available context id.

Reported by:	Baptiste Wicht @ Verisign
MFC after:	1 week
Sponsored by:	Chelsio Communications
</content>
</entry>
<entry>
<title>cxgbe(4): Avoid unnecessary work in the firmware during netmap tx.</title>
<updated>2020-09-29T09:25:52Z</updated>
<author>
<name>Navdeep Parhar</name>
<email>np@FreeBSD.org</email>
</author>
<published>2020-09-29T09:25:52Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=822967e7e5b24d5fa980f69cab7b2982e1b6fa42'/>
<id>urn:sha1:822967e7e5b24d5fa980f69cab7b2982e1b6fa42</id>
<content type='text'>
Bind the netmap tx queues to a special '0xff' scheduling class which
makes the firmware skip some processing related to rate limiting on the
outgoing traffic.  Future firmwares will do this automatically.

MFC after:	1 week
Sponsored by:	Chelsio Communications
</content>
</entry>
</feed>
