• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/drivers/isdn/hisax/

Lines Matching refs:bcs

437 	if (cs->bcs[0].mode && (cs->bcs[0].channel == channel))
438 return (&cs->bcs[0]);
439 else if (cs->bcs[1].mode && (cs->bcs[1].channel == channel))
440 return (&cs->bcs[1]);
476 main_rec_hfcsx(struct BCState *bcs)
478 struct IsdnCardState *cs = bcs->cs;
485 debugl1(cs, "rec_data %d blocked", bcs->channel);
488 skb = read_fifo(cs, ((bcs->channel) && (!cs->hw.hfcsx.bswapped)) ?
490 (bcs->mode == L1_MODE_TRANS) ?
494 skb_queue_tail(&bcs->rqueue, skb);
495 schedule_event(bcs, B_RCVBUFREADY);
526 hfcsx_fill_fifo(struct BCState *bcs)
528 struct IsdnCardState *cs = bcs->cs;
530 if (!bcs->tx_skb)
532 if (bcs->tx_skb->len <= 0)
535 if (write_fifo(cs, bcs->tx_skb,
536 ((bcs->channel) && (!cs->hw.hfcsx.bswapped)) ?
538 (bcs->mode == L1_MODE_TRANS) ?
541 bcs->tx_cnt -= bcs->tx_skb->len;
542 if (test_bit(FLG_LLI_L1WAKEUP,&bcs->st->lli.flag) &&
543 (PACKET_NOACK != bcs->tx_skb->pkt_type)) {
545 spin_lock_irqsave(&bcs->aclock, flags);
546 bcs->ackcnt += bcs->tx_skb->len;
547 spin_unlock_irqrestore(&bcs->aclock, flags);
548 schedule_event(bcs, B_ACKPENDING);
550 dev_kfree_skb_any(bcs->tx_skb);
551 bcs->tx_skb = NULL;
552 test_and_clear_bit(BC_FLG_BUSY, &bcs->Flag);
698 struct BCState *bcs;
749 if (!(bcs = Sel_BCS(cs, cs->hw.hfcsx.bswapped ? 1 : 0))) {
753 main_rec_hfcsx(bcs);
758 else if (!(bcs = Sel_BCS(cs, 1))) {
762 main_rec_hfcsx(bcs);
765 if (!(bcs = Sel_BCS(cs, cs->hw.hfcsx.bswapped ? 1 : 0))) {
769 if (bcs->tx_skb) {
771 hfcsx_fill_fifo(bcs);
774 debugl1(cs, "fill_data %d blocked", bcs->channel);
776 if ((bcs->tx_skb = skb_dequeue(&bcs->squeue))) {
778 hfcsx_fill_fifo(bcs);
781 debugl1(cs, "fill_data %d blocked", bcs->channel);
783 schedule_event(bcs, B_XMTBUFREADY);
789 if (!(bcs = Sel_BCS(cs, 1))) {
793 if (bcs->tx_skb) {
795 hfcsx_fill_fifo(bcs);
798 debugl1(cs, "fill_data %d blocked", bcs->channel);
800 if ((bcs->tx_skb = skb_dequeue(&bcs->squeue))) {
802 hfcsx_fill_fifo(bcs);
805 debugl1(cs, "fill_data %d blocked", bcs->channel);
807 schedule_event(bcs, B_XMTBUFREADY);
1016 hfcsx_send_data(struct BCState *bcs)
1018 struct IsdnCardState *cs = bcs->cs;
1021 hfcsx_fill_fifo(bcs);
1024 debugl1(cs, "send_data %d blocked", bcs->channel);
1031 mode_hfcsx(struct BCState *bcs, int mode, int bc)
1033 struct IsdnCardState *cs = bcs->cs;
1038 mode, bc, bcs->channel);
1039 bcs->mode = mode;
1040 bcs->channel = bc;
1143 struct BCState *bcs = st->l1.bcs;
1149 spin_lock_irqsave(&bcs->cs->lock, flags);
1150 if (bcs->tx_skb) {
1151 skb_queue_tail(&bcs->squeue, skb);
1153 bcs->tx_skb = skb;
1154 // test_and_set_bit(BC_FLG_BUSY, &bcs->Flag);
1155 bcs->cs->BC_Send_Data(bcs);
1157 spin_unlock_irqrestore(&bcs->cs->lock, flags);
1160 spin_lock_irqsave(&bcs->cs->lock, flags);
1161 if (bcs->tx_skb) {
1164 // test_and_set_bit(BC_FLG_BUSY, &bcs->Flag);
1165 bcs->tx_skb = skb;
1166 bcs->cs->BC_Send_Data(bcs);
1168 spin_unlock_irqrestore(&bcs->cs->lock, flags);
1171 if (!bcs->tx_skb) {
1178 spin_lock_irqsave(&bcs->cs->lock, flags);
1179 test_and_set_bit(BC_FLG_ACTIV, &bcs->Flag);
1180 mode_hfcsx(bcs, st->l1.mode, st->l1.bc);
1181 spin_unlock_irqrestore(&bcs->cs->lock, flags);
1188 spin_lock_irqsave(&bcs->cs->lock, flags);
1189 test_and_clear_bit(BC_FLG_ACTIV, &bcs->Flag);
1190 test_and_clear_bit(BC_FLG_BUSY, &bcs->Flag);
1191 mode_hfcsx(bcs, 0, st->l1.bc);
1192 spin_unlock_irqrestore(&bcs->cs->lock, flags);
1202 close_hfcsx(struct BCState *bcs)
1204 mode_hfcsx(bcs, 0, bcs->channel);
1205 if (test_and_clear_bit(BC_FLG_INIT, &bcs->Flag)) {
1206 skb_queue_purge(&bcs->rqueue);
1207 skb_queue_purge(&bcs->squeue);
1208 if (bcs->tx_skb) {
1209 dev_kfree_skb_any(bcs->tx_skb);
1210 bcs->tx_skb = NULL;
1211 test_and_clear_bit(BC_FLG_BUSY, &bcs->Flag);
1220 open_hfcsxstate(struct IsdnCardState *cs, struct BCState *bcs)
1222 if (!test_and_set_bit(BC_FLG_INIT, &bcs->Flag)) {
1223 skb_queue_head_init(&bcs->rqueue);
1224 skb_queue_head_init(&bcs->squeue);
1226 bcs->tx_skb = NULL;
1227 test_and_clear_bit(BC_FLG_BUSY, &bcs->Flag);
1228 bcs->event = 0;
1229 bcs->tx_cnt = 0;
1237 setstack_2b(struct PStack *st, struct BCState *bcs)
1239 bcs->channel = st->l1.bc;
1240 if (open_hfcsxstate(st->l1.hardware, bcs))
1242 st->l1.bcs = bcs;
1245 bcs->st = st;
1338 cs->bcs[0].BC_SetStack = setstack_2b;
1339 cs->bcs[1].BC_SetStack = setstack_2b;
1340 cs->bcs[0].BC_Close = close_hfcsx;
1341 cs->bcs[1].BC_Close = close_hfcsx;
1342 mode_hfcsx(cs->bcs, 0, 0);
1343 mode_hfcsx(cs->bcs + 1, 0, 1);