net/i40e: fix X722 NIC receives jumbo frame packets

Message ID 20221110034524.467431-1-jie1x.wang@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Qi Zhang
Headers
Series net/i40e: fix X722 NIC receives jumbo frame packets |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/github-robot: build success github build: passed
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-aarch64-unit-testing success Testing PASS
ci/iol-x86_64-compile-testing success Testing PASS
ci/iol-x86_64-unit-testing success Testing PASS
ci/iol-aarch64-compile-testing success Testing PASS

Commit Message

Jie Wang Nov. 10, 2022, 3:45 a.m. UTC
  For NIC I40E_10G-10G_BASE_T_X722, when the port is configured with
link speed, it cannot receive jumbo frame packets.

Because it set maximum frame size failed when starts the port that
the port link status is still down.

This patch fix the error that starts the port will force set maximum
frame size.

Fixes: 2184f7cdeeaa ("net/i40e: fix max frame size config at port level")
Cc: stable@dpdk.org

Signed-off-by: Jie Wang <jie1x.wang@intel.com>
---
 drivers/net/i40e/i40e_ethdev.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)
  

Comments

Yuan, DukaiX Nov. 10, 2022, 5:59 a.m. UTC | #1
> -----Original Message-----
> From: Jie Wang <jie1x.wang@intel.com>
> Sent: 2022年11月10日 11:45
> To: dev@dpdk.org
> Cc: Yang, SteveX <stevex.yang@intel.com>; Zhang, Qi Z
> <qi.z.zhang@intel.com>; Yang, Qiming <qiming.yang@intel.com>; Xing, Beilei
> <beilei.xing@intel.com>; Zhang, Yuying <yuying.zhang@intel.com>; Wang,
> Jie1X <jie1x.wang@intel.com>; stable@dpdk.org
> Subject: [PATCH] net/i40e: fix X722 NIC receives jumbo frame packets
> 
> For NIC I40E_10G-10G_BASE_T_X722, when the port is configured with link
> speed, it cannot receive jumbo frame packets.
> 
> Because it set maximum frame size failed when starts the port that the port
> link status is still down.
> 
> This patch fix the error that starts the port will force set maximum frame size.
> 
> Fixes: 2184f7cdeeaa ("net/i40e: fix max frame size config at port level")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Jie Wang <jie1x.wang@intel.com>
> ---
Tested-by: Dukai Yuan<dukaix.yuan@intel.com>
  
