[PATCH] app/testpmd: fix GTP L2 len in checksum engine
GTP header can be followed by an optional 32 bits extension. But, l2_len value statically set to RTE_ETHER_GTP_HLEN which is defined to be (sizeof(struct rte_udp_hdr) + sizeof(struct rte_gtp_hdr)) This fixes the l2_len to take into consideration the extension size. Fixes: d8e5e69f3a9b ("app/testpmd: add GTP parsing and Tx checksum offload") Cc: ting...@intel.com Cc: sta...@dpdk.org Signed-off-by: Raslan Darawsheh --- app/test-pmd/csumonly.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c index fc85c22a77..b50b89367a 100644 --- a/app/test-pmd/csumonly.c +++ b/app/test-pmd/csumonly.c @@ -250,7 +250,7 @@ parse_gtp(struct rte_udp_hdr *udp_hdr, info->l4_proto = 0; } - info->l2_len += RTE_ETHER_GTP_HLEN; + info->l2_len += gtp_len + sizeof(udp_hdr); } /* Parse a vxlan header */ -- 2.25.1
[PATCH] doc/ark: replace word segregation
The word "segregation" brings up troubling memorys. Instead, use the term seperation which is what DPDK flow docs use. Signed-off-by: Stephen Hemminger --- doc/guides/nics/ark.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/guides/nics/ark.rst b/doc/guides/nics/ark.rst index de8fbbccc304..ab08214df1e2 100644 --- a/doc/guides/nics/ark.rst +++ b/doc/guides/nics/ark.rst @@ -353,7 +353,7 @@ Supported Features * Dynamic ARK PMD extensions * Dynamic per-queue MBUF (re)sizing up to 32KB -* SR-IOV, VF-based queue-segregation +* SR-IOV, VF-based queue-seperation * Multiple receive and transmit queues * Jumbo frames up to 9K * Hardware Statistics -- 2.39.2
RE: [PATCH v5 0/3] Recycle buffers from Tx to Rx
Thanks for the reviewing. > -Original Message- > From: Stephen Hemminger > Sent: Thursday, March 30, 2023 11:05 PM > To: Feifei Wang > Cc: dev@dpdk.org; konstantin.v.anan...@yandex.ru; > m...@smartsharesystems.com; nd > Subject: Re: [PATCH v5 0/3] Recycle buffers from Tx to Rx > > On Thu, 30 Mar 2023 14:29:36 +0800 > Feifei Wang wrote: > > > Currently, the transmit side frees the buffers into the lcore cache > > and the receive side allocates buffers from the lcore cache. The > > transmit side typically frees 32 buffers resulting in 32*8=256B of > > stores to lcore cache. The receive side allocates 32 buffers and > > stores them in the receive side software ring, resulting in 32*8=256B > > of stores and 256B of load from the lcore cache. > > > > This patch proposes a mechanism to avoid freeing to/allocating from > > the lcore cache. i.e. the receive side will free the buffers from > > transmit side directly into its software ring. This will avoid the > > 256B of loads and stores introduced by the lcore cache. It also frees > > up the cache lines used by the lcore cache. And we can call this mode > > as buffer recycle mode. > > > My naive reading of this is that lcore cache update is slow on ARM so you are > introducing yet another cache. Perhaps a better solution would be to figure > out/optimize the lcore cache to work better. >From my point of view, 'recycle buffer' is a strategic optimization. It >reduces the operation of a buffer. Not only arm, but also x86 and other architecture can benefit from this. For example, we can see x86 sse path performance improvement in cover letter test results. > > Adding another layer of abstraction is not going to help everyone and the > implementation you chose requires modifications to drivers to get it to work. > We did not change the original driver mechanism. Recycle buffer can be looked at a feature for pmd, if the user needs higher performance, he/she can choose to call the API in the application to enable it. > In current form, this is not acceptable.
Re: [PATCH] doc/ark: replace word segregation
On Sun, Apr 02, 2023 at 03:53:56PM -0700, Stephen Hemminger wrote: > The word "segregation" brings up troubling memorys. > Instead, use the term seperation which is what DPDK flow docs use. > > Signed-off-by: Stephen Hemminger Acked-by: Tyler Retzlaff
Re: [PATCH 0/6] windows: remove most pthread lifetime shim functions
early review if possible please, would like to have this in from the start of 23.07 to work against. thanks! On Fri, Mar 17, 2023 at 03:34:14PM -0700, Tyler Retzlaff wrote: > Adopt rte thread APIs in code built for Windows to decouple it from the > pthread shim. > > Remove most of the pthread_xxx lifetime shim functions, only > pthread_create remains while we wait for rte_ctrl_thread_create removal. > > Tyler Retzlaff (6): > dma/skeleton: use rte thread API > net/ixgbe: use rte thread API > net/ice: use rte thread API > net/iavf: use rte thread API > eal: use rte thread API > windows: remove most pthread lifetime shim functions > > drivers/dma/skeleton/skeleton_dmadev.c | 15 +++--- > drivers/dma/skeleton/skeleton_dmadev.h | 4 +- > drivers/net/iavf/iavf_vchnl.c | 12 ++--- > drivers/net/ice/ice_dcf_parent.c | 11 ++-- > drivers/net/ixgbe/ixgbe_ethdev.c | 10 ++-- > drivers/net/ixgbe/ixgbe_ethdev.h | 2 +- > lib/eal/common/eal_common_thread.c | 4 +- > lib/eal/windows/eal.c | 2 +- > lib/eal/windows/eal_interrupts.c | 12 ++--- > lib/eal/windows/include/pthread.h | 99 > -- > 10 files changed, 36 insertions(+), 135 deletions(-) > > -- > 1.8.3.1
RE: [PATCH] net/iavf: fix VLAN offload with AVX512
> -Original Message- > From: Lu, Wenzhuo > Sent: Wednesday, March 29, 2023 9:06 AM > To: mschmidt ; dev@dpdk.org > Cc: Richardson, Bruce ; Konstantin Ananyev > ; Wu, Jingjing ; > Xing, Beilei ; Rong, Leyi ; > sta...@dpdk.org > Subject: RE: [PATCH] net/iavf: fix VLAN offload with AVX512 > > > > > -Original Message- > > From: Michal Schmidt > > Sent: Monday, March 27, 2023 6:08 PM > > To: dev@dpdk.org > > Cc: Richardson, Bruce ; Konstantin Ananyev > > ; Wu, Jingjing > > ; Xing, Beilei ; Rong, > > Leyi ; Lu, Wenzhuo ; > > sta...@dpdk.org > > Subject: [PATCH] net/iavf: fix VLAN offload with AVX512 > > > > It has been observed that mbufs of some received VLAN packets had the > > VLAN tag correctly set in vlan_tci, but ol_flags were missing the > > VLAN-indicating flags. > > > > _mm256_shuffle_epi8 operates as two independent 128-bit operations, > > not as a single 256-bit operation. To have the RTE_MBUF_F_RX_VLAN* > > flags reflected in the resulting vlan_flags for all 8 rx descriptors, > > the input l2tag2_flags_shuf must contain the required pattern in both 128- > bit halves. > > > > This fix is for the AVX512 Rx path. The same bug in AVX2 was fixed by > > commit > > eb24917428a1 ("net/iavf: fix VLAN offload with AVX2"). > > > > Fixes: 4b64ccb328c9 ("net/iavf: fix VLAN extraction in AVX512 path") > > Cc: sta...@dpdk.org > > > > Signed-off-by: Michal Schmidt > Acked-by: Wenzhuo Lu Applied to dpdk-next-net-intel. Thanks Qi
RE: [PATCH v6] net/ice: fix ice dcf control thread crash
> -Original Message- > From: Ye, MingjinX > Sent: Wednesday, March 22, 2023 1:56 PM > To: dev@dpdk.org > Cc: Yang, Qiming ; sta...@dpdk.org; Zhou, YidingX > ; Ye, MingjinX ; Zhang, > Ke1X ; Zhang, Qi Z > Subject: [PATCH v6] net/ice: fix ice dcf control thread crash > > The control thread accesses the hardware resources after the resources were > released, which results in a segment error. > > The 'ice-reset' threads are detached, so thread resources cannot be > reclaimed by `pthread_join` calls. > > This commit synchronizes the number of "ice-reset" threads by adding a > variable ("vsi_update_thread_num") to the "struct ice_dcf_hw" and > performing an atomic operation on this variable. When releasing HW > resources, we wait for the number of "ice-reset" threads to be reduced to 0 > before releasing the resources. > > Fixes: c7e1a1a3bfeb ("net/ice: refactor DCF VLAN handling") > Fixes: 7564d5509611 ("net/ice: add DCF hardware initialization") > Fixes: 0b02c9519432 ("net/ice: handle PF initialization by DCF") > Cc: sta...@dpdk.org > > Signed-off-by: Ke Zhang > Signed-off-by: Mingjin Ye > --- > v2: add pthread_exit() for windows > --- > v3: Optimization. It is unsafe for a thread to forcibly exit, which will > cause the > spin lock to not be released correctly > --- > v4: Safely wait for all event threads to end > --- > v5: Spinlock moved to struct ice_dcf_hw > --- > v6: Spinlock changed to atomic > --- > drivers/net/ice/ice_dcf.c| 9 + > drivers/net/ice/ice_dcf.h| 2 ++ > drivers/net/ice/ice_dcf_parent.c | 6 ++ > 3 files changed, 17 insertions(+) > > diff --git a/drivers/net/ice/ice_dcf.c b/drivers/net/ice/ice_dcf.c index > 1c3d22ae0f..adf2cf2cb6 100644 > --- a/drivers/net/ice/ice_dcf.c > +++ b/drivers/net/ice/ice_dcf.c > @@ -32,6 +32,8 @@ > #define ICE_DCF_ARQ_MAX_RETRIES 200 > #define ICE_DCF_ARQ_CHECK_TIME 2 /* msecs */ > > +#define ICE_DCF_CHECK_INTERVAL 100 /* 100ms */ > + > #define ICE_DCF_VF_RES_BUF_SZ\ > (sizeof(struct virtchnl_vf_resource) + \ > IAVF_MAX_VF_VSI * sizeof(struct virtchnl_vsi_resource)) @@ > -639,6 +641,8 @@ ice_dcf_init_hw(struct rte_eth_dev *eth_dev, struct > ice_dcf_hw *hw) > rte_spinlock_init(&hw->vc_cmd_queue_lock); > TAILQ_INIT(&hw->vc_cmd_queue); > > + __atomic_store_n(&hw->vsi_update_thread_num, 0, > __ATOMIC_RELAXED); > + > hw->arq_buf = rte_zmalloc("arq_buf", ICE_DCF_AQ_BUF_SZ, 0); > if (hw->arq_buf == NULL) { > PMD_INIT_LOG(ERR, "unable to allocate AdminQ buffer > memory"); @@ -760,6 +764,11 @@ ice_dcf_uninit_hw(struct rte_eth_dev > *eth_dev, struct ice_dcf_hw *hw) > rte_intr_callback_unregister(intr_handle, >ice_dcf_dev_interrupt_handler, hw); > > + /* Wait for all `ice-thread` threads to exit. */ > + while (__atomic_load_n(&hw->vsi_update_thread_num, > + __ATOMIC_ACQUIRE) != 0) > + rte_delay_ms(ICE_DCF_CHECK_INTERVAL); > + > ice_dcf_mode_disable(hw); > iavf_shutdown_adminq(&hw->avf); > > diff --git a/drivers/net/ice/ice_dcf.h b/drivers/net/ice/ice_dcf.h index > 7f42ebabe9..7becf6d187 100644 > --- a/drivers/net/ice/ice_dcf.h > +++ b/drivers/net/ice/ice_dcf.h > @@ -105,6 +105,8 @@ struct ice_dcf_hw { > void (*vc_event_msg_cb)(struct ice_dcf_hw *dcf_hw, > uint8_t *msg, uint16_t msglen); > > + int vsi_update_thread_num; > + > uint8_t *arq_buf; > > uint16_t num_vfs; > diff --git a/drivers/net/ice/ice_dcf_parent.c > b/drivers/net/ice/ice_dcf_parent.c > index 01e390ddda..6ee0fbcd2b 100644 > --- a/drivers/net/ice/ice_dcf_parent.c > +++ b/drivers/net/ice/ice_dcf_parent.c > @@ -154,6 +154,9 @@ ice_dcf_vsi_update_service_handler(void *param) > > free(param); > > + __atomic_fetch_sub(&hw->vsi_update_thread_num, 1, > + __ATOMIC_RELEASE); > + > return NULL; > } > > @@ -183,6 +186,9 @@ start_vsi_reset_thread(struct ice_dcf_hw *dcf_hw, > bool vfr, uint16_t vf_id) > PMD_DRV_LOG(ERR, "Failed to start the thread for reset > handling"); > free(param); > } > + > + __atomic_fetch_add(&dcf_hw->vsi_update_thread_num, 1, > + __ATOMIC_RELAXED); Is this correct? you increment the counter after you start the new thread with rte_ctrl_thread_create, It is possible, __atomic_fetch_sub in ice_dcf_vsi_update_service_handler will be executed before __atomic_fetch_add? Why not moving __atomic_fetch_add to the service_handler thread? So the order of "add" and "sub" can be guaranteed ? > } > > static uint32_t > -- > 2.25.1
[PATCH] version: 23.07-rc0
Start a new release cycle with empty release notes. Bump version and ABI minor. Signed-off-by: David Marchand --- .github/workflows/build.yml| 2 +- ABI_VERSION| 2 +- VERSION| 2 +- doc/guides/rel_notes/index.rst | 1 + doc/guides/rel_notes/release_23_07.rst | 138 + 5 files changed, 142 insertions(+), 3 deletions(-) create mode 100644 doc/guides/rel_notes/release_23_07.rst diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e24e47a216..e824f8841c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -27,7 +27,7 @@ jobs: MINI: ${{ matrix.config.mini != '' }} PPC64LE: ${{ matrix.config.cross == 'ppc64le' }} REF_GIT_REPO: https://dpdk.org/git/dpdk-stable - REF_GIT_TAG: v22.11.1 + REF_GIT_TAG: v23.03 RISCV64: ${{ matrix.config.cross == 'riscv64' }} RUN_TESTS: ${{ contains(matrix.config.checks, 'tests') }} diff --git a/ABI_VERSION b/ABI_VERSION index a12b18e437..3c8ce91a46 100644 --- a/ABI_VERSION +++ b/ABI_VERSION @@ -1 +1 @@ -23.1 +23.2 diff --git a/VERSION b/VERSION index 533bf9aa13..d3c78a13bf 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -23.03.0 +23.07.0-rc0 diff --git a/doc/guides/rel_notes/index.rst b/doc/guides/rel_notes/index.rst index 57475a8158..d8dfa621ec 100644 --- a/doc/guides/rel_notes/index.rst +++ b/doc/guides/rel_notes/index.rst @@ -8,6 +8,7 @@ Release Notes :maxdepth: 1 :numbered: +release_23_07 release_23_03 release_22_11 release_22_07 diff --git a/doc/guides/rel_notes/release_23_07.rst b/doc/guides/rel_notes/release_23_07.rst new file mode 100644 index 00..a9b1293689 --- /dev/null +++ b/doc/guides/rel_notes/release_23_07.rst @@ -0,0 +1,138 @@ +.. SPDX-License-Identifier: BSD-3-Clause + Copyright 2023 The DPDK contributors + +.. include:: + +DPDK Release 23.07 +== + +.. **Read this first.** + + The text in the sections below explains how to update the release notes. + + Use proper spelling, capitalization and punctuation in all sections. + + Variable and config names should be quoted as fixed width text: + ``LIKE_THIS``. + + Build the docs and view the output file to ensure the changes are correct:: + + ninja -C build doc + xdg-open build/doc/guides/html/rel_notes/release_23_07.html + + +New Features + + +.. This section should contain new features added in this release. + Sample format: + + * **Add a title in the past tense with a full stop.** + + Add a short 1-2 sentence description in the past tense. + The description should be enough to allow someone scanning + the release notes to understand the new feature. + + If the feature adds a lot of sub-features you can use a bullet list + like this: + + * Added feature foo to do something. + * Enhanced feature bar to do something else. + + Refer to the previous release notes for examples. + + Suggested order in release notes items: + * Core libs (EAL, mempool, ring, mbuf, buses) + * Device abstraction libs and PMDs (ordered alphabetically by vendor name) + - ethdev (lib, PMDs) + - cryptodev (lib, PMDs) + - eventdev (lib, PMDs) + - etc + * Other libs + * Apps, Examples, Tools (if significant) + + This section is a comment. Do not overwrite or remove it. + Also, make sure to start the actual text at the margin. + === + + +Removed Items +- + +.. This section should contain removed items in this release. Sample format: + + * Add a short 1-2 sentence description of the removed item + in the past tense. + + This section is a comment. Do not overwrite or remove it. + Also, make sure to start the actual text at the margin. + === + + +API Changes +--- + +.. This section should contain API changes. Sample format: + + * sample: Add a short 1-2 sentence description of the API change + which was announced in the previous releases and made in this release. + Start with a scope label like "ethdev:". + Use fixed width quotes for ``function_names`` or ``struct_names``. + Use the past tense. + + This section is a comment. Do not overwrite or remove it. + Also, make sure to start the actual text at the margin. + === + + +ABI Changes +--- + +.. This section should contain ABI changes. Sample format: + + * sample: Add a short 1-2 sentence description of the ABI change + which was announced in the previous releases and made in this release. + Start with a scope label like "ethdev:". + Use fixed width quotes for ``function_names`` or ``struct_names``. + Use the past tense. + + This section is a comment. Do not overwrite or remove it. + A