All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next v5 0/6] 8390: core cleanups
@ 2020-09-14 21:01 Armin Wolf
  2020-09-14 21:01 ` [PATCH net-next v5 1/6] lib8390: Fix coding style issues and remove version printing Armin Wolf
                   ` (6 more replies)
  0 siblings, 7 replies; 10+ messages in thread
From: Armin Wolf @ 2020-09-14 21:01 UTC (permalink / raw)
  To: davem; +Cc: netdev

The purpose of this patchset is to do some
cleanups in lib8390.c and 8390.c

While most changes are coding style related,
pr_cont() usage in lib8390.c was replaced by
a more SMP-safe construct.

Other functional changes include the removal of
version-printing in lib8390.c so modules using lib8390.c
do not need a global version-string in order to compile
successfully.

Patches do compile and run flawless on 5.9.0-rc3 with
a RTL8029AS nic using ne2k-pci.

v5 changes:
- sort includes
- do not realign comments
- move pr_cont() -> netdev_err() change to separate patch
- remove unused DRV_RELDATA and DRV_NAME
- break 8390.c changes into separate patches

v4 changes:
- remove unused version string to prevent warnings

v3 changes:
- swap commits to not break buildability (sorry)
- move MODULE_LICENCE at the bottom and remove MODULE_VERSION in 8390.c

v2 changes:
- change "librarys" to "libraries" in 8390.c commit
- improve 8390.c commit
- prevent uneven whitespaces in error message (lib8390.c)
- do not destroy kernel doc comments in lib8390.c
- fix some typos in lib8390.c

Armin Wolf (6):
  lib8390: Fix coding style issues and remove version printing
  lib8390: Replace pr_cont() with SMP-safe construct
  8390: Replace version string with MODULE_* macros
  8390: Include necessary libraries
  8390: Fix coding style issues
  8390: Remove version string

 drivers/net/ethernet/8390/8390.c      |  18 +-
 drivers/net/ethernet/8390/8390p.c     |  15 +-
 drivers/net/ethernet/8390/ax88796.c   |   3 -
 drivers/net/ethernet/8390/etherh.c    |   3 -
 drivers/net/ethernet/8390/hydra.c     |   7 +-
 drivers/net/ethernet/8390/lib8390.c   | 433 ++++++++++++--------------
 drivers/net/ethernet/8390/mac8390.c   |   3 -
 drivers/net/ethernet/8390/mcf8390.c   |   3 -
 drivers/net/ethernet/8390/xsurf100.c  |   3 -
 drivers/net/ethernet/8390/zorro8390.c |   5 +-
 10 files changed, 232 insertions(+), 261 deletions(-)

--
2.20.1


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH net-next v5 1/6] lib8390: Fix coding style issues and remove version printing
  2020-09-14 21:01 [PATCH net-next v5 0/6] 8390: core cleanups Armin Wolf
