The FX3 (Device on USB 2.0 connection) begins the transition to the Suspend state after it sees a constant Idle state on its upstream facing bus lines for more than 3.0 ms. The device will actually be suspended, drawing only suspend current from the bus after 10 ms of bus inactivity on all its ports.
By default, the USB 3.0 link usually goes to U1 (low-power) state after some period of inactivity. I believe this is at the request of the host and governed by its PORT_U1_TIMEOUT value; see Figure 10-10 of the USB 3.0 specification.
We ran into problems because of this - some short Bulk-Only Mass Storage transactions to our device would time out because the host would never be informed of the STALL condition that the device tried to set on the pipe (because the link had gone into U1). We ended up using CyU3PUsbLPMDisable() / CyU3PUsbLPMEnable() to control when the FX3 would accept a transition to U1. In writing this post I see that we could also have used CyU3PUsbRegisterLPMRequestCallback() to register an application routine that would accept or deny the request.
In USB3.0 the host orders the device to enter suspend-state. If the host sends a LinkCommand LGO_U3 the device has to enter the suspend-state.