Message ID | 1d818575ff7a1e8317674aecf761ee23c89fdc84.1714815990.git.christophe.jaillet@wanadoo.fr (mailing list archive) |
---|---|
State | Accepted |
Commit | 562be61b35d911a8b45acc3dcf8642876dbb66dd |
Headers | show |
Series | usb: core: Remove the useless struct usb_devmap which is just a bitmap | expand |
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@wanadoo.fr> > --- > 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@rowland.harvard.edu> > 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 > >
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 */
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@wanadoo.fr> --- 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. --- drivers/usb/core/hcd.c | 4 ++-- drivers/usb/core/hub.c | 9 ++++----- include/linux/usb.h | 7 +------ 3 files changed, 7 insertions(+), 13 deletions(-)