There are the following functions to handle USB transfer requests at USB host controller driver side if it is using the level 2:
Compared with level 1 level 2 has been designed to generate a sequence of USB transactions within a single frame. An USB host controller driver may use this level but it can also implement a similar functionality in an own way. This way can be choosen if the USB-System has a separate mircoprocessor which is able to calculate the sequences internally and will not use any host CPU capacity therefore. However it will need informations about the transactions and the data buffers. It therefore can use layer 1 directly.
In all other cases it would be much simpler to write an USB host controller driver if using level 2 for communication. In fact level 2 is getting the transactions from level 1 and queueing them. It is also generating the missing USB PIDs and splitting up a long transfer into several small ones maximal containing data payload size bytes with buffer information. It will also keep an eye on data toggle and retransfer if data is transferred damaged over the bus.
This chapter is not finished yet.