From: Ferruh Yigit <ferruh.yigit@intel.com>
To: Jiawen Wu <jiawenwu@trustnetic.com>, <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH 01/32] net/ngbe: add packet type
Date: Wed, 15 Sep 2021 17:47:44 +0100 [thread overview]
Message-ID: <c2412b5a-afcb-ff87-e6a5-bc037e79b432@intel.com> (raw)
In-Reply-To: <20210908083758.312055-2-jiawenwu@trustnetic.com>
On 9/8/2021 9:37 AM, Jiawen Wu wrote:
> Add packet type marco definition and convert ptype to ptid.
>
> Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
> ---
> doc/guides/nics/features/ngbe.ini | 1 +
> doc/guides/nics/ngbe.rst | 1 +
> drivers/net/ngbe/meson.build | 1 +
> drivers/net/ngbe/ngbe_ethdev.c | 9 +
> drivers/net/ngbe/ngbe_ethdev.h | 4 +
> drivers/net/ngbe/ngbe_ptypes.c | 300 ++++++++++++++++++++++++++++++
> drivers/net/ngbe/ngbe_ptypes.h | 240 ++++++++++++++++++++++++
> drivers/net/ngbe/ngbe_rxtx.c | 16 ++
> drivers/net/ngbe/ngbe_rxtx.h | 2 +
> 9 files changed, 574 insertions(+)
> create mode 100644 drivers/net/ngbe/ngbe_ptypes.c
> create mode 100644 drivers/net/ngbe/ngbe_ptypes.h
>
> diff --git a/doc/guides/nics/features/ngbe.ini b/doc/guides/nics/features/ngbe.ini
> index 08d5f1b0dc..8b7588184a 100644
> --- a/doc/guides/nics/features/ngbe.ini
> +++ b/doc/guides/nics/features/ngbe.ini
> @@ -8,6 +8,7 @@ Speed capabilities = Y
> Link status = Y
> Link status event = Y
> Queue start/stop = Y
> +Packet type parsing = Y
"Packet type parsing" also requires to support
'rte_eth_dev_get_supported_ptypes()' & 'rte_eth_dev_set_ptypes()' APIs.
Current implementation seems parses the packet type and updates mbuf field for
it but doesn't support above APIs, can you please add them too? There is already
'ngbe_dev_supported_ptypes_get()' function but dev_ops seems not set.
<...>
> +++ b/drivers/net/ngbe/ngbe_ptypes.c
> @@ -0,0 +1,300 @@
> +/* SPDX-License-Identifier: BSD-3-Clause
> + * Copyright(c) 2018-2021 Beijing WangXun Technology Co., Ltd.
> + */
> +
> +#include <rte_mbuf.h>
> +#include <rte_memory.h>
> +
> +#include "base/ngbe_type.h"
> +#include "ngbe_ptypes.h"
> +
> +/* The ngbe_ptype_lookup is used to convert from the 8-bit ptid in the
> + * hardware to a bit-field that can be used by SW to more easily determine the
> + * packet type.
> + *
> + * Macros are used to shorten the table lines and make this table human
> + * readable.
> + *
> + * We store the PTYPE in the top byte of the bit field - this is just so that
> + * we can check that the table doesn't have a row missing, as the index into
> + * the table should be the PTYPE.
> + */
> +#define TPTE(ptid, l2, l3, l4, tun, el2, el3, el4) \
> + [ptid] = (RTE_PTYPE_L2_##l2 | \
> + RTE_PTYPE_L3_##l3 | \
> + RTE_PTYPE_L4_##l4 | \
> + RTE_PTYPE_TUNNEL_##tun | \
> + RTE_PTYPE_INNER_L2_##el2 | \
> + RTE_PTYPE_INNER_L3_##el3 | \
> + RTE_PTYPE_INNER_L4_##el4)
> +
> +#define RTE_PTYPE_L2_NONE 0
> +#define RTE_PTYPE_L3_NONE 0
> +#define RTE_PTYPE_L4_NONE 0
> +#define RTE_PTYPE_TUNNEL_NONE 0
> +#define RTE_PTYPE_INNER_L2_NONE 0
> +#define RTE_PTYPE_INNER_L3_NONE 0
> +#define RTE_PTYPE_INNER_L4_NONE 0
Why you are defining new PTYPEs? If these are for driver internal you can drop
the 'RTE_' prefix.
<...>
> +
> +#ifndef RTE_PTYPE_UNKNOWN
> +#define RTE_PTYPE_UNKNOWN 0x00000000
> +#define RTE_PTYPE_L2_ETHER 0x00000001
> +#define RTE_PTYPE_L2_ETHER_TIMESYNC 0x00000002
> +#define RTE_PTYPE_L2_ETHER_ARP 0x00000003
> +#define RTE_PTYPE_L2_ETHER_LLDP 0x00000004
> +#define RTE_PTYPE_L2_ETHER_NSH 0x00000005
> +#define RTE_PTYPE_L2_ETHER_FCOE 0x00000009
> +#define RTE_PTYPE_L3_IPV4 0x00000010
> +#define RTE_PTYPE_L3_IPV4_EXT 0x00000030
> +#define RTE_PTYPE_L3_IPV6 0x00000040
> +#define RTE_PTYPE_L3_IPV4_EXT_UNKNOWN 0x00000090
> +#define RTE_PTYPE_L3_IPV6_EXT 0x000000c0
> +#define RTE_PTYPE_L3_IPV6_EXT_UNKNOWN 0x000000e0
> +#define RTE_PTYPE_L4_TCP 0x00000100
> +#define RTE_PTYPE_L4_UDP 0x00000200
> +#define RTE_PTYPE_L4_FRAG 0x00000300
> +#define RTE_PTYPE_L4_SCTP 0x00000400
> +#define RTE_PTYPE_L4_ICMP 0x00000500
> +#define RTE_PTYPE_L4_NONFRAG 0x00000600
> +#define RTE_PTYPE_TUNNEL_IP 0x00001000
> +#define RTE_PTYPE_TUNNEL_GRE 0x00002000
> +#define RTE_PTYPE_TUNNEL_VXLAN 0x00003000
> +#define RTE_PTYPE_TUNNEL_NVGRE 0x00004000
> +#define RTE_PTYPE_TUNNEL_GENEVE 0x00005000
> +#define RTE_PTYPE_TUNNEL_GRENAT 0x00006000
> +#define RTE_PTYPE_INNER_L2_ETHER 0x00010000
> +#define RTE_PTYPE_INNER_L2_ETHER_VLAN 0x00020000
> +#define RTE_PTYPE_INNER_L3_IPV4 0x00100000
> +#define RTE_PTYPE_INNER_L3_IPV4_EXT 0x00200000
> +#define RTE_PTYPE_INNER_L3_IPV6 0x00300000
> +#define RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN 0x00400000
> +#define RTE_PTYPE_INNER_L3_IPV6_EXT 0x00500000
> +#define RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN 0x00600000
> +#define RTE_PTYPE_INNER_L4_TCP 0x01000000
> +#define RTE_PTYPE_INNER_L4_UDP 0x02000000
> +#define RTE_PTYPE_INNER_L4_FRAG 0x03000000
> +#define RTE_PTYPE_INNER_L4_SCTP 0x04000000
> +#define RTE_PTYPE_INNER_L4_ICMP 0x05000000
> +#define RTE_PTYPE_INNER_L4_NONFRAG 0x06000000
> +#endif /* !RTE_PTYPE_UNKNOWN */
These are already defined in the mbuf public header, why there are defined again?
<...>
> @@ -378,6 +389,10 @@ ngbe_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
> rxm->data_len = pkt_len;
> rxm->port = rxq->port_id;
>
> + pkt_info = rte_le_to_cpu_32(rxd.qw0.dw0);
> + rxm->packet_type = ngbe_rxd_pkt_info_to_pkt_type(pkt_info,
> + rxq->pkt_type_mask);
> +
> /*
> * Store the mbuf address into the next entry of the array
> * of returned packets.
> @@ -799,6 +814,7 @@ ngbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
> rxq->port_id = dev->data->port_id;
> rxq->drop_en = rx_conf->rx_drop_en;
> rxq->rx_deferred_start = rx_conf->rx_deferred_start;
> + rxq->pkt_type_mask = NGBE_PTID_MASK;
What is the use of the 'pkt_type_mask', it seems it is a fixed value, why
keeping it per queue?
next prev parent reply other threads:[~2021-09-15 16:47 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-08 8:37 [dpdk-dev] [PATCH 00/32] net/ngbe: add many features Jiawen Wu
2021-09-08 8:37 ` [dpdk-dev] [PATCH 01/32] net/ngbe: add packet type Jiawen Wu
2021-09-15 16:47 ` Ferruh Yigit [this message]
2021-09-22 8:01 ` Jiawen Wu
2021-09-08 8:37 ` [dpdk-dev] [PATCH 02/32] net/ngbe: support scattered Rx Jiawen Wu
2021-09-15 13:22 ` Ferruh Yigit
2021-09-08 8:37 ` [dpdk-dev] [PATCH 03/32] net/ngbe: support Rx checksum offload Jiawen Wu
2021-09-15 16:48 ` Ferruh Yigit
2021-09-08 8:37 ` [dpdk-dev] [PATCH 04/32] net/ngbe: support TSO Jiawen Wu
2021-09-15 16:57 ` Ferruh Yigit
2021-09-08 8:37 ` [dpdk-dev] [PATCH 05/32] net/ngbe: support CRC offload Jiawen Wu
2021-09-15 16:48 ` Ferruh Yigit
2021-09-08 8:37 ` [dpdk-dev] [PATCH 06/32] net/ngbe: support jumbo frame Jiawen Wu
2021-09-15 16:48 ` Ferruh Yigit
2021-09-08 8:37 ` [dpdk-dev] [PATCH 07/32] net/ngbe: support VLAN and QinQ offload Jiawen Wu
2021-09-08 8:37 ` [dpdk-dev] [PATCH 08/32] net/ngbe: support basic statistics Jiawen Wu
2021-09-15 16:50 ` Ferruh Yigit
2021-10-14 2:51 ` Jiawen Wu
2021-10-14 7:59 ` Ferruh Yigit
2021-09-08 8:37 ` [dpdk-dev] [PATCH 09/32] net/ngbe: support device xstats Jiawen Wu
2021-09-08 8:37 ` [dpdk-dev] [PATCH 10/32] net/ngbe: support MTU set Jiawen Wu
2021-09-15 16:52 ` Ferruh Yigit
2021-09-08 8:37 ` [dpdk-dev] [PATCH 11/32] net/ngbe: add device promiscuous and allmulticast mode Jiawen Wu
2021-09-08 8:37 ` [dpdk-dev] [PATCH 12/32] net/ngbe: support getting FW version Jiawen Wu
2021-09-15 16:53 ` Ferruh Yigit
2021-09-08 8:37 ` [dpdk-dev] [PATCH 13/32] net/ngbe: add loopback mode Jiawen Wu
2021-09-08 8:37 ` [dpdk-dev] [PATCH 14/32] net/ngbe: support Rx interrupt Jiawen Wu
2021-09-15 16:53 ` Ferruh Yigit
2021-10-14 10:11 ` Jiawen Wu
2021-09-08 8:37 ` [dpdk-dev] [PATCH 15/32] net/ngbe: support MAC filters Jiawen Wu
2021-09-08 8:37 ` [dpdk-dev] [PATCH 16/32] net/ngbe: support VLAN filter Jiawen Wu
2021-09-15 16:54 ` Ferruh Yigit
2021-09-08 8:37 ` [dpdk-dev] [PATCH 17/32] net/ngbe: support RSS hash Jiawen Wu
2021-09-08 8:37 ` [dpdk-dev] [PATCH 18/32] net/ngbe: support SRIOV Jiawen Wu
2021-09-08 8:37 ` [dpdk-dev] [PATCH 19/32] net/ngbe: add mailbox process operations Jiawen Wu
2021-09-15 16:56 ` Ferruh Yigit
2021-09-08 8:37 ` [dpdk-dev] [PATCH 20/32] net/ngbe: support flow control Jiawen Wu
2021-09-08 8:37 ` [dpdk-dev] [PATCH 21/32] net/ngbe: support device LED on and off Jiawen Wu
2021-09-08 8:37 ` [dpdk-dev] [PATCH 22/32] net/ngbe: support EEPROM dump Jiawen Wu
2021-09-08 8:37 ` [dpdk-dev] [PATCH 23/32] net/ngbe: support register dump Jiawen Wu
2021-09-08 8:37 ` [dpdk-dev] [PATCH 24/32] net/ngbe: support timesync Jiawen Wu
2021-09-08 8:37 ` [dpdk-dev] [PATCH 25/32] net/ngbe: add Rx and Tx queue info get Jiawen Wu
2021-09-08 8:37 ` [dpdk-dev] [PATCH 26/32] net/ngbe: add Rx and Tx descriptor status Jiawen Wu
2021-09-08 8:37 ` [dpdk-dev] [PATCH 27/32] net/ngbe: add Tx done cleanup Jiawen Wu
2021-09-08 8:37 ` [dpdk-dev] [PATCH 28/32] net/ngbe: add IPsec context creation Jiawen Wu
2021-09-15 16:58 ` Ferruh Yigit
2021-09-16 9:00 ` Hemant Agrawal
2021-09-16 17:15 ` Ferruh Yigit
2021-09-16 9:04 ` Hemant Agrawal
2021-09-08 8:37 ` [dpdk-dev] [PATCH 29/32] net/ngbe: create and destroy security session Jiawen Wu
2021-09-08 8:37 ` [dpdk-dev] [PATCH 30/32] net/ngbe: support security operations Jiawen Wu
2021-09-08 8:37 ` [dpdk-dev] [PATCH 31/32] net/ngbe: add security offload in Rx and Tx Jiawen Wu
2021-09-08 8:37 ` [dpdk-dev] [PATCH 32/32] doc: update for ngbe Jiawen Wu
2021-09-15 16:58 ` Ferruh Yigit
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=c2412b5a-afcb-ff87-e6a5-bc037e79b432@intel.com \
--to=ferruh.yigit@intel.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).