Re: [dpdk-dev] [PATCH v4] examples/l2fwd: add cmdline option for forwarding port info
From: Jerin Jacob <hidden>
Date: 2020-07-04 13:36:39
On Mon, May 25, 2020 at 2:59 PM Bruce Richardson [off-list ref] wrote:
On Sun, May 24, 2020 at 06:13:22PM +0200, Thomas Monjalon wrote:quoted
Bruce, as maintainer of l2fwd example, any opinion about this change?Assuming all previous discussion on it is resolved, I'm fine with this patch, though I suspect it will only make 20.08 now. Acked-by: Bruce Richardson <redacted>
Ping for merge.
quoted
11/05/2020 02:23, Pavan Nikhilesh Bhagavatula:quoted
Hi Vipin,quoted
Hi Pavan, snippedquoted
quoted
Should we check & warn the user if 1. port speed mismatch 2. on different NUMA 3. port pairs are physical and vdev like tap, and KNI (performance).Sure, it can be a separate patch as it will be applicable for multipleexamples. I believe this patch is for example `l2fwd`. But you would like to have to updated for all `example`. I am ok for this. snippedquoted
quoted
Should not the check_port_pair be after this? If the port is not enabled in port_mask will you skip that pair? or skip RX-TX from thatport?quoted
We check every port pair against l2fwd_enabled_port_mask in check_port_pair_config()quoted
snippedquoted
quoted
As mentioned above there can ports in mask which might bedisabled forquoted
quoted
port pair. Should not that be skipped rather than setting last port rx- tx loopback?There could be scenarios where user might want to test 2x10G and1x40G Whyquoted
force the user to explicitly mention 1x40G as port pair of itself in theportpairquoted
config?I am not sure if I follow your thought, as your current port map only allows `1:1` mapping by `struct port_pair_params`. This can be to self like `(port0:port0),(port1:port1)` or `(port-0:port-1)`. 1. But current `l2fwd_parse_port_pair_config` does not consider the same port mapping as we have hard check for `if (nb_port_pair_paramsquoted
= RTE_MAX_ETHPORTS/2)`.2. `l2fwd_enabled_port_mask` is global variable of user port mask. This can contain both valid and invalid mask. Hence we check `l2fwd_enabled_port_mask & ~((1 << nb_ports) - 1)`. 3. can these scenarios are true if we invoke `check_port_pair_config` before actual port_mask check. a. there are only 4 ports, hence possible mask is `0xf`. b. user passes port argument as `0xe` c. `check_port_pair_config` gets masks for `(1,3)` as input and populates `port_pair_config_mask`. d. As per the code, port 2 which is valid port and part of user port mask will have lastport (which is port 3)? May be I did understand the logic correct. Can you help me?Here user needs to explicitly mention (2,2) for port 2 to be setup else it will be skipped. If you see `check_port_pair_config` below we disable the ports that are not Mentioned in portmap. " check_port_pair_config(void) { <snip> port_pair_config_mask |= port_pair_mask; } l2fwd_enabled_port_mask &= port_pair_config_mask; return 0; } "quoted
So my concerns are 1) there is no same port mapping, 2) my understanding on lastport logic is not clear and 3) as per the code there is 1:N but 1:1. Hence there should be sufficient warning to user if port are of wrong speed and NUMA.Unless the user disables stats using -T 0 option all the prints will be skipped.quoted
Note: current speed can be fetched only if the port are started too (in Fortville). snipped