Lines Matching defs:vcc

318 static void exception(struct atm_vcc *vcc)
321 struct zatm_dev *zatm_dev = ZATM_DEV(vcc->dev);
322 struct zatm_vcc *zatm_vcc = ZATM_VCC(vcc);
374 struct atm_vcc *vcc;
422 vcc = zatm_dev->rx_map[chan];
423 pos = ZATM_VCC(vcc)->pool;
432 vcc = NULL;
464 if (vcc) atomic_inc(&vcc->stats->rx_err);
467 if (!atm_charge(vcc,skb->truesize)) {
472 ATM_SKB(skb)->vcc = vcc;
473 vcc->push(vcc,skb);
474 atomic_inc(&vcc->stats->rx);
484 static int open_rx_first(struct atm_vcc *vcc)
493 zatm_dev = ZATM_DEV(vcc->dev);
494 zatm_vcc = ZATM_VCC(vcc);
496 if (vcc->qos.rxtp.traffic_class == ATM_NONE) return 0;
497 if (vcc->qos.aal == ATM_AAL5) {
498 if (vcc->qos.rxtp.max_sdu > 65464)
499 vcc->qos.rxtp.max_sdu = 65464;
502 cells = DIV_ROUND_UP(vcc->qos.rxtp.max_sdu + ATM_AAL5_TRAILER,
520 use_pool(vcc->dev,zatm_vcc->pool);
526 zpokel(zatm_dev,uPD98401_RXVC_OD | (vcc->qos.aal == ATM_AAL5 ?
530 zatm_dev->rx_map[chan] = vcc;
536 static int open_rx_second(struct atm_vcc *vcc)
544 zatm_dev = ZATM_DEV(vcc->dev);
545 zatm_vcc = ZATM_VCC(vcc);
549 pos = vcc->vci >> 1;
550 shift = (1-(vcc->vci & 1)) << 4;
558 static void close_rx(struct atm_vcc *vcc)
565 zatm_vcc = ZATM_VCC(vcc);
566 zatm_dev = ZATM_DEV(vcc->dev);
570 if (vcc->vpi != ATM_VPI_UNSPEC && vcc->vci != ATM_VCI_UNSPEC) {
572 pos = vcc->vci >> 1;
573 shift = (1-(vcc->vci & 1)) << 4;
592 "%d\n",vcc->dev->number,zatm_vcc->rx_chan);
596 unuse_pool(vcc->dev,zatm_vcc->pool);
634 struct atm_vcc *vcc;
642 vcc = ATM_SKB(skb)->vcc;
643 zatm_dev = ZATM_DEV(vcc->dev);
644 zatm_vcc = ZATM_VCC(vcc);
661 | (vcc->qos.aal == ATM_AAL5 ? uPD98401_TXPD_AAL5 : 0 |
676 if (vcc->pop)
677 vcc->pop(vcc, skb);
685 (vcc->aal == ATM_AAL5 ? uPD98401_TXPD_AAL5 : 0 |
712 static inline void dequeue_tx(struct atm_vcc *vcc)
718 zatm_vcc = ZATM_VCC(vcc);
722 "txing\n",vcc->dev->number);
732 if (vcc->pop) vcc->pop(vcc,skb);
739 atomic_inc(&vcc->stats->tx);
871 static void close_tx(struct atm_vcc *vcc)
878 zatm_vcc = ZATM_VCC(vcc);
879 zatm_dev = ZATM_DEV(vcc->dev);
903 "%d\n",vcc->dev->number,chan);
908 zatm_dev->tx_bw += vcc->qos.txtp.min_pcr;
909 dealloc_shaper(vcc->dev,zatm_vcc->shaper);
915 static int open_tx_first(struct atm_vcc *vcc)
925 zatm_dev = ZATM_DEV(vcc->dev);
926 zatm_vcc = ZATM_VCC(vcc);
928 if (vcc->qos.txtp.traffic_class == ATM_NONE) return 0;
938 unlimited = vcc->qos.txtp.traffic_class == ATM_UBR &&
939 (!vcc->qos.txtp.max_pcr || vcc->qos.txtp.max_pcr == ATM_MAX_PCR ||
940 vcc->qos.txtp.max_pcr >= ATM_OC3_PCR);
945 if (unlimited) vcc->qos.txtp.max_sdu = ATM_MAX_AAL5_PDU;
946 if ((zatm_vcc->shaper = alloc_shaper(vcc->dev,&pcr,
947 vcc->qos.txtp.min_pcr,vcc->qos.txtp.max_pcr,unlimited))
949 close_tx(vcc);
953 vcc->qos.txtp.min_pcr = vcc->qos.txtp.max_pcr = pcr;
974 static int open_tx_second(struct atm_vcc *vcc)
981 zatm_dev = ZATM_DEV(vcc->dev);
982 zatm_vcc = ZATM_VCC(vcc);
988 uPD98401_TXVC_SHP_SHIFT) | (vcc->vpi << uPD98401_TXVC_VPI_SHIFT) |
989 vcc->vci,zatm_vcc->tx_chan*VC_SIZE/4+1);
992 zatm_dev->tx_map[zatm_vcc->tx_chan] = vcc;
1371 static void zatm_close(struct atm_vcc *vcc)
1374 if (!ZATM_VCC(vcc)) return;
1375 clear_bit(ATM_VF_READY,&vcc->flags);
1376 close_rx(vcc);
1378 close_tx(vcc);
1381 kfree(ZATM_VCC(vcc));
1382 vcc->dev_data = NULL;
1383 clear_bit(ATM_VF_ADDR,&vcc->flags);
1387 static int zatm_open(struct atm_vcc *vcc)
1390 short vpi = vcc->vpi;
1391 int vci = vcc->vci;
1395 if (!test_bit(ATM_VF_PARTIAL,&vcc->flags))
1396 vcc->dev_data = NULL;
1398 set_bit(ATM_VF_ADDR,&vcc->flags);
1399 if (vcc->qos.aal != ATM_AAL5) return -EINVAL; /* @@@ AAL0 */
1400 DPRINTK(DEV_LABEL "(itf %d): open %d.%d\n",vcc->dev->number,vcc->vpi,
1401 vcc->vci);
1402 if (!test_bit(ATM_VF_PARTIAL,&vcc->flags)) {
1405 clear_bit(ATM_VF_ADDR,&vcc->flags);
1408 vcc->dev_data = zatm_vcc;
1409 ZATM_VCC(vcc)->tx_chan = 0; /* for zatm_close after open_rx */
1410 if ((error = open_rx_first(vcc))) {
1411 zatm_close(vcc);
1414 if ((error = open_tx_first(vcc))) {
1415 zatm_close(vcc);
1420 if ((error = open_rx_second(vcc))) {
1421 zatm_close(vcc);
1424 if ((error = open_tx_second(vcc))) {
1425 zatm_close(vcc);
1428 set_bit(ATM_VF_READY,&vcc->flags);
1433 static int zatm_change_qos(struct atm_vcc *vcc,struct atm_qos *qos,int flags)
1518 static int zatm_send(struct atm_vcc *vcc,struct sk_buff *skb)
1523 if (!ZATM_VCC(vcc)->tx_chan || !test_bit(ATM_VF_READY,&vcc->flags)) {
1524 if (vcc->pop) vcc->pop(vcc,skb);
1530 if (vcc->pop) vcc->pop(vcc,skb);
1533 ATM_SKB(skb)->vcc = vcc;
1536 skb_queue_tail(&ZATM_VCC(vcc)->backlog,skb);