Lines Matching refs:bcs

192 hfcpci_sched_event(struct BCState *bcs, int event)
194 test_and_set_bit(event, &bcs->event);
195 schedule_work(&bcs->tqueue);
205 if (cs->bcs[0].mode && (cs->bcs[0].channel == channel))
206 return (&cs->bcs[0]);
207 else if (cs->bcs[1].mode && (cs->bcs[1].channel == channel))
208 return (&cs->bcs[1]);
271 hfcpci_empty_fifo(struct BCState *bcs, bzfifo_type * bz, u_char * bdata, int count)
275 struct IsdnCardState *cs = bcs->cs;
291 bcs->err_inv++;
398 hfcpci_empty_fifo_trans(struct BCState *bcs, bzfifo_type * bz, u_char * bdata)
438 skb_queue_tail(&bcs->rqueue, skb);
439 hfcpci_sched_event(bcs, B_RCVBUFREADY);
450 main_rec_hfcpci(struct BCState *bcs)
452 struct IsdnCardState *cs = bcs->cs;
461 if ((bcs->channel) && (!cs->hw.hfcpci.bswapped)) {
473 debugl1(cs, "rec_data %d blocked", bcs->channel);
479 bcs->channel, bz->f1, bz->f2);
488 bcs->channel, zp->z1, zp->z2, rcnt);
489 if ((skb = hfcpci_empty_fifo(bcs, bz, bdata, rcnt))) {
490 skb_queue_tail(&bcs->rqueue, skb);
491 hfcpci_sched_event(bcs, B_RCVBUFREADY);
505 } else if (bcs->mode == L1_MODE_TRANS)
506 receive = hfcpci_empty_fifo_trans(bcs, bz, bdata);
588 hfcpci_fill_fifo(struct BCState *bcs)
590 struct IsdnCardState *cs = bcs->cs;
598 if (!bcs->tx_skb)
600 if (bcs->tx_skb->len <= 0)
603 if ((bcs->channel) && (!cs->hw.hfcpci.bswapped)) {
611 if (bcs->mode == L1_MODE_TRANS) {
616 bcs->channel, *z1t, *z2t);
622 while ((fcnt < 2 * HFCPCI_BTRANS_THRESHOLD) && (bcs->tx_skb)) {
623 if (bcs->tx_skb->len < B_FIFO_SIZE - fcnt) {
625 count = bcs->tx_skb->len;
630 src = bcs->tx_skb->data; /* source pointer */
643 bcs->tx_cnt -= bcs->tx_skb->len;
644 fcnt += bcs->tx_skb->len;
648 bcs->channel, bcs->tx_skb->len);
650 if (test_bit(FLG_LLI_L1WAKEUP,&bcs->st->lli.flag) &&
651 (PACKET_NOACK != bcs->tx_skb->pkt_type)) {
653 spin_lock_irqsave(&bcs->aclock, flags);
654 bcs->ackcnt += bcs->tx_skb->len;
655 spin_unlock_irqrestore(&bcs->aclock, flags);
656 schedule_event(bcs, B_ACKPENDING);
659 dev_kfree_skb_any(bcs->tx_skb);
660 bcs->tx_skb = skb_dequeue(&bcs->squeue); /* fetch next data */
662 test_and_clear_bit(BC_FLG_BUSY, &bcs->Flag);
667 bcs->channel, bz->f1, bz->f2,
685 bcs->channel, bcs->tx_skb->len,
688 if (count < bcs->tx_skb->len) {
693 count = bcs->tx_skb->len; /* get frame len */
699 src = bcs->tx_skb->data; /* source pointer */
712 bcs->tx_cnt -= bcs->tx_skb->len;
713 if (test_bit(FLG_LLI_L1WAKEUP,&bcs->st->lli.flag) &&
714 (PACKET_NOACK != bcs->tx_skb->pkt_type)) {
716 spin_lock_irqsave(&bcs->aclock, flags);
717 bcs->ackcnt += bcs->tx_skb->len;
718 spin_unlock_irqrestore(&bcs->aclock, flags);
719 schedule_event(bcs, B_ACKPENDING);
725 dev_kfree_skb_any(bcs->tx_skb);
726 bcs->tx_skb = NULL;
727 test_and_clear_bit(BC_FLG_BUSY, &bcs->Flag);
933 struct BCState *bcs;
984 if (!(bcs = Sel_BCS(cs, cs->hw.hfcpci.bswapped ? 1 : 0))) {
988 main_rec_hfcpci(bcs);
993 else if (!(bcs = Sel_BCS(cs, 1))) {
997 main_rec_hfcpci(bcs);
1000 if (!(bcs = Sel_BCS(cs, cs->hw.hfcpci.bswapped ? 1 : 0))) {
1004 if (bcs->tx_skb) {
1006 hfcpci_fill_fifo(bcs);
1009 debugl1(cs, "fill_data %d blocked", bcs->channel);
1011 if ((bcs->tx_skb = skb_dequeue(&bcs->squeue))) {
1013 hfcpci_fill_fifo(bcs);
1016 debugl1(cs, "fill_data %d blocked", bcs->channel);
1018 hfcpci_sched_event(bcs, B_XMTBUFREADY);
1024 if (!(bcs = Sel_BCS(cs, 1))) {
1028 if (bcs->tx_skb) {
1030 hfcpci_fill_fifo(bcs);
1033 debugl1(cs, "fill_data %d blocked", bcs->channel);
1035 if ((bcs->tx_skb = skb_dequeue(&bcs->squeue))) {
1037 hfcpci_fill_fifo(bcs);
1040 debugl1(cs, "fill_data %d blocked", bcs->channel);
1042 hfcpci_sched_event(bcs, B_XMTBUFREADY);
1253 hfcpci_send_data(struct BCState *bcs)
1255 struct IsdnCardState *cs = bcs->cs;
1258 hfcpci_fill_fifo(bcs);
1261 debugl1(cs, "send_data %d blocked", bcs->channel);
1268 mode_hfcpci(struct BCState *bcs, int mode, int bc)
1270 struct IsdnCardState *cs = bcs->cs;
1275 mode, bc, bcs->channel);
1276 bcs->mode = mode;
1277 bcs->channel = bc;
1391 struct BCState *bcs = st->l1.bcs;
1397 spin_lock_irqsave(&bcs->cs->lock, flags);
1398 if (bcs->tx_skb) {
1399 skb_queue_tail(&bcs->squeue, skb);
1401 bcs->tx_skb = skb;
1402 // test_and_set_bit(BC_FLG_BUSY, &bcs->Flag);
1403 bcs->cs->BC_Send_Data(bcs);
1405 spin_unlock_irqrestore(&bcs->cs->lock, flags);
1408 spin_lock_irqsave(&bcs->cs->lock, flags);
1409 if (bcs->tx_skb) {
1410 spin_unlock_irqrestore(&bcs->cs->lock, flags);
1414 // test_and_set_bit(BC_FLG_BUSY, &bcs->Flag);
1415 bcs->tx_skb = skb;
1416 bcs->cs->BC_Send_Data(bcs);
1417 spin_unlock_irqrestore(&bcs->cs->lock, flags);
1420 if (!bcs->tx_skb) {
1427 spin_lock_irqsave(&bcs->cs->lock, flags);
1428 test_and_set_bit(BC_FLG_ACTIV, &bcs->Flag);
1429 mode_hfcpci(bcs, st->l1.mode, st->l1.bc);
1430 spin_unlock_irqrestore(&bcs->cs->lock, flags);
1437 spin_lock_irqsave(&bcs->cs->lock, flags);
1438 test_and_clear_bit(BC_FLG_ACTIV, &bcs->Flag);
1439 test_and_clear_bit(BC_FLG_BUSY, &bcs->Flag);
1440 mode_hfcpci(bcs, 0, st->l1.bc);
1441 spin_unlock_irqrestore(&bcs->cs->lock, flags);
1451 close_hfcpci(struct BCState *bcs)
1453 mode_hfcpci(bcs, 0, bcs->channel);
1454 if (test_and_clear_bit(BC_FLG_INIT, &bcs->Flag)) {
1455 skb_queue_purge(&bcs->rqueue);
1456 skb_queue_purge(&bcs->squeue);
1457 if (bcs->tx_skb) {
1458 dev_kfree_skb_any(bcs->tx_skb);
1459 bcs->tx_skb = NULL;
1460 test_and_clear_bit(BC_FLG_BUSY, &bcs->Flag);
1469 open_hfcpcistate(struct IsdnCardState *cs, struct BCState *bcs)
1471 if (!test_and_set_bit(BC_FLG_INIT, &bcs->Flag)) {
1472 skb_queue_head_init(&bcs->rqueue);
1473 skb_queue_head_init(&bcs->squeue);
1475 bcs->tx_skb = NULL;
1476 test_and_clear_bit(BC_FLG_BUSY, &bcs->Flag);
1477 bcs->event = 0;
1478 bcs->tx_cnt = 0;
1486 setstack_2b(struct PStack *st, struct BCState *bcs)
1488 bcs->channel = st->l1.bc;
1489 if (open_hfcpcistate(st->l1.hardware, bcs))
1491 st->l1.bcs = bcs;
1494 bcs->st = st;
1581 cs->bcs[0].BC_SetStack = setstack_2b;
1582 cs->bcs[1].BC_SetStack = setstack_2b;
1583 cs->bcs[0].BC_Close = close_hfcpci;
1584 cs->bcs[1].BC_Close = close_hfcpci;
1588 mode_hfcpci(cs->bcs, 0, 0);
1589 mode_hfcpci(cs->bcs + 1, 0, 1);