> From: Honnappa Nagarahalli [mailto:honnappa.nagaraha...@arm.com] > Sent: Thursday, 21 April 2022 04.35 > > > > > From: Feifei Wang [mailto:feifei.wa...@arm.com] > > > Sent: Wednesday, 20 April 2022 10.17 > > > > > > Enable direct rearm mode. The mapping is decided in the data plane > > > based on the first packet received. > > > > I usually don't care much about l3fwd, but putting configuration > changes in the > > fast path is just wrong! > I would say it depends. In this case the cycles consumed by the API are > very less and configuration data is very small and is already in the > cache as PMD has accessed the same data structure. > > If the configuration needs more cycles than a typical (depending on the > application) data plane packet processing needs or brings in enormous > amount of data in to the cache, it should not be done on the data > plane. >
As a matter of principle, configuration changes should be done outside the fast path. If we allow an exception for this feature, it will set a bad precedent about where to put configuration code. > > > > Also, l3fwd is often used for benchmarking, and this small piece of > code in the > > fast path will affect benchmark results (although only very little). > We do not see any impact on the performance numbers. The reason for > putting in the data plane was it covers wider use case in this L3fwd > application. If the app were to be simple, the configuration could be > done from the control plane. Unfortunately, the performance of L3fwd > application matters. > Let's proceed down that path for the sake of discussion... Then the fast path is missing runtime verification that all preconditions for using remapping are present at any time. > > > > Please move it out of the fast path. BTW, this patch does not call the rte_eth_direct_rxrearm_enable() to enable the feature. And finally, this feature should be disabled by default, and only enabled by a command line parameter or similar. Otherwise, future l3fwd NIC performance reports will provide misleading performance results, if the feature is utilized. Application developers, when comparing NIC performance results, don't care about the performance for this unique use case; they care about the performance for the generic use case.