[PATCH v2] wifi: ath11k: Add two missing Lenovo IDs to the quirk table

Santiago Ruano Rincón posted 1 patch 1 week ago
drivers/net/wireless/ath/ath11k/core.c | 28 ++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
[PATCH v2] wifi: ath11k: Add two missing Lenovo IDs to the quirk table
Posted by Santiago Ruano Rincón 1 week ago
Commit 0eb002c93c3b4 ("wifi: ath11k: Add missing platform IDs for quirk
table") added some Lenovo platform IDs to the quirk table to address a
wakeup from suspend issue [1].  However, at least P14s Gen 5 AMD, as
reported by Kyle Farnung [2], and P14s Gen 3 AMD are missing in the
table.  This commit adds the two corresponding Lenovo version IDs for
each.

[1] https://bugzilla.kernel.org/show_bug.cgi?id=219196
[2] https://bugzilla.kernel.org/show_bug.cgi?id=219196#c23

Tested-on: P14s G3 AMD running 7.0.3.

Fixes: ce8669a27016 ("wifi: ath11k: determine PM policy based on machine model")
Co-authored-by: Kyle Farnung <kfarnung@gmail.com>
Signed-off-by: Santiago Ruano Rincón <santiagorr@riseup.net>
---
Changes in v2:
- Merged the Lenovo P14s G5 AMD #1 and #2 related changes proposed by
  Kyle Farnung in
  https://lore.kernel.org/all/20260330-p14s-pm-quirk-v2-1-ef18ce07996b@gmail.com/
- Added Kyle Farnung as Co-author of the commit
- Added the second ID of Lenovo P14s G3 AMD, and adapt the comments
  accordingly
- v1: https://lore.kernel.org/ath11k/20260423211458.458911-1-santiagorr@riseup.net/
---
 drivers/net/wireless/ath/ath11k/core.c | 28 ++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/ath/ath11k/core.c
index 3f6f4db5b7ee..c1ce0a11af44 100644
--- a/drivers/net/wireless/ath/ath11k/core.c
+++ b/drivers/net/wireless/ath/ath11k/core.c
@@ -957,6 +957,20 @@ static const struct dmi_system_id ath11k_pm_quirk_table[] = {
 			DMI_MATCH(DMI_PRODUCT_NAME, "21K4"),
 		},
 	},
