DPDK patches and discussions
 help / color / mirror / Atom feed
From: Ferruh Yigit <ferruh.yigit@amd.com>
To: Jiawen Wu <jiawenwu@trustnetic.com>, dev@dpdk.org
Subject: Re: [PATCH v2 06/13] net/txgbe: check length of Tx packets
Date: Fri, 1 Nov 2024 02:49:53 +0000	[thread overview]
Message-ID: <755d1711-c63d-4101-ad5b-b6fc1d5dd4a2@amd.com> (raw)
In-Reply-To: <03c701db2c00$b2825670$17870350$@trustnetic.com>

On 11/1/2024 1:52 AM, Jiawen Wu wrote:
> On Fri, Nov 1, 2024 9:23 AM, Ferruh Yigit wrote:
>> On 10/28/2024 2:31 AM, Jiawen Wu wrote:
>>> Add checking of the Tx packet length to avoid TDM fatal error as far as
>>> possible. Set the pkt_len=1518 for invalid packet in simple Tx code path,
>>> and drop it directly in featured Tx code path.
>>>
>>> Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
>>> ---
>>>  drivers/net/txgbe/txgbe_rxtx.c          | 33 +++++++++++++++++++++++++
>>>  drivers/net/txgbe/txgbe_rxtx_vec_neon.c | 10 +++++---
>>>  drivers/net/txgbe/txgbe_rxtx_vec_sse.c  | 11 ++++++---
>>>  3 files changed, 48 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/drivers/net/txgbe/txgbe_rxtx.c b/drivers/net/txgbe/txgbe_rxtx.c
>>> index 2d2b437643..06acbd0881 100644
>>> --- a/drivers/net/txgbe/txgbe_rxtx.c
>>> +++ b/drivers/net/txgbe/txgbe_rxtx.c
>>> @@ -160,6 +160,8 @@ tx4(volatile struct txgbe_tx_desc *txdp, struct rte_mbuf **pkts)
>>>  	for (i = 0; i < 4; ++i, ++txdp, ++pkts) {
>>>  		buf_dma_addr = rte_mbuf_data_iova(*pkts);
>>>  		pkt_len = (*pkts)->data_len;
>>> +		if (pkt_len < RTE_ETHER_HDR_LEN)
>>> +			pkt_len = TXGBE_FRAME_SIZE_DFT;
>>>
>>>  		/* write data to descriptor */
>>>  		txdp->qw0 = rte_cpu_to_le_64(buf_dma_addr);
>>> @@ -180,6 +182,8 @@ tx1(volatile struct txgbe_tx_desc *txdp, struct rte_mbuf **pkts)
>>>
>>>  	buf_dma_addr = rte_mbuf_data_iova(*pkts);
>>>  	pkt_len = (*pkts)->data_len;
>>> +	if (pkt_len < RTE_ETHER_HDR_LEN)
>>> +		pkt_len = TXGBE_FRAME_SIZE_DFT;
>>>
>>>  	/* write data to descriptor */
>>>  	txdp->qw0 = cpu_to_le64(buf_dma_addr);
>>> @@ -813,6 +817,30 @@ txgbe_parse_tun_ptid(struct rte_mbuf *tx_pkt, uint8_t tun_len)
>>>  	return ptid;
>>>  }
>>>
>>> +static inline bool
>>> +txgbe_check_pkt_err(struct rte_mbuf *tx_pkt)
>>> +{
>>> +	uint32_t total_len = 0, nb_seg = 0;
>>> +	struct rte_mbuf *mseg;
>>> +
>>> +	mseg = tx_pkt;
>>> +	do {
>>> +		if (mseg->data_len == 0)
>>> +			return true;
>>> +		total_len += mseg->data_len;
>>> +		nb_seg++;
>>> +		mseg = mseg->next;
>>> +	} while (mseg != NULL);
>>> +
>>> +	if (tx_pkt->pkt_len != total_len || tx_pkt->pkt_len == 0)
>>> +		return true;
>>> +
>>> +	if (tx_pkt->nb_segs != nb_seg || tx_pkt->nb_segs > 64)
>>> +		return true;
>>> +
>>> +	return false;
>>> +}
>>> +
>>>
>>
>> Hi Jiawen,
>>
>> Above are generic checks, we may add this function to ethdev driver
>> header (ethdev_driver.h) so that any PMD can use it, what do you think?
> 
> In fact, the limitation of tx_pkt->nb_segs is already implemented in
> .tx_pkt_prepare. But users developing their own apps don't necessarily call
> this function. So I'd like to add these in txgbe_xmit_pkts(). What are you
> going to do about it?
> 
> 

I had the same thought, that is why I am not suggesting to add these
checks to .tx_pkt_prepare() function.

