[PATCH v6] net/i40e: rework maximum frame size configuration

David Marchand david.marchand at redhat.com
Tue Feb 28 10:36:47 CET 2023


Qi,

On Mon, Feb 27, 2023 at 1:35 AM Zhang, Qi Z <qi.z.zhang at intel.com> wrote:
> > One issue is reported by David Marchand that error occurs in OVS due to the
> > fix patch in mentioned changes below. The detailed reproduce step and
> > result are in https://patchwork.dpdk.org/project/dpdk/patch/
> > 20211207085946.121032-1-dapengx.yu at intel.com/.
> >
> > This patch removes unnecessary link status check and directly sets mac config
> > in dev_start. Also, it sets the parameter "wait to complete" true to wait for
> > more time to make sure adminq command execute completed.
> >
> > Fixes: a4ba77367923 ("net/i40e: enable maximum frame size at port level")
> > Fixes: 2184f7cdeeaa ("net/i40e: fix max frame size config at port level")
> > Fixes: 719469f13b11 ("net/i40e: fix jumbo frame Rx with X722")
> > Cc: stable at dpdk.org
> >
> > Reported-by: David Marchand <david.marchand at redhat.com>
> > Signed-off-by: Simei Su <simei.su at intel.com>
>
> Acked-by: Qi Zhang <qi.z.zhang at intel.com>

I was waiting for a ping... good thing I had a look at this thread.

I suggest splitting this in two parts before it reaches the main repo:
- put the reverts first (the reason is that 21.11 stable branch
already have them): this would end up the same as merging
https://patchwork.dpdk.org/project/dpdk/patch/20221213091837.87953-1-david.marchand@redhat.com/
that has been waiting since December,
- have the move of i40e_aq_set_mac_config from eth_i40e_dev_init to
i40e_dev_start + change in i40e_dev_link_update call in a second patch
(i.e. the following diff),

diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index a982e42264..371f42233e 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -1710,11 +1710,6 @@ eth_i40e_dev_init(struct rte_eth_dev *dev, void
*init_params __rte_unused)
         */
        i40e_add_tx_flow_control_drop_filter(pf);

-       /* Set the max frame size to 0x2600 by default,
-        * in case other drivers changed the default value.
-        */
-       i40e_aq_set_mac_config(hw, I40E_FRAME_SIZE_MAX, TRUE, false, 0, NULL);
-
        /* initialize RSS rule list */
        TAILQ_INIT(&pf->rss_config_list);

@@ -2332,6 +2327,7 @@ i40e_dev_start(struct rte_eth_dev *dev)
        uint32_t intr_vector = 0;
        struct i40e_vsi *vsi;
        uint16_t nb_rxq, nb_txq;
+       uint16_t max_frame_size;

        hw->adapter_stopped = 0;

@@ -2452,7 +2448,7 @@ i40e_dev_start(struct rte_eth_dev *dev)
                        PMD_DRV_LOG(WARNING, "Fail to set phy mask");

                /* Call get_link_info aq command to enable/disable LSE */
-               i40e_dev_link_update(dev, 0);
+               i40e_dev_link_update(dev, 1);
        }

        if (dev->data->dev_conf.intr_conf.rxq == 0) {
@@ -2470,6 +2466,13 @@ i40e_dev_start(struct rte_eth_dev *dev)
                            "please call hierarchy_commit() "
                            "before starting the port");

+       max_frame_size = dev->data->mtu ?
+               dev->data->mtu + I40E_ETH_OVERHEAD :
+               I40E_FRAME_SIZE_MAX;
+
+       /* Set the max frame size to HW*/
+       i40e_aq_set_mac_config(hw, max_frame_size, TRUE, false, 0, NULL);
+
        return I40E_SUCCESS;

 tx_err:


This way, the new fix is easier to read too.
Thanks.


-- 
David Marchand



More information about the stable mailing list