[dpdk-dev] net/nfp: fix jumbo settings

Message ID 1511533477-35037-1-git-send-email-alejandro.lucero@netronome.com (mailing list archive)
State Accepted, archived
Delegated to: Ferruh Yigit
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Alejandro Lucero Nov. 24, 2017, 2:24 p.m. UTC
  When jumbo frames is configured, the hardware mtu needs to be updated to
the specified max_rx_pkt_len. Also, changing mtu should be avoided once
the PMD port started.

Fixes: defb9a5dd156 ("nfp: introduce driver initialization")

Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
---
 drivers/net/nfp/nfp_net.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)
  

Comments

Ferruh Yigit Dec. 4, 2017, 11:29 p.m. UTC | #1
On 11/24/2017 6:24 AM, Alejandro Lucero wrote:
> When jumbo frames is configured, the hardware mtu needs to be updated to
> the specified max_rx_pkt_len. Also, changing mtu should be avoided once
> the PMD port started.
> 
> Fixes: defb9a5dd156 ("nfp: introduce driver initialization")
Cc: stable@dpdk.org

> 
> Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>

Applied to dpdk-next-net/master, thanks.
  

Patch

diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c
index 9a7b0b2..e2cea06 100644
--- a/drivers/net/nfp/nfp_net.c
+++ b/drivers/net/nfp/nfp_net.c
@@ -489,7 +489,7 @@  enum nfp_qcp_ptr {
 	}
 
 	if (rxmode->jumbo_frame)
-		/* this is handled in rte_eth_dev_configure */
+		hw->mtu = rxmode->max_rx_pkt_len;
 
 	if (rxmode->hw_strip_crc) {
 		PMD_INIT_LOG(INFO, "strip CRC not supported");
@@ -1469,6 +1469,13 @@  enum nfp_qcp_ptr {
 	if ((mtu < ETHER_MIN_MTU) || ((uint32_t)mtu > hw->max_mtu))
 		return -EINVAL;
 
+	/* mtu setting is forbidden if port is started */
+	if (dev->data->dev_started) {
+		PMD_DRV_LOG(ERR, "port %d must be stopped before configuration",
+			    dev_data->port_id);
+		return -EBUSY;
+	}
+
 	/* switch to jumbo mode if needed */
 	if ((uint32_t)mtu > ETHER_MAX_LEN)
 		dev->data->dev_conf.rxmode.jumbo_frame = 1;