ixgbe: check scatter_enable in set_mtu
PATCH 1/1 ixgbe: check scatter_enable in set_mtu
There exists case that software sets mtu (i.e jumbo frame) of ixgbe device when it's stopped. Before the fix, scattered_rx is cleared during device stop, and setting jumbo frame mtu after device stop will always fail as scattered_rx is 0.
--- drivers/net/ixgbe/ixgbe_ethdev.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
drivers/net/ixgbe/ixgbe_ethdev.c +4 -2
@@ -4671,6 +4671,7 @@ ixgbe_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)struct ixgbe_hw *hw;struct rte_eth_dev_info dev_info;uint32_t frame_size = mtu +ETHER_HDR_LEN +ETHER_CRC_LEN ; +struct rte_eth_rxmode *rx_conf = &dev->data->dev_conf.rxmode;ixgbe_dev_info_get (dev, &dev_info);
@@ -4681,7 +4682,7 @@ ixgbe_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)/* refuse mtu that requires the support of scattered packets when this * feature has not been enabled before. */ -if (!dev->data->scattered_rx && +if (!rx_conf->enable_scatter && (frame_size +2 *IXGBE_VLAN_TAG_SIZE > dev->data->min_rx_buf_size -RTE_PKTMBUF_HEADROOM ))return -EINVAL ;
@@ -5939,6 +5940,7 @@ ixgbevf_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu) {struct ixgbe_hw *hw;uint32_t max_frame = mtu +ETHER_HDR_LEN +ETHER_CRC_LEN ; +struct rte_eth_rxmode *rx_conf = &dev->data->dev_conf.rxmode; hw =IXGBE_DEV_PRIVATE_TO_HW (dev->data->dev_private);
@@ -5948,7 +5950,7 @@ ixgbevf_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)/* refuse mtu that requires the support of scattered packets when this * feature has not been enabled before. */ -if (!dev->data->scattered_rx && +if (!rx_conf->enable_scatter && (max_frame +2 *IXGBE_VLAN_TAG_SIZE > dev->data->min_rx_buf_size -RTE_PKTMBUF_HEADROOM ))return -EINVAL ;
Signature · 1 line
2.7.4
Hi Jia,
Quoted 7 lines
-----Original Message-----
From: Jia Yu [mailto:[email protected]]
Sent: Friday, April 28, 2017 5:13 AM
To: Lu, Wenzhuo; Ananyev, Konstantin
Cc: [email protected]; Jia Yu
Subject: [PATCH] ixgbe: checkscatter_enableinset_mtu
Quoted 7 lines
There exists case that software sets mtu (i.e jumbo frame) of ixgbe device when it's stopped. Before the fix,
scattered_rxis cleared during device stop, and setting jumbo frame mtu after device stop will always fail asscattered_rxis 0.--- drivers/net/ixgbe/ixgbe_ethdev.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
I'd like to ack this patch, but I found not sign-off. Would you like to send a new version with sign-off? And you can add my ack in it.