On 12/1/2017 6:22 PM, Vlad Zolotarov wrote: > > > On 12/01/2017 06:51 PM, Ferruh Yigit wrote: >> On 12/1/2017 2:17 PM, Vlad Zolotarov wrote: >>> >>> On 11/30/2017 09:29 PM, Ferruh Yigit wrote: >>>> remove RTE_ETHDEV_HAS_LRO_SUPPORT flag from header. >>>> >>>> Flag seems added with the patch that adds LRO support, and intention >>>> looks like giving a pointer to application that library supports LRO. >>> Exactly. Removing this flag may make the existing application "think" that >>> LRO >>> is not supported. >>> Why do you want to remove it to begin with? >> I agree that this is a little controversial, and I don't have a strong >> opinion >> about it, I thought twice before sending or not sending the patch :) >> >> This flag can be useful for the applications that use different versions of >> the >> DPDK library (with the ones does and doesn't support LRO), so that >> application >> can be more portable. >> I would understand a dynamic approach, which would be useful for distributed >> applications that you don't know and can't control what version of the DPDK >> library used. >> But here to benefit from this flag you need to compile your application >> against >> DPDK library, and if you are compiling it you already know if your DPDK >> supports >> LRO or not. And this is not something keeps changing platform to platform >> etc, >> after a specific release LRO is always supported. > > True but DPDK is usually not a part of your source tree - it (should) come as > a > library and currently there isn't any proper way to query feature set. > This flag was also added after a lot of consideration as a rather ugly > compromise since there wasn't (and there isn't) a proper way to do that at > that > (this) time. See more on that below. > >> >> And this is the only capability support flag in the ethdev, there are many >> new >> features introduced in each release but they are not advertised by a >> capability >> flag. Only having LRO flag can be confusing. >> >> _Perhaps_ DPDK should have a way to expose the supported features, and a >> dynamic >> runtime way can be better option than compile time macros, but it should be >> generic nothing specific to LRO support. > > IMO it's not "perhaps" it's a "must" _however_
This is even wider than ethdev, more like in DPDK scope, we need someone to attack this issue. > you can't remove this flag without giving some other tool to do the same. Fair enough, I will drop the patch. > Querying a DPDK version would be a wrong direction because some Linux > distributions (yes, I'm talking about you, Ubuntu) tend to have it's own trees > with their own backports and these trees may be light years ahead in their > patch > level compared to vanilla trees with the same version. +1 to have better way than version check. > >> >>>> Fixes: 8eecb3295aed ("ixgbe: add LRO support") >>>> Cc: vl...@cloudius-systems.com >>>> >>>> Signed-off-by: Ferruh Yigit <ferruh.yi...@intel.com> >>>> --- >>>> lib/librte_ether/rte_ethdev.h | 3 --- >>>> 1 file changed, 3 deletions(-) >>>> >>>> diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h >>>> index 341c2d624..e620c3706 100644 >>>> --- a/lib/librte_ether/rte_ethdev.h >>>> +++ b/lib/librte_ether/rte_ethdev.h >>>> @@ -172,9 +172,6 @@ extern "C" { >>>> >>>> #include <stdint.h> >>>> >>>> -/* Use this macro to check if LRO API is supported */ >>>> -#define RTE_ETHDEV_HAS_LRO_SUPPORT >>>> - >>>> #include <rte_log.h> >>>> #include <rte_interrupts.h> >>>> #include <rte_dev.h> >