Re: [PATCH net-next] net: Consistently define pci_device_ids using named initializers
From: Uwe Kleine-König (The Capable Hub)
Date: Thu Apr 30 2026 - 09:13:54 EST
Hello,
On Thu, Apr 30, 2026 at 02:53:29PM +0800, Jijie Shao wrote:
> on 2026/4/29 1:18, Uwe Kleine-König (The Capable Hub) wrote:
> > ... and PCI device helpers.
> >
> > The various struct pci_device_id arrays were initialized mostly by one
> > the PCI_DEVICE macros and then list expressions. The latter isn't easily
> > readable if you're not into PCI. Using named initializers is more
> > explicit and thus easier to parse.
> >
> > Also use PCI_DEVICE* helper macros to assign .vendor, .device,
> > .subvendor and .subdevice where appropriate and skip explicit
> > assignments of 0 (which the compiler takes care of).
> >
> > The secret plan is to make struct pci_device_id::driver_data an
> > anonymous union (similar to
> > https://lore.kernel.org/all/cover.1776579304.git.u.kleine-koenig@xxxxxxxxxxxx/)
> > and that requires named initializers. But it's also a nice cleanup on
> > its own.
> >
> > This change doesn't introduce changes to the compiled pci_device_id
> > arrays. Tested on x86 and arm64.
> >
> > Signed-off-by: Uwe Kleine-König (The Capable Hub) <u.kleine-koenig@xxxxxxxxxxxx>
>
> ...
>
> > diff --git a/drivers/net/ethernet/hisilicon/hibmcge/hbg_main.c b/drivers/net/ethernet/hisilicon/hibmcge/hbg_main.c
> > index 068da2fd1fea..b3e01b2f8319 100644
> > --- a/drivers/net/ethernet/hisilicon/hibmcge/hbg_main.c
> > +++ b/drivers/net/ethernet/hisilicon/hibmcge/hbg_main.c
> > @@ -489,7 +489,7 @@ static void hbg_shutdown(struct pci_dev *pdev)
> > }
> > static const struct pci_device_id hbg_pci_tbl[] = {
> > - {PCI_VDEVICE(HUAWEI, 0x3730), 0},
> > + { PCI_VDEVICE(HUAWEI, 0x3730) },
> > { }
> > };
>
> Reviewed-by: Jijie Shao <shaojijie@xxxxxxxxxx>
Thanks.
> > + {
> > + PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_GE),
> > + .driver_data = 0,
> > + }, {
> > + PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_25GE),
> > + .driver_data = 0,
>
> Thanks for your work.
>
> If .driver_data = 0, is it possible to delete it to be consistent with other parts, for example:
>
> { PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_GE) }
>
> > + }, {
> > + PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_25GE_RDMA),
> > + .driver_data = HNAE3_DEV_SUPPORT_ROCE_DCB_BITS,
However keeping the explicit .driver_data = 0 to have a contrast to
other `pci_device_id`s having a non-zero .driver_data in the same driver
is also a good reason to keep the (technically redundant) assignment.
For other drivers I dropped these assignments if this is possible for
all array members.
Having said that I don't intend to rework the patch for this suggestion.
Best regards
Uwe
Attachment:
signature.asc
Description: PGP signature