@ 2020-09-14 21:01 ` Armin Wolf
  2020-09-15  5:21   ` Joe Perches
  2020-09-14 21:01 ` [PATCH net-next v5 2/6] lib8390: Replace pr_cont() with SMP-safe construct Armin Wolf
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 10+ messages in thread
From: Armin Wolf @ 2020-09-14 21:01 UTC (permalink / raw)
  To: davem; +Cc: netdev

Fix various checkpatch warnings.

Remove version printing so modules including lib8390 do not
have to provide a global version string for successful
compilation.

Signed-off-by: Armin Wolf <W_Armin@gmx.de>
---
 drivers/net/ethernet/8390/lib8390.c | 402 +++++++++++++---------------
 1 file changed, 186 insertions(+), 216 deletions(-)

diff --git a/drivers/net/ethernet/8390/lib8390.c b/drivers/net/ethernet/8390/lib8390.c
index 1f48d7f6365c..3a2b1e33a47a 100644
--- a/drivers/net/ethernet/8390/lib8390.c
+++ b/drivers/net/ethernet/8390/lib8390.c
@@ -1,54 +1,51 @@
-/* 8390.c: A general NS8390 ethernet driver core for linux. */
-/*
-	Written 1992-94 by Donald Becker.
-
-	Copyright 1993 United States Government as represented by the
-	Director, National Security Agency.
-
-	This software may be used and distributed according to the terms
-	of the GNU General Public License, incorporated herein by reference.
-
-	The author may be reached as becker@scyld.com, or C/O
-	Scyld Computing Corporation
-	410 Severn Ave., Suite 210
-	Annapolis MD 21403
-
-
-  This is the chip-specific code for many 8390-based ethernet adaptors.
-  This is not a complete driver, it must be combined with board-specific
-  code such as ne.c, wd.c, 3c503.c, etc.
-
-  Seeing how at least eight drivers use this code, (not counting the
-  PCMCIA ones either) it is easy to break some card by what seems like
-  a simple innocent change. Please contact me or Donald if you think
-  you have found something that needs changing. -- PG
-
-
-  Changelog:
-
-  Paul Gortmaker	: remove set_bit lock, other cleanups.
-  Paul Gortmaker	: add ei_get_8390_hdr() so we can pass skb's to
-			  ei_block_input() for eth_io_copy_and_sum().
-  Paul Gortmaker	: exchange static int ei_pingpong for a #define,
-			  also add better Tx error handling.
-  Paul Gortmaker	: rewrite Rx overrun handling as per NS specs.
-  Alexey Kuznetsov	: use the 8390's six bit hash multicast filter.
-  Paul Gortmaker	: tweak ANK's above multicast changes a bit.
-  Paul Gortmaker	: update packet statistics for v2.1.x
-  Alan Cox		: support arbitrary stupid port mappings on the
-			  68K Macintosh. Support >16bit I/O spaces
-  Paul Gortmaker	: add kmod support for auto-loading of the 8390
-			  module by all drivers that require it.
-  Alan Cox		: Spinlocking work, added 'BUG_83C690'
-  Paul Gortmaker	: Separate out Tx timeout code from Tx path.
-  Paul Gortmaker	: Remove old unused single Tx buffer code.
-  Hayato Fujiwara	: Add m32r support.
-  Paul Gortmaker	: use skb_padto() instead of stack scratch area
-
-  Sources:
-  The National Semiconductor LAN Databook, and the 3Com 3c503 databook.
-
-  */
+/* lib8390.c: A general NS8390 ethernet driver core for linux. */
+/* Written 1992-94 by Donald Becker.
+ *
+ * Copyright 1993 United States Government as represented by the
+ * Director, National Security Agency.
+ *
+ * This software may be used and distributed according to the terms
+ * of the GNU General Public License, incorporated herein by reference.
+ *
+ * The author may be reached as becker@scyld.com, or C/O
+ * Scyld Computing Corporation
+ * 410 Severn Ave., Suite 210
+ * Annapolis MD 21403
+ *
+ * This is the chip-specific code for many 8390-based ethernet adaptors.
+ * This is not a complete driver, it must be combined with board-specific
+ * code such as ne.c, wd.c, 3c503.c, etc.
+ *
+ * Seeing how at least eight drivers use this code, (not counting the
+ * PCMCIA ones either) it is easy to break some card by what seems like
+ * a simple innocent change. Please contact me or Donald if you think
+ * you have found something that needs changing. -- PG
+ */
+
+/* Changelog:
+ *
+ * Paul Gortmaker	: remove set_bit lock, other cleanups.
+ * Paul Gortmaker	: add ei_get_8390_hdr() so we can pass skb's to
+ *			  ei_block_input() for eth_io_copy_and_sum().
+ * Paul Gortmaker	: exchange static int ei_pingpong for a #define,
+ *			  also add better Tx error handling.
+ * Paul Gortmaker	: rewrite Rx overrun handling as per NS specs.
+ * Alexey Kuznetsov	: use the 8390's six bit hash multicast filter.
+ * Paul Gortmaker	: tweak ANK's above multicast changes a bit.
+ * Paul Gortmaker	: update packet statistics for v2.1.x
+ * Alan Cox		: support arbitrary stupid port mappings on the
+ *			  68K Macintosh. Support >16bit I/O spaces
+ * Paul Gortmaker	: add kmod support for auto-loading of the 8390
+ *			  module by all drivers that require it.
+ * Alan Cox		: Spinlocking work, added 'BUG_83C690'
+ * Paul Gortmaker	: Separate out Tx timeout code from Tx path.
+ * Paul Gortmaker	: Remove old unused single Tx buffer code.
+ * Hayato Fujiwara	: Add m32r support.
+ * Paul Gortmaker	: use skb_padto() instead of stack scratch area
+ *
+ * Sources:
+ * The National Semiconductor LAN Databook, and the 3Com 3c503 databook.
+ */

 #include <linux/module.h>
 #include <linux/kernel.h>
@@ -77,23 +74,25 @@
 #define BUG_83C690

 /* These are the operational function interfaces to board-specific
-   routines.
-	void reset_8390(struct net_device *dev)
-		Resets the board associated with DEV, including a hardware reset of
-		the 8390.  This is only called when there is a transmit timeout, and
-		it is always followed by 8390_init().
-	void block_output(struct net_device *dev, int count, const unsigned char *buf,
-					  int start_page)
-		Write the COUNT bytes of BUF to the packet buffer at START_PAGE.  The
-		"page" value uses the 8390's 256-byte pages.
-	void get_8390_hdr(struct net_device *dev, struct e8390_hdr *hdr, int ring_page)
-		Read the 4 byte, page aligned 8390 header. *If* there is a
-		subsequent read, it will be of the rest of the packet.
-	void block_input(struct net_device *dev, int count, struct sk_buff *skb, int ring_offset)
-		Read COUNT bytes from the packet buffer into the skb data area. Start
-		reading from RING_OFFSET, the address as the 8390 sees it.  This will always
-		follow the read of the 8390 header.
-*/
+ * routines.
+ *	void reset_8390(struct net_device *dev)
+ *		Resets the board associated with DEV, including a hardware reset
+ *		of the 8390.  This is only called when there is a transmit
+ *		timeout, and it is always followed by 8390_init().
+ *	void block_output(struct net_device *dev, int count,
+ *			const unsigned char *buf, int start_page)
+ *		Write the COUNT bytes of BUF to the packet buffer at START_PAGE.
+ *		The "page" value uses the 8390's 256-byte pages.
+ *	void get_8390_hdr(struct net_device *dev, struct e8390_hdr *hdr,
+ *			int ring_page)
+ *		Read the 4 byte, page aligned 8390 header. *If* there is a
+ *		subsequent read, it will be of the rest of the packet.
+ *	void block_input(struct net_device *dev, int count,
+ *			struct sk_buff *skb, int ring_offset)
+ *		Read COUNT bytes from the packet buffer into the skb data area.
+ *		Start reading from RING_OFFSET, the address as the 8390 sees it.
+ *		This will always follow the read of the 8390 header.
+ */
 #define ei_reset_8390 (ei_local->reset_8390)
 #define ei_block_output (ei_local->block_output)
 #define ei_block_input (ei_local->block_input)
@@ -106,18 +105,16 @@ static void ei_receive(struct net_device *dev);
 static void ei_rx_overrun(struct net_device *dev);

 /* Routines generic to NS8390-based boards. */
-static void NS8390_trigger_send(struct net_device *dev, unsigned int length,
-								int start_page);
+static void NS8390_trigger_send(struct net_device *dev, unsigned int length, int start_page);
 static void do_set_multicast_list(struct net_device *dev);
 static void __NS8390_init(struct net_device *dev, int startp);

-static unsigned version_printed;
 static u32 msg_enable;
+
 module_param(msg_enable, uint, 0444);
 MODULE_PARM_DESC(msg_enable, "Debug message level (see linux/netdevice.h for bitmap)");

-/*
- *	SMP and the 8390 setup.
+/*	SMP and the 8390 setup.
  *
  *	The 8390 isn't exactly designed to be multithreaded on RX/TX. There is
  *	a page register that controls bank and packet buffer access. We guard
@@ -188,8 +185,6 @@ MODULE_PARM_DESC(msg_enable, "Debug message level (see linux/netdevice.h for bit
  *	activities on the chip." [lkml, 25 Jul 2007]
  */

-
-
 /**
  * ei_open - Open/initialize the board.
  * @dev: network device to initialize
@@ -206,15 +201,15 @@ static int __ei_open(struct net_device *dev)
 	if (dev->watchdog_timeo <= 0)
 		dev->watchdog_timeo = TX_TIMEOUT;

-	/*
-	 *	Grab the page lock so we own the register set, then call
+	/*	Grab the page lock so we own the register set, then call
 	 *	the init function.
 	 */

 	spin_lock_irqsave(&ei_local->page_lock, flags);
 	__NS8390_init(dev, 1);
 	/* Set the flag before we drop the lock, That way the IRQ arrives
-	   after its set and we get no silly warnings */
+	 * after its set and we get no silly warnings
+	 */
 	netif_start_queue(dev);
 	spin_unlock_irqrestore(&ei_local->page_lock, flags);
 	ei_local->irqlock = 0;
@@ -232,9 +227,7 @@ static int __ei_close(struct net_device *dev)
 	struct ei_device *ei_local = netdev_priv(dev);
 	unsigned long flags;

-	/*
-	 *	Hold the page lock during close
-	 */
+	/* Hold the page lock during close */

 	spin_lock_irqsave(&ei_local->page_lock, flags);
 	__NS8390_init(dev, 0);
@@ -261,8 +254,8 @@ static void __ei_tx_timeout(struct net_device *dev, unsigned int txqueue)
 	dev->stats.tx_errors++;

 	spin_lock_irqsave(&ei_local->page_lock, flags);
-	txsr = ei_inb(e8390_base+EN0_TSR);
-	isr = ei_inb(e8390_base+EN0_ISR);
+	txsr = ei_inb(e8390_base + EN0_TSR);
+	isr = ei_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",
@@ -308,25 +301,24 @@ static netdev_tx_t __ei_start_xmit(struct sk_buff *skb,
 	char *data = skb->data;

 	if (skb->len < ETH_ZLEN) {
-		memset(buf, 0, ETH_ZLEN);	/* more efficient than doing just the needed bits */
+		/* More efficient than doing just the needed bits */
+		memset(buf, 0, ETH_ZLEN);
 		memcpy(buf, data, skb->len);
 		send_length = ETH_ZLEN;
 		data = buf;
 	}

 	/* Mask interrupts from the ethercard.
-	   SMP: We have to grab the lock here otherwise the IRQ handler
-	   on another CPU can flip window and race the IRQ mask set. We end
-	   up trashing the mcast filter not disabling irqs if we don't lock */
+	 * SMP: We have to grab the lock here otherwise the IRQ handler
+	 * on another CPU can flip window and race the IRQ mask set. We end
+	 * up trashing the mcast filter not disabling irqs if we don't lock.
+	 */

 	spin_lock_irqsave(&ei_local->page_lock, flags);
 	ei_outb_p(0x00, e8390_base + EN0_IMR);
 	spin_unlock_irqrestore(&ei_local->page_lock, flags);

-
-	/*
-	 *	Slow phase with lock held.
-	 */
+	/* Slow phase with lock held. */

 	disable_irq_nosync_lockdep_irqsave(dev->irq, &flags);

@@ -334,8 +326,7 @@ static netdev_tx_t __ei_start_xmit(struct sk_buff *skb,

 	ei_local->irqlock = 1;

-	/*
-	 * We have two Tx slots available for use. Find the first free
+	/* We have two Tx slots available for use. Find the first free
 	 * slot, and then perform some sanity checks. With two Tx bufs,
 	 * you get very close to transmitting back-to-back packets. With
 	 * only one Tx buf, the transmitter sits idle while you reload the
@@ -347,18 +338,16 @@ static netdev_tx_t __ei_start_xmit(struct sk_buff *skb,
 		ei_local->tx1 = send_length;
 		if ((netif_msg_tx_queued(ei_local)) &&
 		    ei_local->tx2 > 0)
-			netdev_dbg(dev,
-				   "idle transmitter tx2=%d, lasttx=%d, txing=%d\n",
+			netdev_dbg(dev, "idle transmitter tx2=%d, lasttx=%d, txing=%d\n",
 				   ei_local->tx2, ei_local->lasttx, ei_local->txing);
 	} else if (ei_local->tx2 == 0) {
-		output_page = ei_local->tx_start_page + TX_PAGES/2;
+		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,
-				   "idle transmitter, tx1=%d, lasttx=%d, txing=%d\n",
+			netdev_dbg(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. */
+	} else {		/* We should never get here. */
 		netif_dbg(ei_local, tx_err, dev,
 			  "No Tx buffers free! tx1=%d tx2=%d last=%d\n",
 			  ei_local->tx1, ei_local->tx2, ei_local->lasttx);
@@ -371,8 +360,7 @@ static netdev_tx_t __ei_start_xmit(struct sk_buff *skb,
 		return NETDEV_TX_BUSY;
 	}

-	/*
-	 * Okay, now upload the packet and trigger a send if the transmitter
+	/* Okay, now upload the packet and trigger a send if the transmitter
 	 * isn't already sending. If it is busy, the interrupt handler will
 	 * trigger the send later, upon receiving a Tx done interrupt.
 	 */
@@ -389,8 +377,9 @@ static netdev_tx_t __ei_start_xmit(struct sk_buff *skb,
 			ei_local->tx2 = -1;
 			ei_local->lasttx = -2;
 		}
-	} else
+	} else {
 		ei_local->txqueue++;
+	}

 	if (ei_local->tx1 && ei_local->tx2)
 		netif_stop_queue(dev);
@@ -429,15 +418,12 @@ static irqreturn_t __ei_interrupt(int irq, void *dev_id)
 	int interrupts, nr_serviced = 0;
 	struct ei_device *ei_local = netdev_priv(dev);

-	/*
-	 *	Protect the irq test too.
-	 */
+	/* Protect the irq test too. */

 	spin_lock(&ei_local->page_lock);

 	if (ei_local->irqlock) {
-		/*
-		 * This might just be an interrupt for a PCI device sharing
+		/* This might just be an interrupt for a PCI device sharing
 		 * this line
 		 */
 		netdev_err(dev, "Interrupted while interrupts are masked! isr=%#2x imr=%#2x\n",
@@ -448,7 +434,7 @@ static irqreturn_t __ei_interrupt(int irq, void *dev_id)
 	}

 	/* Change to page 0 and read the intr status reg. */
-	ei_outb_p(E8390_NODMA+E8390_PAGE0, e8390_base + E8390_CMD);
+	ei_outb_p(E8390_NODMA + E8390_PAGE0, e8390_base + E8390_CMD);
 	netif_dbg(ei_local, intr, dev, "interrupt(isr=%#2.2x)\n",
 		  ei_inb_p(e8390_base + EN0_ISR));

@@ -462,9 +448,9 @@ static irqreturn_t __ei_interrupt(int irq, void *dev_id)
 			interrupts = 0;
 			break;
 		}
-		if (interrupts & ENISR_OVER)
+		if (interrupts & ENISR_OVER) {
 			ei_rx_overrun(dev);
-		else if (interrupts & (ENISR_RX+ENISR_RX_ERR)) {
+		} else if (interrupts & (ENISR_RX + ENISR_RX_ERR)) {
 			/* Got a good (?) packet. */
 			ei_receive(dev);
 		}
@@ -485,11 +471,11 @@ static irqreturn_t __ei_interrupt(int irq, void *dev_id)
 		if (interrupts & ENISR_RDC)
 			ei_outb_p(ENISR_RDC, e8390_base + EN0_ISR);

-		ei_outb_p(E8390_NODMA+E8390_PAGE0+E8390_START, e8390_base + E8390_CMD);
+		ei_outb_p(E8390_NODMA + E8390_PAGE0 + E8390_START, e8390_base + E8390_CMD);
 	}

 	if (interrupts && (netif_msg_intr(ei_local))) {
-		ei_outb_p(E8390_NODMA+E8390_PAGE0+E8390_START, e8390_base + E8390_CMD);
+		ei_outb_p(E8390_NODMA + E8390_PAGE0 + E8390_START, e8390_base + E8390_CMD);
 		if (nr_serviced >= MAX_SERVICE) {
 			/* 0xFF is valid for a card removal */
 			if (interrupts != 0xFF)
@@ -552,10 +538,9 @@ static void ei_tx_err(struct net_device *dev)
 #endif

 	ei_outb_p(ENISR_TX_ERR, e8390_base + EN0_ISR); /* Ack intr. */
-
-	if (tx_was_aborted)
+	if (tx_was_aborted) {
 		ei_tx_intr(dev);
-	else {
+	} else {
 		dev->stats.tx_errors++;
 		if (txsr & ENTSR_CRS)
 			dev->stats.tx_carrier_errors++;
@@ -582,8 +567,7 @@ static void ei_tx_intr(struct net_device *dev)

 	ei_outb_p(ENISR_TX, e8390_base + EN0_ISR); /* Ack intr. */

-	/*
-	 * There are two Tx buffers, see which one finished, and trigger
+	/* There are two Tx buffers, see which one finished, and trigger
 	 * the send of another one if it exists.
 	 */
 	ei_local->txqueue--;
@@ -618,17 +602,17 @@ static void ei_tx_intr(struct net_device *dev)
 			ei_local->lasttx = 10;
 			ei_local->txing = 0;
 		}
-	} /* else
-		netdev_warn(dev, "unexpected TX-done interrupt, lasttx=%d\n",
-			    ei_local->lasttx);
-*/
+	}
+	/* else
+	 * netdev_warn(dev, "unexpected TX-done interrupt, lasttx=%d\n", ei_local->lasttx);
+	 */

 	/* Minimize Tx latency: update the statistics after we restart TXing. */
 	if (status & ENTSR_COL)
 		dev->stats.collisions++;
-	if (status & ENTSR_PTX)
+	if (status & ENTSR_PTX) {
 		dev->stats.tx_packets++;
-	else {
+	} else {
 		dev->stats.tx_errors++;
 		if (status & ENTSR_ABT) {
 			dev->stats.tx_aborted_errors++;
@@ -662,26 +646,28 @@ static void ei_receive(struct net_device *dev)
 	unsigned short current_offset;
 	int rx_pkt_count = 0;
 	struct e8390_pkt_hdr rx_frame;
-	int num_rx_pages = ei_local->stop_page-ei_local->rx_start_page;
+	int num_rx_pages = ei_local->stop_page - ei_local->rx_start_page;

 	while (++rx_pkt_count < 10) {
 		int pkt_len, pkt_stat;

 		/* Get the rx page (incoming packet pointer). */
-		ei_outb_p(E8390_NODMA+E8390_PAGE1, e8390_base + E8390_CMD);
+		ei_outb_p(E8390_NODMA + E8390_PAGE1, e8390_base + E8390_CMD);
 		rxing_page = ei_inb_p(e8390_base + EN1_CURPAG);
-		ei_outb_p(E8390_NODMA+E8390_PAGE0, e8390_base + E8390_CMD);
+		ei_outb_p(E8390_NODMA + E8390_PAGE0, e8390_base + E8390_CMD);

-		/* Remove one frame from the ring.  Boundary is always a page behind. */
+		/* Remove one frame from the ring. Boundary is always a page behind.
+		 */
 		this_frame = ei_inb_p(e8390_base + EN0_BOUNDARY) + 1;
 		if (this_frame >= ei_local->stop_page)
 			this_frame = ei_local->rx_start_page;

-		/* Someday we'll omit the previous, iff we never get this message.
-		   (There is at least one clone claimed to have a problem.)
-
-		   Keep quiet if it looks like a card removal. One problem here
-		   is that some clones crash in roughly the same way.
+		/* Someday we'll omit the previous, if we never get
+		 * this message. (There is at least one clone claimed
+		 * to have a problem.)
+		 *
+		 * 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_status(ei_local)) &&
 		    this_frame != ei_local->current_page &&
@@ -699,17 +685,18 @@ static void ei_receive(struct net_device *dev)
 		pkt_len = rx_frame.count - sizeof(struct e8390_pkt_hdr);
 		pkt_stat = rx_frame.status;

-		next_frame = this_frame + 1 + ((pkt_len+4)>>8);
+		next_frame = this_frame + 1 + ((pkt_len + 4) >> 8);

-		/* Check for bogosity warned by 3c503 book: the status byte is never
-		   written.  This happened a lot during testing! This code should be
-		   cleaned up someday. */
+		/* Check for bogosity warned by 3c503 book: the status byte is
+		 * never written. This happened a lot during testing! This code
+		 * should be cleaned up someday.
+		 */
 		if (rx_frame.next != next_frame &&
 		    rx_frame.next != next_frame + 1 &&
 		    rx_frame.next != next_frame - num_rx_pages &&
 		    rx_frame.next != next_frame + 1 - num_rx_pages) {
 			ei_local->current_page = rxing_page;
-			ei_outb(ei_local->current_page-1, e8390_base+EN0_BOUNDARY);
+			ei_outb(ei_local->current_page - 1, e8390_base + EN0_BOUNDARY);
 			dev->stats.rx_errors++;
 			continue;
 		}
@@ -725,24 +712,21 @@ static void ei_receive(struct net_device *dev)
 			struct sk_buff *skb;

 			skb = netdev_alloc_skb(dev, pkt_len + 2);
-			if (skb == NULL) {
-				netif_err(ei_local, rx_err, dev,
-					  "Couldn't allocate a sk_buff of size %d\n",
-					  pkt_len);
+			if (!skb) {
 				dev->stats.rx_dropped++;
 				break;
-			} else {
-				skb_reserve(skb, 2);	/* IP headers on 16 byte boundaries */
-				skb_put(skb, pkt_len);	/* Make room */
-				ei_block_input(dev, pkt_len, skb, current_offset + sizeof(rx_frame));
-				skb->protocol = eth_type_trans(skb, dev);
-				if (!skb_defer_rx_timestamp(skb))
-					netif_rx(skb);
-				dev->stats.rx_packets++;
-				dev->stats.rx_bytes += pkt_len;
-				if (pkt_stat & ENRSR_PHY)
-					dev->stats.multicast++;
 			}
+			/* IP headers on 16 byte boundaries */
+			skb_reserve(skb, 2);
+			skb_put(skb, pkt_len);	/* Make room */
+			ei_block_input(dev, pkt_len, skb, current_offset + sizeof(rx_frame));
+			skb->protocol = eth_type_trans(skb, dev);
+			if (!skb_defer_rx_timestamp(skb))
+				netif_rx(skb);
+			dev->stats.rx_packets++;
+			dev->stats.rx_bytes += pkt_len;
+			if (pkt_stat & ENRSR_PHY)
+				dev->stats.multicast++;
 		} else {
 			netif_err(ei_local, rx_err, dev,
 				  "bogus packet: status=%#2x nxpg=%#2x size=%d\n",
@@ -762,12 +746,13 @@ static void ei_receive(struct net_device *dev)
 			next_frame = ei_local->rx_start_page;
 		}
 		ei_local->current_page = next_frame;
-		ei_outb_p(next_frame-1, e8390_base+EN0_BOUNDARY);
+		ei_outb_p(next_frame - 1, e8390_base + EN0_BOUNDARY);
 	}

 	/* We used to also ack ENISR_OVER here, but that would sometimes mask
-	   a real overrun, leaving the 8390 in a stopped state with rec'vr off. */
-	ei_outb_p(ENISR_RX+ENISR_RX_ERR, e8390_base+EN0_ISR);
+	 * a real overrun, leaving the 8390 in a stopped state with rec'vr off.
+	 */
+	ei_outb_p(ENISR_RX + ENISR_RX_ERR, e8390_base + EN0_ISR);
 }

 /**
@@ -790,18 +775,16 @@ static void ei_rx_overrun(struct net_device *dev)
 	/* ei_local is used on some platforms via the EI_SHIFT macro */
 	struct ei_device *ei_local __maybe_unused = netdev_priv(dev);

-	/*
-	 * Record whether a Tx was in progress and then issue the
+	/* Record whether a Tx was in progress and then issue the
 	 * stop command.
 	 */
-	was_txing = ei_inb_p(e8390_base+E8390_CMD) & E8390_TRANS;
-	ei_outb_p(E8390_NODMA+E8390_PAGE0+E8390_STOP, e8390_base+E8390_CMD);
+	was_txing = ei_inb_p(e8390_base + E8390_CMD) & E8390_TRANS;
+	ei_outb_p(E8390_NODMA + E8390_PAGE0 + E8390_STOP, e8390_base + E8390_CMD);

 	netif_dbg(ei_local, rx_err, dev, "Receiver overrun\n");
 	dev->stats.rx_over_errors++;

-	/*
-	 * Wait a full Tx time (1.2ms) + some guard time, NS says 1.6ms total.
+	/* Wait a full Tx time (1.2ms) + some guard time, NS says 1.6ms total.
 	 * Early datasheets said to poll the reset bit, but now they say that
 	 * it "is not a reliable indicator and subsequently should be ignored."
 	 * We wait at least 10ms.
@@ -809,47 +792,42 @@ static void ei_rx_overrun(struct net_device *dev)

 	mdelay(10);

-	/*
-	 * Reset RBCR[01] back to zero as per magic incantation.
-	 */
-	ei_outb_p(0x00, e8390_base+EN0_RCNTLO);
-	ei_outb_p(0x00, e8390_base+EN0_RCNTHI);
+	/* Reset RBCR[01] back to zero as per magic incantation. */
+	ei_outb_p(0x00, e8390_base + EN0_RCNTLO);
+	ei_outb_p(0x00, e8390_base + EN0_RCNTHI);

-	/*
-	 * See if any Tx was interrupted or not. According to NS, this
+	/* See if any Tx was interrupted or not. According to NS, this
 	 * step is vital, and skipping it will cause no end of havoc.
 	 */

 	if (was_txing) {
-		unsigned char tx_completed = ei_inb_p(e8390_base+EN0_ISR) & (ENISR_TX+ENISR_TX_ERR);
+		unsigned char tx_completed = ei_inb_p(e8390_base + EN0_ISR) & (ENISR_TX + ENISR_TX_ERR);
+
 		if (!tx_completed)
 			must_resend = 1;
 	}

-	/*
-	 * Have to enter loopback mode and then restart the NIC before
+	/* Have to enter loopback mode and then restart the NIC before
 	 * you are allowed to slurp packets up off the ring.
 	 */
+
 	ei_outb_p(E8390_TXOFF, e8390_base + EN0_TXCR);
 	ei_outb_p(E8390_NODMA + E8390_PAGE0 + E8390_START, e8390_base + E8390_CMD);

-	/*
-	 * Clear the Rx ring of all the debris, and ack the interrupt.
-	 */
+	/* Clear the Rx ring of all the debris, and ack the interrupt. */
+
 	ei_receive(dev);
-	ei_outb_p(ENISR_OVER, e8390_base+EN0_ISR);
+	ei_outb_p(ENISR_OVER, e8390_base + EN0_ISR);
+
+	/* Leave loopback mode, and resend any packet that got stopped */

-	/*
-	 * Leave loopback mode, and resend any packet that got stopped.
-	 */
 	ei_outb_p(E8390_TXCONFIG, e8390_base + EN0_TXCR);
 	if (must_resend)
-		ei_outb_p(E8390_NODMA + E8390_PAGE0 + E8390_START + E8390_TRANS, e8390_base + E8390_CMD);
+		ei_outb_p(E8390_NODMA + E8390_PAGE0 + E8390_START + E8390_TRANS,
+			  e8390_base + E8390_CMD);
 }

-/*
- *	Collect the stats. This is called unlocked and from several contexts.
- */
+/* Collect the stats. This is called unlocked and from several contexts. */

 static struct net_device_stats *__ei_get_stats(struct net_device *dev)
 {
@@ -871,8 +849,7 @@ static struct net_device_stats *__ei_get_stats(struct net_device *dev)
 	return &dev->stats;
 }

-/*
- * Form the 64 bit 8390 multicast table from the linked list of addresses
+/* Form the 64 bit 8390 multicast table from the linked list of addresses
  * associated with this dev structure.
  */

@@ -882,11 +859,10 @@ static inline void make_mc_bits(u8 *bits, struct net_device *dev)

 	netdev_for_each_mc_addr(ha, dev) {
 		u32 crc = ether_crc(ETH_ALEN, ha->addr);
-		/*
-		 * The 8390 uses the 6 most significant bits of the
+		/* The 8390 uses the 6 most significant bits of the
 		 * CRC to index the multicast table.
 		 */
-		bits[crc>>29] |= (1<<((crc>>26)&7));
+		bits[crc >> 29] |= (1 << ((crc >> 26) & 7));
 	}
 }

@@ -904,15 +880,15 @@ static void do_set_multicast_list(struct net_device *dev)
 	int i;
 	struct ei_device *ei_local = netdev_priv(dev);

-	if (!(dev->flags&(IFF_PROMISC|IFF_ALLMULTI))) {
+	if (!(dev->flags & (IFF_PROMISC | IFF_ALLMULTI))) {
 		memset(ei_local->mcfilter, 0, 8);
 		if (!netdev_mc_empty(dev))
 			make_mc_bits(ei_local->mcfilter, dev);
-	} else
+	} else {
 		memset(ei_local->mcfilter, 0xFF, 8);	/* mcast set to accept-all */
+	}

-	/*
-	 * DP8390 manuals don't specify any magic sequence for altering
+	/* DP8390 manuals don't specify any magic sequence for altering
 	 * the multicast regs on an already running card. To be safe, we
 	 * ensure multicast mode is off prior to loading up the new hash
 	 * table. If this proves to be not enough, we can always resort
@@ -931,13 +907,12 @@ static void do_set_multicast_list(struct net_device *dev)
 		ei_outb_p(ei_local->mcfilter[i], e8390_base + EN1_MULT_SHIFT(i));
 #ifndef BUG_83C690
 		if (ei_inb_p(e8390_base + EN1_MULT_SHIFT(i)) != ei_local->mcfilter[i])
-			netdev_err(dev, "Multicast filter read/write mismap %d\n",
-				   i);
+			netdev_err(dev, "Multicast filter read/write mismap %d\n", i);
 #endif
 	}
 	ei_outb_p(E8390_NODMA + E8390_PAGE0, e8390_base + E8390_CMD);

-	if (dev->flags&IFF_PROMISC)
+	if (dev->flags & IFF_PROMISC)
 		ei_outb_p(E8390_RXCONFIG | 0x18, e8390_base + EN0_RXCR);
 	else if (dev->flags & IFF_ALLMULTI || !netdev_mc_empty(dev))
 		ei_outb_p(E8390_RXCONFIG | 0x08, e8390_base + EN0_RXCR);
@@ -945,8 +920,7 @@ static void do_set_multicast_list(struct net_device *dev)
 		ei_outb_p(E8390_RXCONFIG, e8390_base + EN0_RXCR);
 }

-/*
- *	Called without lock held. This is invoked from user context and may
+/*	Called without lock held. This is invoked from user context and may
  *	be parallel to just about everything else. Its also fairly quick and
  *	not called too often. Must protect against both bh and irq users
  */
@@ -973,9 +947,6 @@ static void ethdev_setup(struct net_device *dev)
 {
 	struct ei_device *ei_local = netdev_priv(dev);

-	if ((msg_enable & NETIF_MSG_DRV) && (version_printed++ == 0))
-		pr_info("%s", version);
-
 	ether_setup(dev);

 	spin_lock_init(&ei_local->page_lock);
@@ -995,9 +966,6 @@ static struct net_device *____alloc_ei_netdev(int size)
 			    NET_NAME_UNKNOWN, ethdev_setup);
 }

-
-
-
 /* This page of functions should be 8390 generic */
 /* Follow National Semi's recommendations for initializing the "NIC". */

@@ -1021,7 +989,7 @@ static void __NS8390_init(struct net_device *dev, int startp)
 	if (sizeof(struct e8390_pkt_hdr) != 4)
 		panic("8390.c: header struct mispacked\n");
 	/* Follow National Semi's recommendations for initing the DP83902. */
-	ei_outb_p(E8390_NODMA+E8390_PAGE0+E8390_STOP, e8390_base+E8390_CMD); /* 0x21 */
+	ei_outb_p(E8390_NODMA + E8390_PAGE0 + E8390_STOP, e8390_base + E8390_CMD); /* 0x21 */
 	ei_outb_p(endcfg, e8390_base + EN0_DCFG);	/* 0x48 or 0x49 */
 	/* Clear the remote byte count registers. */
 	ei_outb_p(0x00,  e8390_base + EN0_RCNTLO);
@@ -1031,9 +999,10 @@ static void __NS8390_init(struct net_device *dev, int startp)
 	ei_outb_p(E8390_TXOFF, e8390_base + EN0_TXCR); /* 0x02 */
 	/* Set the transmit page and receive ring. */
 	ei_outb_p(ei_local->tx_start_page, e8390_base + EN0_TPSR);
-	ei_local->tx1 = ei_local->tx2 = 0;
+	ei_local->tx1 = 0;
+	ei_local->tx2 = 0;
 	ei_outb_p(ei_local->rx_start_page, e8390_base + EN0_STARTPG);
-	ei_outb_p(ei_local->stop_page-1, e8390_base + EN0_BOUNDARY);	/* 3c503 says 0x3f,NS0x26*/
+	ei_outb_p(ei_local->stop_page - 1, e8390_base + EN0_BOUNDARY);	/* 3c503 says 0x3f,NS0x26*/
 	ei_local->current_page = ei_local->rx_start_page;		/* assert boundary+1 */
 	ei_outb_p(ei_local->stop_page, e8390_base + EN0_STOPPG);
 	/* Clear the pending interrupts and mask. */
@@ -1042,25 +1011,26 @@ static void __NS8390_init(struct net_device *dev, int startp)

 	/* Copy the station address into the DS8390 registers. */

-	ei_outb_p(E8390_NODMA + E8390_PAGE1 + E8390_STOP, e8390_base+E8390_CMD); /* 0x61 */
+	ei_outb_p(E8390_NODMA + E8390_PAGE1 + E8390_STOP, e8390_base + E8390_CMD); /* 0x61 */
 	for (i = 0; i < 6; i++) {
 		ei_outb_p(dev->dev_addr[i], e8390_base + EN1_PHYS_SHIFT(i));
-		if ((netif_msg_probe(ei_local)) &&
-		    ei_inb_p(e8390_base + EN1_PHYS_SHIFT(i)) != dev->dev_addr[i])
+		if ((netif_msg_probe(ei_local)) && ei_inb_p(e8390_base +
+					EN1_PHYS_SHIFT(i)) != dev->dev_addr[i])
 			netdev_err(dev,
 				   "Hw. address read/write mismap %d\n", i);
 	}

 	ei_outb_p(ei_local->rx_start_page, e8390_base + EN1_CURPAG);
-	ei_outb_p(E8390_NODMA+E8390_PAGE0+E8390_STOP, e8390_base+E8390_CMD);
+	ei_outb_p(E8390_NODMA + E8390_PAGE0 + E8390_STOP, e8390_base + E8390_CMD);

-	ei_local->tx1 = ei_local->tx2 = 0;
+	ei_local->tx1 = 0;
+	ei_local->tx2 = 0;
 	ei_local->txing = 0;

 	if (startp) {
 		ei_outb_p(0xff,  e8390_base + EN0_ISR);
 		ei_outb_p(ENISR_ALL,  e8390_base + EN0_IMR);
-		ei_outb_p(E8390_NODMA+E8390_PAGE0+E8390_START, e8390_base+E8390_CMD);
+		ei_outb_p(E8390_NODMA + E8390_PAGE0 + E8390_START, e8390_base + E8390_CMD);
 		ei_outb_p(E8390_TXCONFIG, e8390_base + EN0_TXCR); /* xmit on. */
 		/* 3c503 TechMan says rxconfig only after the NIC is started. */
 		ei_outb_p(E8390_RXCONFIG, e8390_base + EN0_RXCR); /* rx on,  */
@@ -1069,15 +1039,15 @@ static void __NS8390_init(struct net_device *dev, int startp)
 }

 /* Trigger a transmit start, assuming the length is valid.
-   Always called with the page lock held */
+ * Always called with the page lock held.
+ */

-static void NS8390_trigger_send(struct net_device *dev, unsigned int length,
-								int start_page)
+static void NS8390_trigger_send(struct net_device *dev, unsigned int length, int start_page)
 {
 	unsigned long e8390_base = dev->base_addr;
 	struct ei_device *ei_local __attribute((unused)) = netdev_priv(dev);

-	ei_outb_p(E8390_NODMA+E8390_PAGE0, e8390_base+E8390_CMD);
+	ei_outb_p(E8390_NODMA + E8390_PAGE0, e8390_base + E8390_CMD);

 	if (ei_inb_p(e8390_base + E8390_CMD) & E8390_TRANS) {
 		netdev_warn(dev, "trigger_send() called with the transmitter busy\n");
@@ -1086,5 +1056,5 @@ static void NS8390_trigger_send(struct net_device *dev, unsigned int length,
 	ei_outb_p(length & 0xff, e8390_base + EN0_TCNTLO);
 	ei_outb_p(length >> 8, e8390_base + EN0_TCNTHI);
 	ei_outb_p(start_page, e8390_base + EN0_TPSR);
-	ei_outb_p(E8390_NODMA+E8390_TRANS+E8390_START, e8390_base+E8390_CMD);
+	ei_outb_p(E8390_NODMA + E8390_TRANS + E8390_START, e8390_base + E8390_CMD);
 }
--
2.20.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH net-next v5 2/6] lib8390: Replace pr_cont() with SMP-safe construct
  2020-09-14 21:01 [PATCH net-next v5 0/6] 8390: core cleanups Armin Wolf
  2020-09-14 21:01 ` [PATCH net-next v5 1/6] lib8390: Fix coding style issues and remove version printing Armin Wolf
