History log of /freebsd-10-stable/sys/dev/sfxge/common/efx_ev.c
Revision Date Author Comments
# 342521 26-Dec-2018 arybchik

MFC r341326

sfxge(4): ensure EvQ poll stops when abort is requested

If an event handler requested an abort, only the inner loop was
guarenteed to be broken out of - the outer loop could continue
if total == batch.

Fix this by poisoning batch to ensure it is different to total.

Submitted by: Mark Spender <mspender at solarflare.com>
Sponsored by: Solarflare Communications, Inc.
Differential Revision: https://reviews.freebsd.org/D18287


# 342502 26-Dec-2018 arybchik

MFC r340889

sfxge(4): fix warnings from VS2015 C compiler (C4189)

Fix multiple level 4 warnings
"C4189: 'xxx': local variable is initialized but not referenced";
no functional changes.

Submitted by: Andrew Lee <alee at solarflare.com>
Sponsored by: Solarflare Communications, Inc.
Differential Revision: https://reviews.freebsd.org/D18123


# 342501 26-Dec-2018 arybchik

MFC r340888

sfxge(4): fix warnings from VS2015 C compiler (C4100)

Fix multiple level 4 warnings
"C4100: 'xxx': unreferenced formal parameter"
no functional changes.

The _NOTE(ARGUNUSED(xxx)) annotations are being exposed to the Visual
Studio 2015 C compiler with the following:

#define _NOTE_ARGUNUSED(...) UNREFERENCED_PARAMETER((__VA_ARGS__));
#define _NOTE(_annotation) _NOTE_ ## _annotation

Submitted by: Andrew Lee <alee at solarflare.com>
Sponsored by: Solarflare Communications, Inc.
Differential Revision: https://reviews.freebsd.org/D18122


# 311491 06-Jan-2017 arybchik

MFC r310744

sfxge(4): fix efx_ev_qpoll for non-Siena builds

Both Siena and EF10 use the siena_ev_qpoll() implementation, but this
function is not defined in builds without EFSYS_OPT_SIENA.

Remove siena_ev_qpoll and inline it into efx_ev_qpoll to allow it
to be used in non-Siena builds.

Also remove outdated FIXME comment, as EF10 event batching/merging has
been implemented long ago without needing to modify this code.

Submitted by: Andy Moreton <amoreton at solarflare.com>
Sponsored by: Solarflare Communications, Inc.


# 311094 02-Jan-2017 arybchik

MFC r310812

sfxge(4): support non-interrupting event queues creation

Poll-mode driver does not use interrupts and number of used event queues
should not be limitted by the number of interrupts allocated for the
NIC.

Sponsored by: Solarflare Communications, Inc.


# 311070 02-Jan-2017 arybchik

MFC r310713

sfxge(4): add possibility to control event queue performance profile

It is ignored on SFN5xxx/6xxx (aka Siena).

Sponsored by: Solarflare Communications, Inc.


# 311062 02-Jan-2017 arybchik

MFC r310693

sfxge(4): cleanup: avoid unspecified unsigned

Found by DPDK checkpatch.sh

Sponsored by: Solarflare Communications, Inc.


# 311059 02-Jan-2017 arybchik

MFC r310690

sfxge(4): cleanup: add const qualifier to const array pointer

Sponsored by: Solarflare Communications, Inc.


# 301984 17-Jun-2016 arybchik

MFC r301308

sfxge(4): add helper to compute timer quantum

This also adjusts the timer values used to match the Linux net
driver implementation:
a) non-zero time intervals should result in at least one quantum
b) timer load/reload values are only zero biased for Falcon/Siena

Submitted by: Andy Moreton <amoreton at solarflare.com>
Sponsored by: Solarflare Communications, Inc.
Differential Revision: https://reviews.freebsd.org/D6704


# 301982 17-Jun-2016 arybchik

MFC r301127

sfxge(4): cleanup: remove unused variables in common code

Submitted by: Andy Moreton <amoreton at solarflare.com>
Sponsored by: Solarflare Communications, Inc.


# 301980 17-Jun-2016 arybchik

MFC r301122

sfxge(4): set moderation in efx_ev_qcreate

This simplifies setting an initial interrupt moderation value, and
avoids most calls to evx_ev_qmoderate from contexts where MCDI is
not allowed (MCDI is need for an EVQ timer workaround in a later patch).

