#
9eb60580 |
| 24-Jan-2025 |
Bruce Richardson <bruce.richardson@intel.com> |
net/intel: extract common Rx vector criteria
While some drivers have specific criteria for when a vector driver can be enabled on the Rx path, there are a number of basic criteria which apply across
net/intel: extract common Rx vector criteria
While some drivers have specific criteria for when a vector driver can be enabled on the Rx path, there are a number of basic criteria which apply across all drivers. Centralize those in the intel/common folder, and then update drivers to use the common conditional checks. This adds some additional restrictions to some drivers like ixgbe, where those conditions were necessary but never checked.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Acked-by: Praveen Shetty <praveen.shetty@intel.com>
show more ...
|
#
61dcf278 |
| 24-Jan-2025 |
Bruce Richardson <bruce.richardson@intel.com> |
net/intel: create common mbuf initializer
Across a number of drivers, the same code is used for initializing the "mbuf_initializer" value inside the rx queue structure for use with the vector driver
net/intel: create common mbuf initializer
Across a number of drivers, the same code is used for initializing the "mbuf_initializer" value inside the rx queue structure for use with the vector drivers. Since the rx queue structures are (currently) different across the drivers, we cannot just move a single copy of the function to a common location. Instead, we create a dedicated function which just creates the mbuf initializer for a particular port.
In creating this function, we can shorten it vs the original versions by initializing the mbuf fields as they are defined, rather than afterwards. We can also remove the use of the barrier and temporary uintptr_t variable, because the mbuf has been reworked so that rearm_data is a proper single-element array in a union.
Across ixgbe, i40e, iavf and i40e, we can call this function to initialize the rxq data, replacing the "*_rxq_vec_setup_default" functions. Only the i40e was slightly different, having an extra assignment in it, to set the "sse" flag (even in case of neon and altivec paths). This assignment was just duplicated to the calling sites for simplicity and to keep existing behaviour.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Acked-by: Praveen Shetty <praveen.shetty@intel.com>
show more ...
|
#
7e230d56 |
| 24-Jan-2025 |
Bruce Richardson <bruce.richardson@intel.com> |
net/ice: use vector SW ring for all vector paths
The AVX-512 code path used a smaller SW ring structure only containing the mbuf pointer, but no other fields. The other fields are only used in the s
net/ice: use vector SW ring for all vector paths
The AVX-512 code path used a smaller SW ring structure only containing the mbuf pointer, but no other fields. The other fields are only used in the scalar code path, so update all vector driver code paths to use the smaller, faster structure.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Acked-by: Praveen Shetty <praveen.shetty@intel.com>
show more ...
|
#
552979df |
| 24-Jan-2025 |
Bruce Richardson <bruce.richardson@intel.com> |
net/intel: create common Tx queue mbuf cleanup
The function to loop over the Tx queue and clean up all the mbufs on it, e.g. for queue shutdown, is not device specific and so can move into the commo
net/intel: create common Tx queue mbuf cleanup
The function to loop over the Tx queue and clean up all the mbufs on it, e.g. for queue shutdown, is not device specific and so can move into the common/intel headers. Only complication is ensuring that the correct ring format, either minimal vector or full structure, is used. Ice driver currently uses two functions and a function pointer to help with this - though actually one of those functions uses a further check inside it - so we can simplify this down to just one common function, with a flag set in the appropriate place. This avoids checking for AVX-512-specific functions, which were the only function using the smaller struct in this driver.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Acked-by: Praveen Shetty <praveen.shetty@intel.com>
show more ...
|
#
b87fc211 |
| 24-Jan-2025 |
Bruce Richardson <bruce.richardson@intel.com> |
net/intel: create common post-Tx buffer free
The actions taken for post-Tx buffer free for the SSE and AVX drivers for i40e, iavf and ice drivers are all common, so centralize those in net/intel/com
net/intel: create common post-Tx buffer free
The actions taken for post-Tx buffer free for the SSE and AVX drivers for i40e, iavf and ice drivers are all common, so centralize those in net/intel/common driver.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Acked-by: Praveen Shetty <praveen.shetty@intel.com>
show more ...
|
#
c038157a |
| 24-Jan-2025 |
Bruce Richardson <bruce.richardson@intel.com> |
net/intel: merge ice and i40e Tx queue struct
The queue structures of i40e and ice drivers are virtually identical, so merge them into a common struct. This should allow easier function merging in f
net/intel: merge ice and i40e Tx queue struct
The queue structures of i40e and ice drivers are virtually identical, so merge them into a common struct. This should allow easier function merging in future using that common struct.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Acked-by: Praveen Shetty <praveen.shetty@intel.com>
show more ...
|
#
4d0f54d9 |
| 24-Jan-2025 |
Bruce Richardson <bruce.richardson@intel.com> |
net/intel: add prefix for driver-specific structs
In preparation for merging the Tx structs for multiple drivers into a single struct, rename the driver-specific pointers in each struct to have a pr
net/intel: add prefix for driver-specific structs
In preparation for merging the Tx structs for multiple drivers into a single struct, rename the driver-specific pointers in each struct to have a prefix on it, to avoid name conflicts.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Acked-by: Praveen Shetty <praveen.shetty@intel.com>
show more ...
|
#
bb8a37a9 |
| 24-Jan-2025 |
Bruce Richardson <bruce.richardson@intel.com> |
net/intel: create common Tx mbuf ring replenish
Move the short function used to place mbufs on the SW Tx ring to common code to avoid duplication.
Signed-off-by: Bruce Richardson <bruce.richardson@
net/intel: create common Tx mbuf ring replenish
Move the short function used to place mbufs on the SW Tx ring to common code to avoid duplication.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Acked-by: Praveen Shetty <praveen.shetty@intel.com>
show more ...
|
#
5cc9919f |
| 24-Jan-2025 |
Bruce Richardson <bruce.richardson@intel.com> |
net/intel: provide common Tx entry structures
The Tx entry structures, both vector and scalar, are common across Intel drivers, so provide a single definition to be used everywhere.
Signed-off-by:
net/intel: provide common Tx entry structures
The Tx entry structures, both vector and scalar, are common across Intel drivers, so provide a single definition to be used everywhere.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Acked-by: Praveen Shetty <praveen.shetty@intel.com>
show more ...
|
#
82fbc4a4 |
| 24-Jan-2025 |
Bruce Richardson <bruce.richardson@intel.com> |
net/intel: create common packet reassembly
The code for reassembling a single, multi-mbuf packet from multiple buffers received from the NIC is duplicated across many drivers. Rather than having mul
net/intel: create common packet reassembly
The code for reassembling a single, multi-mbuf packet from multiple buffers received from the NIC is duplicated across many drivers. Rather than having multiple copies of this function, we can create an "intel/common" directory to hold such functions and consolidate multiple functions down to a single one for easier maintenance.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Acked-by: Praveen Shetty <praveen.shetty@intel.com>
show more ...
|
#
c1d14583 |
| 24-Jan-2025 |
Bruce Richardson <bruce.richardson@intel.com> |
net/intel: move Intel drivers to a subdirectory
Consolidate all Intel HW NIC drivers into a drivers/net/intel directory. This matches the layout used for drivers in the kernel, and potentially enabl
net/intel: move Intel drivers to a subdirectory
Consolidate all Intel HW NIC drivers into a drivers/net/intel directory. This matches the layout used for drivers in the kernel, and potentially enables easier sharing among drivers.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Acked-by: Praveen Shetty <praveen.shetty@intel.com>
show more ...
|