Lines Matching refs:lp
362 struct lance_private *lp = dev->ml_priv; in cleanup_card() local
366 kfree(lp->tx_bounce_buffs); in cleanup_card()
367 kfree((void*)lp->rx_buffs); in cleanup_card()
368 kfree(lp); in cleanup_card()
422 struct lance_private *lp = dev->ml_priv; in do_lance_probe() local
423 int ver = lp->chip_version; in do_lance_probe()
471 struct lance_private *lp; in lance_probe1() local
549 lp = kzalloc(sizeof(*lp), GFP_DMA | GFP_KERNEL); in lance_probe1()
550 if(lp==NULL) in lance_probe1()
552 if (lance_debug > 6) printk(" (#0x%05lx)", (unsigned long)lp); in lance_probe1()
553 dev->ml_priv = lp; in lance_probe1()
554 lp->name = chipname; in lance_probe1()
555 lp->rx_buffs = (unsigned long)kmalloc(PKT_BUF_SZ*RX_RING_SIZE, in lance_probe1()
557 if (!lp->rx_buffs) in lance_probe1()
560 lp->tx_bounce_buffs = kmalloc(PKT_BUF_SZ*TX_RING_SIZE, in lance_probe1()
562 if (!lp->tx_bounce_buffs) in lance_probe1()
565 lp->tx_bounce_buffs = NULL; in lance_probe1()
567 lp->chip_version = lance_version; in lance_probe1()
568 spin_lock_init(&lp->devlock); in lance_probe1()
570 lp->init_block.mode = 0x0003; /* Disable Rx and Tx. */ in lance_probe1()
572 lp->init_block.phys_addr[i] = dev->dev_addr[i]; in lance_probe1()
573 lp->init_block.filter[0] = 0x00000000; in lance_probe1()
574 lp->init_block.filter[1] = 0x00000000; in lance_probe1()
575 lp->init_block.rx_ring = ((u32)isa_virt_to_bus(lp->rx_ring) & 0xffffff) | RX_RING_LEN_BITS; in lance_probe1()
576 lp->init_block.tx_ring = ((u32)isa_virt_to_bus(lp->tx_ring) & 0xffffff) | TX_RING_LEN_BITS; in lance_probe1()
580 outw((short) (u32) isa_virt_to_bus(&lp->init_block), ioaddr+LANCE_DATA); in lance_probe1()
583 outw(((u32)isa_virt_to_bus(&lp->init_block)) >> 16, ioaddr+LANCE_DATA); in lance_probe1()
717 if (chip_table[lp->chip_version].flags & LANCE_ENABLE_AUTOSELECT) { in lance_probe1()
740 kfree(lp->tx_bounce_buffs); in lance_probe1()
742 kfree((void*)lp->rx_buffs); in lance_probe1()
744 kfree(lp); in lance_probe1()
752 struct lance_private *lp = dev->ml_priv; in lance_open() local
776 if (chip_table[lp->chip_version].flags & LANCE_MUST_UNRESET) in lance_open()
779 if (chip_table[lp->chip_version].flags & LANCE_ENABLE_AUTOSELECT) { in lance_open()
789 (u32) isa_virt_to_bus(lp->tx_ring), in lance_open()
790 (u32) isa_virt_to_bus(lp->rx_ring), in lance_open()
791 (u32) isa_virt_to_bus(&lp->init_block)); in lance_open()
796 outw((short) (u32) isa_virt_to_bus(&lp->init_block), ioaddr+LANCE_DATA); in lance_open()
798 outw(((u32)isa_virt_to_bus(&lp->init_block)) >> 16, ioaddr+LANCE_DATA); in lance_open()
820 dev->name, i, (u32) isa_virt_to_bus(&lp->init_block), inw(ioaddr+LANCE_DATA)); in lance_open()
840 struct lance_private *lp = dev->ml_priv; in lance_purge_ring() local
845 struct sk_buff *skb = lp->rx_skbuff[i]; in lance_purge_ring()
846 lp->rx_skbuff[i] = NULL; in lance_purge_ring()
847 lp->rx_ring[i].base = 0; /* Not owned by LANCE chip. */ in lance_purge_ring()
852 if (lp->tx_skbuff[i]) { in lance_purge_ring()
853 dev_kfree_skb_any(lp->tx_skbuff[i]); in lance_purge_ring()
854 lp->tx_skbuff[i] = NULL; in lance_purge_ring()
864 struct lance_private *lp = dev->ml_priv; in lance_init_ring() local
867 lp->cur_rx = lp->cur_tx = 0; in lance_init_ring()
868 lp->dirty_rx = lp->dirty_tx = 0; in lance_init_ring()
875 lp->rx_skbuff[i] = skb; in lance_init_ring()
881 lp->rx_ring[i].base = 0; in lance_init_ring()
883 lp->rx_ring[i].base = (u32)isa_virt_to_bus(rx_buff) | 0x80000000; in lance_init_ring()
884 lp->rx_ring[i].buf_length = -PKT_BUF_SZ; in lance_init_ring()
889 lp->tx_skbuff[i] = NULL; in lance_init_ring()
890 lp->tx_ring[i].base = 0; in lance_init_ring()
893 lp->init_block.mode = 0x0000; in lance_init_ring()
895 lp->init_block.phys_addr[i] = dev->dev_addr[i]; in lance_init_ring()
896 lp->init_block.filter[0] = 0x00000000; in lance_init_ring()
897 lp->init_block.filter[1] = 0x00000000; in lance_init_ring()
898 lp->init_block.rx_ring = ((u32)isa_virt_to_bus(lp->rx_ring) & 0xffffff) | RX_RING_LEN_BITS; in lance_init_ring()
899 lp->init_block.tx_ring = ((u32)isa_virt_to_bus(lp->tx_ring) & 0xffffff) | TX_RING_LEN_BITS; in lance_init_ring()
905 struct lance_private *lp = dev->ml_priv; in lance_restart() local
908 (chip_table[lp->chip_version].flags & LANCE_MUST_REINIT_RING)) { in lance_restart()
919 struct lance_private *lp = (struct lance_private *) dev->ml_priv; in lance_tx_timeout() local
931 lp->dirty_tx, lp->cur_tx, netif_queue_stopped(dev) ? " (full)" : "", in lance_tx_timeout()
932 lp->cur_rx); in lance_tx_timeout()
935 lp->rx_ring[i].base, -lp->rx_ring[i].buf_length, in lance_tx_timeout()
936 lp->rx_ring[i].msg_length); in lance_tx_timeout()
939 lp->tx_ring[i].base, -lp->tx_ring[i].length, in lance_tx_timeout()
940 lp->tx_ring[i].misc); in lance_tx_timeout()
954 struct lance_private *lp = dev->ml_priv; in lance_start_xmit() local
959 spin_lock_irqsave(&lp->devlock, flags); in lance_start_xmit()
971 entry = lp->cur_tx & TX_RING_MOD_MASK; in lance_start_xmit()
977 if (chip_table[lp->chip_version].flags & LANCE_MUST_PAD) { in lance_start_xmit()
981 lp->tx_ring[entry].length = -ETH_ZLEN; in lance_start_xmit()
984 lp->tx_ring[entry].length = -skb->len; in lance_start_xmit()
986 lp->tx_ring[entry].length = -skb->len; in lance_start_xmit()
988 lp->tx_ring[entry].misc = 0x0000; in lance_start_xmit()
998 skb_copy_from_linear_data(skb, &lp->tx_bounce_buffs[entry], skb->len); in lance_start_xmit()
999 lp->tx_ring[entry].base = in lance_start_xmit()
1000 ((u32)isa_virt_to_bus((lp->tx_bounce_buffs + entry)) & 0xffffff) | 0x83000000; in lance_start_xmit()
1003 lp->tx_skbuff[entry] = skb; in lance_start_xmit()
1004 lp->tx_ring[entry].base = ((u32)isa_virt_to_bus(skb->data) & 0xffffff) | 0x83000000; in lance_start_xmit()
1006 lp->cur_tx++; in lance_start_xmit()
1012 if ((lp->cur_tx - lp->dirty_tx) >= TX_RING_SIZE) in lance_start_xmit()
1016 spin_unlock_irqrestore(&lp->devlock, flags); in lance_start_xmit()
1024 struct lance_private *lp; in lance_interrupt() local
1029 lp = dev->ml_priv; in lance_interrupt()
1031 spin_lock (&lp->devlock); in lance_interrupt()
1049 int dirty_tx = lp->dirty_tx; in lance_interrupt()
1051 while (dirty_tx < lp->cur_tx) { in lance_interrupt()
1053 int status = lp->tx_ring[entry].base; in lance_interrupt()
1058 lp->tx_ring[entry].base = 0; in lance_interrupt()
1062 int err_status = lp->tx_ring[entry].misc; in lance_interrupt()
1087 if (lp->tx_skbuff[entry]) { in lance_interrupt()
1088 dev_kfree_skb_irq(lp->tx_skbuff[entry]); in lance_interrupt()
1089 lp->tx_skbuff[entry] = NULL; in lance_interrupt()
1095 if (lp->cur_tx - dirty_tx >= TX_RING_SIZE) { in lance_interrupt()
1097 dirty_tx, lp->cur_tx, in lance_interrupt()
1105 dirty_tx > lp->cur_tx - TX_RING_SIZE + 2) in lance_interrupt()
1108 lp->dirty_tx = dirty_tx; in lance_interrupt()
1140 spin_unlock (&lp->devlock); in lance_interrupt()
1147 struct lance_private *lp = dev->ml_priv; in lance_rx() local
1148 int entry = lp->cur_rx & RX_RING_MOD_MASK; in lance_rx()
1152 while (lp->rx_ring[entry].base >= 0) { in lance_rx()
1153 int status = lp->rx_ring[entry].base >> 24; in lance_rx()
1170 lp->rx_ring[entry].base &= 0x03ffffff; in lance_rx()
1175 short pkt_len = (lp->rx_ring[entry].msg_length & 0xfff)-4; in lance_rx()
1190 if (lp->rx_ring[(entry+i) & RX_RING_MOD_MASK].base < 0) in lance_rx()
1196 lp->rx_ring[entry].base |= 0x80000000; in lance_rx()
1197 lp->cur_rx++; in lance_rx()
1204 (unsigned char *)isa_bus_to_virt((lp->rx_ring[entry].base & 0x00ffffff)), in lance_rx()
1214 lp->rx_ring[entry].buf_length = -PKT_BUF_SZ; in lance_rx()
1215 lp->rx_ring[entry].base |= 0x80000000; in lance_rx()
1216 entry = (++lp->cur_rx) & RX_RING_MOD_MASK; in lance_rx()
1229 struct lance_private *lp = dev->ml_priv; in lance_close() local
1233 if (chip_table[lp->chip_version].flags & LANCE_HAS_MISSED_FRAME) { in lance_close()
1262 struct lance_private *lp = dev->ml_priv; in lance_get_stats() local
1264 if (chip_table[lp->chip_version].flags & LANCE_HAS_MISSED_FRAME) { in lance_get_stats()
1269 spin_lock_irqsave(&lp->devlock, flags); in lance_get_stats()
1274 spin_unlock_irqrestore(&lp->devlock, flags); in lance_get_stats()