@ 2020-09-14 21:01 ` Armin Wolf
  2020-09-15  5:03   ` Joe Perches
  2020-09-14 21:01 ` [PATCH net-next v5 3/6] 8390: Replace version string with MODULE_* macros Armin Wolf
                   ` (4 subsequent siblings)
  6 siblings, 1 reply; 10+ messages in thread
From: Armin Wolf @ 2020-09-14 21:01 UTC (permalink / raw)
  To: davem; +Cc: netdev

Replace pr_cont() with SMP-safe construct.

Signed-off-by: Armin Wolf <W_Armin@gmx.de>
---
 drivers/net/ethernet/8390/lib8390.c | 31 +++++++++++------------------
 1 file changed, 12 insertions(+), 19 deletions(-)

diff --git a/drivers/net/ethernet/8390/lib8390.c b/drivers/net/ethernet/8390/lib8390.c
index 3a2b1e33a47a..e8a323352c40 100644
--- a/drivers/net/ethernet/8390/lib8390.c
+++ b/drivers/net/ethernet/8390/lib8390.c
@@ -518,25 +518,18 @@ static void ei_tx_err(struct net_device *dev)
 {
 	unsigned long e8390_base = dev->base_addr;
 	/* ei_local is used on some platforms via the EI_SHIFT macro */
-	struct ei_device *ei_local __maybe_unused = netdev_priv(dev);
-	unsigned char txsr = ei_inb_p(e8390_base+EN0_TSR);
-	unsigned char tx_was_aborted = txsr & (ENTSR_ABT+ENTSR_FU);
-
-#ifdef VERBOSE_ERROR_DUMP
-	netdev_dbg(dev, "transmitter error (%#2x):", txsr);
-	if (txsr & ENTSR_ABT)
-		pr_cont(" excess-collisions ");
-	if (txsr & ENTSR_ND)
-		pr_cont(" non-deferral ");
-	if (txsr & ENTSR_CRS)
-		pr_cont(" lost-carrier ");
-	if (txsr & ENTSR_FU)
-		pr_cont(" FIFO-underrun ");
-	if (txsr & ENTSR_CDH)
-		pr_cont(" lost-heartbeat ");
-	pr_cont("\n");
-#endif
-
+	struct ei_device *ei_local = netdev_priv(dev);
+	unsigned char txsr = ei_inb_p(e8390_base + EN0_TSR);
+	unsigned char tx_was_aborted = txsr & (ENTSR_ABT + ENTSR_FU);
+
+	if (netif_msg_tx_err(ei_local)) {
+		netdev_err(dev, "Transmitter error %#2x ( %s%s%s%s%s)", txsr,
+			   (txsr & ENTSR_ABT) ? "excess-collisions " : "",
+			   (txsr & ENTSR_ND) ? "non-deferral " : "",
+			   (txsr & ENTSR_CRS) ? "lost-carrier " : "",
+			   (txsr & ENTSR_FU) ? "FIFO-underrun " : "",
+			   (txsr & ENTSR_CDH) ? "lost-heartbeat " : "");
+	}
 	ei_outb_p(ENISR_TX_ERR, e8390_base + EN0_ISR); /* Ack intr. */
 	if (tx_was_aborted) {
 		ei_tx_intr(dev);
--
2.20.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH net-next v5 3/6] 8390: Replace version string with MODULE_* macros
  2020-09-14 21:01 [PATCH net-next v5 0/6] 8390: core cleanups Armin Wolf
  2020-09-14 21:01 ` [PATCH net-next v5 1/6] lib8390: Fix coding style issues and remove version printing Armin Wolf
  2020-09-14 21:01 ` [PATCH net-next v5 2/6] lib8390: Replace pr_cont() with SMP-safe construct Armin Wolf
@ 2020-09-14 21:01 ` Armin Wolf
  2020-09-14 21:01 ` [PATCH net-next v5 4/6] 8390: Include necessary libraries Armin Wolf
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 10+ messages in thread
From: Armin Wolf @ 2020-09-14 21:01 UTC (permalink / raw)
  To: davem; +Cc: netdev

Replace version string with MODULE_* macros.

Signed-off-by: Armin Wolf <W_Armin@gmx.de>
---
 drivers/net/ethernet/8390/8390.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/8390/8390.c b/drivers/net/ethernet/8390/8390.c
index 0e0aa4016858..318f827cc085 100644
--- a/drivers/net/ethernet/8390/8390.c
+++ b/drivers/net/ethernet/8390/8390.c
@@ -1,11 +1,13 @@
 // SPDX-License-Identifier: GPL-2.0-only
-/* 8390 core for usual drivers */

-static const char version[] =
-    "8390.c:v1.10cvs 9/23/94 Donald Becker (becker@cesdis.gsfc.nasa.gov)\n";
+#define DRV_DESCRIPTION "8390 core for usual drivers"
+#define DRV_AUTHOR "Donald Becker (becker@cesdis.gsfc.nasa.gov)"

 #include "lib8390.c"

+MODULE_AUTHOR(DRV_AUTHOR);
+MODULE_DESCRIPTION(DRV_DESCRIPTION);
+
 int ei_open(struct net_device *dev)
 {
 	return __ei_open(dev);
--
2.20.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH net-next v5 4/6] 8390: Include necessary libraries
  2020-09-14 21:01 [PATCH net-next v5 0/6] 8390: core cleanups Armin Wolf
                   ` (2 preceding siblings ...)
  2020-09-14 21:01 ` [PATCH net-next v5 3/6] 8390: Replace version string with MODULE_* macros Armin Wolf
@ 2020-09-14 21:01 ` Armin Wolf
  2020-09-14 21:01 ` [PATCH net-next v5 5/6] 8390: Fix coding style issues Armin Wolf
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 10+ messages in thread
From: Armin Wolf @ 2020-09-14 21:01 UTC (permalink / raw)
  To: davem; +Cc: netdev

Include necessary libraries.

Signed-off-by: Armin Wolf <W_Armin@gmx.de>
---
 drivers/net/ethernet/8390/8390.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/net/ethernet/8390/8390.c b/drivers/net/ethernet/8390/8390.c
index 318f827cc085..911fad7af3bd 100644
--- a/drivers/net/ethernet/8390/8390.c
+++ b/drivers/net/ethernet/8390/8390.c
@@ -3,6 +3,13 @@
 #define DRV_DESCRIPTION "8390 core for usual drivers"
 #define DRV_AUTHOR "Donald Becker (becker@cesdis.gsfc.nasa.gov)"

+#include <linux/etherdevice.h>
+#include <linux/export.h>
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/netdevice.h>
+
 #include "lib8390.c"

 MODULE_AUTHOR(DRV_AUTHOR);
--
2.20.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH net-next v5 5/6] 8390: Fix coding style issues
  2020-09-14 21:01 [PATCH net-next v5 0/6] 8390: core cleanups Armin Wolf
                   ` (3 preceding siblings ...)
  2020-09-14 21:01 ` [PATCH net-next v5 4/6] 8390: Include necessary libraries Armin Wolf
