• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/atm/

Lines Matching refs:vcc

311 static void rx_ident_err(struct atm_vcc *vcc)
317 dev = vcc->dev;
323 eni_vcc = ENI_VCC(vcc);
326 printk(KERN_ALERT " VCI %d, rxing %d, words %ld\n",vcc->vci,
342 static int do_rx_dma(struct atm_vcc *vcc,struct sk_buff *skb,
353 eni_dev = ENI_DEV(vcc->dev);
354 eni_vcc = ENI_VCC(vcc);
362 "mis-aligned RX data (0x%lx)\n",vcc->dev->number,
363 vcc->vci,(unsigned long) paddr);
366 ATM_SKB(skb)->vcc = vcc;
371 dma[j++] = (here << MID_DMA_COUNT_SHIFT) | (vcc->vci
392 (vcc->vci << MID_DMA_VCI_SHIFT);
400 MID_DMA_COUNT_SHIFT) | (vcc->vci <<
410 MID_DMA_COUNT_SHIFT) | (vcc->vci <<
420 MID_DMA_COUNT_SHIFT) | (vcc->vci <<
430 MID_DMA_COUNT_SHIFT) | (vcc->vci <<
439 | (vcc->vci << MID_DMA_VCI_SHIFT);
445 (vcc->vci << MID_DMA_VCI_SHIFT) | MID_DT_JK;
462 vcc->dev->number);
489 static void discard(struct atm_vcc *vcc,unsigned long size)
493 eni_vcc = ENI_VCC(vcc);
495 while (do_rx_dma(vcc,NULL,1,size,0)) EVENT("BUSY LOOP",0,0);
507 static int rx_aal0(struct atm_vcc *vcc)
515 eni_vcc = ENI_VCC(vcc);
518 rx_ident_err(vcc);
523 vcc->dev->number);
525 atomic_inc(&vcc->stats->rx_err);
530 skb = length ? atm_alloc_charge(vcc,length,GFP_ATOMIC) : NULL;
532 discard(vcc,length >> 2);
538 if (do_rx_dma(vcc,skb,1,length >> 2,length >> 2)) return 1;
544 static int rx_aal5(struct atm_vcc *vcc)
553 eni_vcc = ENI_VCC(vcc);
556 rx_ident_err(vcc);
563 vcc->dev->number);
572 vcc->dev->number);
580 atomic_inc(&vcc->stats->rx_err);
595 vcc->dev->number,vcc->vci,length,size << 2,descr);
597 atomic_inc(&vcc->stats->rx_err);
600 skb = eff ? atm_alloc_charge(vcc,eff << 2,GFP_ATOMIC) : NULL;
602 discard(vcc,size);
607 if (do_rx_dma(vcc,skb,1,size,eff)) return 1;
613 static inline int rx_vcc(struct atm_vcc *vcc)
619 eni_vcc = ENI_VCC(vcc);
620 vci_dsc = ENI_DEV(vcc->dev)->vci+vcc->vci*16;
626 DPRINTK("CB_DESCR %ld REG_DESCR %d\n",ENI_VCC(vcc)->descr,
629 if (ENI_VCC(vcc)->rx(vcc)) return 1;
639 while (ENI_VCC(vcc)->descr != (tmp = (readl(vci_dsc+4) & MID_VCI_DESCR)
643 DPRINTK("CB_DESCR %ld REG_DESCR %d\n",ENI_VCC(vcc)->descr,
646 if (ENI_VCC(vcc)->rx(vcc)) return 1;
680 struct atm_vcc *vcc;
688 vcc = eni_dev->rx_map[vci & 1023];
689 if (!vcc) {
696 if (ENI_VCC(vcc)->next != ENI_VCC_NOS) {
701 ENI_VCC(vcc)->timestamp = ktime_get_real();
702 ENI_VCC(vcc)->next = NULL;
703 if (vcc->qos.rxtp.traffic_class == ATM_CBR) {
705 ENI_VCC(eni_dev->last_fast)->next = vcc;
706 else eni_dev->fast = vcc;
707 eni_dev->last_fast = vcc;
711 ENI_VCC(eni_dev->last_slow)->next = vcc;
712 else eni_dev->slow = vcc;
713 eni_dev->last_slow = vcc;
716 ENI_VCC(vcc)->servicing++;
725 struct atm_vcc *vcc;
745 vcc = ATM_SKB(skb)->vcc;
746 eni_vcc = ENI_VCC(vcc);
748 vci_dsc = eni_dev->vci+vcc->vci*16;
763 if (vcc->qos.aal == ATM_AAL0)
767 vcc->push(vcc,skb);
770 atomic_inc(&vcc->stats->rx);
776 static int open_rx_first(struct atm_vcc *vcc)
783 eni_dev = ENI_DEV(vcc->dev);
784 eni_vcc = ENI_VCC(vcc);
786 if (vcc->qos.rxtp.traffic_class == ATM_NONE) return 0;
787 size = vcc->qos.rxtp.max_sdu*eni_dev->rx_mult/100;
788 if (size > MID_MAX_BUF_SIZE && vcc->qos.rxtp.max_sdu <=
795 eni_vcc->rx = vcc->qos.aal == ATM_AAL5 ? rx_aal5 : rx_aal0;
805 static int open_rx_second(struct atm_vcc *vcc)
814 eni_dev = ENI_DEV(vcc->dev);
815 eni_vcc = ENI_VCC(vcc);
818 here = eni_dev->vci+vcc->vci*16;
824 if (eni_dev->rx_map[vcc->vci])
826 "in use\n",vcc->dev->number,vcc->vci);
827 eni_dev->rx_map[vcc->vci] = vcc; /* now it counts */
828 writel(((vcc->qos.aal != ATM_AAL5 ? MID_MODE_RAW : MID_MODE_AAL5) <<
836 static void close_rx(struct atm_vcc *vcc)
843 eni_vcc = ENI_VCC(vcc);
845 eni_dev = ENI_DEV(vcc->dev);
846 if (vcc->vpi != ATM_VPI_UNSPEC && vcc->vci != ATM_VCI_UNSPEC) {
847 here = eni_dev->vci+vcc->vci*16;
856 eni_dev->rx_map[vcc->vci] = NULL;
881 tmp = readl(eni_dev->vci+vcc->vci*16+4) & MID_VCI_READ;
1024 struct atm_vcc *vcc;
1036 vcc = ATM_SKB(skb)->vcc;
1037 NULLCHECK(vcc);
1038 eni_dev = ENI_DEV(vcc->dev);
1040 eni_vcc = ENI_VCC(vcc);
1049 aal5 = vcc->qos.aal == ATM_AAL5;
1069 vcc->dev->number,size);
1082 "(got only %d)\n",vcc->dev->number,dma_size,TX_DMA_BUF);
1088 vcc->dev->number);
1129 writel((vcc->vci << MID_SEG_VCI_SHIFT) |
1145 ENI_VCC(vcc)->txing += size;
1182 struct atm_vcc *vcc;
1190 vcc = ATM_SKB(skb)->vcc;
1191 NULLCHECK(vcc);
1192 tx = ENI_VCC(vcc)->tx;
1193 NULLCHECK(ENI_VCC(vcc)->tx);
1196 if (ENI_VCC(vcc)->txing < tx->words && ENI_PRV_POS(skb) ==
1201 ENI_VCC(vcc)->txing -= ENI_PRV_SIZE(skb);
1204 if (vcc->pop) vcc->pop(vcc,skb);
1206 atomic_inc(&vcc->stats->tx);
1260 static int reserve_or_set_tx(struct atm_vcc *vcc,struct atm_trafprm *txtp,
1263 struct eni_dev *eni_dev = ENI_DEV(vcc->dev);
1264 struct eni_vcc *eni_vcc = ENI_VCC(vcc);
1348 static int open_tx_first(struct atm_vcc *vcc)
1350 ENI_VCC(vcc)->tx = NULL;
1351 if (vcc->qos.txtp.traffic_class == ATM_NONE) return 0;
1352 ENI_VCC(vcc)->txing = 0;
1353 return reserve_or_set_tx(vcc,&vcc->qos.txtp,1,1);
1357 static int open_tx_second(struct atm_vcc *vcc)
1363 static void close_tx(struct atm_vcc *vcc)
1369 eni_vcc = ENI_VCC(vcc);
1371 eni_dev = ENI_DEV(vcc->dev);
1843 static void eni_close(struct atm_vcc *vcc)
1846 if (!ENI_VCC(vcc)) return;
1847 clear_bit(ATM_VF_READY,&vcc->flags);
1848 close_rx(vcc);
1849 close_tx(vcc);
1852 kfree(ENI_VCC(vcc));
1853 vcc->dev_data = NULL;
1854 clear_bit(ATM_VF_ADDR,&vcc->flags);
1859 static int eni_open(struct atm_vcc *vcc)
1864 short vpi = vcc->vpi;
1865 int vci = vcc->vci;
1869 if (!test_bit(ATM_VF_PARTIAL,&vcc->flags))
1870 vcc->dev_data = NULL;
1871 eni_dev = ENI_DEV(vcc->dev);
1873 set_bit(ATM_VF_ADDR,&vcc->flags);
1874 if (vcc->qos.aal != ATM_AAL0 && vcc->qos.aal != ATM_AAL5)
1876 DPRINTK(DEV_LABEL "(itf %d): open %d.%d\n",vcc->dev->number,vcc->vpi,
1877 vcc->vci);
1878 if (!test_bit(ATM_VF_PARTIAL,&vcc->flags)) {
1881 vcc->dev_data = eni_vcc;
1883 if ((error = open_rx_first(vcc))) {
1884 eni_close(vcc);
1887 if ((error = open_tx_first(vcc))) {
1888 eni_close(vcc);
1893 if ((error = open_rx_second(vcc))) {
1894 eni_close(vcc);
1897 if ((error = open_tx_second(vcc))) {
1898 eni_close(vcc);
1901 set_bit(ATM_VF_READY,&vcc->flags);
1907 static int eni_change_qos(struct atm_vcc *vcc,struct atm_qos *qos,int flgs)
1909 struct eni_dev *eni_dev = ENI_DEV(vcc->dev);
1910 struct eni_tx *tx = ENI_VCC(vcc)->tx;
1924 error = reserve_or_set_tx(vcc,&qos->txtp,rsv,shp);
1935 if (ATM_SKB(skb)->vcc != vcc) continue;
1986 static int eni_getsockopt(struct atm_vcc *vcc,int level,int optname,
1993 static int eni_setsockopt(struct atm_vcc *vcc,int level,int optname,
2000 static int eni_send(struct atm_vcc *vcc,struct sk_buff *skb)
2005 if (!ENI_VCC(vcc)->tx) {
2006 if (vcc->pop) vcc->pop(vcc,skb);
2012 if (vcc->pop) vcc->pop(vcc,skb);
2015 if (vcc->qos.aal == ATM_AAL0) {
2017 if (vcc->pop) vcc->pop(vcc,skb);
2024 ATM_SKB(skb)->vcc = vcc;
2025 tasklet_disable(&ENI_DEV(vcc->dev)->task);
2027 tasklet_enable(&ENI_DEV(vcc->dev)->task);
2029 skb_queue_tail(&ENI_VCC(vcc)->tx->backlog,skb);
2031 tasklet_schedule(&ENI_DEV(vcc->dev)->task);
2055 struct atm_vcc *vcc;
2129 vcc = atm_sk(s);
2130 if (vcc->dev != dev)
2132 eni_vcc = ENI_VCC(vcc);
2134 length = sprintf(page,"vcc %4d: ",vcc->vci);