[dpdk-dev] app/testpmd: fix failing to enable SW checksum calculation
Checks
Commit Message
In current design, we can't enable SW checksum calculation
for the devices which don't have checksum offloading abilities
via the command "csum set ip|tcp|udp|sctp|outer-ip sw <port_id>".
But SW checksum calculation shouldn't depend on HW offloading
abilities. This patch is to fix this issue.
Fixes: 3926dd2b6668 ("app/testpmd: enforce offload capabilities check")
Signed-off-by: Jiayu Hu <jiayu.hu@intel.com>
---
app/test-pmd/cmdline.c | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
Comments
Hi Jiayu,
> -----Original Message-----
> From: Hu, Jiayu
> Sent: Thursday, January 25, 2018 10:14 AM
> To: dev@dpdk.org
> Cc: shahafs@mellanox.com; Lu, Wenzhuo <wenzhuo.lu@intel.com>; Yao, Lei
> A <lei.a.yao@intel.com>; Hu, Jiayu <jiayu.hu@intel.com>
> Subject: [PATCH] app/testpmd: fix failing to enable SW checksum calculation
>
> In current design, we can't enable SW checksum calculation for the devices
> which don't have checksum offloading abilities via the command "csum set
> ip|tcp|udp|sctp|outer-ip sw <port_id>".
Confused, you mean it's an issue or the expected behavior?
> But SW checksum calculation shouldn't depend on HW offloading abilities.
> This patch is to fix this issue.
>
> Fixes: 3926dd2b6668 ("app/testpmd: enforce offload capabilities check")
> Signed-off-by: Jiayu Hu <jiayu.hu@intel.com>
> ---
> app/test-pmd/cmdline.c | 20 ++++++++++----------
> 1 file changed, 10 insertions(+), 10 deletions(-)
>
> diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index
> 9f12c0f..a2db9b7 100644
> --- a/app/test-pmd/cmdline.c
> +++ b/app/test-pmd/cmdline.c
> @@ -3706,40 +3706,40 @@ cmd_csum_parsed(void *parsed_result,
> hw = 1;
>
> if (!strcmp(res->proto, "ip")) {
> - if (dev_info.tx_offload_capa &
> -
> DEV_TX_OFFLOAD_IPV4_CKSUM) {
> + if (hw == 0 || (dev_info.tx_offload_capa &
You mean SW can support the capability anyway, not need to check anything, right?
Hi Wenzhuo,
> -----Original Message-----
> From: Lu, Wenzhuo
> Sent: Thursday, January 25, 2018 10:58 AM
> To: Hu, Jiayu <jiayu.hu@intel.com>; dev@dpdk.org
> Cc: shahafs@mellanox.com; Yao, Lei A <lei.a.yao@intel.com>
> Subject: RE: [PATCH] app/testpmd: fix failing to enable SW checksum
> calculation
>
> Hi Jiayu,
>
>
> > -----Original Message-----
> > From: Hu, Jiayu
> > Sent: Thursday, January 25, 2018 10:14 AM
> > To: dev@dpdk.org
> > Cc: shahafs@mellanox.com; Lu, Wenzhuo <wenzhuo.lu@intel.com>; Yao,
> Lei
> > A <lei.a.yao@intel.com>; Hu, Jiayu <jiayu.hu@intel.com>
> > Subject: [PATCH] app/testpmd: fix failing to enable SW checksum
> calculation
> >
> > In current design, we can't enable SW checksum calculation for the devices
> > which don't have checksum offloading abilities via the command "csum set
> > ip|tcp|udp|sctp|outer-ip sw <port_id>".
> Confused, you mean it's an issue or the expected behavior?
>
> > But SW checksum calculation shouldn't depend on HW offloading abilities.
> > This patch is to fix this issue.
> >
> > Fixes: 3926dd2b6668 ("app/testpmd: enforce offload capabilities check")
> > Signed-off-by: Jiayu Hu <jiayu.hu@intel.com>
> > ---
> > app/test-pmd/cmdline.c | 20 ++++++++++----------
> > 1 file changed, 10 insertions(+), 10 deletions(-)
> >
> > diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index
> > 9f12c0f..a2db9b7 100644
> > --- a/app/test-pmd/cmdline.c
> > +++ b/app/test-pmd/cmdline.c
> > @@ -3706,40 +3706,40 @@ cmd_csum_parsed(void *parsed_result,
> > hw = 1;
> >
> > if (!strcmp(res->proto, "ip")) {
> > - if (dev_info.tx_offload_capa &
> > -
> > DEV_TX_OFFLOAD_IPV4_CKSUM) {
> > + if (hw == 0 || (dev_info.tx_offload_capa &
> You mean SW can support the capability anyway, not need to check anything,
> right?
Yes, it's the csum forwarding engine to calculate checksums. This SW ability should
supports all devices.
Thanks,
Jiayu
> -----Original Message-----
> From: Lu, Wenzhuo
> Sent: Thursday, January 25, 2018 10:58 AM
> To: Hu, Jiayu <jiayu.hu@intel.com>; dev@dpdk.org
> Cc: shahafs@mellanox.com; Yao, Lei A <lei.a.yao@intel.com>
> Subject: RE: [PATCH] app/testpmd: fix failing to enable SW checksum
> calculation
>
> Hi Jiayu,
>
>
> > -----Original Message-----
> > From: Hu, Jiayu
> > Sent: Thursday, January 25, 2018 10:14 AM
> > To: dev@dpdk.org
> > Cc: shahafs@mellanox.com; Lu, Wenzhuo <wenzhuo.lu@intel.com>; Yao,
> Lei
> > A <lei.a.yao@intel.com>; Hu, Jiayu <jiayu.hu@intel.com>
> > Subject: [PATCH] app/testpmd: fix failing to enable SW checksum
> calculation
> >
> > In current design, we can't enable SW checksum calculation for the devices
> > which don't have checksum offloading abilities via the command "csum set
> > ip|tcp|udp|sctp|outer-ip sw <port_id>".
> Confused, you mean it's an issue or the expected behavior?
It's an issue. SW checksum calculation should support all devices.
>
> > But SW checksum calculation shouldn't depend on HW offloading abilities.
> > This patch is to fix this issue.
> >
> > Fixes: 3926dd2b6668 ("app/testpmd: enforce offload capabilities check")
> > Signed-off-by: Jiayu Hu <jiayu.hu@intel.com>
> > ---
> > app/test-pmd/cmdline.c | 20 ++++++++++----------
> > 1 file changed, 10 insertions(+), 10 deletions(-)
> >
> > diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index
> > 9f12c0f..a2db9b7 100644
> > --- a/app/test-pmd/cmdline.c
> > +++ b/app/test-pmd/cmdline.c
> > @@ -3706,40 +3706,40 @@ cmd_csum_parsed(void *parsed_result,
> > hw = 1;
> >
> > if (!strcmp(res->proto, "ip")) {
> > - if (dev_info.tx_offload_capa &
> > -
> > DEV_TX_OFFLOAD_IPV4_CKSUM) {
> > + if (hw == 0 || (dev_info.tx_offload_capa &
> You mean SW can support the capability anyway, not need to check anything,
> right?
Hi Jiayu Hu,
Good fix, thanks.
Thursday, January 25, 2018 4:14 AM, Jiayu Hu:
> In current design, we can't enable SW checksum calculation for the devices
> which don't have checksum offloading abilities via the command "csum set
> ip|tcp|udp|sctp|outer-ip sw <port_id>".
> But SW checksum calculation shouldn't depend on HW offloading abilities.
> This patch is to fix this issue.
>
> Fixes: 3926dd2b6668 ("app/testpmd: enforce offload capabilities check")
> Signed-off-by: Jiayu Hu <jiayu.hu@intel.com>
> ---
> app/test-pmd/cmdline.c | 20 ++++++++++----------
> 1 file changed, 10 insertions(+), 10 deletions(-)
>
> diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index
> 9f12c0f..a2db9b7 100644
> --- a/app/test-pmd/cmdline.c
> +++ b/app/test-pmd/cmdline.c
> @@ -3706,40 +3706,40 @@ cmd_csum_parsed(void *parsed_result,
> hw = 1;
>
> if (!strcmp(res->proto, "ip")) {
> - if (dev_info.tx_offload_capa &
> -
> DEV_TX_OFFLOAD_IPV4_CKSUM) {
> + if (hw == 0 || (dev_info.tx_offload_capa &
> +
> DEV_TX_OFFLOAD_IPV4_CKSUM)) {
> csum_offloads |=
> DEV_TX_OFFLOAD_IPV4_CKSUM;
> } else {
> printf("IP checksum offload is not supported
> "
> "by port %u\n", res->port_id);
> }
> } else if (!strcmp(res->proto, "udp")) {
> - if (dev_info.tx_offload_capa &
> -
> DEV_TX_OFFLOAD_UDP_CKSUM) {
> + if (hw == 0 || (dev_info.tx_offload_capa &
> +
> DEV_TX_OFFLOAD_UDP_CKSUM)) {
> csum_offloads |=
> DEV_TX_OFFLOAD_UDP_CKSUM;
> } else {
> printf("UDP checksum offload is not
> supported "
> "by port %u\n", res->port_id);
> }
> } else if (!strcmp(res->proto, "tcp")) {
> - if (dev_info.tx_offload_capa &
> -
> DEV_TX_OFFLOAD_TCP_CKSUM) {
> + if (hw == 0 || (dev_info.tx_offload_capa &
> +
> DEV_TX_OFFLOAD_TCP_CKSUM)) {
> csum_offloads |=
> DEV_TX_OFFLOAD_TCP_CKSUM;
> } else {
> printf("TCP checksum offload is not
> supported "
> "by port %u\n", res->port_id);
> }
> } else if (!strcmp(res->proto, "sctp")) {
> - if (dev_info.tx_offload_capa &
> -
> DEV_TX_OFFLOAD_SCTP_CKSUM) {
> + if (hw == 0 || (dev_info.tx_offload_capa &
> +
> DEV_TX_OFFLOAD_SCTP_CKSUM)) {
> csum_offloads |=
> DEV_TX_OFFLOAD_SCTP_CKSUM;
> } else {
> printf("SCTP checksum offload is not
> supported "
> "by port %u\n", res->port_id);
> }
> } else if (!strcmp(res->proto, "outer-ip")) {
> - if (dev_info.tx_offload_capa &
> -
> DEV_TX_OFFLOAD_OUTER_IPV4_CKSUM) {
> + if (hw == 0 || (dev_info.tx_offload_capa &
> +
> DEV_TX_OFFLOAD_OUTER_IPV4_CKSUM)) {
> csum_offloads |=
>
> DEV_TX_OFFLOAD_OUTER_IPV4_CKSUM;
> } else {
Reviewed-by: Shahaf Shuler <shahafs@mellanox.com>
> --
> 2.7.4
25/01/2018 07:54, Shahaf Shuler:
> Hi Jiayu Hu,
>
> Good fix, thanks.
>
> Thursday, January 25, 2018 4:14 AM, Jiayu Hu:
> > In current design, we can't enable SW checksum calculation for the devices
> > which don't have checksum offloading abilities via the command "csum set
> > ip|tcp|udp|sctp|outer-ip sw <port_id>".
> > But SW checksum calculation shouldn't depend on HW offloading abilities.
> > This patch is to fix this issue.
> >
> > Fixes: 3926dd2b6668 ("app/testpmd: enforce offload capabilities check")
> > Signed-off-by: Jiayu Hu <jiayu.hu@intel.com>
>
> Reviewed-by: Shahaf Shuler <shahafs@mellanox.com>
Applied, thanks
@@ -3706,40 +3706,40 @@ cmd_csum_parsed(void *parsed_result,
hw = 1;
if (!strcmp(res->proto, "ip")) {
- if (dev_info.tx_offload_capa &
- DEV_TX_OFFLOAD_IPV4_CKSUM) {
+ if (hw == 0 || (dev_info.tx_offload_capa &
+ DEV_TX_OFFLOAD_IPV4_CKSUM)) {
csum_offloads |= DEV_TX_OFFLOAD_IPV4_CKSUM;
} else {
printf("IP checksum offload is not supported "
"by port %u\n", res->port_id);
}
} else if (!strcmp(res->proto, "udp")) {
- if (dev_info.tx_offload_capa &
- DEV_TX_OFFLOAD_UDP_CKSUM) {
+ if (hw == 0 || (dev_info.tx_offload_capa &
+ DEV_TX_OFFLOAD_UDP_CKSUM)) {
csum_offloads |= DEV_TX_OFFLOAD_UDP_CKSUM;
} else {
printf("UDP checksum offload is not supported "
"by port %u\n", res->port_id);
}
} else if (!strcmp(res->proto, "tcp")) {
- if (dev_info.tx_offload_capa &
- DEV_TX_OFFLOAD_TCP_CKSUM) {
+ if (hw == 0 || (dev_info.tx_offload_capa &
+ DEV_TX_OFFLOAD_TCP_CKSUM)) {
csum_offloads |= DEV_TX_OFFLOAD_TCP_CKSUM;
} else {
printf("TCP checksum offload is not supported "
"by port %u\n", res->port_id);
}
} else if (!strcmp(res->proto, "sctp")) {
- if (dev_info.tx_offload_capa &
- DEV_TX_OFFLOAD_SCTP_CKSUM) {
+ if (hw == 0 || (dev_info.tx_offload_capa &
+ DEV_TX_OFFLOAD_SCTP_CKSUM)) {
csum_offloads |= DEV_TX_OFFLOAD_SCTP_CKSUM;
} else {
printf("SCTP checksum offload is not supported "
"by port %u\n", res->port_id);
}
} else if (!strcmp(res->proto, "outer-ip")) {
- if (dev_info.tx_offload_capa &
- DEV_TX_OFFLOAD_OUTER_IPV4_CKSUM) {
+ if (hw == 0 || (dev_info.tx_offload_capa &
+ DEV_TX_OFFLOAD_OUTER_IPV4_CKSUM)) {
csum_offloads |=
DEV_TX_OFFLOAD_OUTER_IPV4_CKSUM;
} else {