<feed xmlns='http://www.w3.org/2005/Atom'>
<title>src/sys/dev/cxgbe/t4_netmap.c, branch releng/14.2</title>
<subtitle>FreeBSD source tree</subtitle>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/'/>
<entry>
<title>cxgbe: Flush transmitted packets more regularly in netmap mode</title>
<updated>2024-08-08T15:55:48+00:00</updated>
<author>
<name>Mark Johnston</name>
<email>markj@FreeBSD.org</email>
</author>
<published>2024-05-21T19:18:32+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=aa937aa8c52646c37a2e1c98303fb581d858af03'/>
<id>aa937aa8c52646c37a2e1c98303fb581d858af03</id>
<content type='text'>
Previously, when transmitting short runs of packets via cxgbe_nm_tx(),
we would wait until a large number of packets were buffered before
scheduling a task to clean transmit buffers.

Obtained from:	np

(cherry picked from commit 6af3d59962449c66688361598163dd174cc5fb2a)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously, when transmitting short runs of packets via cxgbe_nm_tx(),
we would wait until a large number of packets were buffered before
scheduling a task to clean transmit buffers.

Obtained from:	np

(cherry picked from commit 6af3d59962449c66688361598163dd174cc5fb2a)
</pre>
</div>
</content>
</entry>
<entry>
<title>cxgbe(4): Add support for netmap offsets.</title>
<updated>2024-01-11T05:22:31+00:00</updated>
<author>
<name>Navdeep Parhar</name>
<email>np@FreeBSD.org</email>
</author>
<published>2024-01-05T01:39:31+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=c4bac077581ee38a3c64cd3a76cb9dd974dd749b'/>
<id>c4bac077581ee38a3c64cd3a76cb9dd974dd749b</id>
<content type='text'>
PR:		253069
Sponsored by:	Chelsio Communications

(cherry picked from commit df8a58b17a1907ed3b4597475d1cb8eacc9636de)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
PR:		253069
Sponsored by:	Chelsio Communications

(cherry picked from commit df8a58b17a1907ed3b4597475d1cb8eacc9636de)
</pre>
</div>
</content>
</entry>
<entry>
<title>sys: Remove $FreeBSD$: one-line .c pattern</title>
<updated>2023-08-16T17:54:36+00:00</updated>
<author>
<name>Warner Losh</name>
<email>imp@FreeBSD.org</email>
</author>
<published>2023-08-16T17:54:36+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=685dc743dc3b5645e34836464128e1c0558b404b'/>
<id>685dc743dc3b5645e34836464128e1c0558b404b</id>
<content type='text'>
Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/
</pre>
</div>
</content>
</entry>
<entry>
<title>Mechanically convert cxgb(4) and cxgbe(4) to IfAPI</title>
<updated>2023-03-07T20:31:48+00:00</updated>
<author>
<name>Justin Hibbits</name>
<email>jhibbits@FreeBSD.org</email>
</author>
<published>2022-05-30T19:39:59+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=954712e8f62273ec4c25d05cf56c23fd670d79c0'/>
<id>954712e8f62273ec4c25d05cf56c23fd670d79c0</id>
<content type='text'>
Reviewed by:	np
Sponsored by:	Juniper Networks, Inc.
Differential Revision: https://reviews.freebsd.org/D38597
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reviewed by:	np
Sponsored by:	Juniper Networks, Inc.
Differential Revision: https://reviews.freebsd.org/D38597
</pre>
</div>
</content>
</entry>
<entry>
<title>cxgbe: Various whitespace fixes.</title>
<updated>2022-11-15T20:03:57+00:00</updated>
<author>
<name>John Baldwin</name>
<email>jhb@FreeBSD.org</email>
</author>
<published>2022-11-15T20:03:57+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=21186bdb2d6a14dbfff7b4366425285b8612cc22'/>
<id>21186bdb2d6a14dbfff7b4366425285b8612cc22</id>
<content type='text'>
Mostly trailing whitespace and spaces before tabs.