@ 2020-09-14 21:01 ` Armin Wolf
  2020-09-14 21:01 ` [PATCH net-next v5 6/6] 8390: Remove version string Armin Wolf
  2020-09-14 21:14 ` [PATCH net-next v5 0/6] 8390: core cleanups David Miller
  6 siblings, 0 replies; 10+ messages in thread
From: Armin Wolf @ 2020-09-14 21:01 UTC (permalink / raw)
  To: davem; +Cc: netdev

Fix two minor coding style issues.

Signed-off-by: Armin Wolf <W_Armin@gmx.de>
---
 drivers/net/ethernet/8390/8390.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/8390/8390.c b/drivers/net/ethernet/8390/8390.c
index 911fad7af3bd..735d5e84f73b 100644
--- a/drivers/net/ethernet/8390/8390.c
+++ b/drivers/net/ethernet/8390/8390.c
@@ -73,7 +73,7 @@ const struct net_device_ops ei_netdev_ops = {
 	.ndo_get_stats		= ei_get_stats,
 	.ndo_set_rx_mode	= ei_set_multicast_list,
 	.ndo_validate_addr	= eth_validate_addr,
-	.ndo_set_mac_address 	= eth_mac_addr,
+	.ndo_set_mac_address	= eth_mac_addr,
 #ifdef CONFIG_NET_POLL_CONTROLLER
 	.ndo_poll_controller	= ei_poll,
 #endif
@@ -83,6 +83,7 @@ EXPORT_SYMBOL(ei_netdev_ops);
 struct net_device *__alloc_ei_netdev(int size)
 {
 	struct net_device *dev = ____alloc_ei_netdev(size);
+
 	if (dev)
 		dev->netdev_ops = &ei_netdev_ops;
 	return dev;
--
2.20.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH net-next v5 6/6] 8390: Remove version string
  2020-09-14 21:01 [PATCH net-next v5 0/6] 8390: core cleanups Armin Wolf
                   ` (4 preceding siblings ...)
  2020-09-14 21:01 ` [PATCH net-next v5 5/6] 8390: Fix coding style issues Armin Wolf
@ 2020-09-14 21:01 ` Armin Wolf
  2020-09-14 21:14 ` [PATCH net-next v5 0/6] 8390: core cleanups David Miller
  6 siblings, 0 replies; 10+ messages in thread
From: Armin Wolf @ 2020-09-14 21:01 UTC (permalink / raw)
  To: davem; +Cc: netdev

Remove unused version string in modules which are
including lib8390 and replace him with MODULE_* macros
if necessary.

Signed-off-by: Armin Wolf <W_Armin@gmx.de>
---
 drivers/net/ethernet/8390/8390p.c     | 15 ++++++++++++---
 drivers/net/ethernet/8390/ax88796.c   |  3 ---
 drivers/net/ethernet/8390/etherh.c    |  3 ---
 drivers/net/ethernet/8390/hydra.c     |  7 +++++--
 drivers/net/ethernet/8390/mac8390.c   |  3 ---
 drivers/net/ethernet/8390/mcf8390.c   |  3 ---
 drivers/net/ethernet/8390/xsurf100.c  |  3 ---
 drivers/net/ethernet/8390/zorro8390.c |  5 +++--
 8 files changed, 20 insertions(+), 22 deletions(-)

diff --git a/drivers/net/ethernet/8390/8390p.c b/drivers/net/ethernet/8390/8390p.c
index 6834742057b3..2305dbf74d79 100644
--- a/drivers/net/ethernet/8390/8390p.c
+++ b/drivers/net/ethernet/8390/8390p.c
@@ -1,14 +1,23 @@
 // SPDX-License-Identifier: GPL-2.0-only
-/* 8390 core for ISA devices needing bus delays */

-static const char version[] =
-    "8390p.c:v1.10cvs 9/23/94 Donald Becker (becker@cesdis.gsfc.nasa.gov)\n";
+#define DRV_DESCRIPTION "8390 core for ISA devices needing bus delays"
+#define DRV_AUTHOR "Donald Becker (becker@cesdis.gsfc.nasa.gov)"

 #define ei_inb(_p)	inb(_p)
 #define ei_outb(_v, _p)	outb(_v, _p)
 #define ei_inb_p(_p)	inb_p(_p)
 #define ei_outb_p(_v, _p) outb_p(_v, _p)

+#include <linux/etherdevice.h>
+#include <linux/export.h>
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/netdevice.h>
+
+MODULE_AUTHOR(DRV_AUTHOR);
+MODULE_DESCRIPTION(DRV_DESCRIPTION);
+
 #include "lib8390.c"

 int eip_open(struct net_device *dev)
diff --git a/drivers/net/ethernet/8390/ax88796.c b/drivers/net/ethernet/8390/ax88796.c
index 172947fc051a..f2269c387d14 100644
--- a/drivers/net/ethernet/8390/ax88796.c
+++ b/drivers/net/ethernet/8390/ax88796.c
@@ -27,7 +27,6 @@

 #include <net/ax88796.h>

-
 /* Rename the lib8390.c functions to show that they are in this driver */
 #define __ei_open ax_ei_open
 #define __ei_close ax_ei_close
@@ -55,8 +54,6 @@
 /* Ensure we have our RCR base value */
 #define AX88796_PLATFORM

-static unsigned char version[] = "ax88796.c: Copyright 2005,2007 Simtec Electronics\n";
-
 #include "lib8390.c"

 #define DRV_NAME "ax88796"
diff --git a/drivers/net/ethernet/8390/etherh.c b/drivers/net/ethernet/8390/etherh.c
index bd22a534b1c0..c801cb13ba44 100644
--- a/drivers/net/ethernet/8390/etherh.c
+++ b/drivers/net/ethernet/8390/etherh.c
@@ -56,9 +56,6 @@
 #define DRV_NAME	"etherh"
 #define DRV_VERSION	"1.11"

-static char version[] =
-	"EtherH/EtherM Driver (c) 2002-2004 Russell King " DRV_VERSION "\n";
-
 #include "lib8390.c"

 struct etherh_priv {
diff --git a/drivers/net/ethernet/8390/hydra.c b/drivers/net/ethernet/8390/hydra.c
index 941754ea78ec..28b55ac578c9 100644
--- a/drivers/net/ethernet/8390/hydra.c
+++ b/drivers/net/ethernet/8390/hydra.c
@@ -36,11 +36,14 @@
 #define ei_inb_p(port)   in_8(port)
 #define ei_outb_p(val,port)  out_8(port,val)

-static const char version[] =
-    "8390.c:v1.10cvs 9/23/94 Donald Becker (becker@cesdis.gsfc.nasa.gov)\n";
+#define DRV_DESCRIPTION "New Hydra driver using generic 8390 core"
+#define DRV_AUTHOR "Peter De Schrijver (p2@mind.be)"

 #include "lib8390.c"

+MODULE_AUTHOR(DRV_AUTHOR);
+MODULE_DESCRIPTION(DRV_DESCRIPTION);
+
 #define NE_EN0_DCFG     (0x0e*2)

 #define NESM_START_PG   0x0    /* First page of TX buffer */
diff --git a/drivers/net/ethernet/8390/mac8390.c b/drivers/net/ethernet/8390/mac8390.c
index d60a86aa8aa8..1484497e4df5 100644
--- a/drivers/net/ethernet/8390/mac8390.c
+++ b/drivers/net/ethernet/8390/mac8390.c
@@ -41,9 +41,6 @@
 #include <asm/hwtest.h>
 #include <asm/macints.h>

-static char version[] =
-	"v0.4 2001-05-15 David Huggins-Daines <dhd@debian.org> and others\n";
-
 #define EI_SHIFT(x)	(ei_local->reg_offset[x])
 #define ei_inb(port)	in_8(port)
 #define ei_outb(val, port)	out_8(port, val)
diff --git a/drivers/net/ethernet/8390/mcf8390.c b/drivers/net/ethernet/8390/mcf8390.c
index 4ad8031ab669..7e30a7524cdd 100644
--- a/drivers/net/ethernet/8390/mcf8390.c
+++ b/drivers/net/ethernet/8390/mcf8390.c
@@ -20,9 +20,6 @@
 #include <linux/io.h>
 #include <asm/mcf8390.h>

-static const char version[] =
-	"mcf8390.c: (15-06-2012) Greg Ungerer <gerg@uclinux.org>";
-
 #define NE_CMD		0x00
 #define NE_DATAPORT	0x10	/* NatSemi-defined port window offset */
 #define NE_RESET	0x1f	/* Issue a read to reset ,a write to clear */
diff --git a/drivers/net/ethernet/8390/xsurf100.c b/drivers/net/ethernet/8390/xsurf100.c
index e2c963821ffe..6f1e3d539346 100644
--- a/drivers/net/ethernet/8390/xsurf100.c
+++ b/drivers/net/ethernet/8390/xsurf100.c
@@ -42,9 +42,6 @@
 /* Ensure we have our RCR base value */
 #define AX88796_PLATFORM

-static unsigned char version[] =
-		"ax88796.c: Copyright 2005,2007 Simtec Electronics\n";
-
 #include "lib8390.c"

 /* from ne.c */
diff --git a/drivers/net/ethernet/8390/zorro8390.c b/drivers/net/ethernet/8390/zorro8390.c
index 35a500a21521..75df604801cf 100644
--- a/drivers/net/ethernet/8390/zorro8390.c
+++ b/drivers/net/ethernet/8390/zorro8390.c
@@ -41,11 +41,12 @@
 #define ei_inb_p(port)		in_8(port)
 #define ei_outb_p(val, port)	out_8(port, val)

-static const char version[] =
-	"8390.c:v1.10cvs 9/23/94 Donald Becker (becker@cesdis.gsfc.nasa.gov)\n";
+#define DRV_DESCRIPTION "Amiga Linux/m68k and Linux/PPC Zorro NS8390 Ethernet Driver"

 #include "lib8390.c"

+MODULE_DESCRIPTION(DRV_DESCRIPTION);
+
 #define DRV_NAME	"zorro8390"

 #define NE_BASE		(dev->base_addr)
--
2.20.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH net-next v5 0/6] 8390: core cleanups
  2020-09-14 21:01 [PATCH net-next v5 0/6] 8390: core cleanups Armin Wolf
                   ` (5 preceding siblings ...)
  2020-09-14 21:01 ` [PATCH net-next v5 6/6] 8390: Remove version string Armin Wolf
@ 2020-09-14 21:14 ` David Miller
  6 siblings, 0 replies; 10+ messages in thread