But still these generic checks can go into a new static inline function
for drivers to use, not for end users, and any other driver can call
this function. Your two drivers already using the same function.

This is not hard requirement, but if there is a common code for multiple
drivers, that can go into a helper function in ethdev_driver.h







  reply	other threads:[~2024-11-01  2:50 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-23  6:48 [PATCH 00/13] Wangxun fixes Jiawen Wu
2024-10-23  6:48 ` [PATCH 01/13] net/txgbe: fix swfw mbox failure Jiawen Wu
2024-10-23  6:48 ` [PATCH 02/13] net/txgbe: fix VF-PF mbox interrupt Jiawen Wu
2024-10-23  6:48 ` [PATCH 03/13] net/txgbe: remove outer UDP checksum capability Jiawen Wu
2024-10-23  6:48 ` [PATCH 04/13] net/txgbe: fix driver load bit to inform firmware Jiawen Wu
2024-10-23  6:48 ` [PATCH 05/13] net/txgbe: enable Tx descriptor error interrupt Jiawen Wu
2024-10-23  6:48 ` [PATCH 06/13] net/txgbe: check length of Tx packets Jiawen Wu
2024-10-23  6:48 ` [PATCH 07/13] net/txgbe: add Tx descriptor error statistics Jiawen Wu
2024-10-23  6:48 ` [PATCH 08/13] net/ngbe: check length of Tx packets Jiawen Wu
2024-10-23  6:48 ` [PATCH 09/13] net/ngbe: add Tx descriptor error statistics Jiawen Wu
2024-10-23  6:48 ` [PATCH 10/13] net/ngbe: fix driver load bit to inform firmware Jiawen Wu
2024-10-23  6:48 ` [PATCH 11/13] net/ngbe: reconfigure more MAC Rx registers Jiawen Wu
2024-10-23  6:48 ` [PATCH 12/13] net/ngbe: fix interrupt lost in legacy or MSI mode Jiawen Wu
2024-10-23  6:48 ` [PATCH 13/13] net/ngbe: restrict configuration of VLAN strip offload Jiawen Wu
2024-10-28  2:31 ` [PATCH v2 00/13] Wangxun fixes Jiawen Wu
2024-10-28  2:31   ` [PATCH v2 01/13] net/txgbe: fix swfw mbox failure Jiawen Wu
2024-10-28  2:31   ` [PATCH v2 02/13] net/txgbe: fix VF-PF mbox interrupt Jiawen Wu
2024-10-28  2:31   ` [PATCH v2 03/13] net/txgbe: remove outer UDP checksum capability Jiawen Wu
2024-10-28  2:31   ` [PATCH v2 04/13] net/txgbe: fix driver load bit to inform firmware Jiawen Wu
2024-10-28  2:31   ` [PATCH v2 05/13] net/txgbe: enable Tx descriptor error interrupt Jiawen Wu
2024-10-28  2:31   ` [PATCH v2 06/13] net/txgbe: check length of Tx packets Jiawen Wu
2024-11-01  1:22     ` Ferruh Yigit
2024-11-01  1:52       ` Jiawen Wu
2024-11-01  2:49         ` Ferruh Yigit [this message]
2024-11-01  2:56       ` Stephen Hemminger
2024-10-28  2:31   ` [PATCH v2 07/13] net/txgbe: add Tx descriptor error statistics Jiawen Wu
2024-11-01  1:33     ` Ferruh Yigit
2024-11-01  2:06       ` Jiawen Wu
2024-11-01  2:45         ` Ferruh Yigit
2024-11-01  3:05           ` Jiawen Wu
2024-10-28  2:31   ` [PATCH v2 08/13] net/ngbe: check length of Tx packets Jiawen Wu
2024-10-28  2:31   ` [PATCH v2 09/13] net/ngbe: add Tx descriptor error statistics Jiawen Wu
2024-10-28  2:31   ` [PATCH v2 10/13] net/ngbe: fix driver load bit to inform firmware Jiawen Wu
2024-10-28  2:31   ` [PATCH v2 11/13] net/ngbe: reconfigure more MAC Rx registers Jiawen Wu
2024-10-28  2:31   ` [PATCH v2 12/13] net/ngbe: fix interrupt lost in legacy or MSI mode Jiawen Wu
2024-10-28  2:31   ` [PATCH v2 13/13] net/ngbe: restrict configuration of VLAN strip offload Jiawen Wu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=755d1711-c63d-4101-ad5b-b6fc1d5dd4a2@amd.com \
    --to=ferruh.yigit@amd.com \
    --cc=dev@dpdk.org \
    --cc=jiawenwu@trustnetic.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).