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

Reply via email to