Hi, To use NETIF_F_GRO_HW offload, we first need to double-check what are its exact well-defined requirements/expectations.
1) What is the defined relation between the (SW) GRO (that can be easily modified in kernel) and HW-GRO that should be a well-defined HW capability ? 2) While we understand that implementing GRO in HW can result in performance gain, is HW-GRO's singularity in its ability to construct packets that can be re-segmented? (as appose to LRO). What else is expected from HW when turning it on? 3) For what I managed to gather from different mail-threads/presentations, this is the list of conditions that makes an aggregated packet reversible: a) All segments (aggregated packets) must be of the same size (except possibly the last one). (This in order to know each segments size, when re-segmenting an aggregated packet) b) IP ID must be incrementing unless DF is (To have the whole 4th layer, in order to know if a packet belongs to a certain flow) c) Also, all the other fields need to be the same to belong to the same flow and be aggregated. Any thoughts? Do I miss anything here ? Thanks, Shay Agroskin -----Original Message----- From: netdev-ow...@vger.kernel.org <netdev-ow...@vger.kernel.org> On Behalf Of Michael Chan Sent: Saturday, December 16, 2017 10:10 AM To: da...@davemloft.net Cc: netdev@vger.kernel.org; andrew.gospoda...@broadcom.com Subject: [PATCH net-next v5 0/5] Introduce NETIF_F_GRO_HW Introduce NETIF_F_GRO_HW feature flag and convert drivers that support hardware GRO to use the new flag. v5: - Documentation changes requested by Alexander Duyck. - bnx2x changes requested by Manish Chopra to enable LRO by default, and disable GRO_HW if disable_tpa module parameter is set. v4: - more changes requested by Alexander Duyck: - check GRO_HW/GRO dependency in drivers's ndo_fix_features(). - Reverse the order of RXCSUM and GRO_HW dependency check in netdev_fix_features(). - No propagation in netdev_disable_gro_hw(). v3: - Let driver's ndo_fix_features() disable NETIF_F_LRO when NETIF_F_GRO_HW is set instead of doing it in common netdev_fix_features(). v2: - NETIF_F_GRO_HW flag propagation between upper and lower devices not required (see patch 1). - NETIF_F_GRO_HW depends on NETIF_F_GRO and NETIF_F_RXCSUM. - Add dev_disable_gro_hw() to disable GRO_HW for generic XDP. - Use ndo_fix_features() on all 3 drivers to drop GRO_HW when it is not supported Michael Chan (5): net: Introduce NETIF_F_GRO_HW. net: Disable GRO_HW when generic XDP is installed on a device. bnxt_en: Use NETIF_F_GRO_HW. bnx2x: Use NETIF_F_GRO_HW. qede: Use NETIF_F_GRO_HW. Documentation/networking/netdev-features.txt | 9 +++++++ drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | 24 +++++++++---------- drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 8 ++++--- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 27 +++++++++++++++------ drivers/net/ethernet/qlogic/qede/qede.h | 2 ++ drivers/net/ethernet/qlogic/qede/qede_ethtool.c | 3 +++ drivers/net/ethernet/qlogic/qede/qede_filter.c | 21 +++++++++++------ drivers/net/ethernet/qlogic/qede/qede_main.c | 17 +++++--------- include/linux/netdev_features.h | 3 +++ net/core/dev.c | 30 ++++++++++++++++++++++++ net/core/ethtool.c | 1 + 11 files changed, 105 insertions(+), 40 deletions(-) -- 1.8.3.1