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 requed\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()
1096 struct atm_vcc *vcc; local
1136 vcc = iadev->rx_open[buf_desc_ptr->vc_index & 0xffff];
1137 if (!vcc)
1149 atomic_inc(&vcc->stats->rx_err);
1172 atomic_inc(&vcc->stats->rx_err);
1176 if (!(skb = atm_alloc_charge(vcc, len, GFP_ATOMIC))) {
1177 if (vcc->vci < 32)
1183 ATM_SKB(skb)->vcc = vcc;
1273 struct atm_vcc *vcc; local
1313 vcc = ATM_SKB(skb)->vcc;
1314 if (!vcc) {
1319 ia_vcc = INPH_IA_VCC(vcc);
1322 atomic_inc(&vcc->stats->rx_err);
1323 atm_return(vcc, skb->truesize);
1334 atomic_inc(&vcc->stats->rx_err);
1337 atm_return(vcc, skb->truesize);
1349 vcc->push(vcc,skb);
1350 atomic_inc(&vcc->stats->rx);
1373 static int open_rx(struct atm_vcc *vcc) argument
1378 IF_EVENT(printk("iadev: open_rx %d.%d\n", vcc->vpi, vcc->vci);)
1380 if (vcc->qos.rxtp.traffic_class == ATM_NONE) return 0;
1381 iadev = INPH_IA_DEV(vcc->dev);
1382 if (vcc->qos.rxtp.traffic_class == ATM_ABR) {
1391 vc_table += vcc->vci;
1394 *vc_table = vcc->vci << 6;
1397 if ((vcc->qos.rxtp.traffic_class == ATM_ABR) ||
1398 (vcc->qos.txtp.traffic_class == ATM_ABR))
1402 ia_open_abr_vc(iadev, &srv_p, vcc, 0);
1406 reass_ptr += vcc->vci;
1410 if (iadev->rx_open[vcc->vci])
1412 vcc->dev->number, vcc->vci);
1413 iadev->rx_open[vcc->vci] = vcc;
1687 struct atm_vcc *vcc; local
1709 vcc = ATM_SKB(skb)->vcc;
1710 if (!vcc) {
1717 iavcc = INPH_IA_VCC(vcc);
1724 if (vcc->qos.txtp.pcr >= iadev->rate_limit) {
1725 if ((vcc->pop) && (skb->len != 0))
1727 vcc->pop(vcc, skb);
1745 static int open_tx(struct atm_vcc *vcc) argument
1752 IF_EVENT(printk("iadev: open_tx entered vcc->vci = %d\n", vcc->vci);)
1753 if (vcc->qos.txtp.traffic_class == ATM_NONE) return 0;
1754 iadev = INPH_IA_DEV(vcc->dev);
1757 if (vcc->qos.txtp.traffic_class == ATM_ABR) {
1761 if (vcc->qos.txtp.traffic_class == ATM_CBR) {
1766 ia_vcc = INPH_IA_VCC(vcc);
1768 if (vcc->qos.txtp.max_sdu >
1771 vcc->qos.txtp.max_sdu,iadev->tx_buf_sz);
1772 vcc->dev_data = NULL;
1780 if (vcc->qos.txtp.max_pcr == ATM_MAX_PCR)
1781 vcc->qos.txtp.pcr = iadev->LineRate;
1782 else if ((vcc->qos.txtp.max_pcr == 0)&&( vcc->qos.txtp.pcr <= 0))
1783 vcc->qos.txtp.pcr = iadev->LineRate;
1784 else if ((vcc->qos.txtp.max_pcr > vcc->qos.txtp.pcr) && (vcc->qos.txtp.max_pcr> 0))
1785 vcc->qos.txtp.pcr = vcc->qos.txtp.max_pcr;
1786 if (vcc->qos.txtp.pcr > iadev->LineRate)
1787 vcc->qos.txtp.pcr = iadev->LineRate;
1788 ia_vcc->pcr = vcc->qos.txtp.pcr;
1797 struct sock *sk = sk_atm(vcc);
1799 if (vcc->qos.txtp.max_sdu != 0) {
1801 sk->sk_sndbuf = vcc->qos.txtp.max_sdu * 5;
1803 sk->sk_sndbuf = vcc->qos.txtp.max_sdu * 4;
1805 sk->sk_sndbuf = vcc->qos.txtp.max_sdu * 3;
1813 vc += vcc->vci;
1814 evc += vcc->vci;
1823 evc->atm_hdr1 = (vcc->vci >> 12) & 0x000f;
1824 evc->atm_hdr2 = (vcc->vci & 0x0fff) << 4;
1827 if (vcc->qos.txtp.traffic_class == ATM_UBR)
1832 if (vcc->qos.txtp.pcr > 0)
1833 vc->acr = cellrate_to_float(vcc->qos.txtp.pcr);
1835 vcc->qos.txtp.max_pcr,vc->acr);)
1837 else if (vcc->qos.txtp.traffic_class == ATM_ABR)
1841 if (vcc->qos.txtp.pcr > 0)
1842 srv_p.pcr = vcc->qos.txtp.pcr;
1843 if (vcc->qos.txtp.min_pcr > 0) {
1844 int tmpsum = iadev->sum_mcr+iadev->sum_cbr+vcc->qos.txtp.min_pcr;
1847 srv_p.mcr = vcc->qos.txtp.min_pcr;
1848 iadev->sum_mcr += vcc->qos.txtp.min_pcr;
1851 if (vcc->qos.txtp.icr)
1852 srv_p.icr = vcc->qos.txtp.icr;
1853 if (vcc->qos.txtp.tbe)
1854 srv_p.tbe = vcc->qos.txtp.tbe;
1855 if (vcc->qos.txtp.frtt)
1856 srv_p.frtt = vcc->qos.txtp.frtt;
1857 if (vcc->qos.txtp.rif)
1858 srv_p.rif = vcc->qos.txtp.rif;
1859 if (vcc->qos.txtp.rdf)
1860 srv_p.rdf = vcc->qos.txtp.rdf;
1861 if (vcc->qos.txtp.nrm_pres)
1862 srv_p.nrm = vcc->qos.txtp.nrm;
1863 if (vcc->qos.txtp.trm_pres)
1864 srv_p.trm = vcc->qos.txtp.trm;
1865 if (vcc->qos.txtp.adtf_pres)
1866 srv_p.adtf = vcc->qos.txtp.adtf;
1867 if (vcc->qos.txtp.cdf_pres)
1868 srv_p.cdf = vcc->qos.txtp.cdf;
1873 ia_open_abr_vc(iadev, &srv_p, vcc, 1);
1874 } else if (vcc->qos.txtp.traffic_class == ATM_CBR) {
1879 if (vcc->qos.txtp.max_pcr > iadev->LineRate) {
1885 if ((ret = ia_cbr_setup (iadev, vcc)) < 0) {
1892 iadev->testTable[vcc->vci]->vc_status |= VC_ACTIVE;
2600 static void ia_close(struct atm_vcc *vcc) argument
2610 iadev = INPH_IA_DEV(vcc->dev);
2611 ia_vcc = INPH_IA_VCC(vcc);
2615 ia_vcc->vc_desc_cnt,vcc->vci);)
2616 clear_bit(ATM_VF_READY,&vcc->flags);
2619 if (vcc->qos.txtp.traffic_class != ATM_NONE) {
2626 if (ATM_SKB(skb)->vcc == vcc){
2627 if (vcc->pop) vcc->pop(vcc, skb);
2643 iadev->testTable[vcc->vci]->lastTime = 0;
2644 iadev->testTable[vcc->vci]->fract = 0;
2645 iadev->testTable[vcc->vci]->vc_status = VC_UBR;
2646 if (vcc->qos.txtp.traffic_class == ATM_ABR) {
2647 if (vcc->qos.txtp.min_pcr > 0)
2648 iadev->sum_mcr -= vcc->qos.txtp.min_pcr;
2650 if (vcc->qos.txtp.traffic_class == ATM_CBR) {
2651 ia_vcc = INPH_IA_VCC(vcc);
2653 ia_cbrVc_close (vcc);
2658 if (vcc->qos.rxtp.traffic_class != ATM_NONE) {
2661 vc_table += vcc->vci;
2665 vc_table += vcc->vci;
2666 *vc_table = (vcc->vci << 6) | 15;
2667 if (vcc->qos.rxtp.traffic_class == ATM_ABR) {
2670 abr_vc_table += vcc->vci;
2675 rx_dle_intr(vcc->dev);
2676 iadev->rx_open[vcc->vci] = NULL;
2678 kfree(INPH_IA_VCC(vcc));
2680 vcc->dev_data = NULL;
2681 clear_bit(ATM_VF_ADDR,&vcc->flags);
2685 static int ia_open(struct atm_vcc *vcc) argument
2689 if (!test_bit(ATM_VF_PARTIAL,&vcc->flags))
2692 vcc->dev_data = NULL;
2694 if (vcc->vci != ATM_VPI_UNSPEC && vcc->vpi != ATM_VCI_UNSPEC)
2697 set_bit(ATM_VF_ADDR,&vcc->flags);
2699 if (vcc->qos.aal != ATM_AAL5)
2702 vcc->dev->number, vcc->vpi, vcc->vci);)
2707 vcc->dev_data = ia_vcc;
2709 if ((error = open_rx(vcc)))
2712 ia_close(vcc);
2716 if ((error = open_tx(vcc)))
2719 ia_close(vcc);
2723 set_bit(ATM_VF_READY,&vcc->flags);
2739 static int ia_change_qos(struct atm_vcc *vcc, struct atm_qos *qos, int flags) argument
2880 static int ia_getsockopt(struct atm_vcc *vcc, int level, int optname, argument
2887 static int ia_setsockopt(struct atm_vcc *vcc, int level, int optname, argument
2894 static int ia_pkt_tx (struct atm_vcc *vcc, struct sk_buff *skb) { argument
2904 iadev = INPH_IA_DEV(vcc->dev);
2905 iavcc = INPH_IA_VCC(vcc);
2908 if (vcc->pop)
2909 vcc->pop(vcc, skb);
2917 if (vcc->pop)
2918 vcc->pop(vcc, skb);
2925 if (vcc->pop)
2926 vcc->pop(vcc, skb);
2945 atomic_inc(&vcc->stats->tx);
2946 if (vcc->pop)
2947 vcc->pop(vcc, skb);
3006 buf_desc_ptr->vc_index = vcc->vci;
3009 if (vcc->qos.txtp.traffic_class == ATM_ABR)
3010 clear_lockup (vcc, iadev);
3047 ATM_DESC(skb) = vcc->vci;
3050 atomic_inc(&vcc->stats->tx);
3057 if (atomic_read(&vcc->stats->tx) % 20 == 0) {
3059 vcc->tx_quota = vcc->tx_quota * 3 / 4;
3060 printk("Tx1: vcc->tx_quota = %d \n", (u32)vcc->tx_quota );
3062 iavcc->saved_tx_quota = vcc->tx_quota;
3065 printk("Tx2: vcc->tx_quota = %d \n", (u32)vcc->tx_quota );
3074 static int ia_send(struct atm_vcc *vcc, struct sk_buff *skb) argument
3079 iadev = INPH_IA_DEV(vcc->dev);
3088 if (!test_bit(ATM_VF_READY,&vcc->flags)){
3093 ATM_SKB(skb)->vcc = vcc;
3099 if (ia_pkt_tx (vcc, skb)) {