You really should read around before hacking :-) http://www.skynet.ie/~airlied/mips/declance_2_3_48.c is the declance driver for the DS5000/200, I'm not sure it still works but it did the last time I looked at it .. the declance.c in the same dir is for 2.2 kernel.. I must rename them someday.. Dave. On Sat, 28 Jul 2001, Jan-Benedict Glaw wrote: > Hi! > > I'm tryin' to get a DS5000/200 to work. Currently, I see that declance.c > wasn't complete wrt. this system. Problem: ring buffer pointers not > initialized, Oops. I've copied that part from {PMAX_LANCE,ASIC_LANCE}, > but that seems not to be enough. So now, the kernel loops infinitive > when trying to send a bootp packet. > > Here's what I did: > > static int __init dec_lance_init(struct net_device *dev, const int type) > { > [...] > switch (type) { > [...] > case PMAD_LANCE: > slot = search_tc_card("PMAD-AA"); > claim_tc_card(slot); > > dev->mem_start = get_tc_base_addr(slot); > dev->base_addr = dev->mem_start + 0x100000; > dev->irq = get_tc_irq_nr(slot); > esar_base = dev->mem_start + 0x1c0002; > /* > * setup the pointer arrays, this sucks [tm] :-( > */ > for (i = 0; i < RX_RING_SIZE; i++) { > lp->rx_buf_ptr_cpu[i] = (char *) (dev->mem_start + BUF_OFFSET_CPU > + 2 * i * RX_BUFF_SIZE); > printk("lp->rx_buf_ptr_cpu[%d]=%p\n", > i, lp->rx_buf_ptr_cpu[i] > ); > lp->rx_buf_ptr_lnc[i] = (char *) (BUF_OFFSET_LNC > + i * RX_BUFF_SIZE); > printk("lp->rx_buf_ptr_lnc[%d]=%p\n", > i, lp->rx_buf_ptr_lnc[i] > ); > } > for (i = 0; i < TX_RING_SIZE; i++) { > lp->tx_buf_ptr_cpu[i] = (char *) (dev->mem_start + BUF_OFFSET_CPU > + 2 * RX_RING_SIZE * RX_BUFF_SIZE > + 2 * i * TX_BUFF_SIZE); > printk("lp->tx_buf_ptr_cpu[%d]=%p\n", > i, lp->tx_buf_ptr_cpu[i] > ); > lp->tx_buf_ptr_lnc[i] = (char *) (BUF_OFFSET_LNC > + RX_RING_SIZE * RX_BUFF_SIZE > + i * TX_BUFF_SIZE); > printk("lp->tx_buf_ptr_lnc[%d]=%p\n", > i, lp->tx_buf_ptr_lnc[i] > ); > } > > break; > [...] > } > > However, the chip actually does not transmit the frame. Please look > at it because I don't have a clue about the lance chip. Especially, > I see there problems: > - lp->tx_buf_ptr_lnc[i] and lp->rx_buf_ptr_lnc[i] are > quite low addresses. Is this correct? Are they relative > to some other address (TC slot address?) > - while kernel's bootp tries to send the packet, only > buffers [0] to [5] are used. Why are not all 16 buffers > used? > > It would be *very* nice if the people who originally wrote this > driver could help me... > > Here's the serial console's output: > > >>boot 6/tftp console=ttyS3 root=/dev/nfs ip=bootp rw > 1630208+139264+146848 > This DECstation is a DS5000/200 > Loading R[23]000 MMU routines. > [...] > TURBOchannel rev. 1 at 25.0 MHz (without parity) > slot 5: DEC PMAZ-AA V5.3b > slot 6: DEC PMAD-AA V5.3a > [...] > declance.c: v0.008 by Linux Mips DECstation task force > lp->rx_buf_ptr_cpu[0]=bf800240 > lp->rx_buf_ptr_lnc[0]=00000120 > lp->rx_buf_ptr_cpu[1]=bf800e40 > lp->rx_buf_ptr_lnc[1]=00000720 > lp->rx_buf_ptr_cpu[2]=bf801a40 > lp->rx_buf_ptr_lnc[2]=00000d20 > lp->rx_buf_ptr_cpu[3]=bf802640 > lp->rx_buf_ptr_lnc[3]=00001320 > lp->rx_buf_ptr_cpu[4]=bf803240 > lp->rx_buf_ptr_lnc[4]=00001920 > lp->rx_buf_ptr_cpu[5]=bf803e40 > lp->rx_buf_ptr_lnc[5]=00001f20 > lp->rx_buf_ptr_cpu[6]=bf804a40 > lp->rx_buf_ptr_lnc[6]=00002520 > lp->rx_buf_ptr_cpu[7]=bf805640 > lp->rx_buf_ptr_lnc[7]=00002b20 > lp->rx_buf_ptr_cpu[8]=bf806240 > lp->rx_buf_ptr_lnc[8]=00003120 > lp->rx_buf_ptr_cpu[9]=bf806e40 > lp->rx_buf_ptr_lnc[9]=00003720 > lp->rx_buf_ptr_cpu[10]=bf807a40 > lp->rx_buf_ptr_lnc[10]=00003d20 > lp->rx_buf_ptr_cpu[11]=bf808640 > lp->rx_buf_ptr_lnc[11]=00004320 > lp->rx_buf_ptr_cpu[12]=bf809240 > lp->rx_buf_ptr_lnc[12]=00004920 > lp->rx_buf_ptr_cpu[13]=bf809e40 > lp->rx_buf_ptr_lnc[13]=00004f20 > lp->rx_buf_ptr_cpu[14]=bf80aa40 > lp->rx_buf_ptr_lnc[14]=00005520 > lp->rx_buf_ptr_cpu[15]=bf80b640 > lp->rx_buf_ptr_lnc[15]=00005b20 > lp->tx_buf_ptr_cpu[0]=bf80c240 > lp->tx_buf_ptr_lnc[0]=00006120 > lp->tx_buf_ptr_cpu[1]=bf80ce40 > lp->tx_buf_ptr_lnc[1]=00006720 > lp->tx_buf_ptr_cpu[2]=bf80da40 > lp->tx_buf_ptr_lnc[2]=00006d20 > lp->tx_buf_ptr_cpu[3]=bf80e640 > lp->tx_buf_ptr_lnc[3]=00007320 > lp->tx_buf_ptr_cpu[4]=bf80f240 > lp->tx_buf_ptr_lnc[4]=00007920 > lp->tx_buf_ptr_cpu[5]=bf80fe40 > lp->tx_buf_ptr_lnc[5]=00007f20 > lp->tx_buf_ptr_cpu[6]=bf810a40 > lp->tx_buf_ptr_lnc[6]=00008520 > lp->tx_buf_ptr_cpu[7]=bf811640 > lp->tx_buf_ptr_lnc[7]=00008b20 > lp->tx_buf_ptr_cpu[8]=bf812240 > lp->tx_buf_ptr_lnc[8]=00009120 > lp->tx_buf_ptr_cpu[9]=bf812e40 > lp->tx_buf_ptr_lnc[9]=00009720 > lp->tx_buf_ptr_cpu[10]=bf813a40 > lp->tx_buf_ptr_lnc[10]=00009d20 > lp->tx_buf_ptr_cpu[11]=bf814640 > lp->tx_buf_ptr_lnc[11]=0000a320 > lp->tx_buf_ptr_cpu[12]=bf815240 > lp->tx_buf_ptr_lnc[12]=0000a920 > lp->tx_buf_ptr_cpu[13]=bf815e40 > lp->tx_buf_ptr_lnc[13]=0000af20 > lp->tx_buf_ptr_cpu[14]=bf816a40 > lp->tx_buf_ptr_lnc[14]=0000b520 > lp->tx_buf_ptr_cpu[15]=bf817640 > lp->tx_buf_ptr_lnc[15]=0000bb20 > eth0: PMAD-AA, addr = 08:00:2b:1c:44:ee, irq = 3 > [...] > Sending BOOTP requests .lance_start_xmit:882: entry=0 > lance_start_xmit:884: calling cp_to_buf((char *) lp->tx_buf_ptr_cpu[0]=bf80c240, skb->data=8022c402, skblen=590) > .lance_start_xmit:882: entry=1 > lance_start_xmit:884: calling cp_to_buf((char *) lp->tx_buf_ptr_cpu[1]=bf80ce40, skb->data=8022c402, skblen=590) > .lance_start_xmit:882: entry=2 > lance_start_xmit:884: calling cp_to_buf((char *) lp->tx_buf_ptr_cpu[2]=bf80da40, skb->data=8022c402, skblen=590) > .lance_start_xmit:882: entry=3 > lance_start_xmit:884: calling cp_to_buf((char *) lp->tx_buf_ptr_cpu[3]=bf80e640, skb->data=8022c402, skblen=590) > .lance_start_xmit:882: entry=4 > lance_start_xmit:884: calling cp_to_buf((char *) lp->tx_buf_ptr_cpu[4]=bf80f240, skb->data=8022c402, skblen=590) > .lance_start_xmit:882: entry=5 > lance_start_xmit:884: calling cp_to_buf((char *) lp->tx_buf_ptr_cpu[5]=bf80fe40, skb->data=8022c402, skblen=590) > timed out! > IP-Config: Retrying forever (NFS root)... > Sending BOOTP requests .lance_start_xmit:882: entry=0 > lance_start_xmit:884: calling cp_to_buf((char *) lp->tx_buf_ptr_cpu[0]=bf80c240, skb->data=8022c402, skblen=590) > .lance_start_xmit:882: entry=1 > [...] > -- David Airlie, Software Engineer http://www.skynet.ie/~airlied / airlied@skynet.ie pam_smb / Linux DecStation / Linux VAX / ILUG person