Sponsored by:	Chelsio Communications
Differential Revision:	https://reviews.freebsd.org/D37350
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Mostly trailing whitespace and spaces before tabs.

Sponsored by:	Chelsio Communications
Differential Revision:	https://reviews.freebsd.org/D37350
</pre>
</div>
</content>
</entry>
<entry>
<title>cxgbe(4): Add another setting to the knob that controls congestion.</title>
<updated>2022-09-12T18:40:29+00:00</updated>
<author>
<name>Navdeep Parhar</name>
<email>np@FreeBSD.org</email>
</author>
<published>2022-09-09T22:16:22+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=df275ae5090048fb7a8c082d509fae57e891957a'/>
<id>df275ae5090048fb7a8c082d509fae57e891957a</id>
<content type='text'>
hw.cxgbe.cong_drop=2 will generate backpressure *and* drop frames for
queues that are congested.

MFC after:	2 weeks
Sponsored by:	Chelsio Communications
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
hw.cxgbe.cong_drop=2 will generate backpressure *and* drop frames for
queues that are congested.

MFC after:	2 weeks
Sponsored by:	Chelsio Communications
</pre>
</div>
</content>
</entry>
<entry>
<title>cxgbe(4): Specify the ingress queue's type when creating it.</title>
<updated>2022-09-12T18:40:25+00:00</updated>
<author>
<name>Navdeep Parhar</name>
<email>np@FreeBSD.org</email>
</author>
<published>2022-09-08T18:47:38+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=c387ff0045d620d60ed8250360d4196a4c962a13'/>
<id>c387ff0045d620d60ed8250360d4196a4c962a13</id>
<content type='text'>
The firmware takes the type into account when setting up the PCIe
channel for the queue.

MFC after:	1 week
Sponsored by:	Chelsio Communications
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The firmware takes the type into account when setting up the PCIe
channel for the queue.

MFC after:	1 week
Sponsored by:	Chelsio Communications
</pre>
</div>
</content>
</entry>
<entry>
<title>cxgbe(4): Separate the sw- and hw-specific parts of resource allocations</title>
<updated>2021-04-26T21:09:59+00:00</updated>
<author>
<name>Navdeep Parhar</name>
<email>np@FreeBSD.org</email>
</author>
<published>2021-04-26T21:03:06+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=43bbae19483fbde0a91e61acad8a6e71e334c8b8'/>
<id>43bbae19483fbde0a91e61acad8a6e71e334c8b8</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.

MFC after:	1 month
Sponsored by:	Chelsio Communications
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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
</pre>
</div>
</content>
</entry>
<entry>
<title>cxgbe(4): use standard sysctl routines to deal with 16b values.</title>
<updated>2021-03-19T17:56:24+00:00</updated>
<author>
<name>Navdeep Parhar</name>
<email>np@FreeBSD.org</email>
</author>
<published>2021-03-19T17:56:24+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=473f6163e310b773dfd7e500e255d01d7328dd16'/>
<id>473f6163e310b773dfd7e500e255d01d7328dd16</id>
<content type='text'>
These routines to handle 8b and 16b types were added in r289773 5+ years
ago.

MFC after:	2 weeks
Sponsored by:	Chelsio Communications
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
These routines to handle 8b and 16b types were added in r289773 5+ years
ago.

MFC after:	2 weeks
Sponsored by:	Chelsio Communications
</pre>
</div>
</content>
</entry>
<entry>
<title>cxgbe(4): Stop but don't free netmap queues when netmap is switched off.</title>
<updated>2020-12-03T08:30:29+00:00</updated>
<author>
<name>Navdeep Parhar</name>
<email>np@FreeBSD.org</email>
</author>
<published>2020-12-03T08:30:29+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=8eba75ed68854188c01a2058fe1f826b3428dbfa'/>
<id>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>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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
</pre>
</div>
</content>
</entry>
</feed>
