Hi everybody,

Inside a X306 IBM server, there are 2 UHCI-like and 1 EHCI USB controlers encapsulated in the Intel's 6300ESB chipset.
An HID-like peripheral is connected during the boot-up of the system.
Kernel is 2.4.26.


Behaviour :
When the peripheral is connected to the front connectors ( bus 2 ), enumeration works fine and the peripheral is claimed by hiddev.
When connected to the rear connectors ( bus 1 ), the set_address process fails, but only if the peripheral is already connected at boot time. If connected after start-up of the system, again, everything works fine.


Tests :
I've put an USB bus analyzer and record the enumeration process.
The set_address has a setup and handshake transactions.

When all works fine, you get :
- setup -> data0 -> ack for the setup transaction and
- in -> data1 -> ack for the handshake transaction. ( See set_address_ok.txt )

When not, you get :
- setup -> data0 for the setup transaction and... that's all folks ! ( See set_address_ko.txt )


As Debug is "on", here is the output :
URB [df5b2710] urbp [df8f71e0]
QH [df9b11e0]


td 0: [df8f6180]

1f8f6154 e0 LS Stalled CRC/Timeo Length=7 MaxLen=7 DT0 EndPt=0 Dev=0, PID=2d(SETUP) (buf=1f5fed40)

td 1: [df8f6150]

00000001 e3 LS IOC Active Length=0 MaxLen=7ff DT1 EndPt=0 Dev=0, PID=69(IN) (buf=00000000)

...endless looped.

It seems that the endpoint never send the ack packet in the setup transaction. That's probably why we get a STALL state. Due to the "e0", this is looped. Is this correct ?

USB spec. says that when the data is corrupted during the setup transaction, the endpoint sends no handshake. Could it be the reason of this behaviour ?

But why only at boot time and only on the rear connectors ?
Has anybody ever been faced with such a behaviour ?

TIA,
Patrick Agrain
********** Transfer Header **********
Transfer Number : 0  
Transfer Type : Control  
Transfer Name : Set Address
Speed : Low-Speed  
Port No : 1  
Device Address : 0  
New Dev. Addr : 2  
********** Transaction Header **********
Transaction Type : SetUp 
Transaction Number : 0  
********** Packet Fields **********
Packet Number    : 0  
PacketType       : SETUP
Start Time       : -000.000 036 20
Duration Time    : 21.167 Micro Second
EOP Duration Time        : 1.433 Micro Second
PID(Bin)                 : 1101
Check(Bin)       : 0010
Dev. Addr(Hex)   : 00
EndP(Bin)                : 0000
CRC5(Bin)                : 01000
********** Packet Fields **********
Packet Number    : 1  
PacketType       : DATA0
Start Time       : 000.000 000 00
Duration Time    : 53.500 Micro Second
EOP Duration Time        : 1.450 Micro Second
PID(Bin)                 : 0011
Check(Bin)       : 1100
Data(Hex)        : 0005020000000000
CRC16(Hex)       : D768
********** Packet Fields **********
Packet Number    : 2  
PacketType       : ACK
Start Time       : 000.000 057 67
Duration Time    : 10.500 Micro Second
EOP Duration Time        : 1.417 Micro Second
PID(Bin)                 : 0010
Check(Bin)       : 1101
********** Transaction Header **********
Transaction Type : In 
Transaction Number : 1  
********** Packet Fields **********
Packet Number    : 3  
PacketType       : TOKEN IN
Start Time       : 000.000 963 27
Duration Time    : 21.167 Micro Second
EOP Duration Time        : 1.467 Micro Second
PID(Bin)                 : 1001
Check(Bin)       : 0110
Dev. Addr(Hex)   : 00
EndP(Bin)                : 0000
CRC5(Bin)                : 01000
********** Packet Fields **********
Packet Number    : 4  
PacketType       : DATA1
Start Time       : 000.000 988 47
Duration Time    : 21.167 Micro Second
EOP Duration Time        : 1.417 Micro Second
PID(Bin)                 : 1011
Check(Bin)       : 0100
Data(Hex)        : 
CRC16(Hex)       : 0000
********** Packet Fields **********
Packet Number    : 5  
PacketType       : ACK
Start Time       : 000.001 015 93
Duration Time    : 10.500 Micro Second
EOP Duration Time        : 1.367 Micro Second
PID(Bin)                 : 0010
Check(Bin)       : 1101
********** Transfer Header **********
Transfer Number : 0  
Transfer Type : Control  
Transfer Name : Set Address
Speed : Low-Speed  
Port No : 1  
Device Address : 0  
New Dev. Addr : 2  
********** Transaction Header **********
Transaction Type : SetUp 
Transaction Number : 0  
********** Packet Fields **********
Packet Number    : 0  
PacketType       : SETUP
Start Time       : -000.000 036 20
Duration Time    : 21.167 Micro Second
EOP Duration Time        : 1.400 Micro Second
PID(Bin)                 : 1101
Check(Bin)       : 0010
Dev. Addr(Hex)   : 00
EndP(Bin)                : 0000
CRC5(Bin)                : 01000
********** Packet Fields **********
Packet Number    : 1  
PacketType       : DATA0
Start Time       : 000.000 000 00
Duration Time    : 53.500 Micro Second
EOP Duration Time        : 1.417 Micro Second
PID(Bin)                 : 0011
Check(Bin)       : 1100
Data(Hex)        : 0005020000000000
CRC16(Hex)       : D768

Reply via email to