Loading drivers/net/ethernet/8390/8390.h +6 −1 Original line number Diff line number Diff line Loading @@ -21,6 +21,12 @@ struct e8390_pkt_hdr { unsigned short count; /* header + packet length in bytes */ }; #ifdef notdef extern int ei_debug; #else #define ei_debug 1 #endif #ifdef CONFIG_NET_POLL_CONTROLLER void ei_poll(struct net_device *dev); void eip_poll(struct net_device *dev); Loading Loading @@ -93,7 +99,6 @@ struct ei_device { u32 *reg_offset; /* Register mapping table */ spinlock_t page_lock; /* Page register locks */ unsigned long priv; /* Private field to store bus IDs etc. */ u32 msg_enable; /* debug message level */ #ifdef AX88796_PLATFORM unsigned char rxcr_base; /* default value for RXCR */ #endif Loading drivers/net/ethernet/8390/apne.c +26 −36 Original line number Diff line number Diff line Loading @@ -116,15 +116,9 @@ static const char version[] = static int apne_owned; /* signal if card already owned */ static u32 apne_msg_enable; module_param_named(msg_enable, apne_msg_enable, uint, (S_IRUSR|S_IRGRP|S_IROTH)); MODULE_PARM_DESC(msg_enable, "Debug message level (see linux/netdevice.h for bitmap)"); struct net_device * __init apne_probe(int unit) { struct net_device *dev; struct ei_device *ei_local; #ifndef MANUAL_CONFIG char tuple[8]; #endif Loading @@ -139,11 +133,11 @@ struct net_device * __init apne_probe(int unit) if ( !(AMIGAHW_PRESENT(PCMCIA)) ) return ERR_PTR(-ENODEV); pr_info("Looking for PCMCIA ethernet card : "); printk("Looking for PCMCIA ethernet card : "); /* check if a card is inserted */ if (!(PCMCIA_INSERTED)) { pr_cont("NO PCMCIA card inserted\n"); printk("NO PCMCIA card inserted\n"); return ERR_PTR(-ENODEV); } Loading @@ -154,8 +148,6 @@ struct net_device * __init apne_probe(int unit) sprintf(dev->name, "eth%d", unit); netdev_boot_setup_check(dev); } ei_local = netdev_priv(dev); ei_local->msg_enable = apne_msg_enable; /* disable pcmcia irq for readtuple */ pcmcia_disable_irq(); Loading @@ -163,14 +155,14 @@ struct net_device * __init apne_probe(int unit) #ifndef MANUAL_CONFIG if ((pcmcia_copy_tuple(CISTPL_FUNCID, tuple, 8) < 3) || (tuple[2] != CISTPL_FUNCID_NETWORK)) { pr_cont("not an ethernet card\n"); printk("not an ethernet card\n"); /* XXX: shouldn't we re-enable irq here? */ free_netdev(dev); return ERR_PTR(-ENODEV); } #endif pr_cont("ethernet PCMCIA card inserted\n"); printk("ethernet PCMCIA card inserted\n"); if (!init_pcmcia()) { /* XXX: shouldn't we re-enable irq here? */ Loading Loading @@ -212,12 +204,11 @@ static int __init apne_probe1(struct net_device *dev, int ioaddr) int neX000, ctron; #endif static unsigned version_printed; struct ei_device *ei_local = netdev_priv(dev); if ((apne_msg_enable & NETIF_MSG_DRV) && (version_printed++ == 0)) netdev_info(dev, version); if (ei_debug && version_printed++ == 0) printk(version); netdev_info(dev, "PCMCIA NE*000 ethercard probe"); printk("PCMCIA NE*000 ethercard probe"); /* Reset card. Who knows what dain-bramaged state it was left in. */ { unsigned long reset_start_time = jiffies; Loading @@ -226,7 +217,7 @@ static int __init apne_probe1(struct net_device *dev, int ioaddr) while ((inb(ioaddr + NE_EN0_ISR) & ENISR_RESET) == 0) if (time_after(jiffies, reset_start_time + 2*HZ/100)) { pr_cont(" not found (no reset ack).\n"); printk(" not found (no reset ack).\n"); return -ENODEV; } Loading Loading @@ -297,7 +288,7 @@ static int __init apne_probe1(struct net_device *dev, int ioaddr) start_page = 0x01; stop_page = (wordlength == 2) ? 0x40 : 0x20; } else { pr_cont(" not found.\n"); printk(" not found.\n"); return -ENXIO; } Loading Loading @@ -329,9 +320,9 @@ static int __init apne_probe1(struct net_device *dev, int ioaddr) for (i = 0; i < ETH_ALEN; i++) dev->dev_addr[i] = SA_prom[i]; pr_cont(" %pM\n", dev->dev_addr); printk(" %pM\n", dev->dev_addr); netdev_info(dev, "%s found.\n", name); printk("%s: %s found.\n", dev->name, name); ei_status.name = name; ei_status.tx_start_page = start_page; Loading Loading @@ -361,11 +352,10 @@ static void apne_reset_8390(struct net_device *dev) { unsigned long reset_start_time = jiffies; struct ei_device *ei_local = netdev_priv(dev); init_pcmcia(); netif_dbg(ei_local, hw, dev, "resetting the 8390 t=%ld...\n", jiffies); if (ei_debug > 1) printk("resetting the 8390 t=%ld...", jiffies); outb(inb(NE_BASE + NE_RESET), NE_BASE + NE_RESET); Loading @@ -375,7 +365,7 @@ apne_reset_8390(struct net_device *dev) /* This check _should_not_ be necessary, omit eventually. */ while ((inb(NE_BASE+NE_EN0_ISR) & ENISR_RESET) == 0) if (time_after(jiffies, reset_start_time + 2*HZ/100)) { netdev_err(dev, "ne_reset_8390() did not complete.\n"); printk("%s: ne_reset_8390() did not complete.\n", dev->name); break; } outb(ENISR_RESET, NE_BASE + NE_EN0_ISR); /* Ack intr. */ Loading @@ -396,9 +386,9 @@ apne_get_8390_hdr(struct net_device *dev, struct e8390_pkt_hdr *hdr, int ring_pa /* This *shouldn't* happen. If it does, it's the last thing you'll see */ if (ei_status.dmaing) { netdev_err(dev, "DMAing conflict in ne_get_8390_hdr " printk("%s: DMAing conflict in ne_get_8390_hdr " "[DMAstat:%d][irqlock:%d][intr:%d].\n", ei_status.dmaing, ei_status.irqlock, dev->irq); dev->name, ei_status.dmaing, ei_status.irqlock, dev->irq); return; } Loading Loading @@ -443,9 +433,9 @@ apne_block_input(struct net_device *dev, int count, struct sk_buff *skb, int rin /* This *shouldn't* happen. If it does, it's the last thing you'll see */ if (ei_status.dmaing) { netdev_err(dev, "DMAing conflict in ne_block_input " printk("%s: DMAing conflict in ne_block_input " "[DMAstat:%d][irqlock:%d][intr:%d].\n", ei_status.dmaing, ei_status.irqlock, dev->irq); dev->name, ei_status.dmaing, ei_status.irqlock, dev->irq); return; } ei_status.dmaing |= 0x01; Loading Loading @@ -491,9 +481,9 @@ apne_block_output(struct net_device *dev, int count, /* This *shouldn't* happen. If it does, it's the last thing you'll see */ if (ei_status.dmaing) { netdev_err(dev, "DMAing conflict in ne_block_output." printk("%s: DMAing conflict in ne_block_output." "[DMAstat:%d][irqlock:%d][intr:%d]\n", ei_status.dmaing, ei_status.irqlock, dev->irq); dev->name, ei_status.dmaing, ei_status.irqlock, dev->irq); return; } ei_status.dmaing |= 0x01; Loading Loading @@ -523,7 +513,7 @@ apne_block_output(struct net_device *dev, int count, while ((inb(NE_BASE + NE_EN0_ISR) & ENISR_RDC) == 0) if (time_after(jiffies, dma_start + 2*HZ/100)) { /* 20ms */ netdev_warn(dev, "timeout waiting for Tx RDC.\n"); printk("%s: timeout waiting for Tx RDC.\n", dev->name); apne_reset_8390(dev); NS8390_init(dev,1); break; Loading @@ -546,8 +536,8 @@ static irqreturn_t apne_interrupt(int irq, void *dev_id) pcmcia_ack_int(pcmcia_intreq); return IRQ_NONE; } if (apne_msg_enable & NETIF_MSG_INTR) pr_debug("pcmcia intreq = %x\n", pcmcia_intreq); if (ei_debug > 3) printk("pcmcia intreq = %x\n", pcmcia_intreq); pcmcia_disable_irq(); /* to get rid of the sti() within ei_interrupt */ ei_interrupt(irq, dev_id); pcmcia_ack_int(pcmcia_get_intreq()); Loading drivers/net/ethernet/8390/ax88796.c +2 −20 Original line number Diff line number Diff line Loading @@ -78,8 +78,6 @@ static unsigned char version[] = "ax88796.c: Copyright 2005,2007 Simtec Electron #define AX_GPOC_PPDSET BIT(6) static u32 ax_msg_enable; /* device private data */ struct ax_device { Loading Loading @@ -149,7 +147,8 @@ static void ax_reset_8390(struct net_device *dev) unsigned long reset_start_time = jiffies; void __iomem *addr = (void __iomem *)dev->base_addr; netif_dbg(ei_local, hw, dev, "resetting the 8390 t=%ld...\n", jiffies); if (ei_debug > 1) netdev_dbg(dev, "resetting the 8390 t=%ld\n", jiffies); ei_outb(ei_inb(addr + NE_RESET), addr + NE_RESET); Loading Loading @@ -497,28 +496,12 @@ static int ax_set_settings(struct net_device *dev, struct ethtool_cmd *cmd) return phy_ethtool_sset(phy_dev, cmd); } static u32 ax_get_msglevel(struct net_device *dev) { struct ei_device *ei_local = netdev_priv(dev); return ei_local->msg_enable; } static void ax_set_msglevel(struct net_device *dev, u32 v) { struct ei_device *ei_local = netdev_priv(dev); ei_local->msg_enable = v; } static const struct ethtool_ops ax_ethtool_ops = { .get_drvinfo = ax_get_drvinfo, .get_settings = ax_get_settings, .set_settings = ax_set_settings, .get_link = ethtool_op_get_link, .get_ts_info = ethtool_op_get_ts_info, .get_msglevel = ax_get_msglevel, .set_msglevel = ax_set_msglevel, }; #ifdef CONFIG_AX88796_93CX6 Loading Loading @@ -780,7 +763,6 @@ static int ax_init_dev(struct net_device *dev) ei_local->block_output = &ax_block_output; ei_local->get_8390_hdr = &ax_get_8390_hdr; ei_local->priv = 0; ei_local->msg_enable = ax_msg_enable; dev->netdev_ops = &ax_netdev_ops; dev->ethtool_ops = &ax_ethtool_ops; Loading drivers/net/ethernet/8390/axnet_cs.c +62 −57 Original line number Diff line number Diff line Loading @@ -105,7 +105,6 @@ static void AX88190_init(struct net_device *dev, int startp); static int ax_open(struct net_device *dev); static int ax_close(struct net_device *dev); static irqreturn_t ax_interrupt(int irq, void *dev_id); static u32 axnet_msg_enable; /*====================================================================*/ Loading Loading @@ -153,7 +152,6 @@ static int axnet_probe(struct pcmcia_device *link) return -ENOMEM; ei_local = netdev_priv(dev); ei_local->msg_enable = axnet_msg_enable; spin_lock_init(&ei_local->page_lock); info = PRIV(dev); Loading Loading @@ -652,12 +650,11 @@ static void block_input(struct net_device *dev, int count, struct sk_buff *skb, int ring_offset) { unsigned int nic_base = dev->base_addr; struct ei_device *ei_local = netdev_priv(dev); int xfer_count = count; char *buf = skb->data; if ((netif_msg_rx_status(ei_local)) && (count != 4)) netdev_dbg(dev, "[bi=%d]\n", count+4); if ((ei_debug > 4) && (count != 4)) pr_debug("%s: [bi=%d]\n", dev->name, count+4); outb_p(ring_offset & 0xff, nic_base + EN0_RSARLO); outb_p(ring_offset >> 8, nic_base + EN0_RSARHI); outb_p(E8390_RREAD+E8390_START, nic_base + AXNET_CMD); Loading Loading @@ -813,6 +810,11 @@ module_pcmcia_driver(axnet_cs_driver); #define ei_block_input (ei_local->block_input) #define ei_get_8390_hdr (ei_local->get_8390_hdr) /* use 0 for production, 1 for verification, >2 for debug */ #ifndef ei_debug int ei_debug = 1; #endif /* Index to functions. */ static void ei_tx_intr(struct net_device *dev); static void ei_tx_err(struct net_device *dev); Loading Loading @@ -923,7 +925,8 @@ static void axnet_tx_timeout(struct net_device *dev) isr = inb(e8390_base+EN0_ISR); spin_unlock_irqrestore(&ei_local->page_lock, flags); netdev_dbg(dev, "Tx timed out, %s TSR=%#2x, ISR=%#2x, t=%d.\n", netdev_printk(KERN_DEBUG, dev, "Tx timed out, %s TSR=%#2x, ISR=%#2x, t=%d.\n", (txsr & ENTSR_ABT) ? "excess collisions." : (isr) ? "lost interrupt?" : "cable problem?", txsr, isr, tickssofar); Loading Loading @@ -995,9 +998,8 @@ static netdev_tx_t axnet_start_xmit(struct sk_buff *skb, { output_page = ei_local->tx_start_page; ei_local->tx1 = send_length; if ((netif_msg_tx_queued(ei_local)) && ei_local->tx2 > 0) netdev_dbg(dev, if (ei_debug && ei_local->tx2 > 0) netdev_printk(KERN_DEBUG, dev, "idle transmitter tx2=%d, lasttx=%d, txing=%d\n", ei_local->tx2, ei_local->lasttx, ei_local->txing); Loading @@ -1006,16 +1008,16 @@ static netdev_tx_t axnet_start_xmit(struct sk_buff *skb, { output_page = ei_local->tx_start_page + TX_PAGES/2; ei_local->tx2 = send_length; if ((netif_msg_tx_queued(ei_local)) && ei_local->tx1 > 0) netdev_dbg(dev, if (ei_debug && ei_local->tx1 > 0) netdev_printk(KERN_DEBUG, dev, "idle transmitter, tx1=%d, lasttx=%d, txing=%d\n", ei_local->tx1, ei_local->lasttx, ei_local->txing); } else { /* We should never get here. */ netif_dbg(ei_local, tx_err, dev, if (ei_debug) netdev_printk(KERN_DEBUG, dev, "No Tx buffers free! tx1=%d tx2=%d last=%d\n", ei_local->tx1, ei_local->tx2, ei_local->lasttx); Loading Loading @@ -1123,7 +1125,8 @@ static irqreturn_t ax_interrupt(int irq, void *dev_id) return IRQ_NONE; } netif_dbg(ei_local, intr, dev, "interrupt(isr=%#2.2x)\n", if (ei_debug > 3) netdev_printk(KERN_DEBUG, dev, "interrupt(isr=%#2.2x)\n", inb_p(e8390_base + EN0_ISR)); outb_p(0x00, e8390_base + EN0_ISR); Loading @@ -1134,7 +1137,8 @@ static irqreturn_t ax_interrupt(int irq, void *dev_id) ++nr_serviced < MAX_SERVICE) { if (!netif_running(dev) || (interrupts == 0xff)) { netif_warn(ei_local, intr, dev, if (ei_debug > 1) netdev_warn(dev, "interrupt from stopped card\n"); outb_p(interrupts, e8390_base + EN0_ISR); interrupts = 0; Loading Loading @@ -1171,15 +1175,14 @@ static irqreturn_t ax_interrupt(int irq, void *dev_id) } } if (interrupts && (netif_msg_intr(ei_local))) if (interrupts && ei_debug > 3) { handled = 1; if (nr_serviced >= MAX_SERVICE) { /* 0xFF is valid for a card removal */ if(interrupts!=0xFF) netdev_warn(dev, "Too much work at interrupt, status %#2.2x\n", netdev_warn(dev, "Too much work at interrupt, status %#2.2x\n", interrupts); outb_p(ENISR_ALL, e8390_base + EN0_ISR); /* Ack. most intrs. */ } else { Loading Loading @@ -1218,7 +1221,8 @@ static void ei_tx_err(struct net_device *dev) unsigned char tx_was_aborted = txsr & (ENTSR_ABT+ENTSR_FU); #ifdef VERBOSE_ERROR_DUMP netdev_dbg(dev, "transmitter error (%#2x):", txsr); netdev_printk(KERN_DEBUG, dev, "transmitter error (%#2x):", txsr); if (txsr & ENTSR_ABT) pr_cont(" excess-collisions"); if (txsr & ENTSR_ND) Loading Loading @@ -1283,7 +1287,7 @@ static void ei_tx_intr(struct net_device *dev) else if (ei_local->tx2 < 0) { if (ei_local->lasttx != 2 && ei_local->lasttx != -2) netdev_err(dev, "%s: bogus last_tx_buffer %d, tx2=%d\n", netdev_info(dev, "%s: bogus last_tx_buffer %d, tx2=%d\n", ei_local->name, ei_local->lasttx, ei_local->tx2); ei_local->tx2 = 0; Loading Loading @@ -1362,9 +1366,7 @@ static void ei_receive(struct net_device *dev) Keep quiet if it looks like a card removal. One problem here is that some clones crash in roughly the same way. */ if ((netif_msg_rx_err(ei_local)) && this_frame != ei_local->current_page && (this_frame != 0x0 || rxing_page != 0xFF)) if (ei_debug > 0 && this_frame != ei_local->current_page && (this_frame!=0x0 || rxing_page!=0xFF)) netdev_err(dev, "mismatched read page pointers %2x vs %2x\n", this_frame, ei_local->current_page); Loading @@ -1381,7 +1383,8 @@ static void ei_receive(struct net_device *dev) if (pkt_len < 60 || pkt_len > 1518) { netif_err(ei_local, rx_err, dev, if (ei_debug) netdev_printk(KERN_DEBUG, dev, "bogus packet size: %d, status=%#2x nxpg=%#2x\n", rx_frame.count, rx_frame.status, rx_frame.next); Loading @@ -1395,7 +1398,8 @@ static void ei_receive(struct net_device *dev) skb = netdev_alloc_skb(dev, pkt_len + 2); if (skb == NULL) { netif_err(ei_local, rx_err, dev, if (ei_debug > 1) netdev_printk(KERN_DEBUG, dev, "Couldn't allocate a sk_buff of size %d\n", pkt_len); dev->stats.rx_dropped++; Loading @@ -1416,7 +1420,8 @@ static void ei_receive(struct net_device *dev) } else { netif_err(ei_local, rx_err, dev, if (ei_debug) netdev_printk(KERN_DEBUG, dev, "bogus packet: status=%#2x nxpg=%#2x size=%d\n", rx_frame.status, rx_frame.next, rx_frame.count); Loading Loading @@ -1456,7 +1461,6 @@ static void ei_rx_overrun(struct net_device *dev) axnet_dev_t *info = PRIV(dev); long e8390_base = dev->base_addr; unsigned char was_txing, must_resend = 0; struct ei_device *ei_local = netdev_priv(dev); /* * Record whether a Tx was in progress and then issue the Loading @@ -1465,7 +1469,8 @@ static void ei_rx_overrun(struct net_device *dev) was_txing = inb_p(e8390_base+E8390_CMD) & E8390_TRANS; outb_p(E8390_NODMA+E8390_PAGE0+E8390_STOP, e8390_base+E8390_CMD); netif_dbg(ei_local, rx_err, dev, "Receiver overrun\n"); if (ei_debug > 1) netdev_printk(KERN_DEBUG, dev, "Receiver overrun\n"); dev->stats.rx_over_errors++; /* Loading drivers/net/ethernet/8390/etherh.c +19 −32 Original line number Diff line number Diff line Loading @@ -56,6 +56,9 @@ #define ei_inb_p(_p) readb((void __iomem *)_p) #define ei_outb_p(_v,_p) writeb(_v,(void __iomem *)_p) #define NET_DEBUG 0 #define DEBUG_INIT 2 #define DRV_NAME "etherh" #define DRV_VERSION "1.11" Loading @@ -64,7 +67,7 @@ static char version[] __initdata = #include "lib8390.c" static u32 etherh_msg_enable; static unsigned int net_debug = NET_DEBUG; struct etherh_priv { void __iomem *ioc_fast; Loading Loading @@ -314,8 +317,8 @@ etherh_block_output (struct net_device *dev, int count, const unsigned char *buf void __iomem *dma_base, *addr; if (ei_local->dmaing) { netdev_err(dev, "DMAing conflict in etherh_block_input: " " DMAstat %d irqlock %d\n", printk(KERN_ERR "%s: DMAing conflict in etherh_block_input: " " DMAstat %d irqlock %d\n", dev->name, ei_local->dmaing, ei_local->irqlock); return; } Loading Loading @@ -358,7 +361,8 @@ etherh_block_output (struct net_device *dev, int count, const unsigned char *buf while ((readb (addr + EN0_ISR) & ENISR_RDC) == 0) if (time_after(jiffies, dma_start + 2*HZ/100)) { /* 20ms */ netdev_warn(dev, "timeout waiting for TX RDC\n"); printk(KERN_ERR "%s: timeout waiting for TX RDC\n", dev->name); etherh_reset (dev); __NS8390_init (dev, 1); break; Loading @@ -379,8 +383,8 @@ etherh_block_input (struct net_device *dev, int count, struct sk_buff *skb, int void __iomem *dma_base, *addr; if (ei_local->dmaing) { netdev_err(dev, "DMAing conflict in etherh_block_input: " " DMAstat %d irqlock %d\n", printk(KERN_ERR "%s: DMAing conflict in etherh_block_input: " " DMAstat %d irqlock %d\n", dev->name, ei_local->dmaing, ei_local->irqlock); return; } Loading Loading @@ -419,8 +423,8 @@ etherh_get_header (struct net_device *dev, struct e8390_pkt_hdr *hdr, int ring_p void __iomem *dma_base, *addr; if (ei_local->dmaing) { netdev_err(dev, "DMAing conflict in etherh_get_header: " " DMAstat %d irqlock %d\n", printk(KERN_ERR "%s: DMAing conflict in etherh_get_header: " " DMAstat %d irqlock %d\n", dev->name, ei_local->dmaing, ei_local->irqlock); return; } Loading Loading @@ -509,8 +513,8 @@ static void __init etherh_banner(void) { static int version_printed; if ((etherh_msg_enable & NETIF_MSG_DRV) && (version_printed++ == 0)) pr_info("%s", version); if (net_debug && version_printed++ == 0) printk(KERN_INFO "%s", version); } /* Loading Loading @@ -621,27 +625,11 @@ static int etherh_set_settings(struct net_device *dev, struct ethtool_cmd *cmd) return 0; } static u32 etherh_get_msglevel(struct net_device *dev) { struct ei_device *ei_local = netdev_priv(dev); return ei_local->msg_enable; } static void etherh_set_msglevel(struct net_device *dev, u32 v) { struct ei_device *ei_local = netdev_priv(dev); ei_local->msg_enable = v; } static const struct ethtool_ops etherh_ethtool_ops = { .get_settings = etherh_get_settings, .set_settings = etherh_set_settings, .get_drvinfo = etherh_get_drvinfo, .get_ts_info = ethtool_op_get_ts_info, .get_msglevel = etherh_get_msglevel, .set_msglevel = etherh_set_msglevel, }; static const struct net_device_ops etherh_netdev_ops = { Loading Loading @@ -758,7 +746,6 @@ etherh_probe(struct expansion_card *ec, const struct ecard_id *id) ei_local->block_output = etherh_block_output; ei_local->get_8390_hdr = etherh_get_header; ei_local->interface_num = 0; ei_local->msg_enable = etherh_msg_enable; etherh_reset(dev); __NS8390_init(dev, 0); Loading @@ -767,8 +754,8 @@ etherh_probe(struct expansion_card *ec, const struct ecard_id *id) if (ret) goto free; netdev_info(dev, "%s in slot %d, %pM\n", data->name, ec->slot_no, dev->dev_addr); printk(KERN_INFO "%s: %s in slot %d, %pM\n", dev->name, data->name, ec->slot_no, dev->dev_addr); ecard_set_drvdata(ec, dev); Loading Loading
drivers/net/ethernet/8390/8390.h +6 −1 Original line number Diff line number Diff line Loading @@ -21,6 +21,12 @@ struct e8390_pkt_hdr { unsigned short count; /* header + packet length in bytes */ }; #ifdef notdef extern int ei_debug; #else #define ei_debug 1 #endif #ifdef CONFIG_NET_POLL_CONTROLLER void ei_poll(struct net_device *dev); void eip_poll(struct net_device *dev); Loading Loading @@ -93,7 +99,6 @@ struct ei_device { u32 *reg_offset; /* Register mapping table */ spinlock_t page_lock; /* Page register locks */ unsigned long priv; /* Private field to store bus IDs etc. */ u32 msg_enable; /* debug message level */ #ifdef AX88796_PLATFORM unsigned char rxcr_base; /* default value for RXCR */ #endif Loading
drivers/net/ethernet/8390/apne.c +26 −36 Original line number Diff line number Diff line Loading @@ -116,15 +116,9 @@ static const char version[] = static int apne_owned; /* signal if card already owned */ static u32 apne_msg_enable; module_param_named(msg_enable, apne_msg_enable, uint, (S_IRUSR|S_IRGRP|S_IROTH)); MODULE_PARM_DESC(msg_enable, "Debug message level (see linux/netdevice.h for bitmap)"); struct net_device * __init apne_probe(int unit) { struct net_device *dev; struct ei_device *ei_local; #ifndef MANUAL_CONFIG char tuple[8]; #endif Loading @@ -139,11 +133,11 @@ struct net_device * __init apne_probe(int unit) if ( !(AMIGAHW_PRESENT(PCMCIA)) ) return ERR_PTR(-ENODEV); pr_info("Looking for PCMCIA ethernet card : "); printk("Looking for PCMCIA ethernet card : "); /* check if a card is inserted */ if (!(PCMCIA_INSERTED)) { pr_cont("NO PCMCIA card inserted\n"); printk("NO PCMCIA card inserted\n"); return ERR_PTR(-ENODEV); } Loading @@ -154,8 +148,6 @@ struct net_device * __init apne_probe(int unit) sprintf(dev->name, "eth%d", unit); netdev_boot_setup_check(dev); } ei_local = netdev_priv(dev); ei_local->msg_enable = apne_msg_enable; /* disable pcmcia irq for readtuple */ pcmcia_disable_irq(); Loading @@ -163,14 +155,14 @@ struct net_device * __init apne_probe(int unit) #ifndef MANUAL_CONFIG if ((pcmcia_copy_tuple(CISTPL_FUNCID, tuple, 8) < 3) || (tuple[2] != CISTPL_FUNCID_NETWORK)) { pr_cont("not an ethernet card\n"); printk("not an ethernet card\n"); /* XXX: shouldn't we re-enable irq here? */ free_netdev(dev); return ERR_PTR(-ENODEV); } #endif pr_cont("ethernet PCMCIA card inserted\n"); printk("ethernet PCMCIA card inserted\n"); if (!init_pcmcia()) { /* XXX: shouldn't we re-enable irq here? */ Loading Loading @@ -212,12 +204,11 @@ static int __init apne_probe1(struct net_device *dev, int ioaddr) int neX000, ctron; #endif static unsigned version_printed; struct ei_device *ei_local = netdev_priv(dev); if ((apne_msg_enable & NETIF_MSG_DRV) && (version_printed++ == 0)) netdev_info(dev, version); if (ei_debug && version_printed++ == 0) printk(version); netdev_info(dev, "PCMCIA NE*000 ethercard probe"); printk("PCMCIA NE*000 ethercard probe"); /* Reset card. Who knows what dain-bramaged state it was left in. */ { unsigned long reset_start_time = jiffies; Loading @@ -226,7 +217,7 @@ static int __init apne_probe1(struct net_device *dev, int ioaddr) while ((inb(ioaddr + NE_EN0_ISR) & ENISR_RESET) == 0) if (time_after(jiffies, reset_start_time + 2*HZ/100)) { pr_cont(" not found (no reset ack).\n"); printk(" not found (no reset ack).\n"); return -ENODEV; } Loading Loading @@ -297,7 +288,7 @@ static int __init apne_probe1(struct net_device *dev, int ioaddr) start_page = 0x01; stop_page = (wordlength == 2) ? 0x40 : 0x20; } else { pr_cont(" not found.\n"); printk(" not found.\n"); return -ENXIO; } Loading Loading @@ -329,9 +320,9 @@ static int __init apne_probe1(struct net_device *dev, int ioaddr) for (i = 0; i < ETH_ALEN; i++) dev->dev_addr[i] = SA_prom[i]; pr_cont(" %pM\n", dev->dev_addr); printk(" %pM\n", dev->dev_addr); netdev_info(dev, "%s found.\n", name); printk("%s: %s found.\n", dev->name, name); ei_status.name = name; ei_status.tx_start_page = start_page; Loading Loading @@ -361,11 +352,10 @@ static void apne_reset_8390(struct net_device *dev) { unsigned long reset_start_time = jiffies; struct ei_device *ei_local = netdev_priv(dev); init_pcmcia(); netif_dbg(ei_local, hw, dev, "resetting the 8390 t=%ld...\n", jiffies); if (ei_debug > 1) printk("resetting the 8390 t=%ld...", jiffies); outb(inb(NE_BASE + NE_RESET), NE_BASE + NE_RESET); Loading @@ -375,7 +365,7 @@ apne_reset_8390(struct net_device *dev) /* This check _should_not_ be necessary, omit eventually. */ while ((inb(NE_BASE+NE_EN0_ISR) & ENISR_RESET) == 0) if (time_after(jiffies, reset_start_time + 2*HZ/100)) { netdev_err(dev, "ne_reset_8390() did not complete.\n"); printk("%s: ne_reset_8390() did not complete.\n", dev->name); break; } outb(ENISR_RESET, NE_BASE + NE_EN0_ISR); /* Ack intr. */ Loading @@ -396,9 +386,9 @@ apne_get_8390_hdr(struct net_device *dev, struct e8390_pkt_hdr *hdr, int ring_pa /* This *shouldn't* happen. If it does, it's the last thing you'll see */ if (ei_status.dmaing) { netdev_err(dev, "DMAing conflict in ne_get_8390_hdr " printk("%s: DMAing conflict in ne_get_8390_hdr " "[DMAstat:%d][irqlock:%d][intr:%d].\n", ei_status.dmaing, ei_status.irqlock, dev->irq); dev->name, ei_status.dmaing, ei_status.irqlock, dev->irq); return; } Loading Loading @@ -443,9 +433,9 @@ apne_block_input(struct net_device *dev, int count, struct sk_buff *skb, int rin /* This *shouldn't* happen. If it does, it's the last thing you'll see */ if (ei_status.dmaing) { netdev_err(dev, "DMAing conflict in ne_block_input " printk("%s: DMAing conflict in ne_block_input " "[DMAstat:%d][irqlock:%d][intr:%d].\n", ei_status.dmaing, ei_status.irqlock, dev->irq); dev->name, ei_status.dmaing, ei_status.irqlock, dev->irq); return; } ei_status.dmaing |= 0x01; Loading Loading @@ -491,9 +481,9 @@ apne_block_output(struct net_device *dev, int count, /* This *shouldn't* happen. If it does, it's the last thing you'll see */ if (ei_status.dmaing) { netdev_err(dev, "DMAing conflict in ne_block_output." printk("%s: DMAing conflict in ne_block_output." "[DMAstat:%d][irqlock:%d][intr:%d]\n", ei_status.dmaing, ei_status.irqlock, dev->irq); dev->name, ei_status.dmaing, ei_status.irqlock, dev->irq); return; } ei_status.dmaing |= 0x01; Loading Loading @@ -523,7 +513,7 @@ apne_block_output(struct net_device *dev, int count, while ((inb(NE_BASE + NE_EN0_ISR) & ENISR_RDC) == 0) if (time_after(jiffies, dma_start + 2*HZ/100)) { /* 20ms */ netdev_warn(dev, "timeout waiting for Tx RDC.\n"); printk("%s: timeout waiting for Tx RDC.\n", dev->name); apne_reset_8390(dev); NS8390_init(dev,1); break; Loading @@ -546,8 +536,8 @@ static irqreturn_t apne_interrupt(int irq, void *dev_id) pcmcia_ack_int(pcmcia_intreq); return IRQ_NONE; } if (apne_msg_enable & NETIF_MSG_INTR) pr_debug("pcmcia intreq = %x\n", pcmcia_intreq); if (ei_debug > 3) printk("pcmcia intreq = %x\n", pcmcia_intreq); pcmcia_disable_irq(); /* to get rid of the sti() within ei_interrupt */ ei_interrupt(irq, dev_id); pcmcia_ack_int(pcmcia_get_intreq()); Loading
drivers/net/ethernet/8390/ax88796.c +2 −20 Original line number Diff line number Diff line Loading @@ -78,8 +78,6 @@ static unsigned char version[] = "ax88796.c: Copyright 2005,2007 Simtec Electron #define AX_GPOC_PPDSET BIT(6) static u32 ax_msg_enable; /* device private data */ struct ax_device { Loading Loading @@ -149,7 +147,8 @@ static void ax_reset_8390(struct net_device *dev) unsigned long reset_start_time = jiffies; void __iomem *addr = (void __iomem *)dev->base_addr; netif_dbg(ei_local, hw, dev, "resetting the 8390 t=%ld...\n", jiffies); if (ei_debug > 1) netdev_dbg(dev, "resetting the 8390 t=%ld\n", jiffies); ei_outb(ei_inb(addr + NE_RESET), addr + NE_RESET); Loading Loading @@ -497,28 +496,12 @@ static int ax_set_settings(struct net_device *dev, struct ethtool_cmd *cmd) return phy_ethtool_sset(phy_dev, cmd); } static u32 ax_get_msglevel(struct net_device *dev) { struct ei_device *ei_local = netdev_priv(dev); return ei_local->msg_enable; } static void ax_set_msglevel(struct net_device *dev, u32 v) { struct ei_device *ei_local = netdev_priv(dev); ei_local->msg_enable = v; } static const struct ethtool_ops ax_ethtool_ops = { .get_drvinfo = ax_get_drvinfo, .get_settings = ax_get_settings, .set_settings = ax_set_settings, .get_link = ethtool_op_get_link, .get_ts_info = ethtool_op_get_ts_info, .get_msglevel = ax_get_msglevel, .set_msglevel = ax_set_msglevel, }; #ifdef CONFIG_AX88796_93CX6 Loading Loading @@ -780,7 +763,6 @@ static int ax_init_dev(struct net_device *dev) ei_local->block_output = &ax_block_output; ei_local->get_8390_hdr = &ax_get_8390_hdr; ei_local->priv = 0; ei_local->msg_enable = ax_msg_enable; dev->netdev_ops = &ax_netdev_ops; dev->ethtool_ops = &ax_ethtool_ops; Loading
drivers/net/ethernet/8390/axnet_cs.c +62 −57 Original line number Diff line number Diff line Loading @@ -105,7 +105,6 @@ static void AX88190_init(struct net_device *dev, int startp); static int ax_open(struct net_device *dev); static int ax_close(struct net_device *dev); static irqreturn_t ax_interrupt(int irq, void *dev_id); static u32 axnet_msg_enable; /*====================================================================*/ Loading Loading @@ -153,7 +152,6 @@ static int axnet_probe(struct pcmcia_device *link) return -ENOMEM; ei_local = netdev_priv(dev); ei_local->msg_enable = axnet_msg_enable; spin_lock_init(&ei_local->page_lock); info = PRIV(dev); Loading Loading @@ -652,12 +650,11 @@ static void block_input(struct net_device *dev, int count, struct sk_buff *skb, int ring_offset) { unsigned int nic_base = dev->base_addr; struct ei_device *ei_local = netdev_priv(dev); int xfer_count = count; char *buf = skb->data; if ((netif_msg_rx_status(ei_local)) && (count != 4)) netdev_dbg(dev, "[bi=%d]\n", count+4); if ((ei_debug > 4) && (count != 4)) pr_debug("%s: [bi=%d]\n", dev->name, count+4); outb_p(ring_offset & 0xff, nic_base + EN0_RSARLO); outb_p(ring_offset >> 8, nic_base + EN0_RSARHI); outb_p(E8390_RREAD+E8390_START, nic_base + AXNET_CMD); Loading Loading @@ -813,6 +810,11 @@ module_pcmcia_driver(axnet_cs_driver); #define ei_block_input (ei_local->block_input) #define ei_get_8390_hdr (ei_local->get_8390_hdr) /* use 0 for production, 1 for verification, >2 for debug */ #ifndef ei_debug int ei_debug = 1; #endif /* Index to functions. */ static void ei_tx_intr(struct net_device *dev); static void ei_tx_err(struct net_device *dev); Loading Loading @@ -923,7 +925,8 @@ static void axnet_tx_timeout(struct net_device *dev) isr = inb(e8390_base+EN0_ISR); spin_unlock_irqrestore(&ei_local->page_lock, flags); netdev_dbg(dev, "Tx timed out, %s TSR=%#2x, ISR=%#2x, t=%d.\n", netdev_printk(KERN_DEBUG, dev, "Tx timed out, %s TSR=%#2x, ISR=%#2x, t=%d.\n", (txsr & ENTSR_ABT) ? "excess collisions." : (isr) ? "lost interrupt?" : "cable problem?", txsr, isr, tickssofar); Loading Loading @@ -995,9 +998,8 @@ static netdev_tx_t axnet_start_xmit(struct sk_buff *skb, { output_page = ei_local->tx_start_page; ei_local->tx1 = send_length; if ((netif_msg_tx_queued(ei_local)) && ei_local->tx2 > 0) netdev_dbg(dev, if (ei_debug && ei_local->tx2 > 0) netdev_printk(KERN_DEBUG, dev, "idle transmitter tx2=%d, lasttx=%d, txing=%d\n", ei_local->tx2, ei_local->lasttx, ei_local->txing); Loading @@ -1006,16 +1008,16 @@ static netdev_tx_t axnet_start_xmit(struct sk_buff *skb, { output_page = ei_local->tx_start_page + TX_PAGES/2; ei_local->tx2 = send_length; if ((netif_msg_tx_queued(ei_local)) && ei_local->tx1 > 0) netdev_dbg(dev, if (ei_debug && ei_local->tx1 > 0) netdev_printk(KERN_DEBUG, dev, "idle transmitter, tx1=%d, lasttx=%d, txing=%d\n", ei_local->tx1, ei_local->lasttx, ei_local->txing); } else { /* We should never get here. */ netif_dbg(ei_local, tx_err, dev, if (ei_debug) netdev_printk(KERN_DEBUG, dev, "No Tx buffers free! tx1=%d tx2=%d last=%d\n", ei_local->tx1, ei_local->tx2, ei_local->lasttx); Loading Loading @@ -1123,7 +1125,8 @@ static irqreturn_t ax_interrupt(int irq, void *dev_id) return IRQ_NONE; } netif_dbg(ei_local, intr, dev, "interrupt(isr=%#2.2x)\n", if (ei_debug > 3) netdev_printk(KERN_DEBUG, dev, "interrupt(isr=%#2.2x)\n", inb_p(e8390_base + EN0_ISR)); outb_p(0x00, e8390_base + EN0_ISR); Loading @@ -1134,7 +1137,8 @@ static irqreturn_t ax_interrupt(int irq, void *dev_id) ++nr_serviced < MAX_SERVICE) { if (!netif_running(dev) || (interrupts == 0xff)) { netif_warn(ei_local, intr, dev, if (ei_debug > 1) netdev_warn(dev, "interrupt from stopped card\n"); outb_p(interrupts, e8390_base + EN0_ISR); interrupts = 0; Loading Loading @@ -1171,15 +1175,14 @@ static irqreturn_t ax_interrupt(int irq, void *dev_id) } } if (interrupts && (netif_msg_intr(ei_local))) if (interrupts && ei_debug > 3) { handled = 1; if (nr_serviced >= MAX_SERVICE) { /* 0xFF is valid for a card removal */ if(interrupts!=0xFF) netdev_warn(dev, "Too much work at interrupt, status %#2.2x\n", netdev_warn(dev, "Too much work at interrupt, status %#2.2x\n", interrupts); outb_p(ENISR_ALL, e8390_base + EN0_ISR); /* Ack. most intrs. */ } else { Loading Loading @@ -1218,7 +1221,8 @@ static void ei_tx_err(struct net_device *dev) unsigned char tx_was_aborted = txsr & (ENTSR_ABT+ENTSR_FU); #ifdef VERBOSE_ERROR_DUMP netdev_dbg(dev, "transmitter error (%#2x):", txsr); netdev_printk(KERN_DEBUG, dev, "transmitter error (%#2x):", txsr); if (txsr & ENTSR_ABT) pr_cont(" excess-collisions"); if (txsr & ENTSR_ND) Loading Loading @@ -1283,7 +1287,7 @@ static void ei_tx_intr(struct net_device *dev) else if (ei_local->tx2 < 0) { if (ei_local->lasttx != 2 && ei_local->lasttx != -2) netdev_err(dev, "%s: bogus last_tx_buffer %d, tx2=%d\n", netdev_info(dev, "%s: bogus last_tx_buffer %d, tx2=%d\n", ei_local->name, ei_local->lasttx, ei_local->tx2); ei_local->tx2 = 0; Loading Loading @@ -1362,9 +1366,7 @@ static void ei_receive(struct net_device *dev) Keep quiet if it looks like a card removal. One problem here is that some clones crash in roughly the same way. */ if ((netif_msg_rx_err(ei_local)) && this_frame != ei_local->current_page && (this_frame != 0x0 || rxing_page != 0xFF)) if (ei_debug > 0 && this_frame != ei_local->current_page && (this_frame!=0x0 || rxing_page!=0xFF)) netdev_err(dev, "mismatched read page pointers %2x vs %2x\n", this_frame, ei_local->current_page); Loading @@ -1381,7 +1383,8 @@ static void ei_receive(struct net_device *dev) if (pkt_len < 60 || pkt_len > 1518) { netif_err(ei_local, rx_err, dev, if (ei_debug) netdev_printk(KERN_DEBUG, dev, "bogus packet size: %d, status=%#2x nxpg=%#2x\n", rx_frame.count, rx_frame.status, rx_frame.next); Loading @@ -1395,7 +1398,8 @@ static void ei_receive(struct net_device *dev) skb = netdev_alloc_skb(dev, pkt_len + 2); if (skb == NULL) { netif_err(ei_local, rx_err, dev, if (ei_debug > 1) netdev_printk(KERN_DEBUG, dev, "Couldn't allocate a sk_buff of size %d\n", pkt_len); dev->stats.rx_dropped++; Loading @@ -1416,7 +1420,8 @@ static void ei_receive(struct net_device *dev) } else { netif_err(ei_local, rx_err, dev, if (ei_debug) netdev_printk(KERN_DEBUG, dev, "bogus packet: status=%#2x nxpg=%#2x size=%d\n", rx_frame.status, rx_frame.next, rx_frame.count); Loading Loading @@ -1456,7 +1461,6 @@ static void ei_rx_overrun(struct net_device *dev) axnet_dev_t *info = PRIV(dev); long e8390_base = dev->base_addr; unsigned char was_txing, must_resend = 0; struct ei_device *ei_local = netdev_priv(dev); /* * Record whether a Tx was in progress and then issue the Loading @@ -1465,7 +1469,8 @@ static void ei_rx_overrun(struct net_device *dev) was_txing = inb_p(e8390_base+E8390_CMD) & E8390_TRANS; outb_p(E8390_NODMA+E8390_PAGE0+E8390_STOP, e8390_base+E8390_CMD); netif_dbg(ei_local, rx_err, dev, "Receiver overrun\n"); if (ei_debug > 1) netdev_printk(KERN_DEBUG, dev, "Receiver overrun\n"); dev->stats.rx_over_errors++; /* Loading
drivers/net/ethernet/8390/etherh.c +19 −32 Original line number Diff line number Diff line Loading @@ -56,6 +56,9 @@ #define ei_inb_p(_p) readb((void __iomem *)_p) #define ei_outb_p(_v,_p) writeb(_v,(void __iomem *)_p) #define NET_DEBUG 0 #define DEBUG_INIT 2 #define DRV_NAME "etherh" #define DRV_VERSION "1.11" Loading @@ -64,7 +67,7 @@ static char version[] __initdata = #include "lib8390.c" static u32 etherh_msg_enable; static unsigned int net_debug = NET_DEBUG; struct etherh_priv { void __iomem *ioc_fast; Loading Loading @@ -314,8 +317,8 @@ etherh_block_output (struct net_device *dev, int count, const unsigned char *buf void __iomem *dma_base, *addr; if (ei_local->dmaing) { netdev_err(dev, "DMAing conflict in etherh_block_input: " " DMAstat %d irqlock %d\n", printk(KERN_ERR "%s: DMAing conflict in etherh_block_input: " " DMAstat %d irqlock %d\n", dev->name, ei_local->dmaing, ei_local->irqlock); return; } Loading Loading @@ -358,7 +361,8 @@ etherh_block_output (struct net_device *dev, int count, const unsigned char *buf while ((readb (addr + EN0_ISR) & ENISR_RDC) == 0) if (time_after(jiffies, dma_start + 2*HZ/100)) { /* 20ms */ netdev_warn(dev, "timeout waiting for TX RDC\n"); printk(KERN_ERR "%s: timeout waiting for TX RDC\n", dev->name); etherh_reset (dev); __NS8390_init (dev, 1); break; Loading @@ -379,8 +383,8 @@ etherh_block_input (struct net_device *dev, int count, struct sk_buff *skb, int void __iomem *dma_base, *addr; if (ei_local->dmaing) { netdev_err(dev, "DMAing conflict in etherh_block_input: " " DMAstat %d irqlock %d\n", printk(KERN_ERR "%s: DMAing conflict in etherh_block_input: " " DMAstat %d irqlock %d\n", dev->name, ei_local->dmaing, ei_local->irqlock); return; } Loading Loading @@ -419,8 +423,8 @@ etherh_get_header (struct net_device *dev, struct e8390_pkt_hdr *hdr, int ring_p void __iomem *dma_base, *addr; if (ei_local->dmaing) { netdev_err(dev, "DMAing conflict in etherh_get_header: " " DMAstat %d irqlock %d\n", printk(KERN_ERR "%s: DMAing conflict in etherh_get_header: " " DMAstat %d irqlock %d\n", dev->name, ei_local->dmaing, ei_local->irqlock); return; } Loading Loading @@ -509,8 +513,8 @@ static void __init etherh_banner(void) { static int version_printed; if ((etherh_msg_enable & NETIF_MSG_DRV) && (version_printed++ == 0)) pr_info("%s", version); if (net_debug && version_printed++ == 0) printk(KERN_INFO "%s", version); } /* Loading Loading @@ -621,27 +625,11 @@ static int etherh_set_settings(struct net_device *dev, struct ethtool_cmd *cmd) return 0; } static u32 etherh_get_msglevel(struct net_device *dev) { struct ei_device *ei_local = netdev_priv(dev); return ei_local->msg_enable; } static void etherh_set_msglevel(struct net_device *dev, u32 v) { struct ei_device *ei_local = netdev_priv(dev); ei_local->msg_enable = v; } static const struct ethtool_ops etherh_ethtool_ops = { .get_settings = etherh_get_settings, .set_settings = etherh_set_settings, .get_drvinfo = etherh_get_drvinfo, .get_ts_info = ethtool_op_get_ts_info, .get_msglevel = etherh_get_msglevel, .set_msglevel = etherh_set_msglevel, }; static const struct net_device_ops etherh_netdev_ops = { Loading Loading @@ -758,7 +746,6 @@ etherh_probe(struct expansion_card *ec, const struct ecard_id *id) ei_local->block_output = etherh_block_output; ei_local->get_8390_hdr = etherh_get_header; ei_local->interface_num = 0; ei_local->msg_enable = etherh_msg_enable; etherh_reset(dev); __NS8390_init(dev, 0); Loading @@ -767,8 +754,8 @@ etherh_probe(struct expansion_card *ec, const struct ecard_id *id) if (ret) goto free; netdev_info(dev, "%s in slot %d, %pM\n", data->name, ec->slot_no, dev->dev_addr); printk(KERN_INFO "%s: %s in slot %d, %pM\n", dev->name, data->name, ec->slot_no, dev->dev_addr); ecard_set_drvdata(ec, dev); Loading