reset frame_complete flag during packetizing ISO-URB sub packets
This commit is contained in:
parent
b1bec05514
commit
2384b39092
|
@ -1322,6 +1322,7 @@ tx_iso_complete(struct urb *urb, struct pt_regs *regs)
|
||||||
int k, tx_offset, num_isoc_packets, sink, remain, current_len,
|
int k, tx_offset, num_isoc_packets, sink, remain, current_len,
|
||||||
errcode;
|
errcode;
|
||||||
int frame_complete, fifon, status;
|
int frame_complete, fifon, status;
|
||||||
|
int i;
|
||||||
__u8 threshbit;
|
__u8 threshbit;
|
||||||
__u8 threshtable[8] = { 1, 2, 4, 8, 0x10, 0x20, 0x40, 0x80 };
|
__u8 threshtable[8] = { 1, 2, 4, 8, 0x10, 0x20, 0x40, 0x80 };
|
||||||
|
|
||||||
|
@ -1349,14 +1350,18 @@ tx_iso_complete(struct urb *urb, struct pt_regs *regs)
|
||||||
sizeof(context_iso_urb->buffer));
|
sizeof(context_iso_urb->buffer));
|
||||||
frame_complete = 0;
|
frame_complete = 0;
|
||||||
|
|
||||||
|
|
||||||
/* Generate next Iso Packets */
|
/* Generate next Iso Packets */
|
||||||
for (k = 0; k < num_isoc_packets; ++k) {
|
for (k = 0; k < num_isoc_packets; ++k) {
|
||||||
if (ch->tx_skb) {
|
if (ch->tx_skb) {
|
||||||
remain = ch->tx_skb->len - ch->tx_idx;
|
remain = ch->tx_skb->len - ch->tx_idx;
|
||||||
|
printk ("k(%d) remain %d\n", k, remain);
|
||||||
} else {
|
} else {
|
||||||
remain = 0;
|
remain = 0;
|
||||||
|
printk ("k(%d) remain %d NULL\n", k, remain);
|
||||||
}
|
}
|
||||||
if (remain>0) {
|
if (remain > 0) {
|
||||||
|
|
||||||
/* we lower data margin every msec */
|
/* we lower data margin every msec */
|
||||||
fifo->bit_line -= sink;
|
fifo->bit_line -= sink;
|
||||||
current_len = (0 - fifo->bit_line) / 8;
|
current_len = (0 - fifo->bit_line) / 8;
|
||||||
|
@ -1388,6 +1393,19 @@ tx_iso_complete(struct urb *urb, struct pt_regs *regs)
|
||||||
/* define packet delimeters within the URB buffer */
|
/* define packet delimeters within the URB buffer */
|
||||||
urb->iso_frame_desc[k].offset = tx_offset;
|
urb->iso_frame_desc[k].offset = tx_offset;
|
||||||
urb->iso_frame_desc[k].length = current_len + 1;
|
urb->iso_frame_desc[k].length = current_len + 1;
|
||||||
|
|
||||||
|
|
||||||
|
// USB data log for every ISO out
|
||||||
|
if (fifon == HFCUSB_D_TX) {
|
||||||
|
printk ("D ISO TX (%d/%d) offset(%d) len(%d) ", k, num_isoc_packets-1,
|
||||||
|
urb->iso_frame_desc[k].offset,
|
||||||
|
urb->iso_frame_desc[k].length);
|
||||||
|
|
||||||
|
for (i=urb->iso_frame_desc[k].offset; i<(urb->iso_frame_desc[k].offset + urb->iso_frame_desc[k].length); i++) {
|
||||||
|
printk ("%x ", context_iso_urb->buffer[i]);
|
||||||
|
}
|
||||||
|
printk (" skb->len(%i) tx-idx(%d)\n", ch->tx_skb->len, ch->tx_idx);
|
||||||
|
}
|
||||||
|
|
||||||
tx_offset += (current_len + 1);
|
tx_offset += (current_len + 1);
|
||||||
} else {
|
} else {
|
||||||
|
@ -1401,8 +1419,10 @@ tx_iso_complete(struct urb *urb, struct pt_regs *regs)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (frame_complete)
|
if (frame_complete) {
|
||||||
next_tx_frame(card, fifo->ch_idx);
|
next_tx_frame(card, fifo->ch_idx);
|
||||||
|
frame_complete = 0;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
errcode = usb_submit_urb(urb, GFP_ATOMIC);
|
errcode = usb_submit_urb(urb, GFP_ATOMIC);
|
||||||
|
|
Loading…
Reference in New Issue