Lines Matching defs:vcc

772     struct atm_vcc*         vcc;
798 /* vcc closed since the time the entry was submitted for tx? */
799 if ((vc_map->vcc == NULL) ||
800 (test_bit(ATM_VF_READY, &vc_map->vcc->flags) == 0)) {
802 DPRINTK(1, "no ready vcc found for PDU sent on device %d\n",
808 ASSERT(vc_map->vcc);
810 /* vcc closed then immediately re-opened? */
813 /* when a vcc is closed, some PDUs may be still pending in the tx queue.
814 if the same vcc is immediately re-opened, those pending PDUs must
816 to the prior incarnation of that vcc. otherwise, sk_atm(vcc)->sk_wmem_alloc
818 leading to a negative sk->sk_wmem_alloc count, ultimately freezing the vcc.
819 we thus bind the tx entry to the current incarnation of the vcc
822 of the vcc, then this implies that the vcc has been closed then re-opened.
825 DPRINTK(1, "vcc closed-then-re-opened; dropping PDU sent on device %d\n",
831 vcc = vc_map->vcc;
832 ASSERT(vcc);
835 if (vcc->pop) {
836 vcc->pop(vcc, entry->skb);
844 atomic_inc(&vcc->stats->tx_err);
846 atomic_inc(&vcc->stats->tx);
960 fore200e_push_rpd(struct fore200e* fore200e, struct atm_vcc* vcc, struct rpd* rpd)
970 ASSERT(vcc);
972 fore200e_vcc = FORE200E_VCC(vcc);
976 if ((vcc->qos.aal == ATM_AAL0) && (vcc->qos.rxtp.max_sdu == ATM_AAL0_SDU)) {
995 atomic_inc(&vcc->stats->rx_drop);
1033 if (atm_charge(vcc, skb->truesize) == 0) {
1036 vcc->itf, vcc->vpi, vcc->vci);
1040 atomic_inc(&vcc->stats->rx_drop);
1044 vcc->push(vcc, skb);
1045 atomic_inc(&vcc->stats->rx);
1089 struct atm_vcc* vcc;
1102 if ((vc_map->vcc == NULL) ||
1103 (test_bit(ATM_VF_READY, &vc_map->vcc->flags) == 0)) {
1110 vcc = vc_map->vcc;
1111 ASSERT(vcc);
1115 fore200e_push_rpd(fore200e, vcc, entry->rpd);
1121 atomic_inc(&vcc->stats->rx_err);
1210 fore200e_select_scheme(struct atm_vcc* vcc)
1213 int scheme = vcc->vci % 2 ? BUFFER_SCHEME_ONE : BUFFER_SCHEME_TWO;
1216 vcc->itf, vcc->vpi, vcc->vci, scheme);
1223 fore200e_activate_vcin(struct fore200e* fore200e, int activate, struct atm_vcc* vcc, int mtu)
1231 enum fore200e_aal aal = fore200e_atm2fore_aal(vcc->qos.aal);
1236 FORE200E_VCC(vcc)->scheme = fore200e_select_scheme(vcc);
1240 activ_opcode.scheme = FORE200E_VCC(vcc)->scheme;
1248 vpvc.vci = vcc->vci;
1249 vpvc.vpi = vcc->vpi;
1274 activate ? "open" : "close", vcc->itf, vcc->vpi, vcc->vci);
1278 DPRINTK(1, "VC %d.%d.%d %sed\n", vcc->itf, vcc->vpi, vcc->vci,
1304 fore200e_open(struct atm_vcc *vcc)
1306 struct fore200e* fore200e = FORE200E_DEV(vcc->dev);
1310 int vci = vcc->vci;
1311 short vpi = vcc->vpi;
1319 if (vc_map->vcc) {
1329 vc_map->vcc = vcc;
1335 vc_map->vcc = NULL;
1341 vcc->itf, vcc->vpi, vcc->vci, fore200e_atm2fore_aal(vcc->qos.aal),
1342 fore200e_traffic_class[ vcc->qos.txtp.traffic_class ],
1343 vcc->qos.txtp.min_pcr, vcc->qos.txtp.max_pcr, vcc->qos.txtp.max_cdv, vcc->qos.txtp.max_sdu,
1344 fore200e_traffic_class[ vcc->qos.rxtp.traffic_class ],
1345 vcc->qos.rxtp.min_pcr, vcc->qos.rxtp.max_pcr, vcc->qos.rxtp.max_cdv, vcc->qos.rxtp.max_sdu);
1348 if ((vcc->qos.txtp.traffic_class == ATM_CBR) && (vcc->qos.txtp.max_pcr > 0)) {
1351 if (fore200e->available_cell_rate < vcc->qos.txtp.max_pcr) {
1355 vc_map->vcc = NULL;
1360 fore200e->available_cell_rate -= vcc->qos.txtp.max_pcr;
1364 vcc->itf = vcc->dev->number;
1366 set_bit(ATM_VF_PARTIAL,&vcc->flags);
1367 set_bit(ATM_VF_ADDR, &vcc->flags);
1369 vcc->dev_data = fore200e_vcc;
1371 if (fore200e_activate_vcin(fore200e, 1, vcc, vcc->qos.rxtp.max_sdu) < 0) {
1373 vc_map->vcc = NULL;
1375 clear_bit(ATM_VF_ADDR, &vcc->flags);
1376 clear_bit(ATM_VF_PARTIAL,&vcc->flags);
1378 vcc->dev_data = NULL;
1380 fore200e->available_cell_rate += vcc->qos.txtp.max_pcr;
1387 if ((vcc->qos.txtp.traffic_class == ATM_CBR) && (vcc->qos.txtp.max_pcr > 0)) {
1389 fore200e_rate_ctrl(&vcc->qos, &fore200e_vcc->rate);
1390 set_bit(ATM_VF_HASQOS, &vcc->flags);
1393 vcc->itf, vcc->vpi, vcc->vci, fore200e_atm2fore_aal(vcc->qos.aal),
1394 vcc->qos.txtp.max_pcr, vcc->qos.rxtp.max_pcr,
1402 /* new incarnation of the vcc */
1406 set_bit(ATM_VF_READY, &vcc->flags);
1413 fore200e_close(struct atm_vcc* vcc)
1420 ASSERT(vcc);
1421 fore200e = FORE200E_DEV(vcc->dev);
1423 ASSERT((vcc->vpi >= 0) && (vcc->vpi < 1<<FORE200E_VPI_BITS));
1424 ASSERT((vcc->vci >= 0) && (vcc->vci < 1<<FORE200E_VCI_BITS));
1426 DPRINTK(2, "closing %d.%d.%d:%d\n", vcc->itf, vcc->vpi, vcc->vci, fore200e_atm2fore_aal(vcc->qos.aal));
1428 clear_bit(ATM_VF_READY, &vcc->flags);
1430 fore200e_activate_vcin(fore200e, 0, vcc, 0);
1434 vc_map = FORE200E_VC_MAP(fore200e, vcc->vpi, vcc->vci);
1437 vc_map->vcc = NULL;
1439 vcc->itf = vcc->vci = vcc->vpi = 0;
1441 fore200e_vcc = FORE200E_VCC(vcc);
1442 vcc->dev_data = NULL;
1447 if ((vcc->qos.txtp.traffic_class == ATM_CBR) && (vcc->qos.txtp.max_pcr > 0)) {
1450 fore200e->available_cell_rate += vcc->qos.txtp.max_pcr;
1453 clear_bit(ATM_VF_HASQOS, &vcc->flags);
1456 clear_bit(ATM_VF_ADDR, &vcc->flags);
1457 clear_bit(ATM_VF_PARTIAL,&vcc->flags);
1465 fore200e_send(struct atm_vcc *vcc, struct sk_buff *skb)
1483 if (!vcc)
1486 fore200e = FORE200E_DEV(vcc->dev);
1487 fore200e_vcc = FORE200E_VCC(vcc);
1496 if (!test_bit(ATM_VF_READY, &vcc->flags)) {
1497 DPRINTK(1, "VC %d.%d.%d not ready for tx\n", vcc->itf, vcc->vpi, vcc->vpi);
1503 if ((vcc->qos.aal == ATM_AAL0) && (vcc->qos.txtp.max_sdu == ATM_AAL0_SDU)) {
1524 if ((vcc->qos.aal == ATM_AAL0) && (skb_len % ATM_CELL_PAYLOAD)) {
1535 if (vcc->pop) {
1536 vcc->pop(vcc, skb);
1552 vc_map = FORE200E_VC_MAP(fore200e, vcc->vpi, vcc->vci);
1553 ASSERT(vc_map->vcc == vcc);
1576 atomic_inc(&vcc->stats->tx_err);
1581 if (vcc->pop) {
1582 vcc->pop(vcc, skb);
1619 vcc->itf, vcc->vpi, vcc->vci, fore200e_atm2fore_aal(vcc->qos.aal),
1643 tpd->atm_header.vci = vcc->vci;
1644 tpd->atm_header.vpi = vcc->vpi;
1650 tpd->spec.aal = fore200e_atm2fore_aal(vcc->qos.aal);
1883 fore200e_change_qos(struct atm_vcc* vcc,struct atm_qos* qos, int flags)
1885 struct fore200e_vcc* fore200e_vcc = FORE200E_VCC(vcc);
1886 struct fore200e* fore200e = FORE200E_DEV(vcc->dev);
1888 if (!test_bit(ATM_VF_READY, &vcc->flags)) {
1889 DPRINTK(1, "VC %d.%d.%d not ready for QoS change\n", vcc->itf, vcc->vpi, vcc->vpi);
1897 vcc->itf, vcc->vpi, vcc->vci,
1907 if (fore200e->available_cell_rate + vcc->qos.txtp.max_pcr < qos->txtp.max_pcr) {
1912 fore200e->available_cell_rate += vcc->qos.txtp.max_pcr;
1917 memcpy(&vcc->qos, qos, sizeof(struct atm_qos));
1922 set_bit(ATM_VF_HASQOS, &vcc->flags);
2711 struct atm_vcc* vcc;
2961 vcc = fore200e->vc_map[i].vcc;
2963 if (vcc == NULL)
2968 if (vcc && test_bit(ATM_VF_READY, &vcc->flags) && !left--) {
2970 fore200e_vcc = FORE200E_VCC(vcc);
2975 vcc,
2976 vcc->vpi, vcc->vci, fore200e_atm2fore_aal(vcc->qos.aal),