I'm reading Linux 2.6.21.5 ether.c very carefully trying to understand how 
it works (I want to integrate it with the PXA270 StrongARM XScale 
processor). I find many puzzling things about it.

In ether.c are the arrays fs_eth_function[] and hs_eth_function[] just 
there for testing purposes? Their presence continues to make no sense to 
me. See, for example, the lines which refer to fs_eth_function: 
http://lxr.linux.no/ident?i=fs_eth_function where it only ever gets set 
and never gets read.

The initialization of mdlm_desc appears to have come in with the 2.6.21 
kernel to support MDLM SAFE mode. The mdlm_desc struct only gets used to 
initialize poitners in the array fs_eth_function[] and hs_eth_function[] 
which both do not get used. So how was the addition of mdlm_desc necessary 
for MDLM SAFE support?

Various descriptors get initialized into fs_eth_function[] and 
hs_eth_function[]. Only 3 of those descriptors (all of type 
usb_endpoint_descriptor) really get used and they get used by getting 
passed to usb_ep_autoconfig: 
    fs_source_desc
    fs_sink_desc
    fs_status_desc

So then does the Ethernet Gadget uses only 3 endpoints regardless of 
whether it is doing full CDC Ethernet, CDC Subset, CDC Subset/MDLM/SAFE, 
or RNDIS? That's the way it looks to me.

Their high speed equivalents (the only other structs in ether.c of type 
usb_endpoint_descriptor)  are effectively unused:
    hs_source_desc
    hs_sink_desc
    hs_status_desc

Among the other effectively unused descriptor structs (they are only put 
in the unused  fs_eth_function[] and hs_eth_function[] arrays):
   subset_data_intf
   header_desc
   mdlm_desc
   mdlm_detail_desc
   ether_desc

Those mdlm_desc and mdlm_detail_desc fields were added for 2.6.21 to 
support MDLM/SAFE. But they are NOT used.

Similarly, the fs_subset_descriptors() and hs_subset_descriptors() 
functions seem worthless because they set entries in the unused 
fs_eth_function[] and hs_eth_function[] arrays.

Hey, I want to use this to do MDLM/SAFE with a Windows PC host. But for 
MDLM/SAFE is this ether.c a partial implementation or a working 
implementation that has pieces that aren't used?


Randall Parker
Vetronix 
Santa Barbara CA, USA
805-966-2000 x3141

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to