Table of Contents

Balaji Rao: Project Plan, USB Support

Project Plan

Summary

This project will enable gPXE to use USB Ethernet Adapters. This includes,

Outline

Adding USB support to gPXE mainly has two parts.

USB Protocol support

USB protocol support involves adding routines to create communication structures as defined by the protocol specification. Device drivers for actual USB devices shall use these routines to communicate with their devices. The USB protocol layer also handles USB device configuration which involves assigning addresses to devices and preparing them for use.

USB Host controller support

An USB host controller is a device, mostly available as a PCI card which talks to USB devices connected to it using instructions from the USB protocol layer. Two commonly used variants of USB Host Controllers exist. They are UHCI (Universal Host Controller Interface) supporting Full Speed (12Mbps) and Low Speed (1.5 Mbps) devices and EHCI (Enhanced Host Controller Interface) in addition to Full Speed and Low Speed devices, supports devices operating at 480 Mbps, called High Speed devices.

Device Driver for a USB NIC

I propose to follow the Linux Kernel model here - to split the device driver into a generic driver and a device specific mini driver.

UCHI controller support will be done first. EHCI support is seen as a later (stretch ?) goal.

Milestones

Timeline

Here's a rough timeline.

Week 1, 2

Week 3, 4

Week 5 & 6

Week 7, 8 & 9

Week 10 and hence