On Sat, May 04, 2024 at 11:47:05AM +0200, Christophe JAILLET wrote: > struct usb_devmap is really just a bitmap. No need to have a dedicated > structure for that. > > Simplify code and use DECLARE_BITMAP() directly instead. > > Signed-off-by: Christophe JAILLET <christophe.jaillet@xxxxxxxxxx> > --- > Compile tested only. > > I've re-used the comment related to struct usb_devmap for the devmap field > in struct usb_bus, because it sounds better to me. > --- Acked-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> > drivers/usb/core/hcd.c | 4 ++-- > drivers/usb/core/hub.c | 9 ++++----- > include/linux/usb.h | 7 +------ > 3 files changed, 7 insertions(+), 13 deletions(-) > > diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c > index c0e005670d67..e3366f4d82b9 100644 > --- a/drivers/usb/core/hcd.c > +++ b/drivers/usb/core/hcd.c > @@ -866,7 +866,7 @@ static int usb_rh_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status) > */ > static void usb_bus_init (struct usb_bus *bus) > { > - memset (&bus->devmap, 0, sizeof(struct usb_devmap)); > + memset(&bus->devmap, 0, sizeof(bus->devmap)); > > bus->devnum_next = 1; > > @@ -962,7 +962,7 @@ static int register_root_hub(struct usb_hcd *hcd) > > usb_dev->devnum = devnum; > usb_dev->bus->devnum_next = devnum + 1; > - set_bit (devnum, usb_dev->bus->devmap.devicemap); > + set_bit(devnum, usb_dev->bus->devmap); > usb_set_device_state(usb_dev, USB_STATE_ADDRESS); > > mutex_lock(&usb_bus_idr_lock); > diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c > index 8939f1410644..4b93c0bd1d4b 100644 > --- a/drivers/usb/core/hub.c > +++ b/drivers/usb/core/hub.c > @@ -2207,13 +2207,12 @@ static void choose_devnum(struct usb_device *udev) > mutex_lock(&bus->devnum_next_mutex); > > /* Try to allocate the next devnum beginning at bus->devnum_next. */ > - devnum = find_next_zero_bit(bus->devmap.devicemap, 128, > - bus->devnum_next); > + devnum = find_next_zero_bit(bus->devmap, 128, bus->devnum_next); > if (devnum >= 128) > - devnum = find_next_zero_bit(bus->devmap.devicemap, 128, 1); > + devnum = find_next_zero_bit(bus->devmap, 128, 1); > bus->devnum_next = (devnum >= 127 ? 1 : devnum + 1); > if (devnum < 128) { > - set_bit(devnum, bus->devmap.devicemap); > + set_bit(devnum, bus->devmap); > udev->devnum = devnum; > } > mutex_unlock(&bus->devnum_next_mutex); > @@ -2222,7 +2221,7 @@ static void choose_devnum(struct usb_device *udev) > static void release_devnum(struct usb_device *udev) > { > if (udev->devnum > 0) { > - clear_bit(udev->devnum, udev->bus->devmap.devicemap); > + clear_bit(udev->devnum, udev->bus->devmap); > udev->devnum = -1; > } > } > diff --git a/include/linux/usb.h b/include/linux/usb.h > index 9e52179872a5..1913a13833f2 100644 > --- a/include/linux/usb.h > +++ b/include/linux/usb.h > @@ -440,11 +440,6 @@ int __usb_get_extra_descriptor(char *buffer, unsigned size, > > /* ----------------------------------------------------------------------- */ > > -/* USB device number allocation bitmap */ > -struct usb_devmap { > - unsigned long devicemap[128 / (8*sizeof(unsigned long))]; > -}; > - > /* > * Allocated per bus (tree of devices) we have: > */ > @@ -472,7 +467,7 @@ struct usb_bus { > * round-robin allocation */ > struct mutex devnum_next_mutex; /* devnum_next mutex */ > > - struct usb_devmap devmap; /* device address allocation map */ > + DECLARE_BITMAP(devmap, 128); /* USB device number allocation bitmap */ > struct usb_device *root_hub; /* Root hub */ > struct usb_bus *hs_companion; /* Companion EHCI bus, if any */ > > -- > 2.45.0 > >