From: David Miller @ 2020-09-14 21:14 UTC (permalink / raw)
  To: W_Armin; +Cc: netdev

From: Armin Wolf <W_Armin@gmx.de>
Date: Mon, 14 Sep 2020 23:01:22 +0200

> The purpose of this patchset is to do some
> cleanups in lib8390.c and 8390.c

A lot of these changes are borderline beneficial, at best.

You are adding include files to foo.c files that are already included
by lib8390.c already (which the foo.c file includes).  This is
redundant and makes the compiler work harder.  lib8390.c is
designed to work like this.

Your first patch mixes comment formatting with actual code
changes (adding new curly braces and such).

And so on and so forth...

I honestly don't like this patch series at all.

If you were about to add a big new feature to the 8390 code
and wanted to clean it up first before doing so, maybe I'd
be ok with these changes.  But as a pure cleanup, sorry I'm
not going to apply this stuff.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH net-next v5 2/6] lib8390: Replace pr_cont() with SMP-safe construct
  2020-09-14 21:01 ` [PATCH net-next v5 2/6] lib8390: Replace pr_cont() with SMP-safe construct Armin Wolf
@ 2020-09-15  5:03   ` Joe Perches
  0 siblings, 0 replies; 10+ messages in thread
From: Joe Perches @ 2020-09-15  5:03 UTC (permalink / raw)
  To: Armin Wolf, davem; +Cc: netdev

