<feed xmlns='http://www.w3.org/2005/Atom'>
<title>src/sys/dev/ixl, branch release/12.3.0</title>
<subtitle>FreeBSD source tree</subtitle>
<id>https://cgit-dev.freebsd.org/src/atom?h=release%2F12.3.0</id>
<link rel='self' href='https://cgit-dev.freebsd.org/src/atom?h=release%2F12.3.0'/>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/'/>
<updated>2021-10-03T02:03:11Z</updated>
<entry>
<title>iflib: ensure that tx interrupts enabled and cleanups</title>
<updated>2021-10-03T02:03:11Z</updated>
<author>
<name>Matt Macy</name>
<email>mmacy@FreeBSD.org</email>
</author>
<published>2020-12-19T01:08:33Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=a5a91bd2a09ffe748b6dd7d5f996fe725c22c774'/>
<id>urn:sha1:a5a91bd2a09ffe748b6dd7d5f996fe725c22c774</id>
<content type='text'>
Doing a 'dd' over iscsi will reliably cause stalls. Tx
cleaning _should_ reliably happen as data is sent.
However, currently if the transmit queue fills it will
wait until the iflib timer (hz/2) runs.

This change causes the the tx taskq thread to be run
if there are completed descriptors.

While here:

- make timer interrupt delay a sysctl

- simplify txd_db_check handling

- comment on INTR types

Background on the change:

Initially doorbell updates were minimized by only writing to the register
on every fourth packet. If txq_drain would return without writing to the
doorbell it scheduled a callout on the next tick to do the doorbell write
to ensure that the write otherwise happened "soon". At that time a sysctl
was added for users to avoid the potential added latency by simply writing
to the doorbell register on every packet. This worked perfectly well for
e1000 and ixgbe ... and appeared to work well on ixl. However, as it
turned out there was a race to this approach that would lockup the ixl MAC.
It was possible for a lower producer index to be written after a higher one.
On e1000 and ixgbe this was harmless - on ixl it was fatal. My initial
response was to add a lock around doorbell writes - fixing the problem but
adding an unacceptable amount of lock contention.

The next iteration was to use transmit interrupts to drive delayed doorbell
writes. If there were no packets in the queue all doorbell writes would be
immediate as the queue started to fill up we could delay doorbell writes
further and further. At the start of drain if we've cleaned any packets we
know we've moved the state machine along and we write the doorbell (an
obvious missing optimization was to skip that doorbell write if db_pending
is zero). This change required that tx interrupts be scheduled periodically
as opposed to just when the hardware txq was full. However, that just leads
to our next problem.

Initially dedicated msix vectors were used for both tx and rx. However, it
was often possible to use up all available vectors before we set up all the
queues we wanted. By having rx and tx share a vector for a given queue we
could halve the number of vectors used by a given configuration. The problem
here is that with this change only e1000 passed the necessary value to have
the fast interrupt drive tx when appropriate.

Reported by: mav@
Tested by: mav@
Reviewed by:    gallatin@
MFC after:      1 month
Sponsored by:   iXsystems
Differential Revision:  https://reviews.freebsd.org/D27683

(cherry picked from commit 81be655266fac2b333e25f386f32c9bcd17f523d)
</content>
</entry>
<entry>
<title>iflib: Make if_shared_ctx_t a pointer to const</title>
<updated>2021-10-03T01:55:49Z</updated>
<author>
<name>Mark Johnston</name>
<email>markj@FreeBSD.org</email>
</author>
<published>2021-03-08T17:39:06Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=3a13449e4daa28fd7be43c91017212818006ed5c'/>
<id>urn:sha1:3a13449e4daa28fd7be43c91017212818006ed5c</id>
<content type='text'>
This structure is shared among multiple instances of a driver, so we
should ensure that it doesn't somehow get treated as if there's a
separate instance per interface.  This is especially important for
software-only drivers like wg.

DEVICE_REGISTER() still returns a void * and so the per-driver sctx
structures are not yet defined with the const qualifier.

Reviewed by:	gallatin, erj
MFC after:	2 weeks
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D29102

