mbox series

[v4,00/22] fix rx packets dropped issue

Message ID 20210118070428.36998-1-stevex.yang@intel.com (mailing list archive)
Headers show
Series fix rx packets dropped issue | expand

Message

Steve Yang Jan. 18, 2021, 7:04 a.m. UTC
The jumbo frame used the 'RTE_ETHER_MAX_LEN' as boundary condition, this
fix will change the boundary condition with 'RTE_ETHER_MTU' and overhead.

When the MTU(1500) set, the frame type of rx packet will be different
if used different overhead, it will cause the consistency issue, and the
normal packet will be dropped. Hence, using fixed value 'RTE_ETHER_MTU'
can avoid this issue.

Like,
app     -> max_rx_pkt_len = 1500/*mtu*/ + 22/*overhead*/ = 1522
ethdev  -> 1522 > 1518/*MAX*/; max_rx_pkt_len = 1518
driver  -> MTU = 1518 - 22 = 1496
Packets with size 1497-1500 are dropped although intention is to be able
to send/receive them.

Following scopes will be changed:
- 'rte_ethdev'
- 'app', e.g.: 'test-pmd';
- net PMDs which support VLAN tag(s) within overhead, e.g.: i40e;

Following scopes perhaps will be impacted:
- the cases of jumbo frame related;
- the logic of 'max_rx_pkt_len' and 'mtu' related;
- the using place of 'RTE_ETHER_MAX_LEN';

---
v4:
 - moved mtu assignment to the same if-true-block of jumbo frame;
v3:
 - removed redundant if-conditions in rte_ethdev and testpmd;
 - adjusted the alignment style;
 - added offload check before updating mtu;
v2:
 - defined the 'RTE_ETHER_MTU + overhead' to 'driver_ETH_MAX_LEN';
 - changed the 'mtu > RTE_ETHER_MTU' to 'frame_size > driver_ETH_MAX_LEN';
---

Steve Yang (22):
  ethdev: fix MTU size exceeds max rx packet length
  app/testpmd: fix max rx packet length for VLAN packets
  net/dpaa: fix the jumbo frame flag condition for mtu set
  net/dpaa2: fix the jumbo frame flag condition for mtu set
  net/e1000: fix the jumbo frame flag condition for mtu set
  net/hns3: fix the jumbo frame flag condition for mtu set
  net/i40e: fix the jumbo frame flag condition
  net/iavf: fix the jumbo frame flag condition
  net/ice: fix the jumbo frame flag condition
  net/ipn3ke: fix the jumbo frame flag condition for mtu set
  net/octeontx: fix the jumbo frame flag condition for mtu set
  net/octeontx2: fix the jumbo frame flag condition for mtu
  net/qede: fix the jumbo frame flag condition for mtu set
  net/sfc: fix the jumbo frame flag condition for mtu set
  net/thunderx: fix the jumbo frame flag condition for mtu set
  net/ixgbe: fix the jumbo frame flag condition
  net/cxgbe: fix the jumbo frame flag condition
  net/axgbe: fix the jumbo frame flag condition for mtu set
  net/enetc: fix the jumbo frame flag condition for mtu set
  net/hinic: fix the jumbo frame flag condition for mtu set
  net/nfp: fix the jumbo frame flag condition for mtu set
  net/liquidio: fix the jumbo frame flag condition for mtu set

 app/test-pmd/cmdline.c                    |  6 ------
 app/test-pmd/config.c                     |  2 +-
 app/test-pmd/parameters.c                 |  7 ++-----
 app/test-pmd/testpmd.c                    | 18 ++++++++++++++++
 drivers/net/axgbe/axgbe_ethdev.c          |  2 +-
 drivers/net/axgbe/axgbe_ethdev.h          |  6 ++++++
 drivers/net/cxgbe/cxgbe.h                 |  4 ++++
 drivers/net/cxgbe/cxgbe_ethdev.c          |  4 ++--
 drivers/net/dpaa/dpaa_ethdev.c            |  2 +-
 drivers/net/dpaa/dpaa_ethdev.h            |  4 ++++
 drivers/net/dpaa2/dpaa2_ethdev.c          |  2 +-
 drivers/net/dpaa2/dpaa2_ethdev.h          |  4 ++++
 drivers/net/e1000/e1000_ethdev.h          |  2 +-
 drivers/net/e1000/em_ethdev.c             |  5 ++---
 drivers/net/e1000/igb_ethdev.c            |  2 +-
 drivers/net/enetc/enetc.h                 |  4 ++++
 drivers/net/enetc/enetc_ethdev.c          |  2 +-
 drivers/net/hinic/hinic_pmd_ethdev.c      |  5 ++++-
 drivers/net/hns3/hns3_ethdev.c            |  2 +-
 drivers/net/hns3/hns3_ethdev_vf.c         |  2 +-
 drivers/net/i40e/i40e_ethdev.c            |  2 +-
 drivers/net/i40e/i40e_ethdev.h            |  1 +
 drivers/net/i40e/i40e_ethdev_vf.c         | 10 ++++-----
 drivers/net/i40e/i40e_fdir.c              |  2 +-
 drivers/net/i40e/i40e_rxtx.c              |  8 ++++----
 drivers/net/iavf/iavf.h                   |  1 +
 drivers/net/iavf/iavf_ethdev.c            | 10 ++++-----
 drivers/net/ice/ice_dcf_ethdev.c          |  8 ++++----
 drivers/net/ice/ice_ethdev.c              |  2 +-
 drivers/net/ice/ice_ethdev.h              |  1 +
 drivers/net/ice/ice_rxtx.c                | 10 ++++-----
 drivers/net/ipn3ke/ipn3ke_ethdev.h        |  1 +
 drivers/net/ipn3ke/ipn3ke_representor.c   |  2 +-
 drivers/net/ixgbe/ixgbe_ethdev.c          |  2 +-
 drivers/net/ixgbe/ixgbe_ethdev.h          |  3 +++
 drivers/net/ixgbe/ixgbe_pf.c              |  2 +-
 drivers/net/liquidio/lio_ethdev.c         |  2 +-
 drivers/net/liquidio/lio_ethdev.h         |  3 +++
 drivers/net/nfp/nfp_net.c                 |  2 +-
 drivers/net/octeontx/octeontx_ethdev.c    |  2 +-
 drivers/net/octeontx/octeontx_ethdev.h    |  1 +
 drivers/net/octeontx2/otx2_ethdev.h       |  2 ++
 drivers/net/octeontx2/otx2_ethdev_ops.c   |  2 +-
 drivers/net/qede/qede_ethdev.c            |  2 +-
 drivers/net/qede/qede_rxtx.h              |  1 +
 drivers/net/sfc/sfc_ethdev.c              |  2 +-
 drivers/net/thunderx/base/nicvf_hw_defs.h |  1 +
 drivers/net/thunderx/nicvf_ethdev.c       |  2 +-
 lib/librte_ethdev/rte_ethdev.c            | 25 ++++++++++++++++++++---
 49 files changed, 132 insertions(+), 65 deletions(-)