On Mon, 2020-09-14 at 23:01 +0200, Armin Wolf wrote:
> Replace pr_cont() with SMP-safe construct.
> 
> Signed-off-by: Armin Wolf <W_Armin@gmx.de>
> ---
>  drivers/net/ethernet/8390/lib8390.c | 31 +++++++++++------------------
>  1 file changed, 12 insertions(+), 19 deletions(-)
> 
> diff --git a/drivers/net/ethernet/8390/lib8390.c b/drivers/net/ethernet/8390/lib8390.c
> index 3a2b1e33a47a..e8a323352c40 100644
> --- a/drivers/net/ethernet/8390/lib8390.c
> +++ b/drivers/net/ethernet/8390/lib8390.c
> @@ -518,25 +518,18 @@ static void ei_tx_err(struct net_device *dev)
>  {
>  	unsigned long e8390_base = dev->base_addr;
>  	/* ei_local is used on some platforms via the EI_SHIFT macro */
> -	struct ei_device *ei_local __maybe_unused = netdev_priv(dev);
> -	unsigned char txsr = ei_inb_p(e8390_base+EN0_TSR);
> -	unsigned char tx_was_aborted = txsr & (ENTSR_ABT+ENTSR_FU);
> -
> -#ifdef VERBOSE_ERROR_DUMP
> -	netdev_dbg(dev, "transmitter error (%#2x):", txsr);
> -	if (txsr & ENTSR_ABT)
> -		pr_cont(" excess-collisions ");
> -	if (txsr & ENTSR_ND)
> -		pr_cont(" non-deferral ");
> -	if (txsr & ENTSR_CRS)
> -		pr_cont(" lost-carrier ");
> -	if (txsr & ENTSR_FU)
> -		pr_cont(" FIFO-underrun ");
> -	if (txsr & ENTSR_CDH)
> -		pr_cont(" lost-heartbeat ");
> -	pr_cont("\n");
> -#endif
> -
> +	struct ei_device *ei_local = netdev_priv(dev);
> +	unsigned char txsr = ei_inb_p(e8390_base + EN0_TSR);
> +	unsigned char tx_was_aborted = txsr & (ENTSR_ABT + ENTSR_FU);
> +
> +	if (netif_msg_tx_err(ei_local)) {
> +		netdev_err(dev, "Transmitter error %#2x ( %s%s%s%s%s)", txsr,
> +			   (txsr & ENTSR_ABT) ? "excess-collisions " : "",
> +			   (txsr & ENTSR_ND) ? "non-deferral " : "",
> +			   (txsr & ENTSR_CRS) ? "lost-carrier " : "",
> +			   (txsr & ENTSR_FU) ? "FIFO-underrun " : "",
> +			   (txsr & ENTSR_CDH) ? "lost-heartbeat " : "");
> +	}

Still should use a terminating '\n' and likely
this might be better as:

	netif_dbg(ei_local, tx_err, dev, "Transmitter error ...\n",
		  etc...);



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH net-next v5 1/6] lib8390: Fix coding style issues and remove version printing
  2020-09-14 21:01 ` [PATCH net-next v5 1/6] lib8390: Fix coding style issues and remove version printing Armin Wolf
@ 2020-09-15  5:21   ` Joe Perches
  0 siblings, 0 replies; 10+ messages in thread