(cherry picked from commit ffe3def903a5f239c319e5fe12450659658974a5)
</content>
</entry>
<entry>
<title>iflib: Free resources in a consistent order during detach</title>
<updated>2021-09-28T17:21:52Z</updated>
<author>
<name>Sai Rajesh Tallamraju</name>
<email>stallamr@netapp.com</email>
</author>
<published>2021-02-01T16:13:00Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=5b4cfd3f1315856029256a9847d78d3b1b717fb0'/>
<id>urn:sha1:5b4cfd3f1315856029256a9847d78d3b1b717fb0</id>
<content type='text'>
Memory and PCI resources are freed with no particular order.  This could
cause use-after-frees when detaching following a failed attach.  For
instance, iflib_tx_structures_free() frees ctx-&gt;ifc_txqs[] but
iflib_tqg_detach() attempts to access this array. Similarly, adapter
queues gets freed by IFDI_QUEUES_FREE() but IFDI_DETACH() attempts to
access adapter queues to free PCI resources.

MFC after:	2 weeks
Sponsored by:	NetApp, Inc.
Differential Revision:	https://reviews.freebsd.org/D27634

(cherry picked from commit 38bfc6dee33bedb290e1ea2540f97a86fe3caee0)
</content>
</entry>
<entry>
<title>ixl(4): Fix 2.5 and 5G speeds reporting and update shared code</title>
<updated>2021-09-20T22:12:32Z</updated>
<author>
<name>Krzysztof Galazka</name>
<email>krzysztof.galazka@intel.com</email>
</author>
<published>2021-09-13T20:39:59Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=bc2fa5ace223691874c5246b2f00b4e60922b463'/>
<id>urn:sha1:bc2fa5ace223691874c5246b2f00b4e60922b463</id>
<content type='text'>
Fix 2.5 and 5G speeds reporting and update shared code with recent
changes:
- Update expected FW API versions for X710 and X722 adapters
- Define pointers related to Preservation Rules Module
- Add definitions for Shadow RAM pointers to new modules: 5th and 6th
  FPA, and Preservation Rules Module.
- Add I40E_RX_PTYPE_PARSER_ABORTED definition, so the driver will know
  opcode for parser aborted packets.
- Add the new filter types needed for custom cloud filters.
- Add support for Minimum Rollback Revision
- Fix RX_ONLY mode for unicast promiscuous on VLAN
- Add EEE LPI status check for X722 adapters
- Fix PHY type identifiers for 2.5G and 5G adapters
- Fix update link data for X722
- Increase the timeout value for PF reset to give PF more time to finish
  reset if it is loaded with filters.
- Added support for Min Rollback Revision for 4 more X722 modules
- Fix reporting of Active Optical Cable media type
- Add flags and fields for double VLAN processing
- Fix potentially uninitialized variables in NVM code

Reviewed by:	kbowling@, mike.jakubik@gmail.com
Tested by:	gowtham.kumar.ks@intel.com
Sponsored by:	Intel Corporation
Differential Revision:	https://reviews.freebsd.org/D31565

(cherry picked from commit abf774528d7e497460510b0026db85e30f054142)
</content>
</entry>
<entry>
<title>ixl(4): Fix reporting of unqualified transceivers</title>
<updated>2021-09-20T22:12:05Z</updated>
<author>
<name>Krzysztof Galazka</name>
<email>krzysztof.galazka@intel.com</email>
</author>
<published>2021-08-20T21:12:28Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=6310681f67ef80908d6401fb150648073834360d'/>
<id>urn:sha1:6310681f67ef80908d6401fb150648073834360d</id>
<content type='text'>
When link_active_on_if_down flag is disabled and link is brought down
with ifconfig, FW reports a false positive link event about an
unqualified transceiver. The condition used in the driver to filter out
those false positive events was incorrect and caused that unqualified
module event to also not be reported when the event was valid.

Change the condition to rely on IFF_UP flag instead of
link_active_on_if_down and bump driver version to 2.3.1-k.

Signed-off-by: Krzysztof Galazka &lt;krzysztof.galazka@intel.com&gt;
Signed-off-by: Eric Joyner &lt;erj@FreeBSD.org&gt;

Reviewed by:	stallamr@netapp.com, erj@
Tested by:	gowtham.kumar.ks@intel.com
Sponsored by:	Intel Corporation
Differential Revision:	https://reviews.freebsd.org/D30733

(cherry picked from commit c4622b01d2f12b889b57ff7d0b03a38dfcb00fd8)
</content>
</entry>
<entry>
<title>ixl(4): Add tunable to override Flow Control settings</title>
<updated>2021-09-20T22:11:14Z</updated>
<author>
<name>Krzysztof Galazka</name>
<email>krzysztof.galazka@intel.com</email>
</author>
<published>2021-04-05T18:08:33Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=a89887d57b965e7749e05488f8e8dae7911b3fc3'/>
<id>urn:sha1:a89887d57b965e7749e05488f8e8dae7911b3fc3</id>
<content type='text'>
Add flow_control to hw.ixl tunables tree to let override
initial flow control configuration for all interfaces.
Keep using configuration set by NVM by default.