Submitted by: Andy Moreton <amoreton at solarflare.com>
Reviewed by: gnn
Sponsored by: Solarflare Communications, Inc.
Differential Revision: https://reviews.freebsd.org/D6673


# 301392 04-Jun-2016 arybchik

MFC r300840

sfxge(4): note unused variables to make lint happier

Found by lint on illumos.

Submitted by: Garrett D'Amore <garrett at damore.org>
Sponsored by: Solarflare Communications, Inc.


# 301388 04-Jun-2016 arybchik

MFC r300607

sfxge(4): cleanup: update copyright to 2016

Sponsored by: Solarflare Communications, Inc.


# 301386 04-Jun-2016 arybchik

MFC r300605

sfxge(4): be ready to receive events immediately after event queues are created

Submitted by: Mark Spender <mspender at solarflare.com>
Reviewed by: gnn
Sponsored by: Solarflare Communications, Inc.


# 301345 04-Jun-2016 arybchik

MFC r299607-r299612

sfxge(4): rename falconsiena_*

Falcon support has been removed, so this code only supports Siena.

Submitted by: Andy Moreton <amoreton at solarflare.com>
Sponsored by: Solarflare Communications, Inc.


# 301340 04-Jun-2016 arybchik

MFC r299517

sfxge(4): cleanup: constify common code method tables

Submitted by: Andy Moreton <amoreton at solarflare.com>
Sponsored by: Solarflare Communications, Inc.


# 301331 04-Jun-2016 arybchik

MFC r299404

sfxge(4): remove Falcon specific EV_GLOBAL support

Submitted by: Andy Moreton <amoreton at solarflare.com>
Sponsored by: Solarflare Communications, Inc.


# 301330 04-Jun-2016 arybchik

MFC r299403

sfxge(4): remove Falcon-specific code paths from common code

Submitted by: Andy Moreton <amoreton at solarflare.com>
Sponsored by: Solarflare Communications, Inc.


# 301324 04-Jun-2016 arybchik

MFC r299320-r299328, r299330-r299336

sfxge(4): remove EFSYS_OPT_FALCON and related EFSYS_OPT_ options

Submitted by: Andy Moreton <amoreton at solarflare.com>
Sponsored by: Solarflare Communications, Inc.


# 294016 14-Jan-2016 arybchik

MFC r293814

sfxge: cleanup: simplify EFX header includes

Submitted by: Andy Moreton <amoreton at solarflare.com>
Sponsored by: Solarflare Communications, Inc.


# 294007 14-Jan-2016 arybchik

MFC r293806

sfxge: remove unused common code EFSYS_OPT_RX_HDR_SPLIT

The EFSYS_OPT_RX_HDR_SPLIT optional feature in the common code
implemented the Lookahead Split feature of Windows. This split
received packets at a preconfigured byte offset, and delivered
the header and payload portions to separate receive queues.

Now the common code interface has no callers, so remove it.

Note that this should not be confused with the Header Data Split
feature of Windows, which splits packets at a header boundary.

Submitted by: Andy Moreton <amoreton at solarflare.com>
Sponsored by: Solarflare Communications, Inc.


# 293986 14-Jan-2016 arybchik

MFC r293752

sfxge: rename hunt ev methods to ef10 and use for Medford

Submitted by: Mark Spender <mspender at solarflare.com>
Reviewed by: gnn
Sponsored by: Solarflare Communications, Inc.


# 293927 14-Jan-2016 arybchik

MFC r291436

sfxge: add prefast annotation to common code return types

Using a typedef for common code return types (rather than "int")
allows the Prefast static analyser to understand when a function
has been successful (and thus when its postconditions must hold).

This greatly reduces then number of false positives reported by
prefast for error paths in common code functions.

Submitted by: Andy Moreton <amoreton at solarflare.com>
Sponsored by: Solarflare Communications, Inc.


# 284555 18-Jun-2015 arybchik

MFC: r283514

sfxge: add 7xxx NICs family support

Support 7xxx adapters including firmware-assisted TSO and VLAN tagging:

- Solarflare Flareon Ultra 7000 series 10/40G adapters:
- Solarflare SFN7042Q QSFP+ Server Adapter
- Solarflare SFN7142Q QSFP+ Server Adapter

- Solarflare Flareon Ultra 7000 series 10G adapters:
- Solarflare SFN7022F SFP+ Server Adapter
- Solarflare SFN7122F SFP+ Server Adapter
- Solarflare SFN7322F Precision Time Synchronization Server Adapter

