[21.05] app/testpmd: count outer IP checksum errors
Checks
Commit Message
Count and display outer IP checksum errors in the checksum
forwarder.
Example forwarder stats output:
RX-packets: 158 RX-dropped: 0 RX-total: 158
Bad-ipcsum: 48 Bad-l4csum: 48 Bad-outer-l4csum: 6
Bad-outer-ipcsum: 40
TX-packets: 0 TX-dropped: 0 TX-total: 0
Signed-off-by: Lance Richardson <lance.richardson@broadcom.com>
Reviewed-by: Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>
Reviewed-by: Kalesh Anakkur Purayil <kalesh-anakkur.purayil@broadcom.com>
---
app/test-pmd/csumonly.c | 5 +++++
app/test-pmd/testpmd.c | 11 ++++++++++-
app/test-pmd/testpmd.h | 2 ++
3 files changed, 17 insertions(+), 1 deletion(-)
Comments
Hi,
> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Lance Richardson
> Sent: Saturday, January 30, 2021 12:36 AM
> To: Wenzhuo Lu <wenzhuo.lu@intel.com>; Xiaoyun Li
> <xiaoyun.li@intel.com>; Bernard Iremonger
> <bernard.iremonger@intel.com>
> Cc: dev@dpdk.org; Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>;
> Kalesh Anakkur Purayil <kalesh-anakkur.purayil@broadcom.com>
> Subject: [dpdk-dev] [PATCH 21.05] app/testpmd: count outer IP checksum
> errors
>
> Count and display outer IP checksum errors in the checksum forwarder.
>
> Example forwarder stats output:
> RX-packets: 158 RX-dropped: 0 RX-total: 158
> Bad-ipcsum: 48 Bad-l4csum: 48 Bad-outer-l4csum: 6
> Bad-outer-ipcsum: 40
> TX-packets: 0 TX-dropped: 0 TX-total: 0
>
> Signed-off-by: Lance Richardson <lance.richardson@broadcom.com>
> Reviewed-by: Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>
> Reviewed-by: Kalesh Anakkur Purayil <kalesh-
> anakkur.purayil@broadcom.com>
> ---
> app/test-pmd/csumonly.c | 5 +++++
> app/test-pmd/testpmd.c | 11 ++++++++++- app/test-pmd/testpmd.h | 2
> ++
> 3 files changed, 17 insertions(+), 1 deletion(-)
>
> diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c index
> d813d4fae0..37ed415cee 100644
> --- a/app/test-pmd/csumonly.c
> +++ b/app/test-pmd/csumonly.c
> @@ -814,6 +814,7 @@ pkt_burst_checksum_forward(struct fwd_stream
> *fs)
> uint32_t rx_bad_ip_csum;
> uint32_t rx_bad_l4_csum;
> uint32_t rx_bad_outer_l4_csum;
> + uint32_t rx_bad_outer_ip_csum;
> struct testpmd_offload_info info;
> uint16_t nb_segments = 0;
> int ret;
> @@ -833,6 +834,7 @@ pkt_burst_checksum_forward(struct fwd_stream
> *fs)
> rx_bad_ip_csum = 0;
> rx_bad_l4_csum = 0;
> rx_bad_outer_l4_csum = 0;
> + rx_bad_outer_ip_csum = 0;
> gro_enable = gro_ports[fs->rx_port].enable;
>
> txp = &ports[fs->tx_port];
> @@ -862,6 +864,8 @@ pkt_burst_checksum_forward(struct fwd_stream
> *fs)
> rx_bad_l4_csum += 1;
> if (rx_ol_flags & PKT_RX_OUTER_L4_CKSUM_BAD)
> rx_bad_outer_l4_csum += 1;
> + if (rx_ol_flags & PKT_RX_EIP_CKSUM_BAD)
> + rx_bad_outer_ip_csum += 1;
>
> /* step 1: dissect packet, parsing optional vlan, ip4/ip6, vxlan
> * and inner headers */
> @@ -1124,6 +1128,7 @@ pkt_burst_checksum_forward(struct fwd_stream
> *fs)
> fs->rx_bad_ip_csum += rx_bad_ip_csum;
> fs->rx_bad_l4_csum += rx_bad_l4_csum;
> fs->rx_bad_outer_l4_csum += rx_bad_outer_l4_csum;
> + fs->rx_bad_outer_ip_csum += rx_bad_outer_ip_csum;
>
> inc_tx_burst_stats(fs, nb_tx);
> if (unlikely(nb_tx < nb_rx)) {
> diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index
> c256e719ae..67f60745a0 100644
> --- a/app/test-pmd/testpmd.c
> +++ b/app/test-pmd/testpmd.c
> @@ -1805,6 +1805,8 @@ fwd_stream_stats_display(streamid_t stream_id)
> " Rx- bad outer L4 checksum: %-14"PRIu64"\n",
> fs->rx_bad_ip_csum, fs->rx_bad_l4_csum,
> fs->rx_bad_outer_l4_csum);
> + printf(" RX- bad outer IP checksum: %-14"PRIu64"\n",
> + fs->rx_bad_outer_ip_csum);
> } else {
> printf("\n");
> }
> @@ -1827,6 +1829,7 @@ fwd_stats_display(void)
> uint64_t rx_bad_ip_csum;
> uint64_t rx_bad_l4_csum;
> uint64_t rx_bad_outer_l4_csum;
> + uint64_t rx_bad_outer_ip_csum;
> } ports_stats[RTE_MAX_ETHPORTS];
> uint64_t total_rx_dropped = 0;
> uint64_t total_tx_dropped = 0;
> @@ -1859,6 +1862,8 @@ fwd_stats_display(void)
> ports_stats[fs->rx_port].rx_bad_l4_csum += fs-
> >rx_bad_l4_csum;
> ports_stats[fs->rx_port].rx_bad_outer_l4_csum +=
> fs->rx_bad_outer_l4_csum;
> + ports_stats[fs->rx_port].rx_bad_outer_ip_csum +=
> + fs->rx_bad_outer_ip_csum;
>
> if (record_core_cycles)
> fwd_cycles += fs->core_cycles;
> @@ -1890,13 +1895,16 @@ fwd_stats_display(void)
> "RX-total: %-"PRIu64"\n", stats.ipackets, stats.imissed,
> stats.ipackets + stats.imissed);
>
> - if (cur_fwd_eng == &csum_fwd_engine)
> + if (cur_fwd_eng == &csum_fwd_engine) {
> printf(" Bad-ipcsum: %-14"PRIu64
> " Bad-l4csum: %-14"PRIu64
> "Bad-outer-l4csum: %-14"PRIu64"\n",
> ports_stats[pt_id].rx_bad_ip_csum,
> ports_stats[pt_id].rx_bad_l4_csum,
> ports_stats[pt_id].rx_bad_outer_l4_csum);
> + printf(" Bad-outer-ipcsum: %-14"PRIu64"\n",
> + ports_stats[pt_id].rx_bad_outer_ip_csum);
> + }
> if (stats.ierrors + stats.rx_nombuf > 0) {
> printf(" RX-error: %-"PRIu64"\n", stats.ierrors);
> printf(" RX-nombufs: %-14"PRIu64"\n",
> stats.rx_nombuf); @@ -1974,6 +1982,7 @@ fwd_stats_reset(void)
> fs->rx_bad_ip_csum = 0;
> fs->rx_bad_l4_csum = 0;
> fs->rx_bad_outer_l4_csum = 0;
> + fs->rx_bad_outer_ip_csum = 0;
>
> memset(&fs->rx_burst_stats, 0, sizeof(fs->rx_burst_stats));
> memset(&fs->tx_burst_stats, 0, sizeof(fs->tx_burst_stats));
> diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h index
> 5f23162107..a034dae227 100644
> --- a/app/test-pmd/testpmd.h
> +++ b/app/test-pmd/testpmd.h
> @@ -137,6 +137,8 @@ struct fwd_stream {
> uint64_t rx_bad_l4_csum ; /**< received packets has bad l4
> checksum */
> uint64_t rx_bad_outer_l4_csum;
> /**< received packets has bad outer l4 checksum */
> + uint64_t rx_bad_outer_ip_csum;
> + /**< received packets having bad outer ip checksum */
> unsigned int gro_times; /**< GRO operation times */
> uint64_t core_cycles; /**< used for RX and TX processing */
> struct pkt_burst_stats rx_burst_stats;
> --
> 2.25.1
Acked-by: Wisam Jaddo <wisamm@nvidia.com>
BRs,
Wisam Jaddo
On 1/31/2021 11:53 AM, Wisam Monther wrote:
> Hi,
>
>> -----Original Message-----
>> From: dev <dev-bounces@dpdk.org> On Behalf Of Lance Richardson
>> Sent: Saturday, January 30, 2021 12:36 AM
>> To: Wenzhuo Lu <wenzhuo.lu@intel.com>; Xiaoyun Li
>> <xiaoyun.li@intel.com>; Bernard Iremonger
>> <bernard.iremonger@intel.com>
>> Cc: dev@dpdk.org; Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>;
>> Kalesh Anakkur Purayil <kalesh-anakkur.purayil@broadcom.com>
>> Subject: [dpdk-dev] [PATCH 21.05] app/testpmd: count outer IP checksum
>> errors
>>
>> Count and display outer IP checksum errors in the checksum forwarder.
>>
>> Example forwarder stats output:
>> RX-packets: 158 RX-dropped: 0 RX-total: 158
>> Bad-ipcsum: 48 Bad-l4csum: 48 Bad-outer-l4csum: 6
>> Bad-outer-ipcsum: 40
>> TX-packets: 0 TX-dropped: 0 TX-total: 0
>>
>> Signed-off-by: Lance Richardson <lance.richardson@broadcom.com>
>> Reviewed-by: Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>
>> Reviewed-by: Kalesh Anakkur Purayil <kalesh-
>> anakkur.purayil@broadcom.com>
>
> Acked-by: Wisam Jaddo <wisamm@nvidia.com>
>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Applied to dpdk-next-net/main, thanks.
'PKT_RX_EIP_CKSUM_BAD' is documented in mbuf header as:
"/** External IP header checksum error. */"
I think 'External' wording is confusing, as well as 'EIP' abbreviation, what do
you think to create another macro alias to existing one, and mark the old one as
deprecated?
On Tue, Feb 23, 2021 at 10:36 AM Ferruh Yigit <ferruh.yigit@intel.com> wrote:
>
> On 1/31/2021 11:53 AM, Wisam Monther wrote:
> > Hi,
> >
> >> -----Original Message-----
> >> From: dev <dev-bounces@dpdk.org> On Behalf Of Lance Richardson
> >> Sent: Saturday, January 30, 2021 12:36 AM
> >> To: Wenzhuo Lu <wenzhuo.lu@intel.com>; Xiaoyun Li
> >> <xiaoyun.li@intel.com>; Bernard Iremonger
> >> <bernard.iremonger@intel.com>
> >> Cc: dev@dpdk.org; Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>;
> >> Kalesh Anakkur Purayil <kalesh-anakkur.purayil@broadcom.com>
> >> Subject: [dpdk-dev] [PATCH 21.05] app/testpmd: count outer IP checksum
> >> errors
> >>
> >> Count and display outer IP checksum errors in the checksum forwarder.
> >>
> >> Example forwarder stats output:
> >> RX-packets: 158 RX-dropped: 0 RX-total: 158
> >> Bad-ipcsum: 48 Bad-l4csum: 48 Bad-outer-l4csum: 6
> >> Bad-outer-ipcsum: 40
> >> TX-packets: 0 TX-dropped: 0 TX-total: 0
> >>
> >> Signed-off-by: Lance Richardson <lance.richardson@broadcom.com>
> >> Reviewed-by: Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>
> >> Reviewed-by: Kalesh Anakkur Purayil <kalesh-
> >> anakkur.purayil@broadcom.com>
> >
> > Acked-by: Wisam Jaddo <wisamm@nvidia.com>
> >
>
> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
> Applied to dpdk-next-net/main, thanks.
>
>
>
> 'PKT_RX_EIP_CKSUM_BAD' is documented in mbuf header as:
> "/** External IP header checksum error. */"
>
> I think 'External' wording is confusing, as well as 'EIP' abbreviation, what do
> you think to create another macro alias to existing one, and mark the old one as
> deprecated?
+1
>
23/02/2021 19:39, Ajit Khaparde:
> On Tue, Feb 23, 2021 at 10:36 AM Ferruh Yigit <ferruh.yigit@intel.com> wrote:
> >
> > On 1/31/2021 11:53 AM, Wisam Monther wrote:
> > > Hi,
> > >
> > >> -----Original Message-----
> > >> From: dev <dev-bounces@dpdk.org> On Behalf Of Lance Richardson
> > >> Sent: Saturday, January 30, 2021 12:36 AM
> > >> To: Wenzhuo Lu <wenzhuo.lu@intel.com>; Xiaoyun Li
> > >> <xiaoyun.li@intel.com>; Bernard Iremonger
> > >> <bernard.iremonger@intel.com>
> > >> Cc: dev@dpdk.org; Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>;
> > >> Kalesh Anakkur Purayil <kalesh-anakkur.purayil@broadcom.com>
> > >> Subject: [dpdk-dev] [PATCH 21.05] app/testpmd: count outer IP checksum
> > >> errors
> > >>
> > >> Count and display outer IP checksum errors in the checksum forwarder.
> > >>
> > >> Example forwarder stats output:
> > >> RX-packets: 158 RX-dropped: 0 RX-total: 158
> > >> Bad-ipcsum: 48 Bad-l4csum: 48 Bad-outer-l4csum: 6
> > >> Bad-outer-ipcsum: 40
> > >> TX-packets: 0 TX-dropped: 0 TX-total: 0
> > >>
> > >> Signed-off-by: Lance Richardson <lance.richardson@broadcom.com>
> > >> Reviewed-by: Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>
> > >> Reviewed-by: Kalesh Anakkur Purayil <kalesh-
> > >> anakkur.purayil@broadcom.com>
> > >
> > > Acked-by: Wisam Jaddo <wisamm@nvidia.com>
> > >
> >
> > Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
> > Applied to dpdk-next-net/main, thanks.
> >
> >
> >
> > 'PKT_RX_EIP_CKSUM_BAD' is documented in mbuf header as:
> > "/** External IP header checksum error. */"
> >
> > I think 'External' wording is confusing, as well as 'EIP' abbreviation, what do
> > you think to create another macro alias to existing one, and mark the old one as
> > deprecated?
> +1
+1
On 2/23/2021 8:25 PM, Thomas Monjalon wrote:
> 23/02/2021 19:39, Ajit Khaparde:
>> On Tue, Feb 23, 2021 at 10:36 AM Ferruh Yigit <ferruh.yigit@intel.com> wrote:
>>>
>>> On 1/31/2021 11:53 AM, Wisam Monther wrote:
>>>> Hi,
>>>>
>>>>> -----Original Message-----
>>>>> From: dev <dev-bounces@dpdk.org> On Behalf Of Lance Richardson
>>>>> Sent: Saturday, January 30, 2021 12:36 AM
>>>>> To: Wenzhuo Lu <wenzhuo.lu@intel.com>; Xiaoyun Li
>>>>> <xiaoyun.li@intel.com>; Bernard Iremonger
>>>>> <bernard.iremonger@intel.com>
>>>>> Cc: dev@dpdk.org; Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>;
>>>>> Kalesh Anakkur Purayil <kalesh-anakkur.purayil@broadcom.com>
>>>>> Subject: [dpdk-dev] [PATCH 21.05] app/testpmd: count outer IP checksum
>>>>> errors
>>>>>
>>>>> Count and display outer IP checksum errors in the checksum forwarder.
>>>>>
>>>>> Example forwarder stats output:
>>>>> RX-packets: 158 RX-dropped: 0 RX-total: 158
>>>>> Bad-ipcsum: 48 Bad-l4csum: 48 Bad-outer-l4csum: 6
>>>>> Bad-outer-ipcsum: 40
>>>>> TX-packets: 0 TX-dropped: 0 TX-total: 0
>>>>>
>>>>> Signed-off-by: Lance Richardson <lance.richardson@broadcom.com>
>>>>> Reviewed-by: Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>
>>>>> Reviewed-by: Kalesh Anakkur Purayil <kalesh-
>>>>> anakkur.purayil@broadcom.com>
>>>>
>>>> Acked-by: Wisam Jaddo <wisamm@nvidia.com>
>>>>
>>>
>>> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
>>> Applied to dpdk-next-net/main, thanks.
>>>
>>>
>>>
>>> 'PKT_RX_EIP_CKSUM_BAD' is documented in mbuf header as:
>>> "/** External IP header checksum error. */"
>>>
>>> I think 'External' wording is confusing, as well as 'EIP' abbreviation, what do
>>> you think to create another macro alias to existing one, and mark the old one as
>>> deprecated?
>> +1
>
> +1
>
Lance, can you spare some time to make the above mentioned patch?
> Lance, can you spare some time to make the above mentioned patch?
Sure. Are you looking for something like the changes below, or also including
a search and replace of the deprecated macro name with the new one?
- /** External IP header checksum error. */
+/**
+ * Deprecated.
+ * This flag has been renamed, use PKT_RX_OUTER_IP_CKSUM_BAD instead.
+ */
+#define PKT_RX_EIP_CKSUM_BAD (1ULL << 5)
+
+/**
+ * This flag is set when the outermost IP header checksum is detected as
+ * wrong by the hardware.
+ */
#define PKT_RX_OUTER_IP_CKSUM_BAD (1ULL << 5)
/**
On 2/24/2021 3:16 PM, Lance Richardson wrote:
>> Lance, can you spare some time to make the above mentioned patch?
>
> Sure. Are you looking for something like the changes below, or also including
> a search and replace of the deprecated macro name with the new one?
>
Thank you.
Yes below looks good, and I think we should have the search & replace of the old
macro usage, the latest upstream code shouldn't have the deprecated macro.
> - /** External IP header checksum error. */
> +/**
> + * Deprecated.
> + * This flag has been renamed, use PKT_RX_OUTER_IP_CKSUM_BAD instead.
> + */
> +#define PKT_RX_EIP_CKSUM_BAD (1ULL << 5)
> +
> +/**
> + * This flag is set when the outermost IP header checksum is detected as
> + * wrong by the hardware.
> + */
> #define PKT_RX_OUTER_IP_CKSUM_BAD (1ULL << 5)
>
> /**
>
@@ -814,6 +814,7 @@ pkt_burst_checksum_forward(struct fwd_stream *fs)
uint32_t rx_bad_ip_csum;
uint32_t rx_bad_l4_csum;
uint32_t rx_bad_outer_l4_csum;
+ uint32_t rx_bad_outer_ip_csum;
struct testpmd_offload_info info;
uint16_t nb_segments = 0;
int ret;
@@ -833,6 +834,7 @@ pkt_burst_checksum_forward(struct fwd_stream *fs)
rx_bad_ip_csum = 0;
rx_bad_l4_csum = 0;
rx_bad_outer_l4_csum = 0;
+ rx_bad_outer_ip_csum = 0;
gro_enable = gro_ports[fs->rx_port].enable;
txp = &ports[fs->tx_port];
@@ -862,6 +864,8 @@ pkt_burst_checksum_forward(struct fwd_stream *fs)
rx_bad_l4_csum += 1;
if (rx_ol_flags & PKT_RX_OUTER_L4_CKSUM_BAD)
rx_bad_outer_l4_csum += 1;
+ if (rx_ol_flags & PKT_RX_EIP_CKSUM_BAD)
+ rx_bad_outer_ip_csum += 1;
/* step 1: dissect packet, parsing optional vlan, ip4/ip6, vxlan
* and inner headers */
@@ -1124,6 +1128,7 @@ pkt_burst_checksum_forward(struct fwd_stream *fs)
fs->rx_bad_ip_csum += rx_bad_ip_csum;
fs->rx_bad_l4_csum += rx_bad_l4_csum;
fs->rx_bad_outer_l4_csum += rx_bad_outer_l4_csum;
+ fs->rx_bad_outer_ip_csum += rx_bad_outer_ip_csum;
inc_tx_burst_stats(fs, nb_tx);
if (unlikely(nb_tx < nb_rx)) {
@@ -1805,6 +1805,8 @@ fwd_stream_stats_display(streamid_t stream_id)
" Rx- bad outer L4 checksum: %-14"PRIu64"\n",
fs->rx_bad_ip_csum, fs->rx_bad_l4_csum,
fs->rx_bad_outer_l4_csum);
+ printf(" RX- bad outer IP checksum: %-14"PRIu64"\n",
+ fs->rx_bad_outer_ip_csum);
} else {
printf("\n");
}
@@ -1827,6 +1829,7 @@ fwd_stats_display(void)
uint64_t rx_bad_ip_csum;
uint64_t rx_bad_l4_csum;
uint64_t rx_bad_outer_l4_csum;
+ uint64_t rx_bad_outer_ip_csum;
} ports_stats[RTE_MAX_ETHPORTS];
uint64_t total_rx_dropped = 0;
uint64_t total_tx_dropped = 0;
@@ -1859,6 +1862,8 @@ fwd_stats_display(void)
ports_stats[fs->rx_port].rx_bad_l4_csum += fs->rx_bad_l4_csum;
ports_stats[fs->rx_port].rx_bad_outer_l4_csum +=
fs->rx_bad_outer_l4_csum;
+ ports_stats[fs->rx_port].rx_bad_outer_ip_csum +=
+ fs->rx_bad_outer_ip_csum;
if (record_core_cycles)
fwd_cycles += fs->core_cycles;
@@ -1890,13 +1895,16 @@ fwd_stats_display(void)
"RX-total: %-"PRIu64"\n", stats.ipackets, stats.imissed,
stats.ipackets + stats.imissed);
- if (cur_fwd_eng == &csum_fwd_engine)
+ if (cur_fwd_eng == &csum_fwd_engine) {
printf(" Bad-ipcsum: %-14"PRIu64
" Bad-l4csum: %-14"PRIu64
"Bad-outer-l4csum: %-14"PRIu64"\n",
ports_stats[pt_id].rx_bad_ip_csum,
ports_stats[pt_id].rx_bad_l4_csum,
ports_stats[pt_id].rx_bad_outer_l4_csum);
+ printf(" Bad-outer-ipcsum: %-14"PRIu64"\n",
+ ports_stats[pt_id].rx_bad_outer_ip_csum);
+ }
if (stats.ierrors + stats.rx_nombuf > 0) {
printf(" RX-error: %-"PRIu64"\n", stats.ierrors);
printf(" RX-nombufs: %-14"PRIu64"\n", stats.rx_nombuf);
@@ -1974,6 +1982,7 @@ fwd_stats_reset(void)
fs->rx_bad_ip_csum = 0;
fs->rx_bad_l4_csum = 0;
fs->rx_bad_outer_l4_csum = 0;
+ fs->rx_bad_outer_ip_csum = 0;
memset(&fs->rx_burst_stats, 0, sizeof(fs->rx_burst_stats));
memset(&fs->tx_burst_stats, 0, sizeof(fs->tx_burst_stats));
@@ -137,6 +137,8 @@ struct fwd_stream {
uint64_t rx_bad_l4_csum ; /**< received packets has bad l4 checksum */
uint64_t rx_bad_outer_l4_csum;
/**< received packets has bad outer l4 checksum */
+ uint64_t rx_bad_outer_ip_csum;
+ /**< received packets having bad outer ip checksum */
unsigned int gro_times; /**< GRO operation times */
uint64_t core_cycles; /**< used for RX and TX processing */
struct pkt_burst_stats rx_burst_stats;