+	{
+		.driver_data = (void *)ATH11K_PM_WOW,
+		.matches = { /* P14s G3 AMD #1 */
+			DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "21J5"),
+		},
+	},
+	{
+		.driver_data = (void *)ATH11K_PM_WOW,
+		.matches = { /* P14s G3 AMD #2 */
+			DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "21J6"),
+		},
+	},
 	{
 		.driver_data = (void *)ATH11K_PM_WOW,
 		.matches = { /* P14s G4 AMD #1 */
@@ -971,6 +985,20 @@ static const struct dmi_system_id ath11k_pm_quirk_table[] = {
 			DMI_MATCH(DMI_PRODUCT_NAME, "21K6"),
 		},
 	},
+	{
+		.driver_data = (void *)ATH11K_PM_WOW,
+		.matches = { /* P14s G5 AMD #1 */
+			DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "21ME"),
+		},
+	},
+	{
+		.driver_data = (void *)ATH11K_PM_WOW,
+		.matches = { /* P14s G5 AMD #2 */
+			DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "21MF"),
+		},
+	},
 	{
 		.driver_data = (void *)ATH11K_PM_WOW,
 		.matches = { /* T16 G2 AMD #1 */
-- 
2.53.0

Re: [PATCH v2] wifi: ath11k: Add two missing Lenovo IDs to the quirk table
Posted by Jeff Johnson 20 hours ago
On 5/6/2026 12:54 PM, Santiago Ruano Rincón wrote:
> Commit 0eb002c93c3b4 ("wifi: ath11k: Add missing platform IDs for quirk
> table") added some Lenovo platform IDs to the quirk table to address a
> wakeup from suspend issue [1].  However, at least P14s Gen 5 AMD, as
> reported by Kyle Farnung [2], and P14s Gen 3 AMD are missing in the
> table.  This commit adds the two corresponding Lenovo version IDs for
> each.
> 
> [1] https://bugzilla.kernel.org/show_bug.cgi?id=219196
> [2] https://bugzilla.kernel.org/show_bug.cgi?id=219196#c23
> 
> Tested-on: P14s G3 AMD running 7.0.3.
> 
> Fixes: ce8669a27016 ("wifi: ath11k: determine PM policy based on machine model")
> Co-authored-by: Kyle Farnung <kfarnung@gmail.com>

This is not a standard Linux kernel commit tag.
Co-developed-by: could be used, but I'd need a Signed-off-by: from Kyle

Kyle, if you'd like these added please reply with both a Co-developed-by and
a Signed-off-by tag

I can apply these fixes when I process the patch in my tree.

https://www.kernel.org/doc/html/latest/process/submitting-patches.html#when-to-use-acked-by-cc-and-co-developed-by

> Signed-off-by: Santiago Ruano Rincón <santiagorr@riseup.net>
> ---
> Changes in v2:
> - Merged the Lenovo P14s G5 AMD #1 and #2 related changes proposed by
>   Kyle Farnung in
>   https://lore.kernel.org/all/20260330-p14s-pm-quirk-v2-1-ef18ce07996b@gmail.com/
> - Added Kyle Farnung as Co-author of the commit
> - Added the second ID of Lenovo P14s G3 AMD, and adapt the comments
>   accordingly
> - v1: https://lore.kernel.org/ath11k/20260423211458.458911-1-santiagorr@riseup.net/
> ---
>  drivers/net/wireless/ath/ath11k/core.c | 28 ++++++++++++++++++++++++++
>  1 file changed, 28 insertions(+)
> 
> diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/ath/ath11k/core.c
> index 3f6f4db5b7ee..c1ce0a11af44 100644
> --- a/drivers/net/wireless/ath/ath11k/core.c
> +++ b/drivers/net/wireless/ath/ath11k/core.c
> @@ -957,6 +957,20 @@ static const struct dmi_system_id ath11k_pm_quirk_table[] = {
>  			DMI_MATCH(DMI_PRODUCT_NAME, "21K4"),
>  		},
>  	},
> +	{
> +		.driver_data = (void *)ATH11K_PM_WOW,
> +		.matches = { /* P14s G3 AMD #1 */
> +			DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> +			DMI_MATCH(DMI_PRODUCT_NAME, "21J5"),
> +		},
> +	},
> +	{
> +		.driver_data = (void *)ATH11K_PM_WOW,
> +		.matches = { /* P14s G3 AMD #2 */
> +			DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> +			DMI_MATCH(DMI_PRODUCT_NAME, "21J6"),
> +		},
> +	},
>  	{
>  		.driver_data = (void *)ATH11K_PM_WOW,
>  		.matches = { /* P14s G4 AMD #1 */
> @@ -971,6 +985,20 @@ static const struct dmi_system_id ath11k_pm_quirk_table[] = {
>  			DMI_MATCH(DMI_PRODUCT_NAME, "21K6"),
>  		},
>  	},
> +	{
> +		.driver_data = (void *)ATH11K_PM_WOW,
> +		.matches = { /* P14s G5 AMD #1 */
> +			DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> +			DMI_MATCH(DMI_PRODUCT_NAME, "21ME"),
> +		},
> +	},
> +	{
> +		.driver_data = (void *)ATH11K_PM_WOW,
> +		.matches = { /* P14s G5 AMD #2 */
> +			DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> +			DMI_MATCH(DMI_PRODUCT_NAME, "21MF"),
> +		},
> +	},
>  	{
>  		.driver_data = (void *)ATH11K_PM_WOW,
>  		.matches = { /* T16 G2 AMD #1 */

Re: [PATCH v2] wifi: ath11k: Add two missing Lenovo IDs to the quirk table
Posted by Kyle Farnung 16 hours ago
On Tue, May 12, 2026 at 5:03 PM Jeff Johnson
<jeff.johnson@oss.qualcomm.com> wrote:
>
> On 5/6/2026 12:54 PM, Santiago Ruano Rincón wrote:
> > Commit 0eb002c93c3b4 ("wifi: ath11k: Add missing platform IDs for quirk
> > table") added some Lenovo platform IDs to the quirk table to address a
> > wakeup from suspend issue [1].  However, at least P14s Gen 5 AMD, as
> > reported by Kyle Farnung [2], and P14s Gen 3 AMD are missing in the
> > table.  This commit adds the two corresponding Lenovo version IDs for
> > each.
> >
> > [1] https://bugzilla.kernel.org/show_bug.cgi?id=219196
> > [2] https://bugzilla.kernel.org/show_bug.cgi?id=219196#c23
> >
> > Tested-on: P14s G3 AMD running 7.0.3.
> >
> > Fixes: ce8669a27016 ("wifi: ath11k: determine PM policy based on machine model")
> > Co-authored-by: Kyle Farnung <kfarnung@gmail.com>
>
> This is not a standard Linux kernel commit tag.
> Co-developed-by: could be used, but I'd need a Signed-off-by: from Kyle
>
> Kyle, if you'd like these added please reply with both a Co-developed-by and
> a Signed-off-by tag

I re-tested the bug behavior on the v7.0.4 tag and found that I'm not able
to reproduce it on my device. I put the device to sleep and then unplugged
and replugged power; it never woke up until I intentionally woke it.

Based on discussion in [3], I narrowed my issue with wi-fi disassociation
on wake to a suspect commit [4]. I'm developing a patch that clears the rdp
and wrp buffers during wake to clear out any stale state in the LMAC rings.
I'll submit that once I'm done testing it.

Santiago: Are you seeing the sleep/wake bug from [1] or something similar
to what I was seeing around disconnections on wake?

[3] https://lore.kernel.org/all/CAOPSVF04q6uvVdq8GTRLHBrVMdpt9=o9wVcFMc6f-yhmSBcZqQ@mail.gmail.com/
[4] 32be3ca4cf78b ("wifi: ath11k: HAL SRNG: don't deinitialize and
re-initialize again")

>
> I can apply these fixes when I process the patch in my tree.
>
> https://www.kernel.org/doc/html/latest/process/submitting-patches.html#when-to-use-acked-by-cc-and-co-developed-by
>
> > Signed-off-by: Santiago Ruano Rincón <santiagorr@riseup.net>
> > ---
> > Changes in v2:
> > - Merged the Lenovo P14s G5 AMD #1 and #2 related changes proposed by
> >   Kyle Farnung in
> >   https://lore.kernel.org/all/20260330-p14s-pm-quirk-v2-1-ef18ce07996b@gmail.com/
> > - Added Kyle Farnung as Co-author of the commit
> > - Added the second ID of Lenovo P14s G3 AMD, and adapt the comments
> >   accordingly
> > - v1: https://lore.kernel.org/ath11k/20260423211458.458911-1-santiagorr@riseup.net/
> > ---
> >  drivers/net/wireless/ath/ath11k/core.c | 28 ++++++++++++++++++++++++++
> >  1 file changed, 28 insertions(+)
> >
> > diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/ath/ath11k/core.c
> > index 3f6f4db5b7ee..c1ce0a11af44 100644
> > --- a/drivers/net/wireless/ath/ath11k/core.c
> > +++ b/drivers/net/wireless/ath/ath11k/core.c
> > @@ -957,6 +957,20 @@ static const struct dmi_system_id ath11k_pm_quirk_table[] = {
> >                       DMI_MATCH(DMI_PRODUCT_NAME, "21K4"),
> >               },
> >       },
> > +     {
> > +             .driver_data = (void *)ATH11K_PM_WOW,
> > +             .matches = { /* P14s G3 AMD #1 */
> > +                     DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> > +                     DMI_MATCH(DMI_PRODUCT_NAME, "21J5"),
> > +             },
> > +     },
> > +     {
> > +             .driver_data = (void *)ATH11K_PM_WOW,
> > +             .matches = { /* P14s G3 AMD #2 */
> > +                     DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> > +                     DMI_MATCH(DMI_PRODUCT_NAME, "21J6"),
> > +             },
> > +     },
> >       {
> >               .driver_data = (void *)ATH11K_PM_WOW,
> >               .matches = { /* P14s G4 AMD #1 */
> > @@ -971,6 +985,20 @@ static const struct dmi_system_id ath11k_pm_quirk_table[] = {
> >                       DMI_MATCH(DMI_PRODUCT_NAME, "21K6"),
> >               },
> >       },
> > +     {
> > +             .driver_data = (void *)ATH11K_PM_WOW,
> > +             .matches = { /* P14s G5 AMD #1 */
> > +                     DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> > +                     DMI_MATCH(DMI_PRODUCT_NAME, "21ME"),
> > +             },
> > +     },
> > +     {
> > +             .driver_data = (void *)ATH11K_PM_WOW,
> > +             .matches = { /* P14s G5 AMD #2 */
> > +                     DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> > +                     DMI_MATCH(DMI_PRODUCT_NAME, "21MF"),
> > +             },
> > +     },
> >       {
> >               .driver_data = (void *)ATH11K_PM_WOW,
> >               .matches = { /* T16 G2 AMD #1 */
>
Re: [PATCH v2] wifi: ath11k: Add two missing Lenovo IDs to the quirk table
Posted by Santiago Ruano Rincón 2 hours ago
El 12/05/26 a las 20:30, Kyle Farnung escribió:
> On Tue, May 12, 2026 at 5:03 PM Jeff Johnson
> <jeff.johnson@oss.qualcomm.com> wrote:
> >
> > On 5/6/2026 12:54 PM, Santiago Ruano Rincón wrote:
> > > Commit 0eb002c93c3b4 ("wifi: ath11k: Add missing platform IDs for quirk
> > > table") added some Lenovo platform IDs to the quirk table to address a
> > > wakeup from suspend issue [1].  However, at least P14s Gen 5 AMD, as
> > > reported by Kyle Farnung [2], and P14s Gen 3 AMD are missing in the
> > > table.  This commit adds the two corresponding Lenovo version IDs for
> > > each.
> > >
> > > [1] https://bugzilla.kernel.org/show_bug.cgi?id=219196
> > > [2] https://bugzilla.kernel.org/show_bug.cgi?id=219196#c23
> > >
> > > Tested-on: P14s G3 AMD running 7.0.3.
> > >
> > > Fixes: ce8669a27016 ("wifi: ath11k: determine PM policy based on machine model")
> > > Co-authored-by: Kyle Farnung <kfarnung@gmail.com>
> >
> > This is not a standard Linux kernel commit tag.
> > Co-developed-by: could be used, but I'd need a Signed-off-by: from Kyle
> >
> > Kyle, if you'd like these added please reply with both a Co-developed-by and
> > a Signed-off-by tag
> 
> I re-tested the bug behavior on the v7.0.4 tag and found that I'm not able
> to reproduce it on my device. I put the device to sleep and then unplugged
> and replugged power; it never woke up until I intentionally woke it.
> 
> Based on discussion in [3], I narrowed my issue with wi-fi disassociation
> on wake to a suspect commit [4]. I'm developing a patch that clears the rdp
> and wrp buffers during wake to clear out any stale state in the LMAC rings.
> I'll submit that once I'm done testing it.
> 
> Santiago: Are you seeing the sleep/wake bug from [1] or something similar
> to what I was seeing around disconnections on wake?

I was seeing wifi issues after wake-up, including disassociations, as
described at https://bugs.debian.org/1132343.

> 
> [3] https://lore.kernel.org/all/CAOPSVF04q6uvVdq8GTRLHBrVMdpt9=o9wVcFMc6f-yhmSBcZqQ@mail.gmail.com/
> [4] 32be3ca4cf78b ("wifi: ath11k: HAL SRNG: don't deinitialize and
> re-initialize again")
> 
> >
> > I can apply these fixes when I process the patch in my tree.
> >
> > https://www.kernel.org/doc/html/latest/process/submitting-patches.html#when-to-use-acked-by-cc-and-co-developed-by
> >
> > > Signed-off-by: Santiago Ruano Rincón <santiagorr@riseup.net>
> > > ---
> > > Changes in v2:
> > > - Merged the Lenovo P14s G5 AMD #1 and #2 related changes proposed by
> > >   Kyle Farnung in
> > >   https://lore.kernel.org/all/20260330-p14s-pm-quirk-v2-1-ef18ce07996b@gmail.com/
> > > - Added Kyle Farnung as Co-author of the commit
> > > - Added the second ID of Lenovo P14s G3 AMD, and adapt the comments
> > >   accordingly
> > > - v1: https://lore.kernel.org/ath11k/20260423211458.458911-1-santiagorr@riseup.net/
> > > ---
> > >  drivers/net/wireless/ath/ath11k/core.c | 28 ++++++++++++++++++++++++++
> > >  1 file changed, 28 insertions(+)
> > >
> > > diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/ath/ath11k/core.c
> > > index 3f6f4db5b7ee..c1ce0a11af44 100644
> > > --- a/drivers/net/wireless/ath/ath11k/core.c
> > > +++ b/drivers/net/wireless/ath/ath11k/core.c
> > > @@ -957,6 +957,20 @@ static const struct dmi_system_id ath11k_pm_quirk_table[] = {
> > >                       DMI_MATCH(DMI_PRODUCT_NAME, "21K4"),
> > >               },
> > >       },
> > > +     {
> > > +             .driver_data = (void *)ATH11K_PM_WOW,
> > > +             .matches = { /* P14s G3 AMD #1 */
> > > +                     DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> > > +                     DMI_MATCH(DMI_PRODUCT_NAME, "21J5"),
> > > +             },
> > > +     },
> > > +     {
> > > +             .driver_data = (void *)ATH11K_PM_WOW,
> > > +             .matches = { /* P14s G3 AMD #2 */
> > > +                     DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> > > +                     DMI_MATCH(DMI_PRODUCT_NAME, "21J6"),
> > > +             },
> > > +     },
> > >       {
> > >               .driver_data = (void *)ATH11K_PM_WOW,
> > >               .matches = { /* P14s G4 AMD #1 */
> > > @@ -971,6 +985,20 @@ static const struct dmi_system_id ath11k_pm_quirk_table[] = {
> > >                       DMI_MATCH(DMI_PRODUCT_NAME, "21K6"),
> > >               },
> > >       },
> > > +     {
> > > +             .driver_data = (void *)ATH11K_PM_WOW,
> > > +             .matches = { /* P14s G5 AMD #1 */
> > > +                     DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> > > +                     DMI_MATCH(DMI_PRODUCT_NAME, "21ME"),
> > > +             },
> > > +     },
> > > +     {
> > > +             .driver_data = (void *)ATH11K_PM_WOW,
> > > +             .matches = { /* P14s G5 AMD #2 */
> > > +                     DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
> > > +                     DMI_MATCH(DMI_PRODUCT_NAME, "21MF"),
> > > +             },
> > > +     },
> > >       {
> > >               .driver_data = (void *)ATH11K_PM_WOW,
> > >               .matches = { /* T16 G2 AMD #1 */
> >