- Solarflare Flareon 7000 series 10G adapters:
- Solarflare SFN7002F SFP+ Server Adapter

Support utilities to configure adapters and update firmware.

The work is done by Solarflare developers
(Andy Moreton, Andrew Lee and many others),
Artem V. Andreev <Artem.Andreev at oktetlabs.ru> and me.

Sponsored by: Solarflare Communications, Inc.


# 280588 25-Mar-2015 arybchik

MFC: 279182

sfxge: correct event queue interrupt moderation timer quanta

Submitted by: Andrew Lee <alee at solarflare.com>
Sponsored by: Solarflare Communications, Inc.
Approved by: gnn (mentor)


# 280563 25-Mar-2015 arybchik

MFC: 279141

sfxge: style fixes and cleanup

Sync endif comment with conditional.
BOOTROM and SIENA_BOOTROM are the same, but highlight that it is Siena.
Restore commented out assertion.
Sync comments with out-of-tree driver.

Sponsored by: Solarflare Communications, Inc.
Approved by: gnn (mentor)


# 280555 25-Mar-2015 arybchik

MFC: 279078

sfxge: add assertions that required event handlers are implemented

efx_ev_mcdi() does not assert or check that all event handlers it
calls are non-null. Add assertions at the top for all required
event handlers, as some events (in the case of this bug, monitor
events) are rare.

Submitted by: Ben Hutchings
Sponsored by: Solarflare Communications, Inc.
Approved by: gnn (mentor)


# 280550 25-Mar-2015 arybchik

MFC: 279048

sfxge: add Florence R7 turbo mode support to common code

Submitted by: Andrew Lee <alee at solarflare.com>
Sponsored by: Solarflare Communications, Inc.
Approved by: gnn (mentor)


# 280545 25-Mar-2015 arybchik

MFC: 278942

sfxge: fix broken MCDI_EV_FIELD() macro

Submitted by: Andrew Lee <alee at solarflare.com>
Sponsored by: Solarflare Communications, Inc.
Approved by: gnn (mentor)


# 280535 25-Mar-2015 arybchik

MFC: 278839

sfxge: style fixes

Sponsored by: Solarflare Communications, Inc.
Approved by: gnn (mentor)


# 280510 25-Mar-2015 arybchik

MFC: 277886

sfxge: Make it possible to build without EVQ statistics

Sponsored by: Solarflare Communications, Inc.
Approved by: gnn (mentor)


# 265884 11-May-2014 gnn

MFC: 263302, 264461, 264772

263302:
fix mbuf leak if it does not fit in software queue

264461:
Commit various fixes for the SolarFlare drivers, in particular
this set of patches fixes support for systems with > 32 cores.

Details include

sfxge: RXQ index (not label) comes from FW in flush done/failed events

Change the second argument name of the efx_rxq_flush_done_ev_t and
efx_rxq_flush_failed_ev_t prototypes to highlight that RXQ index (not label)
comes from FW in flush done and failed events.

sfxge: TXQ index (not label) comes from FW in flush done event

Change the second argument name of the efx_txq_flush_done_ev_t prototype to
highlight that TXQ index (not label) comes from FW in flush done event.

sfxge: use TXQ type as label to support more than 32 TXQs

There are 3 TXQs in event queue 0 and 1 TXQ (with TCP/UDP checksum offload)
in all other event queues.

264772:
Check that port is started when MAC filter is set

The MAC filter set may be called without softc_lock held in the case of
SIOCADDMULTI and SIOCDELMULTI ioctls. The ioctl handler checks IFF_DRV_RUNNING
flag which implies port started, but it is not guaranteed to remain.
softc_lock shared lock can't be held in the case of these ioctls processing,
since it results in failure where kernel complains that non-sleepable
lock is held in sleeping thread.

Both problems are repeatable on LAG with LACP proto bring up.

Submitted by: Andrew Rybchenko <Andrew.Rybchenko at oktetlabs.ru>
Sponsored by: Solarflare Communications, Inc.


# 284555 18-Jun-2015 arybchik

MFC: r283514

sfxge: add 7xxx NICs family support

Support 7xxx adapters including firmware-assisted TSO and VLAN tagging:

