static void send_next(struct w6692_ch *wch) { if (wch->bch.tx_skb && wch->bch.tx_idx < wch->bch.tx_skb->len) W6692_fill_Bfifo(wch); else { if (wch->bch.tx_skb) { if (test_bit(FLG_TRANSPARENT, &wch->bch.Flags)) confirm_Bsend(&wch->bch); dev_kfree_skb(wch->bch.tx_skb); } if (get_next_bframe(&wch->bch)) W6692_fill_Bfifo(wch); } }
static void send_next(struct isar_ch *ch) { pr_debug("%s: %s ch%d tx_skb %d tx_idx %d\n", ch->is->name, __func__, ch->bch.nr, ch->bch.tx_skb ? ch->bch.tx_skb->len : -1, ch->bch.tx_idx); if (ch->bch.state == ISDN_P_B_T30_FAX) { if (ch->cmd == PCTRL_CMD_FTH) { if (test_bit(FLG_LASTDATA, &ch->bch.Flags)) { pr_debug("set NMD_DATA\n"); test_and_set_bit(FLG_NMD_DATA, &ch->bch.Flags); } } else if (ch->cmd == PCTRL_CMD_FTM) { if (test_bit(FLG_DLEETX, &ch->bch.Flags)) { test_and_set_bit(FLG_LASTDATA, &ch->bch.Flags); test_and_set_bit(FLG_NMD_DATA, &ch->bch.Flags); } } } if (ch->bch.tx_skb) dev_kfree_skb(ch->bch.tx_skb); if (get_next_bframe(&ch->bch)) { isar_fill_fifo(ch); test_and_clear_bit(FLG_TX_EMPTY, &ch->bch.Flags); } else if (test_bit(FLG_TX_EMPTY, &ch->bch.Flags)) { isar_fill_fifo(ch); } else { if (test_and_clear_bit(FLG_DLEETX, &ch->bch.Flags)) { if (test_and_clear_bit(FLG_LASTDATA, &ch->bch.Flags)) { if (test_and_clear_bit(FLG_NMD_DATA, &ch->bch.Flags)) { u8 zd = 0; send_mbox(ch->is, SET_DPS(ch->dpath) | ISAR_HIS_SDATA, 0x01, 1, &zd); } test_and_set_bit(FLG_LL_OK, &ch->bch.Flags); } else { deliver_status(ch, HW_MOD_CONNECT); } } else if (test_bit(FLG_FILLEMPTY, &ch->bch.Flags)) { test_and_set_bit(FLG_TX_EMPTY, &ch->bch.Flags); } } }
static void send_next(struct isar_ch *ch) { pr_debug("%s: %s ch%d tx_skb %p tx_idx %d\n", ch->is->name, __func__, ch->bch.nr, ch->bch.tx_skb, ch->bch.tx_idx); if (ch->bch.state == ISDN_P_B_T30_FAX) { if (ch->cmd == PCTRL_CMD_FTH) { if (test_bit(FLG_LASTDATA, &ch->bch.Flags)) { pr_debug("set NMD_DATA\n"); test_and_set_bit(FLG_NMD_DATA, &ch->bch.Flags); } } else if (ch->cmd == PCTRL_CMD_FTM) { if (test_bit(FLG_DLEETX, &ch->bch.Flags)) { test_and_set_bit(FLG_LASTDATA, &ch->bch.Flags); test_and_set_bit(FLG_NMD_DATA, &ch->bch.Flags); } } } if (ch->bch.tx_skb) { /* send confirm, on trans, free on hdlc. */ if (test_bit(FLG_TRANSPARENT, &ch->bch.Flags)) confirm_Bsend(&ch->bch); dev_kfree_skb(ch->bch.tx_skb); } if (get_next_bframe(&ch->bch)) isar_fill_fifo(ch); else { if (test_and_clear_bit(FLG_DLEETX, &ch->bch.Flags)) { if (test_and_clear_bit(FLG_LASTDATA, &ch->bch.Flags)) { if (test_and_clear_bit(FLG_NMD_DATA, &ch->bch.Flags)) { u8 zd = 0; send_mbox(ch->is, SET_DPS(ch->dpath) | ISAR_HIS_SDATA, 0x01, 1, &zd); } test_and_set_bit(FLG_LL_OK, &ch->bch.Flags); } else { deliver_status(ch, HW_MOD_CONNECT); } } } }