Re: [PATCH v5 07/16] usb: core: Move struct usb_port and related APIs to port.h
From: Andy Shevchenko
Date: Wed Jul 15 2026 - 05:36:36 EST
On Wed, Jul 15, 2026 at 04:53:37PM +0800, Chen-Yu Tsai wrote:
> |struct usb_port| and its matching container_of() macro should live in
> its own port.h, matching the split we have for .c files.
>
> Move them as described. Also move usb_port_is_power_on(), since in the
> next change its |struct usb_hub *| parameter will be changed to
> |struct usb_port *|, and becomes a non-static function that only
> references |struct usb_port|.
>
> port.h is only included from hub.h, as a subsequent patch will directly
> use fields from |struct usb_port| in a static inline helper in hub.h.
> The USB internal headers don't have header guards to help with this.
>
> Also drop 'extern' from the header declaration of usb_port_is_power_on().
> This is not needed in modern C.
...
> +struct usb_port {
> + struct usb_device *child;
> + struct device dev;
> + struct usb_dev_state *port_owner;
> + struct usb_port *peer;
> + struct typec_connector *connector;
> + struct dev_pm_qos_request *req;
> + enum usb_port_connect_type connect_type;
> + enum usb_device_state state;
> + struct kernfs_node *state_kn;
> + usb_port_location_t location;
> + struct mutex status_lock;
> + u32 over_current_count;
> + u8 portnum;
> + u32 quirks;
> + unsigned int early_stop:1;
> + unsigned int ignore_event:1;
> + unsigned int is_superspeed:1;
> + unsigned int usb3_lpm_u1_permit:1;
> + unsigned int usb3_lpm_u2_permit:1;
> +};
A side note for the future development (no need to change anything here
right now). It might be that the layout is suboptimal and `pahole` might
propose a better one.
--
With Best Regards,
Andy Shevchenko