Qi Zhang Nov. 10, 2022, 9:47 a.m. UTC | #2
> -----Original Message-----
> From: Yuan, DukaiX <dukaix.yuan@intel.com>
> Sent: Thursday, November 10, 2022 2:00 PM
> To: Wang, Jie1X <jie1x.wang@intel.com>; dev@dpdk.org
> Cc: Yang, SteveX <stevex.yang@intel.com>; Zhang, Qi Z
> <qi.z.zhang@intel.com>; Yang, Qiming <qiming.yang@intel.com>; Xing, Beilei
> <beilei.xing@intel.com>; Zhang, Yuying <yuying.zhang@intel.com>; Wang,
> Jie1X <jie1x.wang@intel.com>; stable@dpdk.org
> Subject: RE: [PATCH] net/i40e: fix X722 NIC receives jumbo frame packets
> 
> > -----Original Message-----
> > From: Jie Wang <jie1x.wang@intel.com>
> > Sent: 2022年11月10日 11:45
> > To: dev@dpdk.org
> > Cc: Yang, SteveX <stevex.yang@intel.com>; Zhang, Qi Z
> > <qi.z.zhang@intel.com>; Yang, Qiming <qiming.yang@intel.com>; Xing,
> > Beilei <beilei.xing@intel.com>; Zhang, Yuying
> > <yuying.zhang@intel.com>; Wang, Jie1X <jie1x.wang@intel.com>;
> > stable@dpdk.org
> > Subject: [PATCH] net/i40e: fix X722 NIC receives jumbo frame packets
> >
> > For NIC I40E_10G-10G_BASE_T_X722, when the port is configured with
> > link speed, it cannot receive jumbo frame packets.
> >
> > Because it set maximum frame size failed when starts the port that the
> > port link status is still down.
> >
> > This patch fix the error that starts the port will force set maximum frame
> size.
> >
> > Fixes: 2184f7cdeeaa ("net/i40e: fix max frame size config at port
> > level")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Jie Wang <jie1x.wang@intel.com>
> > ---
> Tested-by: Dukai Yuan<dukaix.yuan@intel.com>

Applied to dpdk-next-net-intel.

Thanks
Qi
  
David Marchand Dec. 5, 2022, 11:15 a.m. UTC | #3
Hi Kevin, Qi,

On Thu, Nov 10, 2022 at 10:48 AM Zhang, Qi Z <qi.z.zhang@intel.com> wrote:
> > > Subject: [PATCH] net/i40e: fix X722 NIC receives jumbo frame packets
> > >
> > > For NIC I40E_10G-10G_BASE_T_X722, when the port is configured with
> > > link speed, it cannot receive jumbo frame packets.
> > >
> > > Because it set maximum frame size failed when starts the port that the
> > > port link status is still down.
> > >
> > > This patch fix the error that starts the port will force set maximum frame
> > size.
> > >
> > > Fixes: 2184f7cdeeaa ("net/i40e: fix max frame size config at port
> > > level")
> > > Cc: stable@dpdk.org
> > >
> > > Signed-off-by: Jie Wang <jie1x.wang@intel.com>

It seems this fix has been missed in 21.11 (for the reason we
discussed with Kevin offlist).

Our QE reported that reception of jumbo frames seems broken in the 21.11 branch.

I can reproduce with a X710 nic: v21.11.0 is fine, but v21.11.1 and
v21.11.2 show the following error log.
Dec 05 05:41:37 xxx ovs-vswitchd[53585]:
ovs|00183|dpdk|ERR|i40e_set_mac_max_frame(): Set max frame size at
port level not applicable on link down

The log goes away with backporting this current patch.
Can this be added to 21.11 queue, and have Intel validate this issue?

Thanks!
  
Kevin Traynor Dec. 5, 2022, 12:02 p.m. UTC | #4
On 05/12/2022 11:15, David Marchand wrote:
> Hi Kevin, Qi,
> 
> On Thu, Nov 10, 2022 at 10:48 AM Zhang, Qi Z <qi.z.zhang@intel.com> wrote:
>>>> Subject: [PATCH] net/i40e: fix X722 NIC receives jumbo frame packets
>>>>
>>>> For NIC I40E_10G-10G_BASE_T_X722, when the port is configured with
>>>> link speed, it cannot receive jumbo frame packets.
>>>>
>>>> Because it set maximum frame size failed when starts the port that the
>>>> port link status is still down.
>>>>
>>>> This patch fix the error that starts the port will force set maximum frame
>>> size.
>>>>
>>>> Fixes: 2184f7cdeeaa ("net/i40e: fix max frame size config at port
>>>> level")
>>>> Cc: stable@dpdk.org
>>>>
>>>> Signed-off-by: Jie Wang <jie1x.wang@intel.com>
> 
> It seems this fix has been missed in 21.11 (for the reason we
> discussed with Kevin offlist).
> 
> Our QE reported that reception of jumbo frames seems broken in the 21.11 branch.
> 
> I can reproduce with a X710 nic: v21.11.0 is fine, but v21.11.1 and
> v21.11.2 show the following error log.
> Dec 05 05:41:37 xxx ovs-vswitchd[53585]:
> ovs|00183|dpdk|ERR|i40e_set_mac_max_frame(): Set max frame size at
> port level not applicable on link down
> 
> The log goes away with backporting this current patch.
> Can this be added to 21.11 queue, and have Intel validate this issue?
> 

Thanks David. I am have applied and pushing through CI. Will push to 
21.11 branch when it completes.

> Thanks!
> 
>
  
Qi Zhang Dec. 6, 2022, 12:01 a.m. UTC | #5
Hi David:

> -----Original Message-----
> From: David Marchand <david.marchand@redhat.com>
> Sent: Monday, December 5, 2022 7:15 PM
> To: Kevin Traynor <ktraynor@redhat.com>; Zhang, Qi Z
> <qi.z.zhang@intel.com>
> Cc: stable@dpdk.org; Yuan, DukaiX <dukaix.yuan@intel.com>; Wang, Jie1X
> <jie1x.wang@intel.com>; dev@dpdk.org; Yang, SteveX
> <stevex.yang@intel.com>; Yang, Qiming <qiming.yang@intel.com>; Xing,
> Beilei <beilei.xing@intel.com>; Zhang, Yuying <yuying.zhang@intel.com>
> Subject: Re: [PATCH] net/i40e: fix X722 NIC receives jumbo frame packets
> 
> Hi Kevin, Qi,
> 
> On Thu, Nov 10, 2022 at 10:48 AM Zhang, Qi Z <qi.z.zhang@intel.com>
> wrote:
> > > > Subject: [PATCH] net/i40e: fix X722 NIC receives jumbo frame
> > > > packets
> > > >
> > > > For NIC I40E_10G-10G_BASE_T_X722, when the port is configured with
> > > > link speed, it cannot receive jumbo frame packets.
> > > >
> > > > Because it set maximum frame size failed when starts the port that
> > > > the port link status is still down.
> > > >
> > > > This patch fix the error that starts the port will force set
> > > > maximum frame
> > > size.
> > > >
> > > > Fixes: 2184f7cdeeaa ("net/i40e: fix max frame size config at port
> > > > level")
> > > > Cc: stable@dpdk.org
> > > >
> > > > Signed-off-by: Jie Wang <jie1x.wang@intel.com>
> 
> It seems this fix has been missed in 21.11 (for the reason we discussed with
> Kevin offlist).
> 
> Our QE reported that reception of jumbo frames seems broken in the 21.11
> branch.
> 
> I can reproduce with a X710 nic: v21.11.0 is fine, but v21.11.1 and
> v21.11.2 show the following error log.
> Dec 05 05:41:37 xxx ovs-vswitchd[53585]:
> ovs|00183|dpdk|ERR|i40e_set_mac_max_frame(): Set max frame size at
> port level not applicable on link down
> 
> The log goes away with backporting this current patch.
> Can this be added to 21.11 queue, and have Intel validate this issue?

Yes, the patch has been verified on X722.
As the patch Cc stable, we can assume it will be captured in 21.11.3 by default.

> 
> Thanks!
> 
> 
> --
> David Marchand
  
Kevin Traynor Dec. 6, 2022, 10:12 a.m. UTC | #6
On 06/12/2022 00:01, Zhang, Qi Z wrote:
> Hi David:
> 
>> -----Original Message-----
>> From: David Marchand <david.marchand@redhat.com>
>> Sent: Monday, December 5, 2022 7:15 PM
>> To: Kevin Traynor <ktraynor@redhat.com>; Zhang, Qi Z
>> <qi.z.zhang@intel.com>
>> Cc: stable@dpdk.org; Yuan, DukaiX <dukaix.yuan@intel.com>; Wang, Jie1X
>> <jie1x.wang@intel.com>; dev@dpdk.org; Yang, SteveX
>> <stevex.yang@intel.com>; Yang, Qiming <qiming.yang@intel.com>; Xing,
>> Beilei <beilei.xing@intel.com>; Zhang, Yuying <yuying.zhang@intel.com>
>> Subject: Re: [PATCH] net/i40e: fix X722 NIC receives jumbo frame packets
>>
>> Hi Kevin, Qi,
>>
>> On Thu, Nov 10, 2022 at 10:48 AM Zhang, Qi Z <qi.z.zhang@intel.com>
>> wrote:
>>>>> Subject: [PATCH] net/i40e: fix X722 NIC receives jumbo frame
>>>>> packets
>>>>>
>>>>> For NIC I40E_10G-10G_BASE_T_X722, when the port is configured with
>>>>> link speed, it cannot receive jumbo frame packets.
>>>>>
>>>>> Because it set maximum frame size failed when starts the port that
>>>>> the port link status is still down.
>>>>>
>>>>> This patch fix the error that starts the port will force set
>>>>> maximum frame
>>>> size.
>>>>>
>>>>> Fixes: 2184f7cdeeaa ("net/i40e: fix max frame size config at port
>>>>> level")
>>>>> Cc: stable@dpdk.org
>>>>>
>>>>> Signed-off-by: Jie Wang <jie1x.wang@intel.com>
>>
>> It seems this fix has been missed in 21.11 (for the reason we discussed with
>> Kevin offlist).
>>
>> Our QE reported that reception of jumbo frames seems broken in the 21.11
>> branch.
>>
>> I can reproduce with a X710 nic: v21.11.0 is fine, but v21.11.1 and
>> v21.11.2 show the following error log.
>> Dec 05 05:41:37 xxx ovs-vswitchd[53585]:
>> ovs|00183|dpdk|ERR|i40e_set_mac_max_frame(): Set max frame size at
>> port level not applicable on link down
>>
>> The log goes away with backporting this current patch.
>> Can this be added to 21.11 queue, and have Intel validate this issue?
> 
> Yes, the patch has been verified on X722.

Great, can a test also be added to the Intel LTS release validation for 
this?

Looking at the chain of fixes, it appears this issue was present on 
multiple 21.11.x and 20.11.x releases.

> As the patch Cc stable, we can assume it will be captured in 21.11.3 by default.
> 

No, the original commit where the chain of fixes started was not tagged 
with 'Fixes:' so this chain of fixes looked like it was fixing an issue 
that originated in 22.03.

It is applied now and will be part of 21.11.3.

thanks,
Kevin.

>>
>> Thanks!
>>
>>
>> --
>> David Marchand
>
  

Patch

diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index 80fbcc847c..7726a89d99 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -12132,8 +12132,13 @@  i40e_set_mac_max_frame(struct rte_eth_dev *dev, uint16_t size)
 	enum i40e_status_code status;
 	bool can_be_set = true;
 
-	/* I40E_MEDIA_TYPE_BASET link up can be ignored */
-	if (hw->phy.media_type != I40E_MEDIA_TYPE_BASET) {
+	/*
+	 * I40E_MEDIA_TYPE_BASET link up can be ignored
+	 * I40E_MEDIA_TYPE_BASET link down that hw->phy.media_type
+	 * is I40E_MEDIA_TYPE_UNKNOWN
+	 */
+	if (hw->phy.media_type != I40E_MEDIA_TYPE_BASET &&
+	    hw->phy.media_type != I40E_MEDIA_TYPE_UNKNOWN) {
 		do {
 			update_link_reg(hw, &link);
 			if (link.link_status)