Lines Matching refs:vcc

235 static void clear_lockup (struct atm_vcc *vcc, IADEV *dev) {  in clear_lockup()  argument
244 if (vcc->qos.txtp.traffic_class == ATM_ABR) { in clear_lockup()
245 vcstatus = (vcstatus_t *) &(dev->testTable[vcc->vci]->vc_status); in clear_lockup()
249 abr_vc += vcc->vci; in clear_lockup()
250 eabr_vc += vcc->vci; in clear_lockup()
261 if((tempCellSlot == dev->testTable[vcc->vci]->lastTime) in clear_lockup()
262 && (tempFract == dev->testTable[vcc->vci]->fract)) in clear_lockup()
264 dev->testTable[vcc->vci]->lastTime = tempCellSlot; in clear_lockup()
265 dev->testTable[vcc->vci]->fract = tempFract; in clear_lockup()
281 shd_tbl[i] = vcc->vci; in clear_lockup()
283 IF_ERR(printk("ABR Seg. may not continue on VC %x\n",vcc->vci);) in clear_lockup()
376 struct atm_vcc *vcc, u8 flag) in ia_open_abr_vc() argument
384 f_abr_vc += vcc->vci; in ia_open_abr_vc()
444 *(ptr16 + vcc->vci) = NO_AAL5_PKT | REASS_ABR; in ia_open_abr_vc()
446 r_abr_vc += vcc->vci; in ia_open_abr_vc()
451 dev->testTable[vcc->vci]->vc_status = VC_ACTIVE | VC_ABR; in ia_open_abr_vc()
460 static int ia_cbr_setup (IADEV *dev, struct atm_vcc *vcc) { in ia_cbr_setup() argument
474 if (vcc->qos.txtp.max_pcr <= 0) { in ia_cbr_setup()
478 rate = vcc->qos.txtp.max_pcr; in ia_cbr_setup()
495 ia_vcc = INPH_IA_VCC(vcc); in ia_cbr_setup()
506 vcIndex = vcc->vci; in ia_cbr_setup()
575 static void ia_cbrVc_close (struct atm_vcc *vcc) { in ia_cbrVc_close() argument
580 iadev = INPH_IA_DEV(vcc->dev); in ia_cbrVc_close()
590 if (*SchedTbl == vcc->vci) { in ia_cbrVc_close()
611 static int ia_pkt_tx (struct atm_vcc *vcc, struct sk_buff *skb);
616 struct atm_vcc *vcc; in ia_que_tx() local
620 if (!(vcc = ATM_SKB(skb)->vcc)) { in ia_que_tx()
625 if (!test_bit(ATM_VF_READY,&vcc->flags)) { in ia_que_tx()
627 printk("Free the SKB on closed vci %d \n", vcc->vci); in ia_que_tx()
630 if (ia_pkt_tx (vcc, skb)) { in ia_que_tx()
639 struct atm_vcc *vcc = NULL; in ia_tx_poll() local
651 vcc = ATM_SKB(skb)->vcc; in ia_tx_poll()
652 if (!vcc) { in ia_tx_poll()
658 iavcc = INPH_IA_VCC(vcc); in ia_tx_poll()
668 printk("IA_tx_intr: Vci %d lost pkt!!!\n", vcc->vci); in ia_tx_poll()
671 if ((vcc->pop) && (skb1->len != 0)) in ia_tx_poll()
673 vcc->pop(vcc, skb1); in ia_tx_poll()
682 IF_EVENT(printk("IA: Vci %d - skb not found requeued\n",vcc->vci);) in ia_tx_poll()
686 if ((vcc->pop) && (skb->len != 0)) in ia_tx_poll()
688 vcc->pop(vcc, skb); in ia_tx_poll()
1098 struct atm_vcc *vcc; local
1138 vcc = iadev->rx_open[buf_desc_ptr->vc_index & 0xffff];
1139 if (!vcc)
1151 atomic_inc(&vcc->stats->rx_err);
1174 atomic_inc(&vcc->stats->rx_err);
1178 if (!(skb = atm_alloc_charge(vcc, len, GFP_ATOMIC))) {
1179 if (vcc->vci < 32)
1185 ATM_SKB(skb)->vcc = vcc;
1275 struct atm_vcc *vcc; local
1315 vcc = ATM_SKB(skb)->vcc;
1316 if (!vcc) {
1321 ia_vcc = INPH_IA_VCC(vcc);
1324 atomic_inc(&vcc->stats->rx_err);
1325 atm_return(vcc, skb->truesize);
1336 atomic_inc(&vcc->stats->rx_err);
1339 atm_return(vcc, skb->truesize);
1351 vcc->push(vcc,skb);
1352 atomic_inc(&vcc->stats->rx);
1375 static int open_rx(struct atm_vcc *vcc) argument
1380 IF_EVENT(printk("iadev: open_rx %d.%d\n", vcc->vpi, vcc->vci);)
1382 if (vcc->qos.rxtp.traffic_class == ATM_NONE) return 0;
1383 iadev = INPH_IA_DEV(vcc->dev);
1384 if (vcc->qos.rxtp.traffic_class == ATM_ABR) {
1393 vc_table += vcc->vci;
1396 *vc_table = vcc->vci << 6;
1399 if ((vcc->qos.rxtp.traffic_class == ATM_ABR) ||
1400 (vcc->qos.txtp.traffic_class == ATM_ABR))
1404 ia_open_abr_vc(iadev, &srv_p, vcc, 0);
1408 reass_ptr += vcc->vci;
1412 if (iadev->rx_open[vcc->vci])
1414 vcc->dev->number, vcc->vci);
1415 iadev->rx_open[vcc->vci] = vcc;
1689 struct atm_vcc *vcc; local
1711 vcc = ATM_SKB(skb)->vcc;
1712 if (!vcc) {
1719 iavcc = INPH_IA_VCC(vcc);
1726 if (vcc->qos.txtp.pcr >= iadev->rate_limit) {
1727 if ((vcc->pop) && (skb->len != 0))
1729 vcc->pop(vcc, skb);
1747 static int open_tx(struct atm_vcc *vcc) argument
1754 IF_EVENT(printk("iadev: open_tx entered vcc->vci = %d\n", vcc->vci);)
1755 if (vcc->qos.txtp.traffic_class == ATM_NONE) return 0;
1756 iadev = INPH_IA_DEV(vcc->dev);
1759 if (vcc->qos.txtp.traffic_class == ATM_ABR) {
1763 if (vcc->qos.txtp.traffic_class == ATM_CBR) {
1768 ia_vcc = INPH_IA_VCC(vcc);
1770 if (vcc->qos.txtp.max_sdu >
1773 vcc->qos.txtp.max_sdu,iadev->tx_buf_sz);
1774 vcc->dev_data = NULL;
1782 if (vcc->qos.txtp.max_pcr == ATM_MAX_PCR)
1783 vcc->qos.txtp.pcr = iadev->LineRate;
1784 else if ((vcc->qos.txtp.max_pcr == 0)&&( vcc->qos.txtp.pcr <= 0))
1785 vcc->qos.txtp.pcr = iadev->LineRate;
1786 else if ((vcc->qos.txtp.max_pcr > vcc->qos.txtp.pcr) && (vcc->qos.txtp.max_pcr> 0))
1787 vcc->qos.txtp.pcr = vcc->qos.txtp.max_pcr;
1788 if (vcc->qos.txtp.pcr > iadev->LineRate)
1789 vcc->qos.txtp.pcr = iadev->LineRate;
1790 ia_vcc->pcr = vcc->qos.txtp.pcr;
1799 struct sock *sk = sk_atm(vcc);
1801 if (vcc->qos.txtp.max_sdu != 0) {
1803 sk->sk_sndbuf = vcc->qos.txtp.max_sdu * 5;
1805 sk->sk_sndbuf = vcc->qos.txtp.max_sdu * 4;
1807 sk->sk_sndbuf = vcc->qos.txtp.max_sdu * 3;
1815 vc += vcc->vci;
1816 evc += vcc->vci;
1825 evc->atm_hdr1 = (vcc->vci >> 12) & 0x000f;
1826 evc->atm_hdr2 = (vcc->vci & 0x0fff) << 4;
1829 if (vcc->qos.txtp.traffic_class == ATM_UBR)
1834 if (vcc->qos.txtp.pcr > 0)
1835 vc->acr = cellrate_to_float(vcc->qos.txtp.pcr);
1837 vcc->qos.txtp.max_pcr,vc->acr);)
1839 else if (vcc->qos.txtp.traffic_class == ATM_ABR)
1843 if (vcc->qos.txtp.pcr > 0)
1844 srv_p.pcr = vcc->qos.txtp.pcr;
1845 if (vcc->qos.txtp.min_pcr > 0) {
1846 int tmpsum = iadev->sum_mcr+iadev->sum_cbr+vcc->qos.txtp.min_pcr;
1849 srv_p.mcr = vcc->qos.txtp.min_pcr;
1850 iadev->sum_mcr += vcc->qos.txtp.min_pcr;
1853 if (vcc->qos.txtp.icr)
1854 srv_p.icr = vcc->qos.txtp.icr;
1855 if (vcc->qos.txtp.tbe)
1856 srv_p.tbe = vcc->qos.txtp.tbe;
1857 if (vcc->qos.txtp.frtt)
1858 srv_p.frtt = vcc->qos.txtp.frtt;
1859 if (vcc->qos.txtp.rif)
1860 srv_p.rif = vcc->qos.txtp.rif;
1861 if (vcc->qos.txtp.rdf)
1862 srv_p.rdf = vcc->qos.txtp.rdf;
1863 if (vcc->qos.txtp.nrm_pres)
1864 srv_p.nrm = vcc->qos.txtp.nrm;
1865 if (vcc->qos.txtp.trm_pres)
1866 srv_p.trm = vcc->qos.txtp.trm;
1867 if (vcc->qos.txtp.adtf_pres)
1868 srv_p.adtf = vcc->qos.txtp.adtf;
1869 if (vcc->qos.txtp.cdf_pres)
1870 srv_p.cdf = vcc->qos.txtp.cdf;
1875 ia_open_abr_vc(iadev, &srv_p, vcc, 1);
1876 } else if (vcc->qos.txtp.traffic_class == ATM_CBR) {
1881 if (vcc->qos.txtp.max_pcr > iadev->LineRate) {
1887 if ((ret = ia_cbr_setup (iadev, vcc)) < 0) {
1894 iadev->testTable[vcc->vci]->vc_status |= VC_ACTIVE;
2607 static void ia_close(struct atm_vcc *vcc) argument
2617 iadev = INPH_IA_DEV(vcc->dev);
2618 ia_vcc = INPH_IA_VCC(vcc);
2622 ia_vcc->vc_desc_cnt,vcc->vci);)
2623 clear_bit(ATM_VF_READY,&vcc->flags);
2626 if (vcc->qos.txtp.traffic_class != ATM_NONE) {
2633 if (ATM_SKB(skb)->vcc == vcc){
2634 if (vcc->pop) vcc->pop(vcc, skb);
2650 iadev->testTable[vcc->vci]->lastTime = 0;
2651 iadev->testTable[vcc->vci]->fract = 0;
2652 iadev->testTable[vcc->vci]->vc_status = VC_UBR;
2653 if (vcc->qos.txtp.traffic_class == ATM_ABR) {
2654 if (vcc->qos.txtp.min_pcr > 0)
2655 iadev->sum_mcr -= vcc->qos.txtp.min_pcr;
2657 if (vcc->qos.txtp.traffic_class == ATM_CBR) {
2658 ia_vcc = INPH_IA_VCC(vcc);
2660 ia_cbrVc_close (vcc);
2665 if (vcc->qos.rxtp.traffic_class != ATM_NONE) {
2668 vc_table += vcc->vci;
2672 vc_table += vcc->vci;
2673 *vc_table = (vcc->vci << 6) | 15;
2674 if (vcc->qos.rxtp.traffic_class == ATM_ABR) {
2677 abr_vc_table += vcc->vci;
2682 rx_dle_intr(vcc->dev);
2683 iadev->rx_open[vcc->vci] = NULL;
2685 kfree(INPH_IA_VCC(vcc));
2687 vcc->dev_data = NULL;
2688 clear_bit(ATM_VF_ADDR,&vcc->flags);
2692 static int ia_open(struct atm_vcc *vcc) argument
2696 if (!test_bit(ATM_VF_PARTIAL,&vcc->flags))
2699 vcc->dev_data = NULL;
2701 if (vcc->vci != ATM_VPI_UNSPEC && vcc->vpi != ATM_VCI_UNSPEC)
2704 set_bit(ATM_VF_ADDR,&vcc->flags);
2706 if (vcc->qos.aal != ATM_AAL5)
2709 vcc->dev->number, vcc->vpi, vcc->vci);)
2714 vcc->dev_data = ia_vcc;
2716 if ((error = open_rx(vcc)))
2719 ia_close(vcc);
2723 if ((error = open_tx(vcc)))
2726 ia_close(vcc);
2730 set_bit(ATM_VF_READY,&vcc->flags);
2746 static int ia_change_qos(struct atm_vcc *vcc, struct atm_qos *qos, int flags) argument
2884 static int ia_pkt_tx (struct atm_vcc *vcc, struct sk_buff *skb) { argument
2894 iadev = INPH_IA_DEV(vcc->dev);
2895 iavcc = INPH_IA_VCC(vcc);
2898 if (vcc->pop)
2899 vcc->pop(vcc, skb);
2907 if (vcc->pop)
2908 vcc->pop(vcc, skb);
2915 if (vcc->pop)
2916 vcc->pop(vcc, skb);
2935 atomic_inc(&vcc->stats->tx);
2936 if (vcc->pop)
2937 vcc->pop(vcc, skb);
2996 buf_desc_ptr->vc_index = vcc->vci;
2999 if (vcc->qos.txtp.traffic_class == ATM_ABR)
3000 clear_lockup (vcc, iadev);
3037 ATM_DESC(skb) = vcc->vci;
3040 atomic_inc(&vcc->stats->tx);
3047 if (atomic_read(&vcc->stats->tx) % 20 == 0) {
3049 vcc->tx_quota = vcc->tx_quota * 3 / 4;
3050 printk("Tx1: vcc->tx_quota = %d \n", (u32)vcc->tx_quota );
3052 iavcc->saved_tx_quota = vcc->tx_quota;
3055 printk("Tx2: vcc->tx_quota = %d \n", (u32)vcc->tx_quota );
3064 static int ia_send(struct atm_vcc *vcc, struct sk_buff *skb) argument
3069 iadev = INPH_IA_DEV(vcc->dev);
3078 if (!test_bit(ATM_VF_READY,&vcc->flags)){
3083 ATM_SKB(skb)->vcc = vcc;
3089 if (ia_pkt_tx (vcc, skb)) {