Comments

Ferruh Yigit Jan. 18, 2021, 11:54 a.m. UTC | #1
On 1/18/2021 7:04 AM, Steve Yang wrote:
> The jumbo frame used the 'RTE_ETHER_MAX_LEN' as boundary condition, this
> fix will change the boundary condition with 'RTE_ETHER_MTU' and overhead.
> 
> When the MTU(1500) set, the frame type of rx packet will be different
> if used different overhead, it will cause the consistency issue, and the
> normal packet will be dropped. Hence, using fixed value 'RTE_ETHER_MTU'
> can avoid this issue.
> 
> Like,
> app     -> max_rx_pkt_len = 1500/*mtu*/ + 22/*overhead*/ = 1522
> ethdev  -> 1522 > 1518/*MAX*/; max_rx_pkt_len = 1518
> driver  -> MTU = 1518 - 22 = 1496
> Packets with size 1497-1500 are dropped although intention is to be able
> to send/receive them.
> 
> Following scopes will be changed:
> - 'rte_ethdev'
> - 'app', e.g.: 'test-pmd';
> - net PMDs which support VLAN tag(s) within overhead, e.g.: i40e;
> 
> Following scopes perhaps will be impacted:
> - the cases of jumbo frame related;
> - the logic of 'max_rx_pkt_len' and 'mtu' related;
> - the using place of 'RTE_ETHER_MAX_LEN';
> 
> ---
> v4:
>   - moved mtu assignment to the same if-true-block of jumbo frame;
> v3:
>   - removed redundant if-conditions in rte_ethdev and testpmd;
>   - adjusted the alignment style;
>   - added offload check before updating mtu;
> v2:
>   - defined the 'RTE_ETHER_MTU + overhead' to 'driver_ETH_MAX_LEN';
>   - changed the 'mtu > RTE_ETHER_MTU' to 'frame_size > driver_ETH_MAX_LEN';
> ---
> 
> Steve Yang (22):
>    ethdev: fix MTU size exceeds max rx packet length
>    app/testpmd: fix max rx packet length for VLAN packets
>    net/dpaa: fix the jumbo frame flag condition for mtu set
>    net/dpaa2: fix the jumbo frame flag condition for mtu set
>    net/e1000: fix the jumbo frame flag condition for mtu set
>    net/hns3: fix the jumbo frame flag condition for mtu set
>    net/i40e: fix the jumbo frame flag condition
>    net/iavf: fix the jumbo frame flag condition
>    net/ice: fix the jumbo frame flag condition
>    net/ipn3ke: fix the jumbo frame flag condition for mtu set
>    net/octeontx: fix the jumbo frame flag condition for mtu set
>    net/octeontx2: fix the jumbo frame flag condition for mtu
>    net/qede: fix the jumbo frame flag condition for mtu set
>    net/sfc: fix the jumbo frame flag condition for mtu set
>    net/thunderx: fix the jumbo frame flag condition for mtu set
>    net/ixgbe: fix the jumbo frame flag condition
>    net/cxgbe: fix the jumbo frame flag condition
>    net/axgbe: fix the jumbo frame flag condition for mtu set
>    net/enetc: fix the jumbo frame flag condition for mtu set
>    net/hinic: fix the jumbo frame flag condition for mtu set
>    net/nfp: fix the jumbo frame flag condition for mtu set
>    net/liquidio: fix the jumbo frame flag condition for mtu set

For series,
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>

Series applied to dpdk-next-net/main, thanks.