[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <IA3PR11MB89865E1E74976F87328ACD4CE562A@IA3PR11MB8986.namprd11.prod.outlook.com>
Date: Tue, 10 Feb 2026 07:11:54 +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: "stable@...r.kernel.org" <stable@...r.kernel.org>, Johannes Berg
<johannes@...solutions.net>, "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 v2] net: intel: fix PCI device ID conflict between i40e
and ipw2200
> -----Original Message-----
> From: Ethan Nelson-Moore <enelsonmoore@...il.com>
> Sent: Tuesday, February 10, 2026 3:13 AM
> To: netdev@...r.kernel.org; linux-wireless@...r.kernel.org
> Cc: Ethan Nelson-Moore <enelsonmoore@...il.com>;
> stable@...r.kernel.org; Johannes Berg <johannes@...solutions.net>;
> 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>;
> Loktionov, Aleksandr <aleksandr.loktionov@...el.com>; Alice Michael
> <alice.michael@...el.com>
> Subject: [PATCH v2] 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.
>
> Fixes: 2e45d3f4677a ("i40e: Add support for X710 B/P & SFP+ cards")
> Cc: stable@...r.kernel.org
> Acked-by: Johannes Berg <johannes@...solutions.net>
> Signed-off-by: Ethan Nelson-Moore <enelsonmoore@...il.com>
> ---
> Changes from v1:
> Rebase on latest mainline instead of net-next
>
> 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 d3bc3207054f..02de186dcc8f 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
Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@...el.com>
Powered by blists - more mailing lists