Lines Matching refs:fifo

209 static void collect_rx_frame(usb_fifo *fifo, __u8 *data, int len,
454 start_isoc_chain(usb_fifo *fifo, int num_packets_per_urb, in start_isoc_chain() argument
460 fifo->fifonum); in start_isoc_chain()
464 if (!(fifo->iso[i].purb)) { in start_isoc_chain()
465 fifo->iso[i].purb = in start_isoc_chain()
467 if (!(fifo->iso[i].purb)) { in start_isoc_chain()
470 fifo->fifonum); in start_isoc_chain()
472 fifo->iso[i].owner_fifo = (struct usb_fifo *) fifo; in start_isoc_chain()
476 (fifo->usb_packet_maxlen * in start_isoc_chain()
478 fill_isoc_urb(fifo->iso[i].purb, in start_isoc_chain()
479 fifo->hfc->dev, fifo->pipe, in start_isoc_chain()
480 fifo->iso[i].buffer, in start_isoc_chain()
482 fifo->usb_packet_maxlen, in start_isoc_chain()
483 fifo->intervall, complete, in start_isoc_chain()
484 &fifo->iso[i]); in start_isoc_chain()
485 memset(fifo->iso[i].buffer, 0, in start_isoc_chain()
486 sizeof(fifo->iso[i].buffer)); in start_isoc_chain()
489 fifo->iso[i].purb-> in start_isoc_chain()
492 fifo->iso[i].purb-> in start_isoc_chain()
501 fifo->bit_line = BITLINE_INF; in start_isoc_chain()
503 errcode = usb_submit_urb(fifo->iso[i].purb, GFP_KERNEL); in start_isoc_chain()
504 fifo->active = (errcode >= 0) ? 1 : 0; in start_isoc_chain()
509 return (fifo->active); in start_isoc_chain()
514 stop_isoc_chain(usb_fifo *fifo) in stop_isoc_chain() argument
519 if (fifo->iso[i].purb) { in stop_isoc_chain()
522 fifo->fifonum, i); in stop_isoc_chain()
523 usb_kill_urb(fifo->iso[i].purb); in stop_isoc_chain()
524 usb_free_urb(fifo->iso[i].purb); in stop_isoc_chain()
525 fifo->iso[i].purb = NULL; in stop_isoc_chain()
529 usb_kill_urb(fifo->urb); in stop_isoc_chain()
530 usb_free_urb(fifo->urb); in stop_isoc_chain()
531 fifo->urb = NULL; in stop_isoc_chain()
532 fifo->active = 0; in stop_isoc_chain()
545 usb_fifo *fifo = context_iso_urb->owner_fifo; in tx_iso_complete() local
546 hfcusb_data *hfc = fifo->hfc; in tx_iso_complete()
552 fifon = fifo->fifonum; in tx_iso_complete()
576 if (fifo->active && !status) { in tx_iso_complete()
591 fill_isoc_urb(urb, fifo->hfc->dev, fifo->pipe, in tx_iso_complete()
593 fifo->usb_packet_maxlen, fifo->intervall, in tx_iso_complete()
601 if (fifo->skbuff) { in tx_iso_complete()
602 len = fifo->skbuff->len; in tx_iso_complete()
604 fifo->bit_line -= sink; in tx_iso_complete()
605 current_len = (0 - fifo->bit_line) / 8; in tx_iso_complete()
613 fifo->bit_line += current_len * 8; in tx_iso_complete()
622 fifo->bit_line += 32; in tx_iso_complete()
628 tx_offset + 1, fifo->skbuff->data, in tx_iso_complete()
630 skb_pull(fifo->skbuff, current_len); in tx_iso_complete()
643 fifo->bit_line -= sink; /* we lower data margin every msec */ in tx_iso_complete()
645 if (fifo->bit_line < BITLINE_INF) { in tx_iso_complete()
646 fifo->bit_line = BITLINE_INF; in tx_iso_complete()
651 fifo->delete_flg = 1; in tx_iso_complete()
652 fifo->hif->l1l2(fifo->hif, in tx_iso_complete()
654 (void *) (unsigned long) fifo->skbuff-> in tx_iso_complete()
656 if (fifo->skbuff && fifo->delete_flg) { in tx_iso_complete()
657 dev_kfree_skb_any(fifo->skbuff); in tx_iso_complete()
658 fifo->skbuff = NULL; in tx_iso_complete()
659 fifo->delete_flg = 0; in tx_iso_complete()
683 usb_fifo *fifo = context_iso_urb->owner_fifo; in rx_iso_complete() local
684 hfcusb_data *hfc = fifo->hfc; in rx_iso_complete()
691 fifon = fifo->fifonum; in rx_iso_complete()
709 if (fifo->active && !status) { in rx_iso_complete()
711 maxlen = fifo->usb_packet_maxlen; in rx_iso_complete()
728 fifo->last_urblen, len, maxlen, in rx_iso_complete()
734 if (fifo->last_urblen != maxlen) { in rx_iso_complete()
746 collect_rx_frame(fifo, buf + 2, in rx_iso_complete()
751 collect_rx_frame(fifo, buf, len, in rx_iso_complete()
756 fifo->last_urblen = len; in rx_iso_complete()
759 fill_isoc_urb(urb, fifo->hfc->dev, fifo->pipe, in rx_iso_complete()
761 fifo->usb_packet_maxlen, fifo->intervall, in rx_iso_complete()
781 collect_rx_frame(usb_fifo *fifo, __u8 *data, int len, int finish) in collect_rx_frame() argument
783 hfcusb_data *hfc = fifo->hfc; in collect_rx_frame()
786 fifon = fifo->fifonum; in collect_rx_frame()
791 if (!fifo->skbuff) { in collect_rx_frame()
792 fifo->skbuff = dev_alloc_skb(fifo->max_size + 3); in collect_rx_frame()
793 if (!fifo->skbuff) { in collect_rx_frame()
801 if (fifo->skbuff->len + len < fifo->max_size) { in collect_rx_frame()
802 memcpy(skb_put(fifo->skbuff, len), data, len); in collect_rx_frame()
806 fifo->max_size, fifon); in collect_rx_frame()
807 DBG_SKB(HFCUSB_DBG_VERBOSE_USB, fifo->skbuff); in collect_rx_frame()
808 skb_trim(fifo->skbuff, 0); in collect_rx_frame()
811 if (transp_mode && fifo->skbuff->len >= 128) { in collect_rx_frame()
812 fifo->hif->l1l2(fifo->hif, PH_DATA | INDICATION, in collect_rx_frame()
813 fifo->skbuff); in collect_rx_frame()
814 fifo->skbuff = NULL; in collect_rx_frame()
819 if (fifo->skbuff->len > 3 && in collect_rx_frame()
820 !fifo->skbuff->data[fifo->skbuff->len - 1]) { in collect_rx_frame()
824 "HFC-S USB: D-RX len(%d)", fifo->skbuff->len); in collect_rx_frame()
825 DBG_SKB(HFCUSB_DBG_DCHANNEL, fifo->skbuff); in collect_rx_frame()
829 skb_trim(fifo->skbuff, fifo->skbuff->len - 3); in collect_rx_frame()
831 fifo->hif->l1l2(fifo->hif, in collect_rx_frame()
833 fifo->skbuff); in collect_rx_frame()
835 fifo->hif->l1l2(fifo->hif, in collect_rx_frame()
837 fifo->skbuff); in collect_rx_frame()
838 fifo->skbuff = NULL; /* buffer was freed from upper layer */ in collect_rx_frame()
842 fifo->skbuff->len, fifon); in collect_rx_frame()
843 DBG_SKB(HFCUSB_DBG_VERBOSE_USB, fifo->skbuff); in collect_rx_frame()
844 skb_trim(fifo->skbuff, 0); in collect_rx_frame()
855 usb_fifo *fifo = (usb_fifo *) urb->context; in rx_int_complete() local
856 hfcusb_data *hfc = fifo->hfc; in rx_int_complete()
861 fifon = fifo->fifonum; in rx_int_complete()
862 if ((!fifo->active) || (urb->status)) { in rx_int_complete()
866 fifo->urb->interval = 0; /* cancel automatic rescheduling */ in rx_int_complete()
867 if (fifo->skbuff) { in rx_int_complete()
868 dev_kfree_skb_any(fifo->skbuff); in rx_int_complete()
869 fifo->skbuff = NULL; in rx_int_complete()
874 buf = fifo->buffer; in rx_int_complete()
875 maxlen = fifo->usb_packet_maxlen; in rx_int_complete()
881 fifo->last_urblen, len, maxlen, in rx_int_complete()
886 if (fifo->last_urblen != fifo->usb_packet_maxlen) { in rx_int_complete()
894 collect_rx_frame(fifo, buf + 2, in rx_int_complete()
898 collect_rx_frame(fifo, buf, urb->actual_length, in rx_int_complete()
901 fifo->last_urblen = urb->actual_length; in rx_int_complete()
912 start_int_fifo(usb_fifo *fifo) in start_int_fifo() argument
917 fifo->fifonum); in start_int_fifo()
919 if (!fifo->urb) { in start_int_fifo()
920 fifo->urb = usb_alloc_urb(0, GFP_KERNEL); in start_int_fifo()
921 if (!fifo->urb) in start_int_fifo()
924 usb_fill_int_urb(fifo->urb, fifo->hfc->dev, fifo->pipe, in start_int_fifo()
925 fifo->buffer, fifo->usb_packet_maxlen, in start_int_fifo()
926 rx_int_complete, fifo, fifo->intervall); in start_int_fifo()
927 fifo->active = 1; /* must be marked active */ in start_int_fifo()
928 errcode = usb_submit_urb(fifo->urb, GFP_KERNEL); in start_int_fifo()
932 fifo->active = 0; in start_int_fifo()
933 fifo->skbuff = NULL; in start_int_fifo()
997 usb_fifo *fifo = my_hisax_if->priv; in hfc_usb_l2l1() local
998 hfcusb_data *hfc = fifo->hfc; in hfc_usb_l2l1()
1002 if (fifo->fifonum == HFCUSB_D_TX) { in hfc_usb_l2l1()
1053 (fifo->fifonum == in hfc_usb_l2l1()
1056 fifo->hif->l1l2(fifo->hif, in hfc_usb_l2l1()
1062 if (fifo->fifonum == HFCUSB_D_TX) { in hfc_usb_l2l1()
1069 (fifo->fifonum == in hfc_usb_l2l1()
1072 fifo->hif->l1l2(fifo->hif, in hfc_usb_l2l1()
1078 if (fifo->skbuff && fifo->delete_flg) { in hfc_usb_l2l1()
1079 dev_kfree_skb_any(fifo->skbuff); in hfc_usb_l2l1()
1080 fifo->skbuff = NULL; in hfc_usb_l2l1()
1081 fifo->delete_flg = 0; in hfc_usb_l2l1()
1083 fifo->skbuff = arg; /* we have a new buffer */ in hfc_usb_l2l1()
1096 usb_fifo *fifo; in hfc_usb_init() local
1135 fifo = hfc->fifos; in hfc_usb_init()
1138 fifo[i].skbuff = NULL; /* init buffer pointer */ in hfc_usb_init()
1139 fifo[i].max_size = in hfc_usb_init()
1141 fifo[i].last_urblen = 0; in hfc_usb_init()