From: Joe Perches @ 2020-09-15  5:21 UTC (permalink / raw)
  To: Armin Wolf, davem, Geert Uytterhoeven; +Cc: netdev

On Mon, 2020-09-14 at 23:01 +0200, Armin Wolf wrote:
> Fix various checkpatch warnings.
> 
> Remove version printing so modules including lib8390 do not
> have to provide a global version string for successful
> compilation.

This 8390 code is for a _really_ old driver.
It doesn't seem likely these changes are all that useful.
(and I say that as someone that's done a lot of drive-by
 cleaning to this code, mostly treewide though)

> diff --git a/drivers/net/ethernet/8390/lib8390.c b/drivers/net/ethernet/8390/lib8390.c
[]
> @@ -308,25 +301,24 @@ static netdev_tx_t __ei_start_xmit(struct sk_buff *skb,
>  	char *data = skb->data;
> 
>  	if (skb->len < ETH_ZLEN) {
> -		memset(buf, 0, ETH_ZLEN);	/* more efficient than doing just the needed bits */
> +		/* More efficient than doing just the needed bits */
> +		memset(buf, 0, ETH_ZLEN);
>  		memcpy(buf, data, skb->len);

Even with the comment, this bit seems less than optimal.
Maybe not overwriting the already zeroed content is better?
At least it's fewer memory accesses.

		memcpy(buf, data, skb->len);
		memset(&buf[skb->len], 0, ETH_ZLEN - skb->len);



^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2020-09-15  5:21 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-14 21:01 [PATCH net-next v5 0/6] 8390: core cleanups Armin Wolf
2020-09-14 21:01 ` [PATCH net-next v5 1/6] lib8390: Fix coding style issues and remove version printing Armin Wolf
2020-09-15  5:21   ` Joe Perches
2020-09-14 21:01 ` [PATCH net-next v5 2/6] lib8390: Replace pr_cont() with SMP-safe construct Armin Wolf
2020-09-15  5:03   ` Joe Perches
2020-09-14 21:01 ` [PATCH net-next v5 3/6] 8390: Replace version string with MODULE_* macros Armin Wolf
2020-09-14 21:01 ` [PATCH net-next v5 4/6] 8390: Include necessary libraries Armin Wolf
2020-09-14 21:01 ` [PATCH net-next v5 5/6] 8390: Fix coding style issues Armin Wolf
2020-09-14 21:01 ` [PATCH net-next v5 6/6] 8390: Remove version string Armin Wolf
2020-09-14 21:14 ` [PATCH net-next v5 0/6] 8390: core cleanups David Miller

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.