- Solarflare Flareon Ultra 7000 series 10/40G adapters:
- Solarflare SFN7042Q QSFP+ Server Adapter
- Solarflare SFN7142Q QSFP+ Server Adapter

- Solarflare Flareon Ultra 7000 series 10G adapters:
- Solarflare SFN7022F SFP+ Server Adapter
- Solarflare SFN7122F SFP+ Server Adapter
- Solarflare SFN7322F Precision Time Synchronization Server Adapter

- Solarflare Flareon 7000 series 10G adapters:
- Solarflare SFN7002F SFP+ Server Adapter

Support utilities to configure adapters and update firmware.

The work is done by Solarflare developers
(Andy Moreton, Andrew Lee and many others),
Artem V. Andreev <Artem.Andreev at oktetlabs.ru> and me.

Sponsored by: Solarflare Communications, Inc.


# 280588 25-Mar-2015 arybchik

MFC: 279182

sfxge: correct event queue interrupt moderation timer quanta

Submitted by: Andrew Lee <alee at solarflare.com>
Sponsored by: Solarflare Communications, Inc.
Approved by: gnn (mentor)


# 280563 25-Mar-2015 arybchik

MFC: 279141

sfxge: style fixes and cleanup

Sync endif comment with conditional.
BOOTROM and SIENA_BOOTROM are the same, but highlight that it is Siena.
Restore commented out assertion.
Sync comments with out-of-tree driver.

Sponsored by: Solarflare Communications, Inc.
Approved by: gnn (mentor)


# 280555 25-Mar-2015 arybchik

MFC: 279078

sfxge: add assertions that required event handlers are implemented

efx_ev_mcdi() does not assert or check that all event handlers it
calls are non-null. Add assertions at the top for all required
event handlers, as some events (in the case of this bug, monitor
events) are rare.

Submitted by: Ben Hutchings
Sponsored by: Solarflare Communications, Inc.
Approved by: gnn (mentor)


# 280550 25-Mar-2015 arybchik

MFC: 279048

sfxge: add Florence R7 turbo mode support to common code

Submitted by: Andrew Lee <alee at solarflare.com>
Sponsored by: Solarflare Communications, Inc.
Approved by: gnn (mentor)


# 280545 25-Mar-2015 arybchik

MFC: 278942

sfxge: fix broken MCDI_EV_FIELD() macro

Submitted by: Andrew Lee <alee at solarflare.com>
Sponsored by: Solarflare Communications, Inc.
Approved by: gnn (mentor)


# 280535 25-Mar-2015 arybchik

MFC: 278839

sfxge: style fixes

Sponsored by: Solarflare Communications, Inc.
Approved by: gnn (mentor)


# 280510 25-Mar-2015 arybchik

MFC: 277886

sfxge: Make it possible to build without EVQ statistics

Sponsored by: Solarflare Communications, Inc.
Approved by: gnn (mentor)


# 265884 11-May-2014 gnn

MFC: 263302, 264461, 264772

263302:
fix mbuf leak if it does not fit in software queue

264461:
Commit various fixes for the SolarFlare drivers, in particular
this set of patches fixes support for systems with > 32 cores.

Details include

sfxge: RXQ index (not label) comes from FW in flush done/failed events

Change the second argument name of the efx_rxq_flush_done_ev_t and
efx_rxq_flush_failed_ev_t prototypes to highlight that RXQ index (not label)
comes from FW in flush done and failed events.

sfxge: TXQ index (not label) comes from FW in flush done event

Change the second argument name of the efx_txq_flush_done_ev_t prototype to
highlight that TXQ index (not label) comes from FW in flush done event.

sfxge: use TXQ type as label to support more than 32 TXQs

There are 3 TXQs in event queue 0 and 1 TXQ (with TCP/UDP checksum offload)
in all other event queues.

264772:
Check that port is started when MAC filter is set

The MAC filter set may be called without softc_lock held in the case of
SIOCADDMULTI and SIOCDELMULTI ioctls. The ioctl handler checks IFF_DRV_RUNNING
flag which implies port started, but it is not guaranteed to remain.
softc_lock shared lock can't be held in the case of these ioctls processing,
since it results in failure where kernel complains that non-sleepable
lock is held in sleeping thread.

Both problems are repeatable on LAG with LACP proto bring up.

Submitted by: Andrew Rybchenko <Andrew.Rybchenko at oktetlabs.ru>
Sponsored by: Solarflare Communications, Inc.