USB client controller driver, two gadget drivers of file-backed storage and CDC-EEM/RNDIS will be provided to end-user. File-backed storage gadget provides the host with an access to disk image on the client platform. CDC-EEM/RNDIS gadget makes the client platform appear as a network adapter from the host stand point. Both Windows and Linux host system are supported.
API Framework
The design is based on Linux USB gadget API framework. The peripheral controller driver implements the following functions according to Poulsbo USB client controller hardware:
Initialize/de-initialize the PCI resources (memory, interrupt and DMA)
Handle the USB device enumeration and USB bus events
Transmit the data packets through USB endpoints
Call back the upper level USB client device driver whenever necessary
Mass storage gadget driver follows the protocol USB Mass Storage Bulk-Only Transport. It handles SCSI commands from host and USB requests bypassed from controller for device/config/interface descriptor setting. CDC-EEM/RNDIS gadget driver follows Microsoft Remote NDIS Specification. It is responsible for the following operations:
Provide the media state information to the host network stack by answering the RNDIS messages
Works as an Ethernet interface device from remote host stand point of view, transmit the encapsulated 802.3 frames between host and the simulated Ethernet network in the format of the RNDIS messages
Monitor the USB bus events including connect, disconnect, suspend, resume, reset, and remote wakeup, and translate those events to corresponding actions to the Showwell NDIS stack
Communicate through the PCI Network Interface, which provides the network adapter instance to the upper network stack on the client side OS
Utility provides end-user an easy way to use exposed device by gadget drivers. It will use samba service to mount shared image file and DHCP to set IP address.