Searched refs:lvcc (Results 1 - 1 of 1) sorted by relevance

/linux-4.4.14/drivers/atm/
H A Dlanai.c650 static inline u32 cardvcc_read(const struct lanai_vcc *lvcc, cardvcc_read() argument
654 APRINTK(lvcc->vbase != NULL, "cardvcc_read: unbound vcc!\n"); cardvcc_read()
655 val= readl(lvcc->vbase + offset); cardvcc_read()
657 lvcc->vci, (int) offset, val); cardvcc_read()
661 static inline void cardvcc_write(const struct lanai_vcc *lvcc, cardvcc_write() argument
664 APRINTK(lvcc->vbase != NULL, "cardvcc_write: unbound vcc!\n"); cardvcc_write()
667 (unsigned int) val, lvcc->vci, (unsigned int) offset); cardvcc_write()
669 lvcc->vci, (unsigned int) offset, (unsigned int) val); cardvcc_write()
670 writel(val, lvcc->vbase + offset); cardvcc_write()
697 static void host_vcc_start_rx(const struct lanai_vcc *lvcc) host_vcc_start_rx() argument
700 if (lvcc->rx.atmvcc->qos.aal == ATM_AAL5) { host_vcc_start_rx()
701 dma_addr_t dmaaddr = lvcc->rx.buf.dmaaddr; host_vcc_start_rx()
702 cardvcc_write(lvcc, 0xFFFF, vcc_rxcrc1); host_vcc_start_rx()
703 cardvcc_write(lvcc, 0xFFFF, vcc_rxcrc2); host_vcc_start_rx()
704 cardvcc_write(lvcc, 0, vcc_rxwriteptr); host_vcc_start_rx()
705 cardvcc_write(lvcc, 0, vcc_rxbufstart); host_vcc_start_rx()
706 cardvcc_write(lvcc, 0, vcc_rxreadptr); host_vcc_start_rx()
707 cardvcc_write(lvcc, (dmaaddr >> 16) & 0xFFFF, vcc_rxaddr2); host_vcc_start_rx()
709 RXADDR1_SET_SIZE(lanai_buf_size_cardorder(&lvcc->rx.buf))| host_vcc_start_rx()
718 cardvcc_write(lvcc, addr1, vcc_rxaddr1); host_vcc_start_rx()
721 static void host_vcc_start_tx(const struct lanai_vcc *lvcc) host_vcc_start_tx() argument
723 dma_addr_t dmaaddr = lvcc->tx.buf.dmaaddr; host_vcc_start_tx()
724 cardvcc_write(lvcc, 0, vcc_txicg); host_vcc_start_tx()
725 cardvcc_write(lvcc, 0xFFFF, vcc_txcrc1); host_vcc_start_tx()
726 cardvcc_write(lvcc, 0xFFFF, vcc_txcrc2); host_vcc_start_tx()
727 cardvcc_write(lvcc, 0, vcc_txreadptr); host_vcc_start_tx()
728 cardvcc_write(lvcc, 0, vcc_txendptr); host_vcc_start_tx()
729 cardvcc_write(lvcc, 0, vcc_txwriteptr); host_vcc_start_tx()
730 cardvcc_write(lvcc, host_vcc_start_tx()
731 (lvcc->tx.atmvcc->qos.txtp.traffic_class == ATM_CBR) ? host_vcc_start_tx()
732 TXCBR_NEXT_BOZO | lvcc->vci : 0, vcc_txcbr_next); host_vcc_start_tx()
733 cardvcc_write(lvcc, (dmaaddr >> 16) & 0xFFFF, vcc_txaddr2); host_vcc_start_tx()
734 cardvcc_write(lvcc, host_vcc_start_tx()
736 TXADDR1_SET_SIZE(lanai_buf_size_cardorder(&lvcc->tx.buf)), host_vcc_start_tx()
741 static void lanai_shutdown_rx_vci(const struct lanai_vcc *lvcc) lanai_shutdown_rx_vci() argument
743 if (lvcc->vbase == NULL) /* We were never bound to a VCI */ lanai_shutdown_rx_vci()
746 cardvcc_write(lvcc, lanai_shutdown_rx_vci()
751 cardvcc_write(lvcc, 0, vcc_rxaddr2); lanai_shutdown_rx_vci()
752 cardvcc_write(lvcc, 0, vcc_rxcrc1); lanai_shutdown_rx_vci()
753 cardvcc_write(lvcc, 0, vcc_rxcrc2); lanai_shutdown_rx_vci()
754 cardvcc_write(lvcc, 0, vcc_rxwriteptr); lanai_shutdown_rx_vci()
755 cardvcc_write(lvcc, 0, vcc_rxbufstart); lanai_shutdown_rx_vci()
756 cardvcc_write(lvcc, 0, vcc_rxreadptr); lanai_shutdown_rx_vci()
767 struct lanai_vcc *lvcc) lanai_shutdown_tx_vci()
774 if (lvcc->vbase == NULL) /* We were never bound to a VCI */ lanai_shutdown_tx_vci()
777 while ((skb = skb_dequeue(&lvcc->tx.backlog)) != NULL) lanai_shutdown_tx_vci()
778 lanai_free_skb(lvcc->tx.atmvcc, skb); lanai_shutdown_tx_vci()
780 __clear_bit(lvcc->vci, lanai->backlog_vccs); lanai_shutdown_tx_vci()
788 (((lanai_buf_size(&lvcc->tx.buf) / 1024) * HZ) >> 7); lanai_shutdown_tx_vci()
789 write = TXWRITEPTR_GET_PTR(cardvcc_read(lvcc, vcc_txwriteptr)); lanai_shutdown_tx_vci()
791 read = TXREADPTR_GET_PTR(cardvcc_read(lvcc, vcc_txreadptr)); lanai_shutdown_tx_vci()
793 (lvcc->tx.atmvcc->qos.txtp.traffic_class != ATM_CBR || lanai_shutdown_tx_vci()
794 (cardvcc_read(lvcc, vcc_txcbr_next) & lanai_shutdown_tx_vci()
804 lvcc->tx.atmvcc->dev->number, lvcc->vci); lanai_shutdown_tx_vci()
811 cardvcc_write(lvcc, 0, vcc_txreadptr); lanai_shutdown_tx_vci()
812 cardvcc_write(lvcc, 0, vcc_txwriteptr); lanai_shutdown_tx_vci()
813 cardvcc_write(lvcc, 0, vcc_txendptr); lanai_shutdown_tx_vci()
814 cardvcc_write(lvcc, 0, vcc_txcrc1); lanai_shutdown_tx_vci()
815 cardvcc_write(lvcc, 0, vcc_txcrc2); lanai_shutdown_tx_vci()
816 cardvcc_write(lvcc, 0, vcc_txaddr2); lanai_shutdown_tx_vci()
817 cardvcc_write(lvcc, 0, vcc_txaddr1); lanai_shutdown_tx_vci()
1138 static inline int vcc_tx_space(const struct lanai_vcc *lvcc, int endptr) vcc_tx_space() argument
1142 r -= ((unsigned long) lvcc->tx.buf.ptr) - vcc_tx_space()
1143 ((unsigned long) lvcc->tx.buf.start); vcc_tx_space()
1146 r += lanai_buf_size(&lvcc->tx.buf); vcc_tx_space()
1151 static inline int vcc_is_backlogged(const struct lanai_vcc *lvcc) vcc_is_backlogged() argument
1153 return !skb_queue_empty(&lvcc->tx.backlog); vcc_is_backlogged()
1163 static inline void vcc_tx_add_aal5_descriptor(struct lanai_vcc *lvcc, vcc_tx_add_aal5_descriptor() argument
1167 APRINTK((((unsigned long) lvcc->tx.buf.ptr) & 15) == 0, vcc_tx_add_aal5_descriptor()
1168 "vcc_tx_add_aal5_descriptor: bad ptr=%p\n", lvcc->tx.buf.ptr); vcc_tx_add_aal5_descriptor()
1169 lvcc->tx.buf.ptr += 4; /* Hope the values REALLY don't matter */ vcc_tx_add_aal5_descriptor()
1170 pos = ((unsigned char *) lvcc->tx.buf.ptr) - vcc_tx_add_aal5_descriptor()
1171 (unsigned char *) lvcc->tx.buf.start; vcc_tx_add_aal5_descriptor()
1174 "start,ptr,end=%p,%p,%p\n", pos, lvcc->vci, vcc_tx_add_aal5_descriptor()
1175 lvcc->tx.buf.start, lvcc->tx.buf.ptr, lvcc->tx.buf.end); vcc_tx_add_aal5_descriptor()
1176 pos = (pos + len) & (lanai_buf_size(&lvcc->tx.buf) - 1); vcc_tx_add_aal5_descriptor()
1179 "start,ptr,end=%p,%p,%p\n", pos, lvcc->vci, vcc_tx_add_aal5_descriptor()
1180 lvcc->tx.buf.start, lvcc->tx.buf.ptr, lvcc->tx.buf.end); vcc_tx_add_aal5_descriptor()
1181 lvcc->tx.buf.ptr[-1] = vcc_tx_add_aal5_descriptor()
1183 ((lvcc->tx.atmvcc->atm_options & ATM_ATMOPT_CLP) ? vcc_tx_add_aal5_descriptor()
1185 if (lvcc->tx.buf.ptr >= lvcc->tx.buf.end) vcc_tx_add_aal5_descriptor()
1186 lvcc->tx.buf.ptr = lvcc->tx.buf.start; vcc_tx_add_aal5_descriptor()
1190 static inline void vcc_tx_add_aal5_trailer(struct lanai_vcc *lvcc, vcc_tx_add_aal5_trailer() argument
1193 APRINTK((((unsigned long) lvcc->tx.buf.ptr) & 15) == 8, vcc_tx_add_aal5_trailer()
1194 "vcc_tx_add_aal5_trailer: bad ptr=%p\n", lvcc->tx.buf.ptr); vcc_tx_add_aal5_trailer()
1195 lvcc->tx.buf.ptr += 2; vcc_tx_add_aal5_trailer()
1196 lvcc->tx.buf.ptr[-2] = cpu_to_be32((uu << 24) | (cpi << 16) | len); vcc_tx_add_aal5_trailer()
1197 if (lvcc->tx.buf.ptr >= lvcc->tx.buf.end) vcc_tx_add_aal5_trailer()
1198 lvcc->tx.buf.ptr = lvcc->tx.buf.start; vcc_tx_add_aal5_trailer()
1201 static inline void vcc_tx_memcpy(struct lanai_vcc *lvcc, vcc_tx_memcpy() argument
1206 e = ((unsigned char *) lvcc->tx.buf.ptr) + n; vcc_tx_memcpy()
1207 m = e - (unsigned char *) lvcc->tx.buf.end; vcc_tx_memcpy()
1210 memcpy(lvcc->tx.buf.ptr, src, n - m); vcc_tx_memcpy()
1212 memcpy(lvcc->tx.buf.start, src + n - m, m); vcc_tx_memcpy()
1213 e = ((unsigned char *) lvcc->tx.buf.start) + m; vcc_tx_memcpy()
1215 lvcc->tx.buf.ptr = (u32 *) e; vcc_tx_memcpy()
1218 static inline void vcc_tx_memzero(struct lanai_vcc *lvcc, int n) vcc_tx_memzero() argument
1224 e = ((unsigned char *) lvcc->tx.buf.ptr) + n; vcc_tx_memzero()
1225 m = e - (unsigned char *) lvcc->tx.buf.end; vcc_tx_memzero()
1228 memset(lvcc->tx.buf.ptr, 0, n - m); vcc_tx_memzero()
1230 memset(lvcc->tx.buf.start, 0, m); vcc_tx_memzero()
1231 e = ((unsigned char *) lvcc->tx.buf.start) + m; vcc_tx_memzero()
1233 lvcc->tx.buf.ptr = (u32 *) e; vcc_tx_memzero()
1238 const struct lanai_vcc *lvcc) lanai_endtx()
1240 int i, ptr = ((unsigned char *) lvcc->tx.buf.ptr) - lanai_endtx()
1241 (unsigned char *) lvcc->tx.buf.start; lanai_endtx()
1244 ptr, lvcc->vci, lvcc->tx.buf.start, lvcc->tx.buf.ptr, lanai_endtx()
1245 lvcc->tx.buf.end); lanai_endtx()
1274 reg_write(lanai, (ptr << 12) | lvcc->vci, Butt_Reg); lanai_endtx()
1279 * Add one AAL5 PDU to lvcc's transmit buffer. Caller garauntees there's
1283 struct lanai_vcc *lvcc, struct sk_buff *skb, int pdusize) lanai_send_one_aal5()
1289 vcc_tx_add_aal5_descriptor(lvcc, 0, pdusize); lanai_send_one_aal5()
1293 vcc_tx_memcpy(lvcc, skb->data, skb->len); lanai_send_one_aal5()
1294 vcc_tx_memzero(lvcc, pad); lanai_send_one_aal5()
1295 vcc_tx_add_aal5_trailer(lvcc, skb->len, 0, 0); lanai_send_one_aal5()
1296 lanai_endtx(lanai, lvcc); lanai_send_one_aal5()
1297 lanai_free_skb(lvcc->tx.atmvcc, skb); lanai_send_one_aal5()
1298 atomic_inc(&lvcc->tx.atmvcc->stats->tx); lanai_send_one_aal5()
1303 struct lanai_vcc *lvcc, int endptr) vcc_tx_unqueue_aal5()
1307 int space = vcc_tx_space(lvcc, endptr); vcc_tx_unqueue_aal5()
1308 APRINTK(vcc_is_backlogged(lvcc), vcc_tx_unqueue_aal5()
1310 lvcc->vci); vcc_tx_unqueue_aal5()
1312 skb = skb_dequeue(&lvcc->tx.backlog); vcc_tx_unqueue_aal5()
1318 skb_queue_head(&lvcc->tx.backlog, skb); vcc_tx_unqueue_aal5()
1321 lanai_send_one_aal5(lanai, lvcc, skb, n); vcc_tx_unqueue_aal5()
1324 if (!vcc_is_backlogged(lvcc)) { vcc_tx_unqueue_aal5()
1326 __clear_bit(lvcc->vci, lanai->backlog_vccs); vcc_tx_unqueue_aal5()
1331 static void vcc_tx_aal5(struct lanai_dev *lanai, struct lanai_vcc *lvcc, vcc_tx_aal5() argument
1335 if (vcc_is_backlogged(lvcc)) /* Already backlogged */ vcc_tx_aal5()
1337 space = vcc_tx_space(lvcc, vcc_tx_aal5()
1338 TXREADPTR_GET_PTR(cardvcc_read(lvcc, vcc_txreadptr))); vcc_tx_aal5()
1342 __set_bit(lvcc->vci, lanai->backlog_vccs); vcc_tx_aal5()
1344 skb_queue_tail(&lvcc->tx.backlog, skb); vcc_tx_aal5()
1347 lanai_send_one_aal5(lanai, lvcc, skb, n); vcc_tx_aal5()
1351 struct lanai_vcc *lvcc, int endptr) vcc_tx_unqueue_aal0()
1357 static void vcc_tx_aal0(struct lanai_dev *lanai, struct lanai_vcc *lvcc, vcc_tx_aal0() argument
1361 /* Remember to increment lvcc->tx.atmvcc->stats->tx */ vcc_tx_aal0()
1362 lanai_free_skb(lvcc->tx.atmvcc, skb); vcc_tx_aal0()
1369 const struct lanai_vcc *lvcc, int n) vcc_rx_memcpy()
1371 int m = ((const unsigned char *) lvcc->rx.buf.ptr) + n - vcc_rx_memcpy()
1372 ((const unsigned char *) (lvcc->rx.buf.end)); vcc_rx_memcpy()
1375 memcpy(dest, lvcc->rx.buf.ptr, n - m); vcc_rx_memcpy()
1376 memcpy(dest + n - m, lvcc->rx.buf.start, m); vcc_rx_memcpy()
1382 static void vcc_rx_aal5(struct lanai_vcc *lvcc, int endptr) vcc_rx_aal5() argument
1387 u32 *end = &lvcc->rx.buf.start[endptr * 4]; vcc_rx_aal5()
1388 int n = ((unsigned long) end) - ((unsigned long) lvcc->rx.buf.ptr); vcc_rx_aal5()
1390 n += lanai_buf_size(&lvcc->rx.buf); vcc_rx_aal5()
1391 APRINTK(n >= 0 && n < lanai_buf_size(&lvcc->rx.buf) && !(n & 15), vcc_rx_aal5()
1393 n, lanai_buf_size(&lvcc->rx.buf)); vcc_rx_aal5()
1395 if ((x = &end[-2]) < lvcc->rx.buf.start) vcc_rx_aal5()
1396 x = &lvcc->rx.buf.end[-2]; vcc_rx_aal5()
1407 lvcc->rx.atmvcc->dev->number, lvcc->vci, size, n); vcc_rx_aal5()
1408 lvcc->stats.x.aal5.rx_badlen++; vcc_rx_aal5()
1411 skb = atm_alloc_charge(lvcc->rx.atmvcc, size, GFP_ATOMIC); vcc_rx_aal5()
1413 lvcc->stats.rx_nomem++; vcc_rx_aal5()
1417 vcc_rx_memcpy(skb->data, lvcc, size); vcc_rx_aal5()
1418 ATM_SKB(skb)->vcc = lvcc->rx.atmvcc; vcc_rx_aal5()
1420 lvcc->rx.atmvcc->push(lvcc->rx.atmvcc, skb); vcc_rx_aal5()
1421 atomic_inc(&lvcc->rx.atmvcc->stats->rx); vcc_rx_aal5()
1423 lvcc->rx.buf.ptr = end; vcc_rx_aal5()
1424 cardvcc_write(lvcc, endptr, vcc_rxreadptr); vcc_rx_aal5()
1431 /* Remember to increment lvcc->rx.atmvcc->stats->rx */ vcc_rx_aal0()
1471 struct lanai_vcc *lvcc; new_lanai_vcc() local
1472 lvcc = kzalloc(sizeof(*lvcc), GFP_KERNEL); new_lanai_vcc()
1473 if (likely(lvcc != NULL)) { new_lanai_vcc()
1474 skb_queue_head_init(&lvcc->tx.backlog); new_lanai_vcc()
1476 lvcc->vci = -1; new_lanai_vcc()
1479 return lvcc; new_lanai_vcc()
1504 struct lanai_vcc *lvcc, const struct atm_qos *qos) lanai_setup_rx_vci_aal5()
1506 return lanai_get_sized_buffer(lanai, &lvcc->rx.buf, lanai_setup_rx_vci_aal5()
1511 static int lanai_setup_tx_vci(struct lanai_dev *lanai, struct lanai_vcc *lvcc, lanai_setup_tx_vci() argument
1516 lvcc->tx.unqueue = vcc_tx_unqueue_aal0; lanai_setup_tx_vci()
1520 lvcc->tx.unqueue = vcc_tx_unqueue_aal5; lanai_setup_tx_vci()
1524 return lanai_get_sized_buffer(lanai, &lvcc->tx.buf, max_sdu, lanai_setup_tx_vci()
1529 struct lanai_vcc *lvcc, vci_t vci) host_vcc_bind()
1531 if (lvcc->vbase != NULL) host_vcc_bind()
1542 lvcc->vbase = cardvcc_addr(lanai, vci); host_vcc_bind()
1543 lanai->vccs[lvcc->vci = vci] = lvcc; host_vcc_bind()
1547 struct lanai_vcc *lvcc) host_vcc_unbind()
1549 if (lvcc->vbase == NULL) host_vcc_unbind()
1551 DPRINTK("Unbinding vci %d\n", lvcc->vci); host_vcc_unbind()
1552 lvcc->vbase = NULL; host_vcc_unbind()
1553 lanai->vccs[lvcc->vci] = NULL; host_vcc_unbind()
1624 struct lanai_vcc *lvcc; handle_service() local
1626 lvcc = lanai->vccs[vci]; handle_service()
1627 if (unlikely(lvcc == NULL)) { handle_service()
1638 if (unlikely(lvcc->tx.atmvcc == NULL)) { handle_service()
1646 lvcc->tx.endptr = SERVICE_GET_END(s); handle_service()
1650 if (unlikely(lvcc->rx.atmvcc == NULL)) { handle_service()
1657 if (unlikely(lvcc->rx.atmvcc->qos.aal != ATM_AAL5)) { handle_service()
1662 atomic_inc(&lvcc->rx.atmvcc->stats->rx_err); handle_service()
1666 vcc_rx_aal5(lvcc, SERVICE_GET_END(s)); handle_service()
1674 atomic_inc(&lvcc->rx.atmvcc->stats->rx_err); handle_service()
1675 lvcc->stats.x.aal5.service_trash++; handle_service()
1677 (((unsigned long) lvcc->rx.buf.ptr) - handle_service()
1678 ((unsigned long) lvcc->rx.buf.start)) + 47; handle_service()
1680 bytes += lanai_buf_size(&lvcc->rx.buf); handle_service()
1686 atomic_inc(&lvcc->rx.atmvcc->stats->rx_err); handle_service()
1687 lvcc->stats.x.aal5.service_stream++; handle_service()
1694 atomic_inc(&lvcc->rx.atmvcc->stats->rx_err); handle_service()
1695 lvcc->stats.x.aal5.service_rxcrc++; handle_service()
1696 lvcc->rx.buf.ptr = &lvcc->rx.buf.start[SERVICE_GET_END(s) * 4]; handle_service()
1697 cardvcc_write(lvcc, SERVICE_GET_END(s), vcc_rxreadptr); handle_service()
1705 struct lanai_vcc *lvcc = lanai->vccs[vci]; iter_transmit() local
1706 if (vcc_is_backlogged(lvcc)) iter_transmit()
1707 lvcc->tx.unqueue(lanai, lvcc, lvcc->tx.endptr); iter_transmit()
1752 struct lanai_vcc *lvcc = lanai->vccs[vci]; iter_dequeue() local
1754 if (lvcc == NULL || lvcc->tx.atmvcc == NULL || iter_dequeue()
1755 !vcc_is_backlogged(lvcc)) { iter_dequeue()
1759 endptr = TXREADPTR_GET_PTR(cardvcc_read(lvcc, vcc_txreadptr)); iter_dequeue()
1760 lvcc->tx.unqueue(lanai, lvcc, endptr); iter_dequeue()
1997 const struct lanai_vcc *lvcc = lanai->vccs[vci]; vci_is_ok() local
2000 if (unlikely(lvcc != NULL)) { vci_is_ok()
2002 lvcc->rx.atmvcc != NULL && lvcc->rx.atmvcc != atmvcc) vci_is_ok()
2005 lvcc->tx.atmvcc != NULL && lvcc->tx.atmvcc != atmvcc) vci_is_ok()
2278 struct lanai_vcc *lvcc = (struct lanai_vcc *) atmvcc->dev_data; lanai_close() local
2280 if (lvcc == NULL) lanai_close()
2284 if (lvcc->rx.atmvcc == atmvcc) { lanai_close()
2285 lanai_shutdown_rx_vci(lvcc); lanai_close()
2290 lanai_buf_deallocate(&lvcc->rx.buf, lanai->pci); lanai_close()
2291 lvcc->rx.atmvcc = NULL; lanai_close()
2293 if (lvcc->tx.atmvcc == atmvcc) { lanai_close()
2295 if (lvcc->vbase != NULL) lanai_close()
2299 lanai_shutdown_tx_vci(lanai, lvcc); lanai_close()
2300 lanai_buf_deallocate(&lvcc->tx.buf, lanai->pci); lanai_close()
2301 lvcc->tx.atmvcc = NULL; lanai_close()
2303 if (--lvcc->nref == 0) { lanai_close()
2304 host_vcc_unbind(lanai, lvcc); lanai_close()
2305 kfree(lvcc); lanai_close()
2315 struct lanai_vcc *lvcc; lanai_open() local
2332 lvcc = lanai->vccs[vci]; lanai_open()
2333 if (lvcc == NULL) { lanai_open()
2334 lvcc = new_lanai_vcc(); lanai_open()
2335 if (unlikely(lvcc == NULL)) lanai_open()
2337 atmvcc->dev_data = lvcc; lanai_open()
2339 lvcc->nref++; lanai_open()
2341 APRINTK(lvcc->rx.atmvcc == NULL, "rx.atmvcc!=NULL, vci=%d\n", lanai_open()
2348 lanai, lvcc, &atmvcc->qos); lanai_open()
2351 lvcc->rx.atmvcc = atmvcc; lanai_open()
2352 lvcc->stats.rx_nomem = 0; lanai_open()
2353 lvcc->stats.x.aal5.rx_badlen = 0; lanai_open()
2354 lvcc->stats.x.aal5.service_trash = 0; lanai_open()
2355 lvcc->stats.x.aal5.service_stream = 0; lanai_open()
2356 lvcc->stats.x.aal5.service_rxcrc = 0; lanai_open()
2361 APRINTK(lvcc->tx.atmvcc == NULL, "tx.atmvcc!=NULL, vci=%d\n", lanai_open()
2363 result = lanai_setup_tx_vci(lanai, lvcc, &atmvcc->qos); lanai_open()
2366 lvcc->tx.atmvcc = atmvcc; lanai_open()
2373 host_vcc_bind(lanai, lvcc, vci); lanai_open()
2379 if (atmvcc == lvcc->rx.atmvcc) lanai_open()
2380 host_vcc_start_rx(lvcc); lanai_open()
2381 if (atmvcc == lvcc->tx.atmvcc) { lanai_open()
2382 host_vcc_start_tx(lvcc); lanai_open()
2396 struct lanai_vcc *lvcc = (struct lanai_vcc *) atmvcc->dev_data; lanai_send() local
2399 if (unlikely(lvcc == NULL || lvcc->vbase == NULL || lanai_send()
2400 lvcc->tx.atmvcc != atmvcc)) lanai_send()
2416 vcc_tx_aal5(lanai, lvcc, skb); lanai_send()
2425 vcc_tx_aal0(lanai, lvcc, skb); lanai_send()
2449 struct lanai_vcc *lvcc; lanai_proc_read() local
2504 if ((lvcc = lanai->vccs[left]) != NULL) lanai_proc_read()
2510 lvcc->nref, lvcc->stats.rx_nomem); lanai_proc_read()
2511 if (lvcc->rx.atmvcc != NULL) { lanai_proc_read()
2513 lvcc->rx.atmvcc->qos.aal == ATM_AAL5 ? 5 : 0); lanai_proc_read()
2514 if (lvcc->rx.atmvcc->qos.aal == ATM_AAL5) lanai_proc_read()
2518 lanai_buf_size(&lvcc->rx.buf), lanai_proc_read()
2519 lvcc->stats.x.aal5.rx_badlen, lanai_proc_read()
2520 lvcc->stats.x.aal5.service_trash, lanai_proc_read()
2521 lvcc->stats.x.aal5.service_stream, lanai_proc_read()
2522 lvcc->stats.x.aal5.service_rxcrc); lanai_proc_read()
2524 if (lvcc->tx.atmvcc != NULL) lanai_proc_read()
2527 lvcc->tx.atmvcc->qos.aal == ATM_AAL5 ? 5 : 0, lanai_proc_read()
2528 lanai_buf_size(&lvcc->tx.buf), lanai_proc_read()
2529 lvcc->tx.atmvcc == lanai->cbrvcc ? 'C' : 'U', lanai_proc_read()
2530 vcc_is_backlogged(lvcc) ? 'Y' : 'N'); lanai_proc_read()
766 lanai_shutdown_tx_vci(struct lanai_dev *lanai, struct lanai_vcc *lvcc) lanai_shutdown_tx_vci() argument
1237 lanai_endtx(struct lanai_dev *lanai, const struct lanai_vcc *lvcc) lanai_endtx() argument
1282 lanai_send_one_aal5(struct lanai_dev *lanai, struct lanai_vcc *lvcc, struct sk_buff *skb, int pdusize) lanai_send_one_aal5() argument
1302 vcc_tx_unqueue_aal5(struct lanai_dev *lanai, struct lanai_vcc *lvcc, int endptr) vcc_tx_unqueue_aal5() argument
1350 vcc_tx_unqueue_aal0(struct lanai_dev *lanai, struct lanai_vcc *lvcc, int endptr) vcc_tx_unqueue_aal0() argument
1368 vcc_rx_memcpy(unsigned char *dest, const struct lanai_vcc *lvcc, int n) vcc_rx_memcpy() argument
1503 lanai_setup_rx_vci_aal5(struct lanai_dev *lanai, struct lanai_vcc *lvcc, const struct atm_qos *qos) lanai_setup_rx_vci_aal5() argument
1528 host_vcc_bind(struct lanai_dev *lanai, struct lanai_vcc *lvcc, vci_t vci) host_vcc_bind() argument
1546 host_vcc_unbind(struct lanai_dev *lanai, struct lanai_vcc *lvcc) host_vcc_unbind() argument

Completed in 94 milliseconds