[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <IA3PR11MB89868B6110780F90795E4ED7E599A@IA3PR11MB8986.namprd11.prod.outlook.com>
Date: Thu, 5 Feb 2026 08:13:39 +0000
From: "Loktionov, Aleksandr" <aleksandr.loktionov@...el.com>
To: Ethan Nelson-Moore <enelsonmoore@...il.com>, "netdev@...r.kernel.org"
<netdev@...r.kernel.org>, "linux-wireless@...r.kernel.org"
<linux-wireless@...r.kernel.org>
CC: Johannes Berg <johannes@...solutions.net>, "stable@...r.kernel.org"
<stable@...r.kernel.org>, "Nguyen, Anthony L" <anthony.l.nguyen@...el.com>,
"Kitszel, Przemyslaw" <przemyslaw.kitszel@...el.com>, Andrew Lunn
<andrew+netdev@...n.ch>, "David S. Miller" <davem@...emloft.net>, "Eric
Dumazet" <edumazet@...gle.com>, Jakub Kicinski <kuba@...nel.org>, Paolo Abeni
<pabeni@...hat.com>, Stanislav Yakovlev <stas.yakovlev@...il.com>, "Alice
Michael" <alice.michael@...el.com>
Subject: RE: [PATCH net-next] net: intel: fix PCI device ID conflict between
i40e and ipw2200
> -----Original Message-----
> From: Ethan Nelson-Moore <enelsonmoore@...il.com>
> Sent: Thursday, February 5, 2026 8:55 AM
> To: netdev@...r.kernel.org; linux-wireless@...r.kernel.org
> Cc: Johannes Berg <johannes@...solutions.net>; Ethan Nelson-Moore
> <enelsonmoore@...il.com>; stable@...r.kernel.org; Nguyen, Anthony L
> <anthony.l.nguyen@...el.com>; Kitszel, Przemyslaw
> <przemyslaw.kitszel@...el.com>; Andrew Lunn <andrew+netdev@...n.ch>;
> David S. Miller <davem@...emloft.net>; Eric Dumazet
> <edumazet@...gle.com>; Jakub Kicinski <kuba@...nel.org>; Paolo Abeni
> <pabeni@...hat.com>; Stanislav Yakovlev <stas.yakovlev@...il.com>;
> Alice Michael <alice.michael@...el.com>; Loktionov, Aleksandr
> <aleksandr.loktionov@...el.com>
> Subject: [PATCH net-next] net: intel: fix PCI device ID conflict
> between i40e and ipw2200
>
> The ID 8086:104f is matched by both i40e and ipw2200. The same device
> ID should not be in more than one driver, because in that case, which
> driver is used is unpredictable. Fix this by taking advantage of the
> fact that i40e devices use PCI_CLASS_NETWORK_ETHERNET and ipw2200
> devices use PCI_CLASS_NETWORK_OTHER to differentiate the devices.
>
Commit message could be more detailed.
- Why the PCI ID is being reused (if known) Is this actually a reuse after EOL, or is there a misunderstanding? The commit message hand-waves this critical detail.
- Whether this is documented in hardware datasheets
- If there are bug reports of the conflict in the wild
> Fixes: 2e45d3f4677a ("i40e: Add support for X710 B/P & SFP+ cards")
If it's quite critical fix why not to send it to [PATCH net] ?
> Cc: stable@...r.kernel.org
> Signed-off-by: Ethan Nelson-Moore <enelsonmoore@...il.com>
> ---
> drivers/net/ethernet/intel/i40e/i40e_main.c | 8 +++++++-
> drivers/net/wireless/intel/ipw2x00/ipw2200.c | 8 +++++++-
> 2 files changed, 14 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c
> b/drivers/net/ethernet/intel/i40e/i40e_main.c
> index 0b1cc0481027..2c8f449ad659 100644
> --- a/drivers/net/ethernet/intel/i40e/i40e_main.c
> +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
> @@ -75,7 +75,13 @@ static const struct pci_device_id i40e_pci_tbl[] =
> {
> {PCI_VDEVICE(INTEL, I40E_DEV_ID_10G_BASE_T4), 0},
> {PCI_VDEVICE(INTEL, I40E_DEV_ID_10G_BASE_T_BC), 0},
> {PCI_VDEVICE(INTEL, I40E_DEV_ID_10G_SFP), 0},
> - {PCI_VDEVICE(INTEL, I40E_DEV_ID_10G_B), 0},
> + /*
> + * This ID conflicts with ipw2200, but the devices can be
> differentiated
> + * because i40e devices use PCI_CLASS_NETWORK_ETHERNET and
> ipw2200
> + * devices use PCI_CLASS_NETWORK_OTHER.
> + */
> + {PCI_DEVICE(PCI_VENDOR_ID_INTEL, I40E_DEV_ID_10G_B),
> + PCI_CLASS_NETWORK_ETHERNET << 8, 0xffff00, 0},
> {PCI_VDEVICE(INTEL, I40E_DEV_ID_KX_X722), 0},
> {PCI_VDEVICE(INTEL, I40E_DEV_ID_QSFP_X722), 0},
> {PCI_VDEVICE(INTEL, I40E_DEV_ID_SFP_X722), 0}, diff --git
> a/drivers/net/wireless/intel/ipw2x00/ipw2200.c
> b/drivers/net/wireless/intel/ipw2x00/ipw2200.c
> index 09035a77e775..b0e769da9415 100644
> --- a/drivers/net/wireless/intel/ipw2x00/ipw2200.c
> +++ b/drivers/net/wireless/intel/ipw2x00/ipw2200.c
> @@ -11387,7 +11387,13 @@ static const struct pci_device_id card_ids[]
> = {
> {PCI_VENDOR_ID_INTEL, 0x1043, 0x8086, 0x2754, 0, 0, 0},
> {PCI_VENDOR_ID_INTEL, 0x1043, 0x8086, 0x2761, 0, 0, 0},
> {PCI_VENDOR_ID_INTEL, 0x1043, 0x8086, 0x2762, 0, 0, 0},
> - {PCI_VDEVICE(INTEL, 0x104f), 0},
> + /*
> + * This ID conflicts with i40e, but the devices can be
> differentiated
> + * because i40e devices use PCI_CLASS_NETWORK_ETHERNET and
> ipw2200
> + * devices use PCI_CLASS_NETWORK_OTHER.
> + */
> + {PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x104f),
> + PCI_CLASS_NETWORK_OTHER << 8, 0xffff00, 0},
> {PCI_VDEVICE(INTEL, 0x4220), 0}, /* BG */
> {PCI_VDEVICE(INTEL, 0x4221), 0}, /* BG */
> {PCI_VDEVICE(INTEL, 0x4223), 0}, /* ABG */
> --
> 2.43.0
Powered by blists - more mailing lists