iavf: rte_eth_stats_get() fails upon upgrade to 23.07.0
Isaac Boukris
iboukris at gmail.com
Tue Feb 27 20:24:31 CET 2024
On Tue, Feb 27, 2024 at 4:28 PM Isaac Boukris <iboukris at gmail.com> wrote:
>
> On Tue, Feb 27, 2024 at 1:27 PM Isaac Boukris <iboukris at gmail.com> wrote:
> >
> > Hello,
> >
> > This works fine with 23.03.0 but starting from 23.07.0 up to master it
> > fails as follows.
> >
> > Initialization is ok:
> > EAL: Probe PCI driver: net_iavf (8086:154c) device: 0000:09:00.0 (socket -1)
> > iavf_set_rx_function(): request RXDID[1] in Queue[0] is legacy, set
> > rx_pkt_burst as legacy for all queues
> >
> > telemetry.py /ethdev/link_status,0 | jq
> > {
> > "/ethdev/link_status": {
> > "status": "UP",
> > "speed": 40000,
> > "duplex": "full-duplex"
> > }
> > }
> >
> > But the following command hang and fail:
> > telemetry.py /ethdev/stats,0 | jq
> > telemetry.py /ethdev/xstats,0 | jq
> >
> > On the logs I see:
> > iavf_execute_vf_cmd(): No response for cmd 15
> > iavf_query_stats(): fail to execute command OP_GET_STATS
> > iavf_dev_stats_get(): Get statistics failed
>
> I did some git bisect and found the commit below, help appreciated!
>
> 5712bf9d6e14d0eaa7a07814d59351ffeb8e02ed is the first bad commit
> commit 5712bf9d6e14d0eaa7a07814d59351ffeb8e02ed
> Author: Wenzhuo Lu <wenzhuo.lu at intel.com>
> Date: Tue Apr 18 13:11:05 2023 +0800
>
> net/iavf: add Tx AVX2 offload path
>
> Add a specific path for TX AVX2.
> In this path, support the HW offload features, like,
> checksum insertion, VLAN insertion.
> This path is chosen automatically according to the
> configuration.
>
> 'inline' is used, then the duplicate code is generated
> by the compiler.
>
> Signed-off-by: Wenzhuo Lu <wenzhuo.lu at intel.com>
> Acked-by: Qi Zhang <qi.z.zhang at intel.com>
>
> drivers/net/iavf/iavf_rxtx.c | 33 +++++++++++++--------
> drivers/net/iavf/iavf_rxtx.h | 2 ++
> drivers/net/iavf/iavf_rxtx_vec_avx2.c | 54 +++++++++++++++++++++++++----------
> 3 files changed, 62 insertions(+), 27 deletions(-)
Notte that I was able to workaround it by forcing the old logic with:
diff --git a/drivers/net/iavf/iavf_rxtx.c b/drivers/net/iavf/iavf_rxtx.c
index f19aa14646..1537a5f19c 100644
--- a/drivers/net/iavf/iavf_rxtx.c
+++ b/drivers/net/iavf/iavf_rxtx.c
@@ -4003,6 +4003,8 @@ iavf_set_tx_function(struct rte_eth_dev *dev)
use_avx512 = true;
#endif
+ if (!use_sse) use_avx2 = false;
+
if (!use_sse && !use_avx2 && !use_avx512)
goto normal;
More information about the users
mailing list