H A D | lanai.c | 650 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
|