Hi Bin

On Tuesday, November 10, 2020 5:55 PM, Ran Wang wrote:
> 
> Hi Bin,
> 

<snip>

> > > record_transfer_result():comp_code: 1 csw org 00000000fbb4ec90,
> > > adjusted to 00000000fbb4fffe
> > > record_transfer_result():comp_code: 1
> > > record_transfer_result():comp_code: 1
> > > record_transfer_result():comp_code: 1 csw org 00000000fbb4ec90,
> > > adjusted to 00000000fbb4fffe
> > > record_transfer_result():comp_code: 1
> > > record_transfer_result():comp_code: 1
> > > record_transfer_result():comp_code: 1 csw org 00000000fbb4ec90,
> > > adjusted to 00000000fbb4fffe
> > > record_transfer_result():comp_code: 1
> > > record_transfer_result():comp_code: 1
> > > record_transfer_result():comp_code: 1
> >
> > In the earlier log you sent, you have the following:
> >
> > dev=00000000fbb4f3c0, pipe=c0010283, buffer=00000000fbb4fd80,
> > length=2048----------------------------buffer would cross 64KB
> > boundary, so we will send request in more than 1 TRB, this is the key
> > issue trigger condition
> > xhci_bulk_tx()#0.1.running_total:0x280
> > xhci_bulk_tx()#0.2.trb_buff_len:0x280
> > xhci_bulk_tx()#0.3.running_total:0x280
> > xhci_bulk_tx()#0.4.num_trbs:0x2--------------------------2 Transfer
> > TRB
> > xhci_bulk_tx()#0.5.running_total:0x10280
> > xhci_bulk_tx()#0.start_trb:0x00000000fbb47140
> > ----------xhci_bulk_tx()#0.&ring->enqueue->generic:0x00000000fbb47140-
> > --------
> > -Assemble
> > 1st Transfer TRB
> > xhci_bulk_tx()#0.addr:0xfbb4fd80
> > xhci_bulk_tx()#0.trb_buff_len:0x280
> > xhci_bulk_tx()#0.running_total:0x280
> > xhci_bulk_tx()#0.length:0x800
> > xhci_bulk_tx()#0.TRB_MAX_BUFF_SIZE:0x10000
> > ----------xhci_bulk_tx()#0.&ring->enqueue->generic:0x00000000fbb47150-
> > --------
> > -Assemble
> > 2nd Transfer TRB
> > xhci_bulk_tx()#0.addr:0xfbb50000
> > xhci_bulk_tx()#0.trb_buff_len:0x580
> > xhci_bulk_tx()#0.running_total:0x800
> > xhci_bulk_tx()#0.length:0x800
> > xhci_bulk_tx()#0.TRB_MAX_BUFF_SIZE:0x10000
> >
> > Could you please specify where this output is for?
> 
> All this prints is within function xhci_bulk_tx(),
> 
> Let me open those verbose output and check if that crossing 64KB case has been
> triggered or not.
> But I have to get back to you later (tomorrow).

With your test commit and my verbose print code, issue cannot be reproduced in 
mass storage usage
(although crossing 64KB boundary condition has met), so looks like the only 
different to ethernet device
is that if xHC would receive short packet:

=> pri t
t=usb read 0x82000000 0 300000
=> run t

usb read: device 0 block # 0, count 3145728 ... 
usb_stor_BBB_transport()csw org 00000000fbb4ac90, adjusted to 00000000fbb4fffe
xhci_bulk_tx()dev=00000000fbb49950, pipe=c0010203, buffer=00000000fbb1a9c0, 
length=0x1f
xhci_bulk_tx()#0.4.num_trbs:0x1
++++++++++++xhci_bulk_tx()#0.&ring->enqueue->generic:0x00000000fbb49570
xhci_bulk_tx()#0.last_transfer_trb_addr:0x00000000fbb49570
--------------xhci_bulk_tx()#0.event->trans_event.buffer:0x00000000fbb49570
xhci_bulk_tx()#0.event->complete_code:1
xhci_bulk_tx()#3.ep_index:0x3
xhci_bulk_tx()dev=00000000fbb49950, pipe=c0008283, buffer=00000000fbb1ab00, 
length=0x200
xhci_bulk_tx()#0.4.num_trbs:0x1
xhci_bulk_tx()#set TRB_ISP------------------------------------ 
++++++++++++xhci_bulk_tx()#0.&ring->enqueue->generic:0x00000000fbb49180
xhci_bulk_tx()#0.last_transfer_trb_addr:0x00000000fbb49180
--------------xhci_bulk_tx()#0.event->trans_event.buffer:0x00000000fbb49180
xhci_bulk_tx()#0.event->complete_code:1
xhci_bulk_tx()#3.ep_index:0x2
xhci_bulk_tx()dev=00000000fbb49950, pipe=c0008283, buffer=00000000fbb4fffe, 
length=0xd-----------------buffer cross 64KB boundary
xhci_bulk_tx()#0.4.num_trbs:0x2
xhci_bulk_tx()#set 
TRB_ISP---------------------------------------------------------------------------------------Set
 ISP
