diff -ur --new-file old/linux/drivers/atm/atmtcp.c new/linux/drivers/atm/atmtcp.c --- old/linux/drivers/atm/atmtcp.c Wed Mar 12 00:10:26 1997 +++ new/linux/drivers/atm/atmtcp.c Wed Mar 12 00:10:55 1997 @@ -259,7 +259,8 @@ NULL, /* no phy_put */ NULL, /* no phy_get */ NULL, /* no feedback */ - NULL /* no change_qos */ + NULL, /* no change_qos */ + NULL /* no free_rx_skb */ }; diff -ur --new-file old/linux/drivers/atm/eni.c new/linux/drivers/atm/eni.c --- old/linux/drivers/atm/eni.c Wed Mar 12 00:10:26 1997 +++ new/linux/drivers/atm/eni.c Wed Mar 12 00:10:55 1997 @@ -1,6 +1,6 @@ /* drivers/atm/eni.c - Efficient Networks ENI155P device driver */ -/* Written 1995,1996 by Werner Almesberger, EPFL LRC */ +/* Written 1995-1997 by Werner Almesberger, EPFL LRC */ #include @@ -174,14 +174,13 @@ printk(KERN_NOTICE "TX buffers\n"); for (i = 0; i < NR_CHAN; i++) if (eni_dev->tx[i].send) - printk(KERN_NOTICE " TX %d @ 0x%08lx: %ld\n",i, - (unsigned long) eni_dev->tx[i].send, - eni_dev->tx[i].words*4); + printk(KERN_NOTICE " TX %d @ 0x%p: %ld\n",i, + eni_dev->tx[i].send,eni_dev->tx[i].words*4); printk(KERN_NOTICE "RX buffers\n"); for (i = 0; i < 1024; i++) if (eni_dev->rx_map[i] && ENI_VCC(eni_dev->rx_map[i])->rx) - printk(KERN_NOTICE " RX %d @ 0x%08lx: %ld\n",i, - (unsigned long) ENI_VCC(eni_dev->rx_map[i])->recv, + printk(KERN_NOTICE " RX %d @ 0x%p: %ld\n",i, + ENI_VCC(eni_dev->rx_map[i])->recv, ENI_VCC(eni_dev->rx_map[i])->words*4); printk(KERN_NOTICE "----\n"); } @@ -323,8 +322,8 @@ printk(KERN_ALERT " host descr 0x%08lx, rx pos 0x%08lx, descr value " "0x%08lx\n",eni_vcc->descr,eni_vcc->rx_pos, eni_vcc->recv[eni_vcc->descr]); - printk(KERN_ALERT " last 0x%08lx, servicing %d\n", - (unsigned long) eni_vcc->last,eni_vcc->servicing); + printk(KERN_ALERT " last 0x%p, servicing %d\n",eni_vcc->last, + eni_vcc->servicing); EVENT("---dump ends here---\n",0,0); printk(KERN_NOTICE "---recent events---\n"); event_dump(); @@ -558,11 +557,6 @@ printk(KERN_ERR DEV_LABEL "(itf %d): bad AAL5 PDU " "(VCI=%d,length=%ld,size=%ld (descr 0x%lx))\n", vcc->dev->number,vcc->vci,length,size << 2,descr); -#if 0 -printk("0x%lx[0x%lx] (0x%lx,%ld) size %ld len %ld\n", - (unsigned long) eni_vcc->recv,eni_vcc->descr,(unsigned long) eni_vcc, - eni_vcc->words,size << 2,length); -#endif length = eff = 0; vcc->stats->rx_err++; } @@ -758,7 +752,7 @@ if (vcc->qos.rxtp.traffic_class == ATM_NONE) return 0; size = vcc->qos.rxtp.max_sdu*3; /* @@@ improve this */ eni_vcc->recv = (volatile unsigned long *) eni_alloc_mem(eni_dev,&size); - DPRINTK("rx at 0x%lx\n",(unsigned long) eni_vcc->recv); + DPRINTK("rx at 0x%p\n",eni_vcc->recv); eni_vcc->words = size >> 2; if (!eni_vcc->recv) return -ENOBUFS; eni_vcc->rx = vcc->aal == ATM_AAL5 ? rx_aal5 : rx_aal0; @@ -931,7 +925,7 @@ DPRINTK(">do_tx\n"); NULLCHECK(skb); - EVENT("do_tx: skb=0x%lx, %d bytes\n",(unsigned long) skb,skb->len); + EVENT("do_tx: skb=0x%p, %d bytes\n",skb,skb->len); vcc = skb->atm.vcc; NULLCHECK(vcc); eni_dev = ENI_DEV(vcc->dev); @@ -1192,8 +1186,6 @@ ((eni_dev->tx[tx_ind].send-eni_dev->ram) >> MID_LOC_SKIP); eni_dev->tx[tx_ind].tx_pos = eni_dev->reg[MID_TX_DESCRSTART(tx_ind)] & MID_DESCR_START; -/*printk("mp 0x%lx tp 0x%lx\n",(unsigned long) eni_dev->tx[tx_ind].send, - eni_dev->tx[tx_ind].tx_pos);*/ eni_vcc->tx = &eni_dev->tx[tx_ind]; return 0; } @@ -1219,6 +1211,7 @@ save_flags(flags); cli(); while (skb_peek(&eni_vcc->tx->backlog) || eni_vcc->txing) { + printk("%d TX left\n",eni_vcc->txing); DPRINTK("%d TX left\n",eni_vcc->txing); sleep_on(&eni_dev->tx_wait); } @@ -1611,10 +1604,9 @@ eni_dev->tx_dma = eni_dev->rx_dma+NR_DMA_RX*2; eni_dev->service = eni_dev->tx_dma+NR_DMA_TX*2; buf = eni_dev->service+NR_SERVICE; - DPRINTK("vci 0x%lx,rx 0x%lx, tx 0x%lx,srv 0x%lx,buf 0x%lx\n", - (unsigned long) eni_dev->vci,(unsigned long) eni_dev->rx_dma, - (unsigned long) eni_dev->tx_dma,(unsigned long) eni_dev->service, - buf); + DPRINTK("vci 0x%p,rx 0x%p, tx 0x%p,srv 0x%p,buf 0x%lx\n", + eni_dev->vci,eni_dev->rx_dma,eni_dev->tx_dma,eni_dev->service, + buf); /* initialize memory management */ buffer_mem = eni_dev->mem-((unsigned long) buf- (unsigned long) eni_dev->ram); @@ -1891,7 +1883,8 @@ eni_phy_put, eni_phy_get, NULL, /* no feedback */ - NULL /* no change_qos */ + NULL, /* no change_qos */ + NULL /* no free_rx_skb */ }; diff -ur --new-file old/linux/drivers/atm/nicstar.c new/linux/drivers/atm/nicstar.c --- old/linux/drivers/atm/nicstar.c Wed Mar 12 00:10:27 1997 +++ new/linux/drivers/atm/nicstar.c Wed Mar 12 00:10:57 1997 @@ -2035,7 +2035,7 @@ } if (i >= NUM_LG_BUFS) { /* should probably copy instead */ - printk("nicstar%d: Corresponding large buffer not found! dropping packet. i %d vcc %x skb %x data %x\n", + printk("nicstar%d: Corresponding large buffer not found! dropping packet. i %d vcc %p skb %p data %p\n", node->index, i,vcc,skb,skb->data); nicstar_free_rx_skb(vcc,skb); return 0; diff -ur --new-file old/linux/drivers/atm/tneta1570.c new/linux/drivers/atm/tneta1570.c --- old/linux/drivers/atm/tneta1570.c Wed Mar 12 00:10:27 1997 +++ new/linux/drivers/atm/tneta1570.c Wed Mar 12 00:10:56 1997 @@ -1559,7 +1559,8 @@ tneta1570_phy_put, tneta1570_phy_get, NULL, /* no feedback */ - NULL /* no change_qos */ + NULL, /* no change_qos */ + NULL /* no free_rx_skb */ }; diff -ur --new-file old/linux/drivers/atm/zatm.c new/linux/drivers/atm/zatm.c --- old/linux/drivers/atm/zatm.c Wed Mar 12 00:10:27 1997 +++ new/linux/drivers/atm/zatm.c Wed Mar 12 00:10:56 1997 @@ -1,6 +1,6 @@ /* drivers/atm/zatm.c - ZeitNet ZN122x device driver */ -/* Written 1995,1996 by Werner Almesberger, EPFL LRC */ +/* Written 1995-1997 by Werner Almesberger, EPFL LRC */ #include @@ -579,7 +579,7 @@ #endif size = error ? 0 : ntohs(((unsigned short *) skb->data)[cells* ATM_CELL_PAYLOAD/sizeof(unsigned short)-3]); - EVENT("got skb 0x%lx, size %d\n",(unsigned long) skb,size); + EVENT("got skb 0x%p, size %d\n",skb,size); chan = (here[3] & uPD98401_AAL5_CHAN) >> uPD98401_AAL5_CHAN_SHIFT; if (chan < zatm_dev->chans && zatm_dev->rx_map[chan]) { @@ -1778,7 +1778,8 @@ zatm_phy_put, zatm_phy_get, zatm_feedback, - NULL /* no change_qos */ + NULL, /* no change_qos */ + NULL /* no free_rx_skb */ }; diff -ur --new-file old/linux/include/linux/atm.h new/linux/include/linux/atm.h --- old/linux/include/linux/atm.h Wed Mar 12 00:10:27 1997 +++ new/linux/include/linux/atm.h Wed Mar 12 00:10:57 1997 @@ -1,6 +1,6 @@ /* atm.h - general ATM declarations */ -/* Written 1995,1996 by Werner Almesberger, EPFL LRC */ +/* Written 1995-1997 by Werner Almesberger, EPFL LRC */ #ifndef _LINUX_ATM_H @@ -38,7 +38,8 @@ #define AF_ATMSVC 7 /* ATM SVCs */ /* "protcol" values for the socket system call */ -#define ATM_AAL0 0 /* "raw" ATM cells */ +#define ATM_NO_AAL 0 /* AAL not specified */ +#define ATM_AAL0 13 /* "raw" ATM cells */ #define ATM_AAL1 1 /* AAL1 (CBR) */ #define ATM_AAL2 2 /* AAL2 (VBR) */ #define ATM_AAL34 3 /* AAL3/4 (data) */ @@ -146,6 +147,7 @@ struct atm_qos { struct atm_trafprm txtp; /* parameters in TX direction */ struct atm_trafprm rxtp; /* parameters in RX direction */ + unsigned char aal; }; /* PVC addressing */ diff -ur --new-file old/linux/include/linux/atmdev.h new/linux/include/linux/atmdev.h --- old/linux/include/linux/atmdev.h Wed Mar 12 00:10:27 1997 +++ new/linux/include/linux/atmdev.h Wed Mar 12 00:10:57 1997 @@ -159,6 +159,7 @@ struct sk_buff_head recvq; /* receive queue */ struct atm_aal_stats *stats; /* pointer to AAL stats group */ struct wait_queue *sleep; /* if socket is busy */ + struct wait_queue *wsleep; /* if waiting for write buffer space */ struct atm_vcc *prev,*next; /* SVC part --- may move later */ short itf; /* interface number */ diff -ur --new-file old/linux/include/linux/atmsvc.h new/linux/include/linux/atmsvc.h --- old/linux/include/linux/atmsvc.h Wed Mar 12 00:10:27 1997 +++ new/linux/include/linux/atmsvc.h Wed Mar 12 00:10:58 1997 @@ -1,6 +1,6 @@ /* atmsvc.h - ATM signaling kernel-demon interface definitions */ -/* Written 1995,1996 by Werner Almesberger, EPFL LRC */ +/* Written 1995-1997 by Werner Almesberger, EPFL LRC */ #ifndef _LINUX_ATMSVC_H @@ -26,7 +26,6 @@ /* ==0: success */ /* > 0: error when active (still */ /* need to close) */ - unsigned char aal; /* AAL */ struct sockaddr_atmpvc pvc; /* indicate, okay (connect) */ struct sockaddr_atmsvc local; /* local SVC address */ struct atm_qos qos; /* QOS parameters */ diff -ur --new-file old/linux/net/atm/arequipa.c new/linux/net/atm/arequipa.c --- old/linux/net/atm/arequipa.c Wed Mar 12 00:10:27 1997 +++ new/linux/net/atm/arequipa.c Wed Mar 12 00:10:58 1997 @@ -120,6 +120,8 @@ save_flags(flags); cli(); arequipa_unuse(ATM_SD(lower)); + ip_rt_put(upper->ip_route_cache); + upper->ip_route_cache = NULL; upper->arequipa = NULL; ATM_SD(lower)->upper = NULL; if (!(ATM_SD(lower)->flags & ATM_VF_AQREL)) aqd_enq(ATM_SD(lower)); @@ -208,6 +210,7 @@ vcc->flags |= ATM_VF_AQDANG; vcc->aq_next = aq_list; vcc->aq_prev = NULL; + if (aq_list) aq_list->aq_prev = vcc; aq_list = vcc; } vcc->generation = aq_generation++; diff -ur --new-file old/linux/net/atm/atmarp.c new/linux/net/atm/atmarp.c --- old/linux/net/atm/atmarp.c Wed Mar 12 00:10:27 1997 +++ new/linux/net/atm/atmarp.c Wed Mar 12 00:10:58 1997 @@ -1,6 +1,6 @@ /* atmarp.c - RFC1577 ATM ARP */ -/* Written 1995,1996 by Werner Almesberger, EPFL LRC */ +/* Written 1995-1997 by Werner Almesberger, EPFL LRC */ #include @@ -344,6 +344,7 @@ struct atmarp_entry *entry; DPRINTK("MKIP\n"); + if (!vcc->push) return -EBADFD; entry = new_entry(timeout); if (!entry) return -ENOMEM; attach_entry(vcc,entry); diff -ur --new-file old/linux/net/atm/clip.c new/linux/net/atm/clip.c --- old/linux/net/atm/clip.c Wed Mar 12 00:10:27 1997 +++ new/linux/net/atm/clip.c Wed Mar 12 00:10:58 1997 @@ -1,6 +1,6 @@ /* net/atm/clip.c - Classical IP over ATM */ -/* Written 1995,1996 by Werner Almesberger, EPFL LRC */ +/* Written 1995-1997 by Werner Almesberger, EPFL LRC */ #include @@ -67,8 +67,7 @@ iov = (struct iovec *) skb->data; for (i = 0; i < skb->atm.iovcnt; i++) - printk("[%d] 0x%lx + %d\n",i,(unsigned long) iov[i].iov_base, - iov[i].iov_len); + printk("[%d] 0x%p + %d\n",i,iov[i].iov_base,iov[i].iov_len); printk("clip *DIRECT* xmit (iovcnt: %d)\n",skb->atm.iovcnt); */ @@ -111,6 +110,6 @@ /* if register_netdev can sleep, we race on ->number */ CLIP(dev)->next = old_clip_devs; old_clip_devs = CLIP(dev); - DPRINTK("registered %s,0x%lx\n",dev->name,(unsigned long) vcc); + DPRINTK("registered %s,0x%p\n",dev->name,vcc); return CLIP(dev)->number; } diff -ur --new-file old/linux/net/atm/common.c new/linux/net/atm/common.c --- old/linux/net/atm/common.c Wed Mar 12 00:10:27 1997 +++ new/linux/net/atm/common.c Wed Mar 12 00:10:58 1997 @@ -1,6 +1,6 @@ /* net/atm/common.c - ATM sockets (common part for PVC and SVC) */ -/* Written 1995,1996 by Werner Almesberger, EPFL LRC */ +/* Written 1995-1997 by Werner Almesberger, EPFL LRC */ #include @@ -62,7 +62,6 @@ int atm_create(struct socket *sock,int protocol) { struct atm_vcc *vcc; - int error; ATM_SD(sock) = NULL; if (sock->type == SOCK_STREAM) return -EINVAL; @@ -81,31 +80,15 @@ vcc->tx_quota = ATM_TXBQ_DEF; vcc->rx_quota = ATM_RXBQ_DEF; vcc->tx_inuse = vcc->rx_inuse = 0; - switch (protocol) { - /* - * Note: ATM_AAL0 also covers the "0 for default" case, - * although some people may not like that default ;-) - */ - case ATM_AAL0: - error = atm_init_aal0(vcc); - break; - case ATM_AAL34: - error = atm_init_aal34(vcc); - break; - case ATM_AAL5: - error = atm_init_aal5(vcc); - break; - default: - error = -EPROTOTYPE; - } - if (error) { - free_atm_vcc(vcc); - return error; - } + vcc->aal = protocol; /* temporary @@@ */ + vcc->push = NULL; + vcc->peek = NULL; + vcc->pop = NULL; + vcc->push_oam = NULL; vcc->vpi = vcc->vci = 0; /* no VCI/VPI yet */ vcc->atm_options = vcc->aal_options = 0; vcc->timestamp.tv_sec = vcc->timestamp.tv_usec = 0; - vcc->sleep = NULL; + vcc->sleep = vcc->wsleep = NULL; skb_queue_head_init(&vcc->recvq); skb_queue_head_init(&vcc->listenq); ATM_SD(sock) = vcc; @@ -251,26 +234,34 @@ if (itf >= MAX_ATM_ITF) return -EINVAL; dev = &atm_dev[itf]; if (!dev->ops) return -ENODEV; - if ((vpi != ATM_VPI_UNSPEC && vpi >> dev->ci_range.vpi_bits) || - (vci != ATM_VCI_UNSPEC && vci >> dev->ci_range.vci_bits)) + if ((vpi != ATM_VPI_UNSPEC && vpi != ATM_VPI_ANY && + vpi >> dev->ci_range.vpi_bits) || (vci != ATM_VCI_UNSPEC && + vci != ATM_VCI_ANY && vci >> dev->ci_range.vci_bits)) return -EINVAL; if (vci > 0 && vci < ATM_NOT_RSV_VCI && !suser()) return -EPERM; + if (vcc->qos.aal) vcc->aal = vcc->qos.aal; /* temporary @@@ */ + error = 0; switch (vcc->aal) { case ATM_AAL0: + error = atm_init_aal0(vcc); vcc->stats = &((struct atm_dev *) dev)->stats.aal0; break; case ATM_AAL34: + error = atm_init_aal34(vcc); vcc->stats = &((struct atm_dev *) dev)->stats.aal34; break; + case ATM_NO_AAL: + /* ATM_AAL5 is also used in the "0 for default" case */ + vcc->aal = ATM_AAL5; + /* fall through */ case ATM_AAL5: + error = atm_init_aal5(vcc); vcc->stats = &((struct atm_dev *) dev)->stats.aal5; break; default: - printk(KERN_WARNING "%s(itf %d): unsupported AAL " - "(%d)\n",vcc->dev->type,vcc->dev->number,vcc->aal); - return -EINVAL; + error = -EPROTOTYPE; } - error = adjust_tp(&vcc->qos.txtp,vcc->aal); + if (!error) error = adjust_tp(&vcc->qos.txtp,vcc->aal); if (!error) error = adjust_tp(&vcc->qos.rxtp,vcc->aal); if (error) return error; vcc->dev = (struct atm_dev *) dev; @@ -309,10 +300,11 @@ vcc->flags &= ~ATM_VF_PARTIAL; else if (vcc->flags & ATM_VF_PARTIAL) return -EINVAL; printk("atm_connect (TX: cl %d,bw %d-%d,sdu %d; RX: cl %d,bw %d-%d," - "sdu %d)\n",vcc->qos.txtp.traffic_class,vcc->qos.txtp.min_pcr, - vcc->qos.txtp.max_pcr,vcc->qos.txtp.max_sdu, + "sdu %d,AAL %d)\n",vcc->qos.txtp.traffic_class, + vcc->qos.txtp.min_pcr,vcc->qos.txtp.max_pcr,vcc->qos.txtp.max_sdu, vcc->qos.rxtp.traffic_class,vcc->qos.rxtp.min_pcr, - vcc->qos.rxtp.max_pcr,vcc->qos.rxtp.max_sdu); + vcc->qos.rxtp.max_pcr,vcc->qos.rxtp.max_sdu,vcc->qos.aal ? + vcc->qos.aal : vcc->aal); if (!vcc->qos.txtp.traffic_class && !vcc->qos.rxtp.traffic_class) return -EINVAL; if (vcc->qos.txtp.traffic_class == ATM_ANYCLASS || @@ -463,7 +455,7 @@ while (!(skb = alloc_skb(sizeof(struct iovec)*max_iov, GFP_KERNEL))) { if (nonblock) return -EAGAIN; - interruptible_sleep_on(&vcc->sleep); + interruptible_sleep_on(&vcc->wsleep); if (current->signal & ~current->blocked) return -ERESTARTSYS; } @@ -490,7 +482,7 @@ eff = (size+3) & ~3; /* align to word boundary */ while (!(skb = vcc->alloc_tx(vcc,eff))) { if (nonblock) return -EAGAIN; - interruptible_sleep_on(&vcc->sleep); + interruptible_sleep_on(&vcc->wsleep); if (current->signal & ~current->blocked) return -ERESTARTSYS; if (vcc->flags & ATM_VF_RELEASED) return vcc->reply; @@ -540,11 +532,14 @@ if (vcc->dev && vcc->dev->ops->poll) return 0; return 1; case SEL_OUT: - if (sock->state == SS_CONNECTING) break; - if (vcc->qos.txtp.traffic_class == ATM_NONE) return 1; - if (vcc->qos.txtp.max_sdu+vcc->tx_inuse+ATM_PDU_OVHD > - vcc->tx_quota) break; - return 1; + if (sock->state != SS_CONNECTING) { + if (vcc->qos.txtp.traffic_class == ATM_NONE) + return 1; + if (vcc->qos.txtp.max_sdu+vcc->tx_inuse+ + ATM_PDU_OVHD <= vcc->tx_quota) return 1; + } + select_wait(&vcc->wsleep,wait); + return 0; case SEL_EX: if (sock->state != SS_CONNECTING) return 0; if (vcc->reply == WAITING) break; diff -ur --new-file old/linux/net/atm/ipcommon.c new/linux/net/atm/ipcommon.c --- old/linux/net/atm/ipcommon.c Wed Mar 12 00:10:27 1997 +++ new/linux/net/atm/ipcommon.c Wed Mar 12 00:10:58 1997 @@ -1,6 +1,6 @@ /* net/atm/ipcommon.c - Common items for all ways of doing IP over ATM */ -/* Written 1996 by Werner Almesberger, EPFL LRC */ +/* Written 1996,1997 by Werner Almesberger, EPFL LRC */ #include @@ -77,13 +77,11 @@ skb = alloc_skb(((pdu_size+3) & ~3)+PAGE_SIZE+header_size-1, GFP_ATOMIC); if (skb) { - DPRINTK("data before: 0x%lx\n", - (unsigned long) skb->data); + DPRINTK("data before: 0x%p\n",skb->data); skb->data = (unsigned char *) (((unsigned long) skb-> data+header_size+PAGE_SIZE-1) & ~(PAGE_SIZE-1))- header_size; - DPRINTK("data after: 0x%lx\n", - (unsigned long) skb->data); + DPRINTK("data after: 0x%p\n",skb->data); } } if (!skb) { @@ -143,7 +141,7 @@ static int clip_stop(struct device *dev) { - DPRINTK("DOWN! (%s,0x%lx)\n",dev->name,(unsigned long) CLIP(dev)->vcc); + DPRINTK("DOWN! (%s,0x%p)\n",dev->name,CLIP(dev)->vcc); atm_release_vcc(CLIP(dev)->vcc,1); return 0; } diff -ur --new-file old/linux/net/atm/mmuio.c new/linux/net/atm/mmuio.c --- old/linux/net/atm/mmuio.c Wed Mar 12 00:10:27 1997 +++ new/linux/net/atm/mmuio.c Wed Mar 12 00:10:58 1997 @@ -1,6 +1,6 @@ /* net/atm/mmuio.c - MMU-supported high-speed I/O */ -/* Written 1995,1996 by Werner Almesberger, EPFL LRC */ +/* Written 1995-1997 by Werner Almesberger, EPFL LRC */ #include @@ -365,8 +365,7 @@ while (1) { mem_map_t *map; - EVENT("<0x%lx|0x%lx|0x%lx>\n",(unsigned long) pgd, - (unsigned long) pmd,(unsigned long) pte); + EVENT("<0x%p|0x%p|0x%p>\n",pgd,pmd,pte); EVENT("0x%lx,0x%lx,%d\n",start,end,iovcnt); if (pte_none(*pte) || !pte_present(*pte)) { struct vm_area_struct *vma; @@ -421,8 +420,8 @@ if (start == end) iov->iov_len += PAGE_SIZE; /* for (i = 0; i <= iovcnt; i++) - printk("iov[%d].iov_base = 0x%lx\niov[%d].iov_len = 0x%lx\n", -i,(unsigned long) iov[i-iovcnt].iov_base,i,iov[i-iovcnt].iov_len); + printk("iov[%d].iov_base = 0x%p\niov[%d].iov_len = 0x%lx\n", +i,iov[i-iovcnt].iov_base,i,iov[i-iovcnt].iov_len); */ return iovcnt+1; } diff -ur --new-file old/linux/net/atm/proc.c new/linux/net/atm/proc.c --- old/linux/net/atm/proc.c Wed Mar 12 00:10:27 1997 +++ new/linux/net/atm/proc.c Wed Mar 12 00:10:59 1997 @@ -1,6 +1,6 @@ /* net/atm/proc.c - ATM /proc interface */ -/* Written 1995,1996 by Werner Almesberger, EPFL LRC */ +/* Written 1995-1997 by Werner Almesberger, EPFL LRC */ #include @@ -64,7 +64,7 @@ #endif #ifdef CONFIG_AREQUIPA case PROC_ATM_AREQUIPA: - sprintf(buf,"Itf VPI VCI State Socket\n"); + sprintf(buf,"Itf VPI VCI State Sock# Inode\n"); break; #endif default: @@ -252,8 +252,8 @@ here = strchr(buf,0); here += sprintf(here,"%-8s ",arequipa_state(vcc)); if (vcc->upper) - here += sprintf(here,"%ld",vcc->upper->socket && - SOCK_INODE(vcc->upper->socket) ? + here += sprintf(here,"%5d %ld",vcc->upper->num, + vcc->upper->socket && SOCK_INODE(vcc->upper->socket) ? SOCK_INODE(vcc->upper->socket)->i_ino : 0); strcat(here,"\n"); } diff -ur --new-file old/linux/net/atm/raw.c new/linux/net/atm/raw.c --- old/linux/net/atm/raw.c Wed Mar 12 00:10:27 1997 +++ new/linux/net/atm/raw.c Wed Mar 12 00:10:58 1997 @@ -1,6 +1,6 @@ /* net/atm/raw.c - Raw AAL0 and AAL5 transports */ -/* Written 1995,1996 by Werner Almesberger, EPFL LRC */ +/* Written 1995-1997 by Werner Almesberger, EPFL LRC */ #include @@ -80,7 +80,7 @@ skb->data = (unsigned char *) (((unsigned long) skb->data+PAGE_SIZE-1) & ~(PAGE_SIZE-1)); -DPRINTK("PEEK: data at 0x%lx\n",(unsigned long) skb->data); +DPRINTK("PEEK: data at 0x%p\n",skb->data); return skb; } } @@ -102,7 +102,7 @@ if (vcc->dev->sending != 1) printk("sending == %d !!!\n",vcc->dev->sending); vcc->dev->sending--; #endif - wake_up(&vcc->sleep); + wake_up(&vcc->wsleep); } diff -ur --new-file old/linux/net/atm/signaling.c new/linux/net/atm/signaling.c --- old/linux/net/atm/signaling.c Wed Mar 12 00:10:27 1997 +++ new/linux/net/atm/signaling.c Wed Mar 12 00:10:58 1997 @@ -1,6 +1,6 @@ /* net/atm/signaling.c - ATM signaling */ -/* Written 1995,1996 by Werner Almesberger, EPFL LRC */ +/* Written 1995-1997 by Werner Almesberger, EPFL LRC */ #include /* error codes */ @@ -74,8 +74,8 @@ vcc->backlog_quota--; skb_queue_tail(&vcc->listenq,skb); if (vcc->callback) { - DPRINTK("waking vcc->sleep 0x%lx\n", - (unsigned long) &vcc->sleep); + DPRINTK("waking vcc->sleep 0x%p\n", + &vcc->sleep); vcc->callback(vcc); } return 0; @@ -107,7 +107,7 @@ static unsigned long silence = 0; #endif - DPRINTK("sigd_enq %d (0x%lx)\n",(int) type,(unsigned long) vcc); + DPRINTK("sigd_enq %d (0x%p)\n",(int) type,vcc); size = sizeof(struct atmsvc_msg)-sizeof(struct atm_blli); if (svc) for (walk = svc->sas_addr.blli; walk; walk = walk->next) @@ -119,8 +119,10 @@ msg->type = type; msg->vcc = (unsigned long) vcc; msg->listen_vcc = (unsigned long) listen_vcc; - msg->aal = vcc ? vcc->aal : 0; - if (vcc) msg->qos = vcc->qos; + if (vcc) { + msg->qos = vcc->qos; + if (!msg->qos.aal) msg->qos.aal = vcc->aal; + } if (!svc) msg->svc.sas_family = 0; else { msg->svc = *svc; .