Reviewed by:	erj@, gallatin@
Tested by:	gowtham.kumar.ks_intel.com
Sponsored by:	Intel Corporation
Differential Revision:	https://reviews.freebsd.org/D29338

(cherry picked from commit 20a52706c814ccfd91c65586404abd2a1563a330)
</content>
</entry>
<entry>
<title>ixl(4): Report RX errors as sum of all RX error counters</title>
<updated>2021-09-20T21:31:03Z</updated>
<author>
<name>Krzysztof Galazka</name>
<email>krzysztof.galazka@intel.com</email>
</author>
<published>2021-03-03T01:33:11Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=9fb4d27695499501572335700418ca40b20cb6b1'/>
<id>urn:sha1:9fb4d27695499501572335700418ca40b20cb6b1</id>
<content type='text'>
HW keeps track of RX errors using several counters, each for
specific type of errors. Report RX errors to OS as sum
of all those counters: CRC errors, illegal bytes, checksum,
length, undersize, fragment, oversize and jabber errors.

There is no HW counter for frames with invalid L3/L4 checksums
so add a SW one.

Also add a "rx_errors" sysctl with a copy of netstat IERRORS
counter value to make it easier accessible from scripts.

Reviewed By:	erj
Tested By:	gowtham.kumar.ks@intel.com
Sponsored By:	Intel Corporation
Differential Revision:	https://reviews.freebsd.org/D27639

(cherry picked from commit 9f99061ef9c95b171fc92d34026222bb5e052337)
</content>
</entry>
<entry>
<title>ixl(4): Add ability to control link state on ifconfig down</title>
<updated>2021-09-20T21:30:13Z</updated>
<author>
<name>Krzysztof Galazka</name>
<email>krzysztof.galazka@intel.com</email>
</author>
<published>2021-03-03T01:38:51Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=643f587c95ddc07dd5dc32ff5a2bdb0bd72e8df9'/>
<id>urn:sha1:643f587c95ddc07dd5dc32ff5a2bdb0bd72e8df9</id>
<content type='text'>
Add sysctl link_active_on_if_down, which allows user to control
if interface is kept in active state when it is brought
down with ifconfig. Set it to enabled by default to preserve
backwards compatibility.

Reviewed by:	erj
Tested by:	gowtham.kumar.ks@intel.com
Sponsored by:	Intel Corporation
Differential Revision:	https://reviews.freebsd.org/D28028

(cherry picked from commit 21802a127d83e8a8c721d69b697e7ddb223d7797)
</content>
</entry>
<entry>
<title>intel ethernet: Use ether_gen_addr(9)</title>
<updated>2021-08-27T01:38:09Z</updated>
<author>
<name>Kevin Bowling</name>
<email>kbowling@FreeBSD.org</email>
</author>
<published>2021-08-20T14:45:30Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=200842074ba60e8e4c8ab2776a3d2b85d3cd4101'/>
<id>urn:sha1:200842074ba60e8e4c8ab2776a3d2b85d3cd4101</id>
<content type='text'>
Use ether_gen_addr(9) for VF MAC generation

Reviewed by:	Intel Networking (erj), kevans
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D31616

(cherry picked from commit 0e5811a2a9a1b4a7e0c79b73e3b9b9d15d481577)
</content>
</entry>
<entry>
<title>ixl: Permit 802.1ad frames to pass though the chip</title>
<updated>2021-02-02T14:42:38Z</updated>
<author>
<name>Lutz Donnerhacke</name>
<email>donner@FreeBSD.org</email>
</author>
<published>2021-02-02T14:42:38Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=a2c37aa836c0d24b97102605d65971b887a8e957'/>
<id>urn:sha1:a2c37aa836c0d24b97102605d65971b887a8e957</id>
<content type='text'>
This patch is a quick hack to change the internal Ethertype used
within the chip.  All frames with this type are dropped silently.
This patch allows you to overwrite the factory default 0x88a8, which
is used by IEEE 802.1ad VLAN stacking.

Reviewed by:	kp, philip, brueffer
Approved by:	philip (mentor)
Differential Revision: https://reviews.freebsd.org/D24179

(cherry picked from commit fa6662b3689eeb71cb63c2b230ca08e7342cabf0)
</content>
</entry>
</feed>
