Wednesday, January 4, 2012

Belcarra EEM Configuration Extension Descriptor

The CDC-EEM protocol is capable of aggregating multiple network datagrams into a single Bulk Data transfer.

The standard does not implement a mechanism to allow the host and device to determine an appropriate size for Bulk transfers. While implementing EEM without this information is possible, it complicates the implementation. If the Host and Device know what the capabilities of the other end are (WRT to transfer size especially) then the driver implementations can be significantly simpler and easier to implement.

This has led to many implementations only allowing for a maximum of 1536 byte transfers (based on Ethernet MTU of 1510 bytes.) and a single datagram per transfer. Other implementations require administrative configuration to configure one or more of the operating parameters.

The result is that the only safe configuration that can support unknown hosts or devices is:
  •  CRC - disabled
  •  bMaxDatagrams - 1
  •  bMaxTransferSize - 1536
This extension described herein can be used by an EEM Class driver on the host to send configuration data to the device and receive configuration data from the device. The EEM Configuration Extension Descriptor is sent to the device as Echo Data command data.

If the device is non-conforming (does not support this extension), it will either ignore or send the command back unchanged (specifically the D0 flag of the bmFlags field will remain reset.) In this case the host will continue to use the default configuration.

Conforming devices will send the command back, but will fill in the configuration fields. If the device receives this command it can assume that the host will use the information to operate with. Otherwise they will operate with the default configuration. Conforming devices MUST SET the D0 bit of the bmFlags field to indicate that they have recognized this configuration request and are responding with valid values.

Wednesday, October 19, 2011

Multiple Frame Support

Networking over USB protocols can support network frame aggregation. This allows for multiple network frames to be transferred in a single Bulk Data transfer.

USB Bulk Data transfers have overheads. Both at the bus level where individual transfers must be terminated with a short data packet. And at the OS level where the USB controller drivers must setup and tear down each transfer. And finally in the communication between the protocol driver (class driver on host systems and matching function driver on devices) and the low level controller drivers. These add latency to the time it takes for each transfer to take place.

Aggregating multiple network frames into a single Bulk Data transfer allows the overheads and associated latencies to be absorbed across multiple network frames.

Care must be taken in the use of this feature though. Additional latency is induced as the entire Bulk Transfer must be received before any of the network frames it contains can be forwarded. This places a bound on effective number of frames that should be aggregated. The actual number is best determined by using simple heuristics at runtime to ensure that the use of available bandwidth is optimized with only minimal latency added.

Effective multi-frame support can provide close to 100% improvement in throughput.

Wednesday, August 31, 2011

Evaluation Version 2.4 USBLAN from Windows Update

The new version of Belcarra's USB Class Driver for Windows is available through the Microsoft DDC.  To use the USBLAN 2.4 evaluation driver your device will need to offer Vendor ID 0x15ec (Belcarra) and our Demo Product ID 0xd021. Ensure that your Windows system is connected to the Internet, plug your device in and let Windows search Windows Update.  The protocol (CDC-ECM, CDC-EEM, CDC-NCM) is automatically detected.

The INF file of the USBLAN evaluation driver creates global variables in the registry using Service name BelcarraDemoUSBLAN6 (see Section 5.2). These parameters can be modified later using Regedit. Alternatively, common operations, like enable or disable DHCP, can be performed by installing the appropriately named INF file in a supplementary package of INF files (available on request). For example, to enable the DHCP feature do the following
right-click on the file dhcpd-enable.inf in Windows Explorer
select the method Install
N.B. the evaluation USBLAN driver is not the debug version of the driver. If you need to debug your USB device contact support@belcarra.com for a debug (CHK) version of the evaluation driver.

This evaluation version will run for one hour at a time. It must be re-plugged to continue use after one hour.

Thursday, April 7, 2011

USB TestDrive Windows Setup

This document is part of series about Belcarra’s USB Testdrive, a quick and easy system for setting up and testing USB solutions between a Windows host and a Gumstix Overo.

The TestDrive system can be used to test and evaluate various USB networking solutions. This document describes
  • How to prepare a Windows test machine
  • How to obtain Belcarra’s USBLAN Windows driver which transparently supports CDC-ECM, CDC-EEM, CDC-NCM.
  • How to run definitive tests to determine reliability, endurance and speed of network links, using industry standard tools.
A USB system consists of a host and one or more peripherals, also known as targets. The TestDrive system uses Windows (all recent versions) as the host environment, and the Gumstix Overo as the target.

Windows Setup and Testing

Favourites