++++++++++++xhci_bulk_tx()#0.&ring->enqueue->generic:0x00000000fbb49190----------------1st
 transfer TRB queued
xhci_bulk_tx()#0.last_transfer_trb_addr:0x00000000fbb49190
xhci_bulk_tx()#set 
TRB_ISP---------------------------------------------------------------------------------------Set
 ISP
++++++++++++xhci_bulk_tx()#0.&ring->enqueue->generic:0x00000000fbb491a0----------------2nd
 transfer TRB queued
xhci_bulk_tx()#0.last_transfer_trb_addr:0x00000000fbb491a0
--------------xhci_bulk_tx()#0.event->trans_event.buffer:0x00000000fbb491a0---------------------event
 TRB that pointing to 2nd transfer TRB
xhci_bulk_tx()#0.event->complete_code:1-----------------------------------------------------------------not
 short packet
xhci_bulk_tx()#3.ep_index:0x2
num_trbs_count > 1!!!!!!!!!
...
usb_stor_BBB_transport()csw org 00000000fbb4aea0, adjusted to 00000000fbb4fffe
xhci_bulk_tx()dev=00000000fbb49950, pipe=c0010203, buffer=00000000fbb1ad00, 
length=0x1f
xhci_bulk_tx()#0.4.num_trbs:0x1
++++++++++++xhci_bulk_tx()#0.&ring->enqueue->generic:0x00000000fbb49790
xhci_bulk_tx()#0.last_transfer_trb_addr:0x00000000fbb49790
--------------xhci_bulk_tx()#0.event->trans_event.buffer:0x00000000fbb49790
xhci_bulk_tx()#0.event->complete_code:1
xhci_bulk_tx()#3.ep_index:0x3
xhci_bulk_tx()dev=00000000fbb49950, pipe=c0008283, buffer=00000000883d8000, 
length=0x1e000-----------------buffer cross 64KB boundary
xhci_bulk_tx()#0.4.num_trbs:0x3
xhci_bulk_tx()#set 
TRB_ISP---------------------------------------------------------------------------------------Set
 ISP
++++++++++++xhci_bulk_tx()#0.&ring->enqueue->generic:0x00000000fbb492a0----------------1st
 transfer TRB queued
xhci_bulk_tx()#0.last_transfer_trb_addr:0x00000000fbb492a0
xhci_bulk_tx()#set 
TRB_ISP---------------------------------------------------------------------------------------Set
 ISP
++++++++++++xhci_bulk_tx()#0.&ring->enqueue->generic:0x00000000fbb492b0----------------2nd
 transfer TRB queued
xhci_bulk_tx()#0.last_transfer_trb_addr:0x00000000fbb492b0
xhci_bulk_tx()#set 
TRB_ISP---------------------------------------------------------------------------------------Set
 ISP
++++++++++++xhci_bulk_tx()#0.&ring->enqueue->generic:0x00000000fbb492c0----------------3rd
 transfer TRB queued
xhci_bulk_tx()#0.last_transfer_trb_addr:0x00000000fbb492c0
--------------xhci_bulk_tx()#0.event->trans_event.buffer:0x00000000fbb492c0---------------------event
 TRB that pointing to 3rd transfer TRB
xhci_bulk_tx()#0.event->complete_code:1-----------------------------------------------------------------not
 short packet
xhci_bulk_tx()#3.ep_index:0x2
num_trbs_count > 1!!!!!!!!!
xhci_bulk_tx()dev=00000000fbb49950, pipe=c0008283, buffer=00000000fbb4fffe, 
length=0xd
xhci_bulk_tx()#0.4.num_trbs:0x2
xhci_bulk_tx()#set 
TRB_ISP---------------------------------------------------------------------------------------Set
 ISP
++++++++++++xhci_bulk_tx()#0.&ring->enqueue->generic:0x00000000fbb492d0
xhci_bulk_tx()#0.last_transfer_trb_addr:0x00000000fbb492d0
xhci_bulk_tx()#set 
TRB_ISP---------------------------------------------------------------------------------------Set
 ISP
++++++++++++xhci_bulk_tx()#0.&ring->enqueue->generic:0x00000000fbb492e0
xhci_bulk_tx()#0.last_transfer_trb_addr:0x00000000fbb492e0
--------------xhci_bulk_tx()#0.event->trans_event.buffer:0x00000000fbb492e0
xhci_bulk_tx()#0.event->complete_code:1
xhci_bulk_tx()#3.ep_index:0x2
num_trbs_count > 1!!!!!!!!!

Regards
Ran

Reply via email to