static void hscx_fill_fifo(struct BCState *bcs) { struct IsdnCardState *cs = bcs->cs; int more, count; int fifo_size = test_bit(HW_IPAC, &cs->HW_Flags)? 64: 32; u8 *p; p = xmit_fill_fifo_b(bcs, fifo_size, &count, &more); if (!p) return; waitforXFW(bcs); hscx_write_fifo(bcs, p, count); WriteHSCXCMDR(bcs, more ? 0x8 : 0xa); }
static void hscx_fill_fifo(struct BCState *bcs) { struct IsdnCardState *cs = bcs->cs; int more, count; int fifo_size = test_bit(HW_IPAC, &cs->HW_Flags)? 64: 32; u_char *ptr; long flags; if ((cs->debug & L1_DEB_HSCX) && !(cs->debug & L1_DEB_HSCX_FIFO)) debugl1(cs, "hscx_fill_fifo"); if (!bcs->tx_skb) return; if (bcs->tx_skb->len <= 0) return; more = (bcs->mode == L1_MODE_TRANS) ? 1 : 0; if (bcs->tx_skb->len > fifo_size) { more = !0; count = fifo_size; } else count = bcs->tx_skb->len; waitforXFW(cs, bcs->hw.hscx.hscx); save_flags(flags); cli(); ptr = bcs->tx_skb->data; skb_pull(bcs->tx_skb, count); bcs->tx_cnt -= count; bcs->hw.hscx.count += count; WRITEHSCXFIFO(cs, bcs->hw.hscx.hscx, ptr, count); WriteHSCXCMDR(cs, bcs->hw.hscx.hscx, more ? 0x8 : 0xa); restore_flags(flags); if (cs->debug & L1_DEB_HSCX_FIFO) { char *t = bcs->blog; t += sprintf(t, "hscx_fill_fifo %c cnt %d", bcs->hw.hscx.hscx ? 'B' : 'A', count); QuickHex(t, ptr, count); debugl1(cs, bcs->blog); } }
static void hscx_fill_fifo(struct HscxState *hsp) { struct IsdnCardState *sp = hsp->sp; int more, count; u_char *ptr; long flags; if ((sp->debug & L1_DEB_HSCX) && !(sp->debug & L1_DEB_HSCX_FIFO)) debugl1(sp, "hscx_fill_fifo"); if (!hsp->tx_skb) return; if (hsp->tx_skb->len <= 0) return; more = (hsp->mode == 1) ? 1 : 0; if (hsp->tx_skb->len > 32) { more = !0; count = 32; } else count = hsp->tx_skb->len; waitforXFW(sp->hscx[hsp->hscx], hsp->hscx); save_flags(flags); cli(); ptr = hsp->tx_skb->data; skb_pull(hsp->tx_skb, count); hsp->tx_cnt -= count; hsp->count += count; HscxWriteFifo(sp->hscx[hsp->hscx], hsp->hscx, ptr, count); writehscxCMDR(sp->hscx[hsp->hscx], hsp->hscx, more ? 0x8 : 0xa); restore_flags(flags); if (sp->debug & L1_DEB_HSCX_FIFO) { char tmp[128]; char *t = tmp; t += sprintf(t, "hscx_fill_fifo %c cnt %d", hsp->hscx ? 'B' : 'A', count); QuickHex(t, ptr, count); debugl1(sp, tmp); } }
static void jade_fill_fifo(struct BCState *bcs) { struct IsdnCardState *cs = bcs->cs; int more, count; int fifo_size = 32; u_char *ptr; if ((cs->debug & L1_DEB_HSCX) && !(cs->debug & L1_DEB_HSCX_FIFO)) debugl1(cs, "jade_fill_fifo"); if (!bcs->tx_skb) return; if (bcs->tx_skb->len <= 0) return; more = (bcs->mode == L1_MODE_TRANS) ? 1 : 0; if (bcs->tx_skb->len > fifo_size) { more = !0; count = fifo_size; } else count = bcs->tx_skb->len; waitforXFW(cs, bcs->hw.hscx.hscx); ptr = bcs->tx_skb->data; skb_pull(bcs->tx_skb, count); bcs->tx_cnt -= count; bcs->hw.hscx.count += count; WRITEJADEFIFO(cs, bcs->hw.hscx.hscx, ptr, count); WriteJADECMDR(cs, bcs->hw.hscx.hscx, jade_HDLC_XCMD, more ? jadeXCMD_XF : (jadeXCMD_XF | jadeXCMD_XME)); if (cs->debug & L1_DEB_HSCX_FIFO) { char *t = bcs->blog; t += sprintf(t, "jade_fill_fifo %c cnt %d", bcs->hw.hscx.hscx ? 'B' : 'A', count); QuickHex(t, ptr, count); debugl1(cs, bcs->blog); } }