Add to support Rx jumbo frames. Signed-off-by: Jiawen Wu <jiawe...@trustnetic.com> --- doc/guides/nics/features/ngbe.ini | 1 + doc/guides/nics/ngbe.rst | 1 + drivers/net/ngbe/ngbe_ethdev.h | 3 +++ drivers/net/ngbe/ngbe_rxtx.c | 5 ++++- 4 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/doc/guides/nics/features/ngbe.ini b/doc/guides/nics/features/ngbe.ini index 053dff3a2f..9785820ea0 100644 --- a/doc/guides/nics/features/ngbe.ini +++ b/doc/guides/nics/features/ngbe.ini @@ -9,6 +9,7 @@ Link status = Y Link status event = Y Queue start/stop = Y Burst mode info = Y +Jumbo frame = Y Scattered Rx = Y TSO = Y CRC offload = Y diff --git a/doc/guides/nics/ngbe.rst b/doc/guides/nics/ngbe.rst index 6a6ae39243..702a455041 100644 --- a/doc/guides/nics/ngbe.rst +++ b/doc/guides/nics/ngbe.rst @@ -14,6 +14,7 @@ Features - Packet type information - Checksum offload - TSO offload +- Jumbo frames - Link state information - Scattered and gather for TX and RX diff --git a/drivers/net/ngbe/ngbe_ethdev.h b/drivers/net/ngbe/ngbe_ethdev.h index 286cb893d6..b270343a3e 100644 --- a/drivers/net/ngbe/ngbe_ethdev.h +++ b/drivers/net/ngbe/ngbe_ethdev.h @@ -17,6 +17,9 @@ #define NGBE_QUEUE_ITR_INTERVAL_DEFAULT 500 /* 500us */ +/* The overhead from MTU to max frame size. */ +#define NGBE_ETH_OVERHEAD (RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN) + #define NGBE_MISC_VEC_ID RTE_INTR_VEC_ZERO_OFFSET #define NGBE_RX_VEC_START RTE_INTR_VEC_RXTX_OFFSET diff --git a/drivers/net/ngbe/ngbe_rxtx.c b/drivers/net/ngbe/ngbe_rxtx.c index df265bd447..b49303094e 100644 --- a/drivers/net/ngbe/ngbe_rxtx.c +++ b/drivers/net/ngbe/ngbe_rxtx.c @@ -2364,8 +2364,11 @@ ngbe_dev_rx_init(struct rte_eth_dev *dev) hlreg0 &= ~NGBE_SECRXCTL_XDSA; wr32(hw, NGBE_SECRXCTL, hlreg0); + /* + * Configure jumbo frame support, if any. + */ wr32m(hw, NGBE_FRMSZ, NGBE_FRMSZ_MAX_MASK, - NGBE_FRMSZ_MAX(NGBE_FRAME_SIZE_DFT)); + NGBE_FRMSZ_MAX(dev->data->mtu + NGBE_ETH_OVERHEAD)); /* Setup Rx queues */ for (i = 0; i < dev->data->nb_rx_queues; i++) { -- 2.21.0.windows.1