DM USB: xHCI: add 'chained' field in struct usb_data_xfer_block

The chained field could help to describe the relationship of USB
data blocks.

Tracked-On: #3054
Signed-off-by: Xiaoguang Wu <xiaoguang.wu@intel.com>
Acked-by: Yu Wang <yu1.wang@intel.com>
This commit is contained in:
Xiaoguang Wu 2019-04-29 10:41:22 +08:00 committed by ACRN System Integration
parent f2e35ab701
commit adaed5c0e3
3 changed files with 5 additions and 0 deletions

View File

@ -2875,6 +2875,9 @@ retry:
XHCI_GADDR(xdev, trb->qwTrb0)),
trb->dwTrb2 & 0x1FFFF, (void *)addr,
ccs);
if (trb->dwTrb3 & XHCI_TRB_3_CHAIN_BIT)
xfer_block->chained = 1;
break;
case XHCI_TRB_TYPE_STATUS_STAGE:

View File

@ -117,6 +117,7 @@ usb_data_xfer_append(struct usb_data_xfer *xfer, void *buf, int blen,
xb->ccs = ccs;
xb->processed = USB_XFER_BLK_FREE;
xb->bdone = 0;
xb->chained = 0;
xfer->ndata++;
xfer->tail = (xfer->tail + 1) % USB_MAX_XFER_BLOCKS;
return xb;

View File

@ -155,6 +155,7 @@ struct usb_data_xfer_block {
enum usb_xfer_blk_stat processed; /* processed status */
void *hci_data; /* HCI private reference */
int ccs;
int chained;
uint32_t streamid;
uint64_t trbnext; /* next TRB guest address */
};