On 5/19/2020 5:40 PM, Shy Shyman wrote: > Hi > Thank you for the feedback. > While I'm ok with the fix you suggested, the warning was placed in order to > let the user understand that his/her MTU settings may not impact DPDK. After > all in this case(no JUMBO) we are not doing anything besides changing the > dev->data->mtu.
Does anything needs to changed in the no jumbo case? I think no, but if there is why no change it instead of warning message. I think warning can be confusing here. > > I think there is some confusion with MTU in DPDK and I'd like to take the > opportunity the raise some questions related to MTU: > > 1. only the test-pmd application attempts to correlate MTU to other variables > like max_ptk_len and JUMBO offload. should rte_ethdev do that? > 2. even in test-pmd case only RX settings are adjusted. Maybe TX should be > regarded as well? > 3. in general what should be the relation between MTU,max_pkt_let and JUMBO > offload for both RX and TX? > 4. currently the MTU is set upon initialization to 1500 by default. The MTU > on the device itself could be different but DPDK doesn't check for that. > Maybe it should be updated based on the device settings? On a similar note, > let's say the user changed MTU in test-pmd. What is the desired behavior when > existing the application? Today the MTU will remain changed even outside DPDK. > > Thoughts? +1 on the confusion. I don't have answers to all above question, but it would be great if you tackle this clarification task. > > > Shy > > -----Original Message----- > From: Ferruh Yigit <ferruh.yi...@intel.com> > Sent: Tuesday, May 19, 2020 5:58 PM > To: Shy Shyman <s...@mellanox.com>; dev@dpdk.org > Cc: Wenzhuo Lu <wenzhuo...@intel.com>; Beilei Xing <beilei.x...@intel.com>; > Bernard Iremonger <bernard.iremon...@intel.com>; xavier.hu...@huawei.com > Subject: Re: [dpdk-dev] [PATCH] app/testpmd: fix error detection in MTU > command > > On 5/18/2020 10:27 AM, Shy Shyman wrote: >> MTU is used in testpmd to set the maximum payload size for packets. >> According to testpmd, the setting influnce RX only. >> In rte_ethdev there's no relation between MTU setting and JUMBO >> offload or rx_max_pkt_len. >> >> The previous fix in patch referenced below was meant to update the >> correlated variables of max_pkt_len and JUMBO offload, but by doing so >> it assumes that MTU setting can only exist when JUMBO offload >> supported in the device. > > +1 and this is wrong, as far as I understand this is not the intention > +of the > previous fix. > > >> For example fail-safe device does supports set MTU and doesn't support >> JUMBO offload, and in this case, though set MTU succeed an error >> mesage still printed since the JUMBO packet offload is disabled. >> >> The fix separates the two conditions to make sure the error triggers >> only in case the set_mtu action actually failed. >> A warning message is provided in this special case to alert the user. > > Not sure if this warning is required at all. > As you said above intention is to based on MTU value to correlate testpmd > (application) max_pkt_len and JUMBO offload values. > > What about following change: > > ..... > diag = rte_eth_dev_set_mtu(port_id, mtu); > if (diag) { > printf("Set MTU failed. diag=%d\n", diag); > return; > } > > if (dev_info.rx_offload_capa & DEV_RX_OFFLOAD_JUMBO_FRAME) { > .... > .... > .... > } > } > > >> >> Fixes: 150c9ac2df13 ("app/testpmd: update Rx offload after setting >> MTU") >> Cc: xavier.hu...@huawei.com >> >> Signed-off-by: Shy Shyman <s...@mellanox.com> >> --- >> app/test-pmd/config.c | 12 ++++++------ >> 1 file changed, 6 insertions(+), 6 deletions(-) >> >> diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index >> 5381207cc..73b53c50b 100644 >> --- a/app/test-pmd/config.c >> +++ b/app/test-pmd/config.c >> @@ -1277,8 +1277,9 @@ port_mtu_set(portid_t port_id, uint16_t mtu) >> return; >> } >> diag = rte_eth_dev_set_mtu(port_id, mtu); >> - if (diag == 0 && >> - dev_info.rx_offload_capa & DEV_RX_OFFLOAD_JUMBO_FRAME) { >> + if (diag) >> + printf("Set MTU failed. diag=%d\n", diag); >> + else if (dev_info.rx_offload_capa & DEV_RX_OFFLOAD_JUMBO_FRAME) { >> /* >> * Ether overhead in driver is equal to the difference of >> * max_rx_pktlen and max_mtu in rte_eth_dev_info when the @@ >> -1293,10 +1294,9 @@ port_mtu_set(portid_t port_id, uint16_t mtu) >> } else >> rte_port->dev_conf.rxmode.offloads &= >> ~DEV_RX_OFFLOAD_JUMBO_FRAME; >> - >> - return; >> - } >> - printf("Set MTU failed. diag=%d\n", diag); >> + } else >> + printf("WARNING: MTU was set while jumbo frame offload is" >> + " not supported by the device\n"); >> } >> >> /* Generic flow management functions. */ >> >