Standard USB Identifiers

My Wireless USB Adapter reports: bDeviceClass=0xFE bDeviceSubClass=0x01,
bInterfaceClass=0xFF bInterfaceSubClass=0x00

And its compatible ID is USB\Class_FE&SubClass_01

My SigmaTel IrDA Dongle reports: bDeviceClass=0xFF bDeviceSubClass=0x01,
bInterfaceClass=0x00 bInterfaceSubClass=0x00

And its compatible ID is USB\Class_00&SubClass_00

My IEEE802.11b Wireless USB Adapter reports: bDeviceClass=0xFF
bDeviceSubClass=0xFF, bInterfaceClass=0xFF bInterfaceSubClass=0x00

And its compatible ID is USB\Class_FF&SubClass_00

So we have here one device that uses the device descriptor data in the
compatible ID and two that use the interface descriptor data

According to http://www.usb.org/developers/defined_class :

  1. Device Descriptor bDeviceClass value of 0x00 indicates that the
    class information is at interface level.

  2. Device Descriptor bDeviceClass value of 0xFF indicates that the
    class is vendor specific.

  3. Device Descriptor bDeviceClass value of 0xFE is not defined.

  4. Interface Descriptor bInterfaceClass value of 0x00 is not defined.

  5. Interface Descriptor bInterfaceClass value of 0xFE and
    bInterfaceSubClass value of 0x02 indicated that the device is an IrDA
    bridge.

So my questions are:

  1. Does Device Descriptor bDeviceClass value of 0xFF also indicates
    that the class information is at interface level (like 0x00)? Because this
    is the behavior I see in my devices.

  2. Why do my SigmaTel IrDA Dongle and Wireless USB Adapter use
    undefined classes?

  3. Why doesn’t my SigmaTel IrDA Dongle report Interface Descriptor
    bInterfaceClass value of 0xFE and bInterfaceSubClass value of 0x02 like it
    should?

  4. Why doesn’t http://www.usb.org/developers/defined_class define a
    class for networking?

Thanks,

Shahar