From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2A3B9A0547; Tue, 20 Apr 2021 04:44:30 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DF9234159C; Tue, 20 Apr 2021 04:44:29 +0200 (CEST) Received: from szxga04-in.huawei.com (szxga04-in.huawei.com [45.249.212.190]) by mails.dpdk.org (Postfix) with ESMTP id C9B754159C for ; Tue, 20 Apr 2021 04:44:28 +0200 (CEST) Received: from DGGEMS401-HUB.china.huawei.com (unknown [172.30.72.60]) by szxga04-in.huawei.com (SkyGuard) with ESMTP id 4FPSd908vnz1BGwQ; Tue, 20 Apr 2021 10:42:05 +0800 (CST) Received: from [127.0.0.1] (10.69.27.114) by DGGEMS401-HUB.china.huawei.com (10.3.19.201) with Microsoft SMTP Server id 14.3.498.0; Tue, 20 Apr 2021 10:44:19 +0800 To: Ferruh Yigit , References: <1618571071-5927-1-git-send-email-tangchengchang@huawei.com> <58a7abc3-0906-57f2-5fd3-7e875b6f4c1e@intel.com> CC: , , From: Chengchang Tang Message-ID: Date: Tue, 20 Apr 2021 10:44:18 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.7.1 MIME-Version: 1.0 In-Reply-To: <58a7abc3-0906-57f2-5fd3-7e875b6f4c1e@intel.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [10.69.27.114] X-CFilter-Loop: Reflected Subject: Re: [dpdk-dev] [RFC 0/2] add Tx prepare support for bonding device X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 2021/4/20 9:26, Ferruh Yigit wrote: > On 4/16/2021 12:04 PM, Chengchang Tang wrote: >> This patch add Tx prepare for bonding device. >> >> Currently, the bonding driver has not implemented the callback of >> rte_eth_tx_prepare function. Therefore, the TX prepare function of the >> slave devices will never be invoked. When hardware offloading such as >> CKSUM and TSO are enabled for some drivers, tx_prepare needs to be used >> to adjust packets (for example, set correct pseudo packet headers). >> Otherwise, related offloading fails and even packets are sent >> incorrectly. Due to this limitation, the bonded device cannot use these >> HW offloading in the Tx direction. >> >> Because packet sending algorithms are numerous and complex in bond PMD, >> it is hard to design the callback for rte_eth_tx_prepare. In this patch, >> the tx_prepare callback of bonding PMD is not implemented. Instead, >> rte_eth_tx_prepare has been called in tx_burst callback. And a global >> variable is introduced to control whether the bonded device need call >> the rte_eth_tx_prepare. If upper-layer users need to use some TX >> offloading that depend on tx_prepare , they should enable the preparation >> function. In this way, the bonded device will call the rte_eth_tx_prepare >> for the fast path packets in the tx_burst callback. >> > > What do you think to add a devarg to bonding PMD to control the tx_prepare? > It won't be as dynamic as API, since it can be possible to change the behavior after application is started with API, but do we really need this? If an API is not added, unnecessary constraints may be introduced. If the bonding device is created through the rte_eth_bond_create interface instead devarg "vdev", this function cannot be used because devargs does not take effect in this case. But from an ease-of-use perspective, adding a devarg is a good idea. I will add related implementations in the later official patches. If I understand correctly, the current community does not want to introduce more private APIs for PMDs. However, the absence of an API on this issue would introduce some unnecessary constraints, and from that point of view, I think adding an API seems necessary. > >> Chengchang Tang (2): >> net/bonding: add Tx prepare for bonding >> app/testpmd: add cmd for bonding Tx prepare >> >> app/test-pmd/cmdline.c | 66 +++++++++++++++++++++++++++++ >> doc/guides/testpmd_app_ug/testpmd_funcs.rst | 9 ++++ >> drivers/net/bonding/eth_bond_private.h | 1 + >> drivers/net/bonding/rte_eth_bond.h | 29 +++++++++++++ >> drivers/net/bonding/rte_eth_bond_api.c | 28 ++++++++++++ >> drivers/net/bonding/rte_eth_bond_pmd.c | 33 +++++++++++++-- >> drivers/net/bonding/version.map | 5 +++ >> 7 files changed, 167 insertions(+), 4 deletions(-) >> >> -- >> 2.7.4 >> > > > . >