Hi Jan, thanks for the reply!
AHA! I Google'd 'usb hub "Get Port Status"' and was able to see a preview of a previous version of the book (I have the fourth edition), which includes a chapter 15 (pp 444-5), that is a little more specific. Using the fourth edition, your reply, and the content from the prior edition, I think I've pieced it together.
So, when a hub or PC turns on, all ports are in the 'powered' state, but they are not connected to the bus.
The host controller polls each hub with a "Get Hub Status" request. If there's a change in one of the ports due to a device attachment, the hub will indicate the change in the data stage response. Then the host will issue a Get Port Status to the hub to learn that a device was attached, then continues with the enumeration process as described in the book (determine low/full speed, reset port, high speed check, set max packet size, set device address, then configure...)
Is that right?
I guess the port is polled with a "Get Hub Status" every xx milliseconds to detect these device attachments / detachments? Given that there can be a number of hubs, this suggests a fair number of "Get Hub Status" polling requests.