diff options
Diffstat (limited to 'drivers/firewire/ohci.c')
| -rw-r--r-- | drivers/firewire/ohci.c | 13 | 
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c index 2345d4103fe..43ebf337b13 100644 --- a/drivers/firewire/ohci.c +++ b/drivers/firewire/ohci.c @@ -2101,11 +2101,6 @@ static int ohci_queue_iso_transmit(struct fw_iso_context *base,  	u32 payload_index, payload_end_index, next_page_index;  	int page, end_page, i, length, offset; -	/* -	 * FIXME: Cycle lost behavior should be configurable: lose -	 * packet, retransmit or terminate.. -	 */ -  	p = packet;  	payload_index = payload; @@ -2135,6 +2130,14 @@ static int ohci_queue_iso_transmit(struct fw_iso_context *base,  	if (!p->skip) {  		d[0].control   = cpu_to_le16(DESCRIPTOR_KEY_IMMEDIATE);  		d[0].req_count = cpu_to_le16(8); +		/* +		 * Link the skip address to this descriptor itself.  This causes +		 * a context to skip a cycle whenever lost cycles or FIFO +		 * overruns occur, without dropping the data.  The application +		 * should then decide whether this is an error condition or not. +		 * FIXME:  Make the context's cycle-lost behaviour configurable? +		 */ +		d[0].branch_address = cpu_to_le32(d_bus | z);  		header = (__le32 *) &d[1];  		header[0] = cpu_to_le32(IT_HEADER_SY(p->sy) |  |