• 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

824     struct atm_vcc*         vcc;
850 /* vcc closed since the time the entry was submitted for tx? */
851 if ((vc_map->vcc == NULL) ||
852 (test_bit(ATM_VF_READY, &vc_map->vcc->flags) == 0)) {
854 DPRINTK(1, "no ready vcc found for PDU sent on device %d\n",
860 ASSERT(vc_map->vcc);
862 /* vcc closed then immediately re-opened? */
865 /* when a vcc is closed, some PDUs may be still pending in the tx queue.
866 if the same vcc is immediately re-opened, those pending PDUs must
868 to the prior incarnation of that vcc. otherwise, sk_atm(vcc)->sk_wmem_alloc
870 leading to a negative sk->sk_wmem_alloc count, ultimately freezing the vcc.
871 we thus bind the tx entry to the current incarnation of the vcc
874 of the vcc, then this implies that the vcc has been closed then re-opened.
877 DPRINTK(1, "vcc closed-then-re-opened; dropping PDU sent on device %d\n",
883 vcc = vc_map->vcc;
884 ASSERT(vcc);
887 if (vcc->pop) {
888 vcc->pop(vcc, entry->skb);
894 if (atomic_read(&sk_atm(vcc)->sk_wmem_alloc) < 0) {
895 atomic_set(&sk_atm(vcc)->sk_wmem_alloc, 0);
899 atomic_inc(&vcc->stats->tx_err);
901 atomic_inc(&vcc->stats->tx);
1015 fore200e_push_rpd(struct fore200e* fore200e, struct atm_vcc* vcc, struct rpd* rpd)
1025 ASSERT(vcc);
1027 fore200e_vcc = FORE200E_VCC(vcc);
1031 if ((vcc->qos.aal == ATM_AAL0) && (vcc->qos.rxtp.max_sdu == ATM_AAL0_SDU)) {
1050 atomic_inc(&vcc->stats->rx_drop);
1086 if (atm_charge(vcc, skb->truesize) == 0) {
1089 vcc->itf, vcc->vpi, vcc->vci);
1093 atomic_inc(&vcc->stats->rx_drop);
1097 ASSERT(atomic_read(&sk_atm(vcc)->sk_wmem_alloc) >= 0);
1099 vcc->push(vcc, skb);
1100 atomic_inc(&vcc->stats->rx);
1102 ASSERT(atomic_read(&sk_atm(vcc)->sk_wmem_alloc) >= 0);
1146 struct atm_vcc* vcc;
1159 if ((vc_map->vcc == NULL) ||
1160 (test_bit(ATM_VF_READY, &vc_map->vcc->flags) == 0)) {
1167 vcc = vc_map->vcc;
1168 ASSERT(vcc);
1172 fore200e_push_rpd(fore200e, vcc, entry->rpd);
1178 atomic_inc(&vcc->stats->rx_err);
1267 fore200e_select_scheme(struct atm_vcc* vcc)
1270 int scheme = vcc->vci % 2 ? BUFFER_SCHEME_ONE : BUFFER_SCHEME_TWO;
1273 vcc->itf, vcc->vpi, vcc->vci, scheme);
1280 fore200e_activate_vcin(struct fore200e* fore200e, int activate, struct atm_vcc* vcc, int mtu)
1288 enum fore200e_aal aal = fore200e_atm2fore_aal(vcc->qos.aal);
1293 FORE200E_VCC(vcc)->scheme = fore200e_select_scheme(vcc);
1297 activ_opcode.scheme = FORE200E_VCC(vcc)->scheme;
1305 vpvc.vci = vcc->vci;
1306 vpvc.vpi = vcc->vpi;
1331 activate ? "open" : "close", vcc->itf, vcc->vpi, vcc->vci);
1335 DPRINTK(1, "VC %d.%d.%d %sed\n", vcc->itf, vcc->vpi, vcc->vci,
1361 fore200e_open(struct atm_vcc *vcc)
1363 struct fore200e* fore200e = FORE200E_DEV(vcc->dev);
1367 int vci = vcc->vci;
1368 short vpi = vcc->vpi;
1376 if (vc_map->vcc) {
1386 vc_map->vcc = vcc;
1392 vc_map->vcc = NULL;
1398 vcc->itf, vcc->vpi, vcc->vci, fore200e_atm2fore_aal(vcc->qos.aal),
1399 fore200e_traffic_class[ vcc->qos.txtp.traffic_class ],
1400 vcc->qos.txtp.min_pcr, vcc->qos.txtp.max_pcr, vcc->qos.txtp.max_cdv, vcc->qos.txtp.max_sdu,
1401 fore200e_traffic_class[ vcc->qos.rxtp.traffic_class ],
1402 vcc->qos.rxtp.min_pcr, vcc->qos.rxtp.max_pcr, vcc->qos.rxtp.max_cdv, vcc->qos.rxtp.max_sdu);
1405 if ((vcc->qos.txtp.traffic_class == ATM_CBR) && (vcc->qos.txtp.max_pcr > 0)) {
1408 if (fore200e->available_cell_rate < vcc->qos.txtp.max_pcr) {
1412 vc_map->vcc = NULL;
1417 fore200e->available_cell_rate -= vcc->qos.txtp.max_pcr;
1421 vcc->itf = vcc->dev->number;
1423 set_bit(ATM_VF_PARTIAL,&vcc->flags);
1424 set_bit(ATM_VF_ADDR, &vcc->flags);
1426 vcc->dev_data = fore200e_vcc;
1428 if (fore200e_activate_vcin(fore200e, 1, vcc, vcc->qos.rxtp.max_sdu) < 0) {
1430 vc_map->vcc = NULL;
1432 clear_bit(ATM_VF_ADDR, &vcc->flags);
1433 clear_bit(ATM_VF_PARTIAL,&vcc->flags);
1435 vcc->dev_data = NULL;
1437 fore200e->available_cell_rate += vcc->qos.txtp.max_pcr;
1444 if ((vcc->qos.txtp.traffic_class == ATM_CBR) && (vcc->qos.txtp.max_pcr > 0)) {
1446 fore200e_rate_ctrl(&vcc->qos, &fore200e_vcc->rate);
1447 set_bit(ATM_VF_HASQOS, &vcc->flags);
1450 vcc->itf, vcc->vpi, vcc->vci, fore200e_atm2fore_aal(vcc->qos.aal),
1451 vcc->qos.txtp.max_pcr, vcc->qos.rxtp.max_pcr,
1459 /* new incarnation of the vcc */
1463 set_bit(ATM_VF_READY, &vcc->flags);
1470 fore200e_close(struct atm_vcc* vcc)
1472 struct fore200e* fore200e = FORE200E_DEV(vcc->dev);
1477 ASSERT(vcc);
1478 ASSERT((vcc->vpi >= 0) && (vcc->vpi < 1<<FORE200E_VPI_BITS));
1479 ASSERT((vcc->vci >= 0) && (vcc->vci < 1<<FORE200E_VCI_BITS));
1481 DPRINTK(2, "closing %d.%d.%d:%d\n", vcc->itf, vcc->vpi, vcc->vci, fore200e_atm2fore_aal(vcc->qos.aal));
1483 clear_bit(ATM_VF_READY, &vcc->flags);
1485 fore200e_activate_vcin(fore200e, 0, vcc, 0);
1489 vc_map = FORE200E_VC_MAP(fore200e, vcc->vpi, vcc->vci);
1492 vc_map->vcc = NULL;
1494 vcc->itf = vcc->vci = vcc->vpi = 0;
1496 fore200e_vcc = FORE200E_VCC(vcc);
1497 vcc->dev_data = NULL;
1502 if ((vcc->qos.txtp.traffic_class == ATM_CBR) && (vcc->qos.txtp.max_pcr > 0)) {
1505 fore200e->available_cell_rate += vcc->qos.txtp.max_pcr;
1508 clear_bit(ATM_VF_HASQOS, &vcc->flags);
1511 clear_bit(ATM_VF_ADDR, &vcc->flags);
1512 clear_bit(ATM_VF_PARTIAL,&vcc->flags);
1520 fore200e_send(struct atm_vcc *vcc, struct sk_buff *skb)
1522 struct fore200e* fore200e = FORE200E_DEV(vcc->dev);
1523 struct fore200e_vcc* fore200e_vcc = FORE200E_VCC(vcc);
1538 ASSERT(vcc);
1539 ASSERT(atomic_read(&sk_atm(vcc)->sk_wmem_alloc) >= 0);
1543 if (!test_bit(ATM_VF_READY, &vcc->flags)) {
1544 DPRINTK(1, "VC %d.%d.%d not ready for tx\n", vcc->itf, vcc->vpi, vcc->vpi);
1550 if ((vcc->qos.aal == ATM_AAL0) && (vcc->qos.txtp.max_sdu == ATM_AAL0_SDU)) {
1571 if ((vcc->qos.aal == ATM_AAL0) && (skb_len % ATM_CELL_PAYLOAD)) {
1582 if (vcc->pop) {
1583 vcc->pop(vcc, skb);
1599 vc_map = FORE200E_VC_MAP(fore200e, vcc->vpi, vcc->vci);
1600 ASSERT(vc_map->vcc == vcc);
1623 atomic_inc(&vcc->stats->tx_err);
1628 if (vcc->pop) {
1629 vcc->pop(vcc, skb);
1659 vcc->itf, vcc->vpi, vcc->vci, fore200e_atm2fore_aal(vcc->qos.aal),
1683 tpd->atm_header.vci = vcc->vci;
1684 tpd->atm_header.vpi = vcc->vpi;
1690 tpd->spec.aal = fore200e_atm2fore_aal(vcc->qos.aal);
1751 fore200e_getsockopt(struct atm_vcc* vcc, int level, int optname, void __user *optval, int optlen)
1753 /* struct fore200e* fore200e = FORE200E_DEV(vcc->dev); */
1756 vcc->itf, vcc->vpi, vcc->vci, level, optname, optval, optlen);
1763 fore200e_setsockopt(struct atm_vcc* vcc, int level, int optname, void __user *optval, unsigned int optlen)
1765 /* struct fore200e* fore200e = FORE200E_DEV(vcc->dev); */
1768 vcc->itf, vcc->vpi, vcc->vci, level, optname, optval, optlen);
1907 fore200e_change_qos(struct atm_vcc* vcc,struct atm_qos* qos, int flags)
1909 struct fore200e_vcc* fore200e_vcc = FORE200E_VCC(vcc);
1910 struct fore200e* fore200e = FORE200E_DEV(vcc->dev);
1912 if (!test_bit(ATM_VF_READY, &vcc->flags)) {
1913 DPRINTK(1, "VC %d.%d.%d not ready for QoS change\n", vcc->itf, vcc->vpi, vcc->vpi);
1921 vcc->itf, vcc->vpi, vcc->vci,
1931 if (fore200e->available_cell_rate + vcc->qos.txtp.max_pcr < qos->txtp.max_pcr) {
1936 fore200e->available_cell_rate += vcc->qos.txtp.max_pcr;
1941 memcpy(&vcc->qos, qos, sizeof(struct atm_qos));
1946 set_bit(ATM_VF_HASQOS, &vcc->flags);
2748 struct atm_vcc* vcc;
2998 vcc = fore200e->vc_map[i].vcc;
3000 if (vcc == NULL)
3005 if (vcc && test_bit(ATM_VF_READY, &vcc->flags) && !left--) {
3007 fore200e_vcc = FORE200E_VCC(vcc);
3012 (u32)(unsigned long)vcc,
3013 vcc->vpi, vcc->vci, fore200e_atm2fore_aal(vcc->qos.aal),