* [PATCH V2] app/testpmd: fix parameters order when calling rte_ether_addr_copy()
@ 2021-11-11 2:29 Xu, Wei1
2021-11-15 19:00 ` Ferruh Yigit
0 siblings, 1 reply; 4+ messages in thread
From: Xu, Wei1 @ 2021-11-11 2:29 UTC (permalink / raw)
To: Lu, Wenzhuo, Wu, Jingjing, Iremonger, Bernard, dev
Running in 'csum' mode, the 'from' and 'to' parameters are not
in the correct order when calling rte_ether_addr_copy() which
means the 'src/dst' mac addresses in the mbuf will be overwriten.
As a result, the packets will not be recognized and received
by the receiver(s).
Test CLI:
./app/dpdk-testpmd -n 1 -l 1-2 -a 09:00.0 -- -i --forward-mode=csum
Fixes: 10f4620(app/testpmd: modify mac in csum forwarding)
v2:
- fixed indentation and long line warnings.
Signed-off-by: Wei Xu <wei1.xu@intel.com>
---
app/test-pmd/csumonly.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c
index 8526d9158a..08484fcda2 100644
--- a/app/test-pmd/csumonly.c
+++ b/app/test-pmd/csumonly.c
@@ -872,10 +872,10 @@ pkt_burst_checksum_forward(struct fwd_stream *fs)
* and inner headers */
eth_hdr = rte_pktmbuf_mtod(m, struct rte_ether_hdr *);
- rte_ether_addr_copy(&peer_eth_addrs[fs->peer_addr],
- ð_hdr->dst_addr);
- rte_ether_addr_copy(&ports[fs->tx_port].eth_addr,
- ð_hdr->src_addr);
+ rte_ether_addr_copy(ð_hdr->dst_addr,
+ &peer_eth_addrs[fs->peer_addr]);
+ rte_ether_addr_copy(ð_hdr->src_addr,
+ &ports[fs->tx_port].eth_addr);
parse_ethernet(eth_hdr, &info);
l3_hdr = (char *)eth_hdr + info.l2_len;
--
2.27.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH V2] app/testpmd: fix parameters order when calling rte_ether_addr_copy()
2021-11-11 2:29 [PATCH V2] app/testpmd: fix parameters order when calling rte_ether_addr_copy() Xu, Wei1
@ 2021-11-15 19:00 ` Ferruh Yigit
2021-11-22 4:00 ` Xu, Wei1
0 siblings, 1 reply; 4+ messages in thread
From: Ferruh Yigit @ 2021-11-15 19:00 UTC (permalink / raw)
To: Xu, Wei1, Lu, Wenzhuo, Wu, Jingjing, Iremonger, Bernard, dev; +Cc: Qi Zhang
On 11/11/2021 2:29 AM, Xu, Wei1 wrote:
> Running in 'csum' mode, the 'from' and 'to' parameters are not
> in the correct order when calling rte_ether_addr_copy() which
> means the 'src/dst' mac addresses in the mbuf will be overwriten.
>
Hi Wei,
Original code looks good. What are you trying to fix exactly?
API order is, 'rte_ether_addr_copy(from, to)'.
I assume your expectation is packet to keep original src & dst MAC address,
but it is not working that way, dest addrs is written by user configured
'peer address'.
With your change for each packet, packet mac address written to testpmd
configuration, which doesn't make sense.
> As a result, the packets will not be recognized and received
> by the receiver(s).
>
> Test CLI:
> ./app/dpdk-testpmd -n 1 -l 1-2 -a 09:00.0 -- -i --forward-mode=csum
>
> Fixes: 10f4620(app/testpmd: modify mac in csum forwarding)
>
> v2:
> - fixed indentation and long line warnings.
>
> Signed-off-by: Wei Xu <wei1.xu@intel.com>
> ---
> app/test-pmd/csumonly.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c
> index 8526d9158a..08484fcda2 100644
> --- a/app/test-pmd/csumonly.c
> +++ b/app/test-pmd/csumonly.c
> @@ -872,10 +872,10 @@ pkt_burst_checksum_forward(struct fwd_stream *fs)
> * and inner headers */
>
> eth_hdr = rte_pktmbuf_mtod(m, struct rte_ether_hdr *);
> - rte_ether_addr_copy(&peer_eth_addrs[fs->peer_addr],
> - ð_hdr->dst_addr);
> - rte_ether_addr_copy(&ports[fs->tx_port].eth_addr,
> - ð_hdr->src_addr);
> + rte_ether_addr_copy(ð_hdr->dst_addr,
> + &peer_eth_addrs[fs->peer_addr]);
> + rte_ether_addr_copy(ð_hdr->src_addr,
> + &ports[fs->tx_port].eth_addr);
> parse_ethernet(eth_hdr, &info);
> l3_hdr = (char *)eth_hdr + info.l2_len;
>
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* RE: [PATCH V2] app/testpmd: fix parameters order when calling rte_ether_addr_copy()
2021-11-15 19:00 ` Ferruh Yigit
@ 2021-11-22 4:00 ` Xu, Wei1
2021-11-22 9:10 ` Ferruh Yigit
0 siblings, 1 reply; 4+ messages in thread
From: Xu, Wei1 @ 2021-11-22 4:00 UTC (permalink / raw)
To: Yigit, Ferruh, Lu, Wenzhuo, Wu, Jingjing, Iremonger, Bernard, dev
Cc: Zhang, Qi Z
Hi Ferruh,
Thanks for your explaining.
It it by design, maybe a check and only rewrite the mac addresses when they are explicitly set?
Thanks,
Wei
-----Original Message-----
From: Yigit, Ferruh <ferruh.yigit@intel.com>
Sent: Tuesday, November 16, 2021 3:00 AM
To: Xu, Wei1 <wei1.xu@intel.com>; Lu, Wenzhuo <wenzhuo.lu@intel.com>; Wu, Jingjing <jingjing.wu@intel.com>; Iremonger, Bernard <bernard.iremonger@intel.com>; dev@dpdk.org
Cc: Zhang, Qi Z <qi.z.zhang@intel.com>
Subject: Re: [PATCH V2] app/testpmd: fix parameters order when calling rte_ether_addr_copy()
On 11/11/2021 2:29 AM, Xu, Wei1 wrote:
> Running in 'csum' mode, the 'from' and 'to' parameters are not in the
> correct order when calling rte_ether_addr_copy() which means the
> 'src/dst' mac addresses in the mbuf will be overwriten.
>
Hi Wei,
Original code looks good. What are you trying to fix exactly?
API order is, 'rte_ether_addr_copy(from, to)'.
I assume your expectation is packet to keep original src & dst MAC address, but it is not working that way, dest addrs is written by user configured 'peer address'.
With your change for each packet, packet mac address written to testpmd configuration, which doesn't make sense.
> As a result, the packets will not be recognized and received by the
> receiver(s).
>
> Test CLI:
> ./app/dpdk-testpmd -n 1 -l 1-2 -a 09:00.0 -- -i --forward-mode=csum
>
> Fixes: 10f4620(app/testpmd: modify mac in csum forwarding)
>
> v2:
> - fixed indentation and long line warnings.
>
> Signed-off-by: Wei Xu <wei1.xu@intel.com>
> ---
> app/test-pmd/csumonly.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c index
> 8526d9158a..08484fcda2 100644
> --- a/app/test-pmd/csumonly.c
> +++ b/app/test-pmd/csumonly.c
> @@ -872,10 +872,10 @@ pkt_burst_checksum_forward(struct fwd_stream *fs)
> * and inner headers */
>
> eth_hdr = rte_pktmbuf_mtod(m, struct rte_ether_hdr *);
> - rte_ether_addr_copy(&peer_eth_addrs[fs->peer_addr],
> - ð_hdr->dst_addr);
> - rte_ether_addr_copy(&ports[fs->tx_port].eth_addr,
> - ð_hdr->src_addr);
> + rte_ether_addr_copy(ð_hdr->dst_addr,
> + &peer_eth_addrs[fs->peer_addr]);
> + rte_ether_addr_copy(ð_hdr->src_addr,
> + &ports[fs->tx_port].eth_addr);
> parse_ethernet(eth_hdr, &info);
> l3_hdr = (char *)eth_hdr + info.l2_len;
>
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH V2] app/testpmd: fix parameters order when calling rte_ether_addr_copy()
2021-11-22 4:00 ` Xu, Wei1
@ 2021-11-22 9:10 ` Ferruh Yigit
0 siblings, 0 replies; 4+ messages in thread
From: Ferruh Yigit @ 2021-11-22 9:10 UTC (permalink / raw)
To: Xu, Wei1, Lu, Wenzhuo, Wu, Jingjing, Iremonger, Bernard, dev; +Cc: Zhang, Qi Z
On 11/22/2021 4:00 AM, Xu, Wei1 wrote:
> Hi Ferruh,
> Thanks for your explaining.
>
> It it by design, maybe a check and only rewrite the mac addresses when they are explicitly set?
>
What are you trying to fix/achieve exactly?
> Thanks,
> Wei
>
> -----Original Message-----
> From: Yigit, Ferruh <ferruh.yigit@intel.com>
> Sent: Tuesday, November 16, 2021 3:00 AM
> To: Xu, Wei1 <wei1.xu@intel.com>; Lu, Wenzhuo <wenzhuo.lu@intel.com>; Wu, Jingjing <jingjing.wu@intel.com>; Iremonger, Bernard <bernard.iremonger@intel.com>; dev@dpdk.org
> Cc: Zhang, Qi Z <qi.z.zhang@intel.com>
> Subject: Re: [PATCH V2] app/testpmd: fix parameters order when calling rte_ether_addr_copy()
>
> On 11/11/2021 2:29 AM, Xu, Wei1 wrote:
>> Running in 'csum' mode, the 'from' and 'to' parameters are not in the
>> correct order when calling rte_ether_addr_copy() which means the
>> 'src/dst' mac addresses in the mbuf will be overwriten.
>>
>
> Hi Wei,
>
> Original code looks good. What are you trying to fix exactly?
>
> API order is, 'rte_ether_addr_copy(from, to)'.
>
> I assume your expectation is packet to keep original src & dst MAC address, but it is not working that way, dest addrs is written by user configured 'peer address'.
>
> With your change for each packet, packet mac address written to testpmd configuration, which doesn't make sense.
>
>> As a result, the packets will not be recognized and received by the
>> receiver(s).
>>
>> Test CLI:
>> ./app/dpdk-testpmd -n 1 -l 1-2 -a 09:00.0 -- -i --forward-mode=csum
>>
>> Fixes: 10f4620(app/testpmd: modify mac in csum forwarding)
>>
>> v2:
>> - fixed indentation and long line warnings.
>>
>> Signed-off-by: Wei Xu <wei1.xu@intel.com>
>> ---
>> app/test-pmd/csumonly.c | 8 ++++----
>> 1 file changed, 4 insertions(+), 4 deletions(-)
>>
>> diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c index
>> 8526d9158a..08484fcda2 100644
>> --- a/app/test-pmd/csumonly.c
>> +++ b/app/test-pmd/csumonly.c
>> @@ -872,10 +872,10 @@ pkt_burst_checksum_forward(struct fwd_stream *fs)
>> * and inner headers */
>>
>> eth_hdr = rte_pktmbuf_mtod(m, struct rte_ether_hdr *);
>> - rte_ether_addr_copy(&peer_eth_addrs[fs->peer_addr],
>> - ð_hdr->dst_addr);
>> - rte_ether_addr_copy(&ports[fs->tx_port].eth_addr,
>> - ð_hdr->src_addr);
>> + rte_ether_addr_copy(ð_hdr->dst_addr,
>> + &peer_eth_addrs[fs->peer_addr]);
>> + rte_ether_addr_copy(ð_hdr->src_addr,
>> + &ports[fs->tx_port].eth_addr);
>> parse_ethernet(eth_hdr, &info);
>> l3_hdr = (char *)eth_hdr + info.l2_len;
>>
>>
>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-11-22 9:10 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-11 2:29 [PATCH V2] app/testpmd: fix parameters order when calling rte_ether_addr_copy() Xu, Wei1
2021-11-15 19:00 ` Ferruh Yigit
2021-11-22 4:00 ` Xu, Wei1
2021-11-22 9:10 ` Ferruh Yigit
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).