Revision tags: release/14.0.0 |
|
#
685dc743 |
| 16-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Remove $FreeBSD$: one-line .c pattern
Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/
|
Revision tags: release/13.2.0, release/12.4.0, release/13.1.0, release/12.3.0, release/13.0.0, release/12.2.0 |
|
#
b138e49c |
| 01-Sep-2020 |
Mateusz Guzik <mjg@FreeBSD.org> |
sfxge: clean up empty lines in .c and .h files
|
Revision tags: release/11.4.0, release/12.1.0 |
|
#
a63915c2 |
| 28-Jul-2019 |
Alan Somers <asomers@FreeBSD.org> |
MFHead @r350386
Sponsored by: The FreeBSD Foundation
|
#
7daf1fed |
| 27-Jul-2019 |
Andrew Rybchenko <arybchik@FreeBSD.org> |
sfxge(4): unify power of 2 alignment check macro
Substitute driver-defined IS_P2ALIGNED() with EFX_IS_P2ALIGNED() defined in libefx.
Add type argument and cast value and alignment to one specified
sfxge(4): unify power of 2 alignment check macro
Substitute driver-defined IS_P2ALIGNED() with EFX_IS_P2ALIGNED() defined in libefx.
Add type argument and cast value and alignment to one specified type.
Reported by: Andrea Valsania <andrea.valsania at answervad.it> Reviewed by: philip Sponsored by: Solarflare Communications, Inc. MFC after: 2 days Differential Revision: https://reviews.freebsd.org/D21076
show more ...
|
#
e561c5fe |
| 27-Jul-2019 |
Andrew Rybchenko <arybchik@FreeBSD.org> |
sfxge(4): fix align to power of 2 when align has smaller type
Substitute driver-defined P2ALIGN() with EFX_P2ALIGN() defined in libefx.
Cast value and alignment to one specified type to guarantee r
sfxge(4): fix align to power of 2 when align has smaller type
Substitute driver-defined P2ALIGN() with EFX_P2ALIGN() defined in libefx.
Cast value and alignment to one specified type to guarantee result correctness.
Reported by: Andrea Valsania <andrea.valsania at answervad.it> Reviewed by: philip Sponsored by: Solarflare Communications, Inc. MFC after: 2 days Differential Revision: https://reviews.freebsd.org/D21075
show more ...
|
#
ec30f0be |
| 27-Jul-2019 |
Andrew Rybchenko <arybchik@FreeBSD.org> |
sfxge(4): fix power of 2 round up when align has smaller type
Substitute driver-defined P2ROUNDUP() h with EFX_P2ROUNDUP() defined in libefx.
Cast value and alignment to one specified type to guara
sfxge(4): fix power of 2 round up when align has smaller type
Substitute driver-defined P2ROUNDUP() h with EFX_P2ROUNDUP() defined in libefx.
Cast value and alignment to one specified type to guarantee result correctness.
Reported by: Andrea Valsania <andrea.valsania at answervad.it> Reviewed by: philip Sponsored by: Solarflare Communications, Inc. MFC after: 2 days Differential Revision: https://reviews.freebsd.org/D21074
show more ...
|
Revision tags: release/11.3.0 |
|
#
67350cb5 |
| 09-Dec-2018 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r340918 through r341763.
|
Revision tags: release/12.0.0 |
|
#
d707fb20 |
| 30-Nov-2018 |
Andrew Rybchenko <arybchik@FreeBSD.org> |
sfxge(4): correct annotations where NULL input is OK
Correct annotations where NULL input can be permitted
Submitted by: Richard Houldsworth <rhouldsworth at solarflare.com> Sponsored by: Solar
sfxge(4): correct annotations where NULL input is OK
Correct annotations where NULL input can be permitted
Submitted by: Richard Houldsworth <rhouldsworth at solarflare.com> Sponsored by: Solarflare Communications, Inc. Differential Revision: https://reviews.freebsd.org/D18284
show more ...
|
#
6ddb48de |
| 30-Nov-2018 |
Andrew Rybchenko <arybchik@FreeBSD.org> |
sfxge(4): improve handling of legacy RSS hash flags
Client drivers may use either legacy flags, for example, EFX_RX_HASH_TCPIPV4, or generalised flags, for example, EFX_RX_HASH(IPV4_TCP, 4TUPLE), to
sfxge(4): improve handling of legacy RSS hash flags
Client drivers may use either legacy flags, for example, EFX_RX_HASH_TCPIPV4, or generalised flags, for example, EFX_RX_HASH(IPV4_TCP, 4TUPLE), to configure RSS hash. The libefx is able to recognise what scheme is used.
Legacy flags may be consumed directly by a chip-specific handler to configure the NIC, that is, on EF10, these flags can be used to fill in legacy RSS mode field in MCDI request. Generalised flags can also be directly used in EF10-specific handler as they are fully compatible with additional fields of the same MCDI request.
Legacy flags undergo conversion to generalised flags before they are consumed by a chip-specific handler. This conversion is used to make sure that chip-specific handlers expect only generalised flags in the input for the sake of clarity of the code.
Depending on firmware capabilities, a chip-specififc handler either supplies the input to the NIC directly, for example, EFX_RX_HASH(IPV4_TCP, 4TUPLE) flag will enable 4 bits in RSS_CONTEXT_SET_FLAGS_IN_TCP_IPV4_RSS_MODE field on EF10, or takes the opportunity to translate the input to enable bits which don't map to the generic flag, like setting RSS_CONTEXT_SET_FLAGS_IN_TOEPLITZ_TCPV4_EN on EF10 when the firmware claims no support for additional modes.
However, this approach has introduced a severe problem which can be reproduced with ultra-low-latency firmware variant. In order to enable IP hash, EF10-specific handler requires the user to request 2-tuple hash for IP-other, TCP and UDP traffic classes, unconditionally. In example, IPv4 hash can be enabled using the following input: EFX_RX_HASH(IPV4_TCP, 2TUPLE) | EFX_RX_HASH(IPV4_UDP, 2TUPLE) | EFX_RX_HASH(IPV4, 2TUPLE). At the same time, on ultra-low-latency firmware, the common code will never report support for any UDP tuple to the client driver. That is, in the same example, the driver will use EFX_RX_HASH(IPV4_TCP, 2TUPLE) | EFX_RX_HASH(IPV4, 2TUPLE). This input will not be recognised by EF10-specific handler, and RSS_CONTEXT_SET_FLAGS_IN_TOEPLITZ_IPV4_EN bit will not be set in the MCDI request.
In order to solve the problem, the patch removes conversion code from chip-specific handlers and adds appropriate code to convert EFX_RX_HASH() flags to their legacy counterparts to the common scale mode set function. If the firmware does not support additional modes, the function will convert generalised flags to legacy flags correctly without any demand for UDP flags and pass the result to a chip-specific handler.
Submitted by: Ivan Malov <ivan.malov at oktetlabs.ru> Sponsored by: Solarflare Communications, Inc. Differential Revision: https://reviews.freebsd.org/D18269
show more ...
|
#
d085cfff |
| 30-Nov-2018 |
Andrew Rybchenko <arybchik@FreeBSD.org> |
sfxge(4): simplify the code to parse RSS hash type
RSS mode bits can be accessed a lot easier in the hash type value provided that the variable type is uint32_t. The macro helper can be removed to e
sfxge(4): simplify the code to parse RSS hash type
RSS mode bits can be accessed a lot easier in the hash type value provided that the variable type is uint32_t. The macro helper can be removed to enhance readability.
Submitted by: Ivan Malov <ivan.malov at oktetlabs.ru> Sponsored by: Solarflare Communications, Inc. Differential Revision: https://reviews.freebsd.org/D18268
show more ...
|
#
315bbbaa |
| 30-Nov-2018 |
Andrew Rybchenko <arybchik@FreeBSD.org> |
sfxge(4): fix out of bounds read when dereferencing sdup
Introduce and use macro to make sure that MCDI buffers allocated on stack are rounded up properly.
Submitted by: Gautam Dawar <gdawar at s
sfxge(4): fix out of bounds read when dereferencing sdup
Introduce and use macro to make sure that MCDI buffers allocated on stack are rounded up properly.
Submitted by: Gautam Dawar <gdawar at solarflare.com> Sponsored by: Solarflare Communications, Inc. MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D18259
show more ...
|
#
04381b5e |
| 29-Nov-2018 |
Andrew Rybchenko <arybchik@FreeBSD.org> |
sfxge(4): support equal stride super-buffer Rx mode
Equal stride super-buffer Rx mode is supported by DPDK firmware variant. One Rx descriptor provides many Rx buffers to firmware. Rx buffers follow
sfxge(4): support equal stride super-buffer Rx mode
Equal stride super-buffer Rx mode is supported by DPDK firmware variant. One Rx descriptor provides many Rx buffers to firmware. Rx buffers follow each other with specified stride. Also it supports head of line blocking with timeout to address drops when no Rx descriptors are available. So it gives extra time to the driver to provide Rx descriptors before drop.
Sponsored by: Solarflare Communications, Inc. Differential Revision: https://reviews.freebsd.org/D18236
show more ...
|
#
2a726a7f |
| 29-Nov-2018 |
Andrew Rybchenko <arybchik@FreeBSD.org> |
sfxge(4): make RxQ type data an union
The type is an internal interface. Single integer is insufficient to carry RxQ type-specific information in the case of equal stride super-buffer Rx mode (packe
sfxge(4): make RxQ type data an union
The type is an internal interface. Single integer is insufficient to carry RxQ type-specific information in the case of equal stride super-buffer Rx mode (packet buffers per bucket, maximum DMA length, packet stride, head of line block timeout).
Sponsored by: Solarflare Communications, Inc. Differential Revision: https://reviews.freebsd.org/D18234
show more ...
|
#
fcfb73b8 |
| 29-Nov-2018 |
Andrew Rybchenko <arybchik@FreeBSD.org> |
sfxge(4): honour packed stream RSS restriction
Packed stream firmware variant on EF10 adapters has a number of properties which must be taken into account:
- Only one exclusive RSS context is avai
sfxge(4): honour packed stream RSS restriction
Packed stream firmware variant on EF10 adapters has a number of properties which must be taken into account:
- Only one exclusive RSS context is available per port. - Only IP addresses can contribute to the hash value.
Huntington and Medford have one more limitation which is important for the drivers capable of packed stream:
- Hash algorithm is non-standard (i.e. non-Toeplitz). This implies XORing together source + destination IP addresses (or last four bytes in the case of IPv6) and using the result as the input to a Toeplitz hash.
This patch provides a number of improvements in order to treat the mentioned limitations in the common code.
If the firmware variant is packed stream, the list of supported hash tuples will include less variants, and the maximum number of RSS contexts will be set to one.
Submitted by: Ivan Malov <ivan.malov at oktetlabs.ru> Sponsored by: Solarflare Communications, Inc. Differential Revision: https://reviews.freebsd.org/D18232
show more ...
|
#
fd962dff |
| 29-Nov-2018 |
Andrew Rybchenko <arybchik@FreeBSD.org> |
sfxge(4): support more RSS hash configurations
Modern firmwares on EF10 adapters have support for more traffic classes eligible for hash computation. Also, it has become possible to adjust hashing p
sfxge(4): support more RSS hash configurations
Modern firmwares on EF10 adapters have support for more traffic classes eligible for hash computation. Also, it has become possible to adjust hashing per individual class and select distinct packet fields which will be able to contribute to the hash value.
This patch adds support for the mentioned features.
Submitted by: Ivan Malov <ivan.malov at oktetlabs.ru> Sponsored by: Solarflare Communications, Inc. Differential Revision: https://reviews.freebsd.org/D18231
show more ...
|
#
35ebf2a9 |
| 29-Nov-2018 |
Andrew Rybchenko <arybchik@FreeBSD.org> |
sfxge(4): add a new means to control RSS hash
Currently, libefx has no support for additional RSS modes available with later controllers. In order to support this, libefx should be able to list avai
sfxge(4): add a new means to control RSS hash
Currently, libefx has no support for additional RSS modes available with later controllers. In order to support this, libefx should be able to list available hash configurations.
This patch provides basic infrastructure for the new interface. The client drivers will be able to query the list of supported hash configurations for a particular hash algorithm. Also, it will be possible to configure hashing by means of new definitions.
Submitted by: Ivan Malov <ivan.malov at oktetlabs.ru> Sponsored by: Solarflare Communications, Inc. Differential Revision: https://reviews.freebsd.org/D18230
show more ...
|
#
4aaefb95 |
| 27-Nov-2018 |
Andrew Rybchenko <arybchik@FreeBSD.org> |
sfxge(4): add efsys macro to get memory region size
EFSYS_MEM_SIZE() reports the DMA mapped size of an efsys_mem_t allocated region (the allocation size may be different due to memory allocator and
sfxge(4): add efsys macro to get memory region size
EFSYS_MEM_SIZE() reports the DMA mapped size of an efsys_mem_t allocated region (the allocation size may be different due to memory allocator and DMA alignment restrictions).
This ensures that common code internals have explicit knowledge of the usable size of DMA mapped memory regions.
Submitted by: Andy Moreton <amoreton at solarflare.com> Sponsored by: Solarflare Communications, Inc. Differential Revision: https://reviews.freebsd.org/D18170
show more ...
|
#
c63c8369 |
| 27-Nov-2018 |
Andrew Rybchenko <arybchik@FreeBSD.org> |
sfxge(4): support runtime VI window size
Medford2 uses a configurable VI window size, and requires updates to register accesses to use a runtime VI window size rather than the *_STEP register consta
sfxge(4): support runtime VI window size
Medford2 uses a configurable VI window size, and requires updates to register accesses to use a runtime VI window size rather than the *_STEP register constants used for earlier controllers.
Update the common code to query the VI window size via MCDI, and add new EFX_BAR_VI_* accessor macros for per-VI registers.
The existing EFX_BAR_TBL_* macros can be used for non-VI register tables (and for code that can never be called for a Medford2 controller e.g. Siena-only code).
Submitted by: Andy Moreton <amoreton at solarflare.com> Sponsored by: Solarflare Communications, Inc. Differential Revision: https://reviews.freebsd.org/D18158
show more ...
|
#
34352ef8 |
| 27-Nov-2018 |
Andrew Rybchenko <arybchik@FreeBSD.org> |
sfxge(4): add Medford2 support to Rx module
Submitted by: Andy Moreton <amoreton at solarflare.com> Sponsored by: Solarflare Communications, Inc. Differential Revision: https://reviews.freebsd.
sfxge(4): add Medford2 support to Rx module
Submitted by: Andy Moreton <amoreton at solarflare.com> Sponsored by: Solarflare Communications, Inc. Differential Revision: https://reviews.freebsd.org/D18151
show more ...
|
#
c1532e70 |
| 25-Nov-2018 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r340869 through r340917.
|
#
4ed151b8 |
| 24-Nov-2018 |
Andrew Rybchenko <arybchik@FreeBSD.org> |
sfxge(4): allow to request inner classes for Rx packets
If HW/FW supports tunnel encapsulations, Rx event may contain either inner or outer packet classes. By default outer classes are requested. Ma
sfxge(4): allow to request inner classes for Rx packets
If HW/FW supports tunnel encapsulations, Rx event may contain either inner or outer packet classes. By default outer classes are requested. Make it possible to request inner classes to have more information about packet type and allow to interpret inner frame checksum validation results correctly.
Sponsored by: Solarflare Communications, Inc. Differential Revision: https://reviews.freebsd.org/D18133
show more ...
|
#
074cfb5c |
| 24-Nov-2018 |
Andrew Rybchenko <arybchik@FreeBSD.org> |
sfxge(4): add function to create packed stream RxQ
Encoding packed stream buffer size in RxQ type is not a future-proof idea taking into account a new RxQ types with extra parameters. To be consiste
sfxge(4): add function to create packed stream RxQ
Encoding packed stream buffer size in RxQ type is not a future-proof idea taking into account a new RxQ types with extra parameters. To be consistent make packet stream buffer size a separate parameter. In order to avoid blowing of the default RxQ create function prototype add a dedicated function to create packed stream RxQ without not applicable paramters.
Sponsored by: Solarflare Communications, Inc. Differential Revision: https://reviews.freebsd.org/D18132
show more ...
|
#
9445d1c5 |
| 24-Nov-2018 |
Andrew Rybchenko <arybchik@FreeBSD.org> |
sfxge(4): control RxQ scatter using flag instead of type
Rx scatter may be applicable to different Rx queue types.
Sponsored by: Solarflare Communications, Inc. Differential Revision: https://re
sfxge(4): control RxQ scatter using flag instead of type
Rx scatter may be applicable to different Rx queue types.
Sponsored by: Solarflare Communications, Inc. Differential Revision: https://reviews.freebsd.org/D18131
show more ...
|
#
ee1d6dee |
| 24-Nov-2018 |
Andrew Rybchenko <arybchik@FreeBSD.org> |
sfxge(4): expand on comment on number of queues field
Expand on comment on RSS_CONTEXT_ALLOC_IN_NUM_QUEUES field.
Submitted by: Mark Spender <mspender at solarflare.com> Sponsored by: Solarflar
sfxge(4): expand on comment on number of queues field
Expand on comment on RSS_CONTEXT_ALLOC_IN_NUM_QUEUES field.
Submitted by: Mark Spender <mspender at solarflare.com> Sponsored by: Solarflare Communications, Inc. Differential Revision: https://reviews.freebsd.org/D18127
show more ...
|
#
bbea9604 |
| 24-Nov-2018 |
Andrew Rybchenko <arybchik@FreeBSD.org> |
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 be
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. MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D18122
show more ...
|