Netdev List
 help / color / mirror / Atom feed
* [PATCH  3/12] NET/ROM statistics fix
From: Ralf Baechle DL5RB @ 2005-09-11 22:18 UTC (permalink / raw)
  To: David S. Miller, netdev, linux-hams

Calling an incoming NET/ROM-encapsulated IP packet an error if the interface
isn't up is probably a bit over the top, so count it as dropped instead of
an error.

Signed-off-by: Ralf Baechle DL5RB <ralf@linux-mips.org>

 net/netrom/nr_dev.c |    2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)

Index: net-2.6.git/net/netrom/nr_dev.c
===================================================================
--- net-2.6.git.orig/net/netrom/nr_dev.c
+++ net-2.6.git/net/netrom/nr_dev.c
@@ -47,7 +47,7 @@ int nr_rx_ip(struct sk_buff *skb, struct
 	struct net_device_stats *stats = netdev_priv(dev);
 
 	if (!netif_running(dev)) {
-		stats->rx_errors++;
+		stats->rx_dropped++;
 		return 0;
 	}
 

^ permalink raw reply

* [PATCH  4/12] Remove useless tests
From: Ralf Baechle DL5RB @ 2005-09-11 22:18 UTC (permalink / raw)
  To: David S. Miller, netdev, linux-hams

Remove error tests that have already been performed by the caller.

Signed-off-by: Ralf Baechle DL5RB <ralf@linux-mips.org>

 net/ax25/af_ax25.c     |    6 +-----
 net/netrom/af_netrom.c |    4 +---
 net/rose/af_rose.c     |    4 +---
 3 files changed, 3 insertions(+), 11 deletions(-)

Index: linux-cvs/net/netrom/af_netrom.c
===================================================================
--- linux-cvs.orig/net/netrom/af_netrom.c
+++ linux-cvs/net/netrom/af_netrom.c
@@ -1187,9 +1187,7 @@ static int nr_ioctl(struct socket *sock,
 	}
 
 	case SIOCGSTAMP:
-		ret = -EINVAL;
-		if (sk != NULL)
-			ret = sock_get_timestamp(sk, argp);
+		ret = sock_get_timestamp(sk, argp);
 		release_sock(sk);
 		return ret;
 
Index: linux-cvs/net/ax25/af_ax25.c
===================================================================
--- linux-cvs.orig/net/ax25/af_ax25.c
+++ linux-cvs/net/ax25/af_ax25.c
@@ -1700,11 +1700,7 @@ static int ax25_ioctl(struct socket *soc
 	}
 
 	case SIOCGSTAMP:
-		if (sk != NULL) {
-			res = sock_get_timestamp(sk, argp);
-			break;
-	 	}
-		res = -EINVAL;
+		res = sock_get_timestamp(sk, argp);
 		break;
 
 	case SIOCAX25ADDUID:	/* Add a uid to the uid/call map table */
Index: linux-cvs/net/rose/af_rose.c
===================================================================
--- linux-cvs.orig/net/rose/af_rose.c
+++ linux-cvs/net/rose/af_rose.c
@@ -1256,9 +1256,7 @@ static int rose_ioctl(struct socket *soc
 	}
 
 	case SIOCGSTAMP:
-		if (sk != NULL) 
-			return sock_get_timestamp(sk, (struct timeval __user *)argp);
-		return -EINVAL;
+		return sock_get_timestamp(sk, (struct timeval __user *)argp);
 
 	case SIOCGIFADDR:
 	case SIOCSIFADDR:

^ permalink raw reply

* [PATCH  5/12] Add descriptions to constants
From: Ralf Baechle DL5RB @ 2005-09-11 22:19 UTC (permalink / raw)
  To: David S. Miller, netdev, linux-hams

Comment the names used for the AX.25 state machine.

Signed-off-by: Ralf Baechle DL5RB <ralf@linux-mips.org>

 include/net/ax25.h |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)

Index: linux-cvs/include/net/ax25.h
===================================================================
--- linux-cvs.orig/include/net/ax25.h
+++ linux-cvs/include/net/ax25.h
@@ -97,11 +97,11 @@
 /* Define Link State constants. */
 
 enum { 
-	AX25_STATE_0,
-	AX25_STATE_1,
-	AX25_STATE_2,
-	AX25_STATE_3,
-	AX25_STATE_4
+	AX25_STATE_0,			/* Listening */
+	AX25_STATE_1,			/* SABM sent */
+	AX25_STATE_2,			/* DISC sent */
+	AX25_STATE_3,			/* Established */
+	AX25_STATE_4			/* Recovery */
 };
 
 #define AX25_MODULUS 		8	/*  Standard AX.25 modulus */

^ permalink raw reply

* [PATCH  6/12] Whitespace formatting changes
From: Ralf Baechle DL5RB @ 2005-09-11 22:19 UTC (permalink / raw)
  To: David S. Miller, netdev, linux-hams

Small formatting changes.

Signed-off-by: Ralf Baechle DL5RB <ralf@linux-mips.org>

 net/ax25/af_ax25.c |    2 +-
 net/rose/af_rose.c |    6 +++---
 2 files changed, 4 insertions(+), 4 deletions(-)

Index: linux-cvs/net/ax25/af_ax25.c
===================================================================
--- linux-cvs.orig/net/ax25/af_ax25.c
+++ linux-cvs/net/ax25/af_ax25.c
@@ -1695,7 +1695,7 @@ static int ax25_ioctl(struct socket *soc
 		/* These two are safe on a single CPU system as only user tasks fiddle here */
 		if ((skb = skb_peek(&sk->sk_receive_queue)) != NULL)
 			amount = skb->len;
-		res = put_user(amount, (int __user *)argp);
+		res = put_user(amount, (int __user *) argp);
 		break;
 	}
 
Index: linux-cvs/net/rose/af_rose.c
===================================================================
--- linux-cvs.orig/net/rose/af_rose.c
+++ linux-cvs/net/rose/af_rose.c
@@ -1243,7 +1243,7 @@ static int rose_ioctl(struct socket *soc
 		amount = sk->sk_sndbuf - atomic_read(&sk->sk_wmem_alloc);
 		if (amount < 0)
 			amount = 0;
-		return put_user(amount, (unsigned int __user *)argp);
+		return put_user(amount, (unsigned int __user *) argp);
 	}
 
 	case TIOCINQ: {
@@ -1252,11 +1252,11 @@ static int rose_ioctl(struct socket *soc
 		/* These two are safe on a single CPU system as only user tasks fiddle here */
 		if ((skb = skb_peek(&sk->sk_receive_queue)) != NULL)
 			amount = skb->len;
-		return put_user(amount, (unsigned int __user *)argp);
+		return put_user(amount, (unsigned int __user *) argp);
 	}
 
 	case SIOCGSTAMP:
-		return sock_get_timestamp(sk, (struct timeval __user *)argp);
+		return sock_get_timestamp(sk, (struct timeval __user *) argp);
 
 	case SIOCGIFADDR:
 	case SIOCSIFADDR:

^ permalink raw reply

* [PATCH  7/12] Reformat ax25_proto_ops initialization
From: Ralf Baechle DL5RB @ 2005-09-11 22:19 UTC (permalink / raw)
  To: David S. Miller, netdev, linux-hams

Reformat iniitalization of ax25_proto_ops.

Signed-off-by: Ralf Baechle DL5RB <ralf@linux-mips.org>

 net/ax25/af_ax25.c |   36 ++++++++++++++++++------------------
 1 files changed, 18 insertions(+), 18 deletions(-)

Index: net-2.6.git/net/ax25/af_ax25.c
===================================================================
--- net-2.6.git.orig/net/ax25/af_ax25.c
+++ net-2.6.git/net/ax25/af_ax25.c
@@ -1947,24 +1947,24 @@ static struct net_proto_family ax25_fami
 };
 
 static struct proto_ops ax25_proto_ops = {
-	.family =	PF_AX25,
-	.owner =	THIS_MODULE,
-	.release =	ax25_release,
-	.bind =		ax25_bind,
-	.connect =	ax25_connect,
-	.socketpair =	sock_no_socketpair,
-	.accept =	ax25_accept,
-	.getname =	ax25_getname,
-	.poll =		datagram_poll,
-	.ioctl =	ax25_ioctl,
-	.listen =	ax25_listen,
-	.shutdown =	ax25_shutdown,
-	.setsockopt =	ax25_setsockopt,
-	.getsockopt =	ax25_getsockopt,
-	.sendmsg =	ax25_sendmsg,
-	.recvmsg =	ax25_recvmsg,
-	.mmap =		sock_no_mmap,
-	.sendpage =	sock_no_sendpage,
+	.family		= PF_AX25,
+	.owner		= THIS_MODULE,
+	.release	= ax25_release,
+	.bind		= ax25_bind,
+	.connect	= ax25_connect,
+	.socketpair	= sock_no_socketpair,
+	.accept		= ax25_accept,
+	.getname	= ax25_getname,
+	.poll		= datagram_poll,
+	.ioctl		= ax25_ioctl,
+	.listen		= ax25_listen,
+	.shutdown	= ax25_shutdown,
+	.setsockopt	= ax25_setsockopt,
+	.getsockopt	= ax25_getsockopt,
+	.sendmsg	= ax25_sendmsg,
+	.recvmsg	= ax25_recvmsg,
+	.mmap		= sock_no_mmap,
+	.sendpage	= sock_no_sendpage,
 };
 
 /*

^ permalink raw reply

* [PATCH  8/12] NET/ROM has no txqueue
From: Ralf Baechle DL5RB @ 2005-09-11 22:19 UTC (permalink / raw)
  To: David S. Miller, netdev, linux-hams

NET/ROM uses virtual interfaces so setting a queue length is wrong.

Signed-off-by: Ralf Baechle DL5RB <ralf@linux-mips.org>

 net/netrom/nr_dev.c |    1 -
 1 files changed, 1 deletion(-)

Index: net-2.6.git/net/netrom/nr_dev.c
===================================================================
--- net-2.6.git.orig/net/netrom/nr_dev.c
+++ net-2.6.git/net/netrom/nr_dev.c
@@ -194,7 +194,6 @@ void nr_setup(struct net_device *dev)
 	dev->hard_header_len	= NR_NETWORK_LEN + NR_TRANSPORT_LEN;
 	dev->addr_len		= AX25_ADDR_LEN;
 	dev->type		= ARPHRD_NETROM;
-	dev->tx_queue_len	= 40;
 	dev->rebuild_header	= nr_rebuild_header;
 	dev->set_mac_address    = nr_set_mac_address;
 

^ permalink raw reply

* [PATCH  9/12] NET/ROM has no ARP
From: Ralf Baechle DL5RB @ 2005-09-11 22:19 UTC (permalink / raw)
  To: David S. Miller, netdev, linux-hams

ARP over NET/ROM does not exist so it's obviously not implemented on any
NET/ROM stack, so the NET/ROM interfaces really should default to IFF_NOARP.

Signed-off-by: Ralf Baechle DL5RB <ralf@linux-mips.org>

 net/netrom/nr_dev.c |    2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)

Index: linux-cvs/net/netrom/nr_dev.c
===================================================================
--- linux-cvs.orig/net/netrom/nr_dev.c
+++ linux-cvs/net/netrom/nr_dev.c
@@ -191,7 +191,7 @@ void nr_setup(struct net_device *dev)
 	dev->set_mac_address    = nr_set_mac_address;
 
 	/* New-style flags. */
-	dev->flags		= 0;
+	dev->flags		= IFF_NOARP;
 
 	dev->get_stats 		= nr_get_stats;
 }

^ permalink raw reply

* [PATCH 10/12] ROSE has no ARP
From: Ralf Baechle DL5RB @ 2005-09-11 22:19 UTC (permalink / raw)
  To: David S. Miller, netdev, linux-hams

ARP over ROSE does not exist so it's obviously not implemented on any ROSE
stack, so the ROSE interfaces really should default to IFF_NOARP.

Signed-off-by: Ralf Baechle DL5RB <ralf@linux-mips.org>

 net/rose/rose_dev.c |    2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)

Index: linux-cvs/net/rose/rose_dev.c
===================================================================
--- linux-cvs.orig/net/rose/rose_dev.c
+++ linux-cvs/net/rose/rose_dev.c
@@ -149,6 +149,6 @@ void rose_setup(struct net_device *dev)
 	dev->set_mac_address    = rose_set_mac_address;
 
 	/* New-style flags. */
-	dev->flags		= 0;
+	dev->flags		= IFF_NOARP;
 	dev->get_stats = rose_get_stats;
 }

^ permalink raw reply

* [PATCH 12/12] Introduct stuct nr_private
From: Ralf Baechle DL5RB @ 2005-09-11 22:19 UTC (permalink / raw)
  To: David S. Miller, netdev, linux-hams

NET/ROM's virtual interfaces don't have a proper private data structure
yet.  Create struct nr_private and put the statistics there.

Signed-off-by: Ralf Baechle DL5RB <ralf@linux-mips.org>

 include/net/netrom.h   |    5 +++++
 net/netrom/af_netrom.c |    3 +--
 net/netrom/nr_dev.c    |   11 ++++++-----
 3 files changed, 12 insertions(+), 7 deletions(-)

Index: net-2.6.git/include/net/netrom.h
===================================================================
--- net-2.6.git.orig/include/net/netrom.h
+++ net-2.6.git/include/net/netrom.h
@@ -6,6 +6,7 @@
 
 #ifndef _NETROM_H
 #define _NETROM_H 
+
 #include <linux/netrom.h>
 #include <linux/list.h>
 #include <net/sock.h>
@@ -58,6 +59,10 @@ enum {
 #define NR_MAX_WINDOW_SIZE		127			/* Maximum Window Allowable - 127 */
 #define	NR_MAX_PACKET_SIZE		236			/* Maximum Packet Length - 236 */
 
+struct nr_private {
+	struct net_device_stats	stats;
+};
+
 struct nr_sock {
 	struct sock		sock;
 	ax25_address		user_addr, source_addr, dest_addr;
Index: net-2.6.git/net/netrom/af_netrom.c
===================================================================
--- net-2.6.git.orig/net/netrom/af_netrom.c
+++ net-2.6.git/net/netrom/af_netrom.c
@@ -1392,8 +1392,7 @@ static int __init nr_proto_init(void)
 		struct net_device *dev;
 
 		sprintf(name, "nr%d", i);
-		dev = alloc_netdev(sizeof(struct net_device_stats), name,
-					  nr_setup);
+		dev = alloc_netdev(sizeof(struct nr_private), name, nr_setup);
 		if (!dev) {
 			printk(KERN_ERR "NET/ROM: nr_proto_init - unable to allocate device structure\n");
 			goto fail;
Index: net-2.6.git/net/netrom/nr_dev.c
===================================================================
--- net-2.6.git.orig/net/netrom/nr_dev.c
+++ net-2.6.git/net/netrom/nr_dev.c
@@ -153,10 +153,9 @@ static int nr_close(struct net_device *d
 
 static int nr_xmit(struct sk_buff *skb, struct net_device *dev)
 {
-	struct net_device_stats *stats = netdev_priv(dev);
-	unsigned int len;
-
-	len = skb->len;
+	struct nr_private *nr = netdev_priv(dev);
+	struct net_device_stats *stats = &nr->stats;
+	unsigned int len = skb->len;
 
 	if (!nr_route_frame(skb, NULL)) {
 		kfree_skb(skb);
@@ -172,7 +171,9 @@ static int nr_xmit(struct sk_buff *skb, 
 
 static struct net_device_stats *nr_get_stats(struct net_device *dev)
 {
-	return netdev_priv(dev);
+	struct nr_private *nr = netdev_priv(dev);
+
+	return &nr->stats;
 }
 
 void nr_setup(struct net_device *dev)

^ permalink raw reply

* Re: Very strange Marvell/Yukon Gigabit NIC networking problems
From: Steve Kieu @ 2005-09-12  0:02 UTC (permalink / raw)
  To: Daniel Drake; +Cc: Stephen Hemminger, linux-kernel, Netdev List
In-Reply-To: <43244C33.1050502@gentoo.org>


> Steve, maybe you could test it out? I have attached
> it to this Gentoo bug:
> 
> 	http://bugs.gentoo.org/100258

Have tested it and it does *not* solve the problem for
me.

Besides lots of other problem with 2.6.13 for me, like
modem device not work, lots of extra modules not
compiled  (ov511 ; unionfs etc..) so even it works I
still need to revet back to 2.6.12.

Cheers,


S.KIEU

Send instant messages to your online friends http://au.messenger.yahoo.com 

^ permalink raw reply

* no-body beats them freethink
From: britt allery @ 2005-09-12  5:16 UTC (permalink / raw)
  To: Brenton Schreiber; +Cc: leonard, schmidt

Kasi:

http://uk.geocities.com/medvociferategood/?Fendi_IWC_rpjpdbvaf


mamma mia, it's a game we play Bye bye doesn't mean forever 



frobbing  filyon  eldec F07 documentwindow  currentwindow
Are you a ghost?Or are you alive?Would you be here for me (ooh, ooh)
ImaginationOr are you for real?Just give me a sign (sign)

^ permalink raw reply

* [PATCH 2.6.13] pcnet32: set min ring size to 4
From: Hubert WS Lin @ 2005-09-12  7:09 UTC (permalink / raw)
  To: netdev; +Cc: linux-kernel, fubar, donf, jklewis

[-- Attachment #1: Type: text/plain, Size: 414 bytes --]

Hi,

Don Fry reminded me that the pcnet32_loopback_test() asssumes the ring 
size is no less than 4. The minimum ring size was changed to 4 in 
pcnet32_set_ringparam() to allow the loopback test to work unchanged.

Changelog:
- Set minimum ring size to 4 to allow loopback test to work unchanged
- Moved variable init_block to first field in struct pcnet32_private

Signed-off-by: Hubert WS Lin <wslin@tw.ibm.com>

[-- Attachment #2: pcnet32-min-ring-size.diff --]
[-- Type: text/x-patch, Size: 2419 bytes --]

--- a/drivers/net/pcnet32.c	2005-09-12 14:24:40.000000000 +0800
+++ b/drivers/net/pcnet32.c	2005-09-12 14:39:11.000000000 +0800
@@ -22,8 +22,8 @@
  *************************************************************************/
 
 #define DRV_NAME	"pcnet32"
-#define DRV_VERSION	"1.31"
-#define DRV_RELDATE	"02.Sep.2005"
+#define DRV_VERSION	"1.31a"
+#define DRV_RELDATE	"12.Sep.2005"
 #define PFX		DRV_NAME ": "
 
 static const char *version =
@@ -258,6 +258,8 @@ static int homepna[MAX_UNITS];
  * v1.30i  28 Jun 2004 Don Fry change to use module_param.
  * v1.30j  29 Apr 2005 Don Fry fix skb/map leak with loopback test.
  * v1.31   02 Sep 2005 Hubert WS Lin <wslin@tw.ibm.c0m> added set_ringparam().
+ * v1.31a  12 Sep 2005 Hubert WS Lin <wslin@tw.ibm.c0m> set min ring size to 4
+ *	   to allow loopback test to work unchanged.
  */
 
 
@@ -335,14 +337,14 @@ struct pcnet32_access {
 };
 
 /*
- * The first three fields of pcnet32_private are read by the ethernet device
- * so we allocate the structure should be allocated by pci_alloc_consistent().
+ * The first field of pcnet32_private is read by the ethernet device
+ * so the structure should be allocated using pci_alloc_consistent().
  */
 struct pcnet32_private {
+    struct pcnet32_init_block init_block;
     /* The Tx and Rx ring entries must be aligned on 16-byte boundaries in 32bit mode. */
     struct pcnet32_rx_head    *rx_ring;
     struct pcnet32_tx_head    *tx_ring;
-    struct pcnet32_init_block init_block;
     dma_addr_t		dma_addr;	/* DMA address of beginning of this
 					   object, returned by
 					   pci_alloc_consistent */
@@ -648,7 +650,10 @@ static int pcnet32_set_ringparam(struct 
     lp->tx_ring_size = min(ering->tx_pending, (unsigned int) TX_MAX_RING_SIZE);
     lp->rx_ring_size = min(ering->rx_pending, (unsigned int) RX_MAX_RING_SIZE);
 
-    for (i = 0; i <= PCNET32_LOG_MAX_TX_BUFFERS; i++) {
+    /* set the minimum ring size to 4, to allow the loopback test to work
+     * unchanged.
+     */
+    for (i = 2; i <= PCNET32_LOG_MAX_TX_BUFFERS; i++) {
 	if (lp->tx_ring_size <= (1 << i))
 	    break;
     }
@@ -656,7 +661,7 @@ static int pcnet32_set_ringparam(struct 
     lp->tx_mod_mask = lp->tx_ring_size - 1;
     lp->tx_len_bits = (i << 12);
 
-    for (i = 0; i <= PCNET32_LOG_MAX_RX_BUFFERS; i++) {
+    for (i = 2; i <= PCNET32_LOG_MAX_RX_BUFFERS; i++) {
 	if (lp->rx_ring_size <= (1 << i))
 	    break;
     }

^ permalink raw reply

* pm_register should die
From: Pavel Machek @ 2005-09-12  9:34 UTC (permalink / raw)
  To: kernel list, Andrew Morton, Linus Torvalds
  Cc: vojtech, dwmw2, netdev, benjamin_kong, dagb, jgarzik, davidm,
	twoller, alan, mm, scott, jsimmons

Hi!

pm_register has been obsoleted by driver model, and it was deprecated
quite long time ago. There are only 13 users left.

Attached is a patch that makes pm_register config-option, so that we
don't get the warnings on sane systems. Pretty please, remove usage of
pm_register from your subsystem.

IRDA has no usefull MAINTAINER entry; it would be nice if that could
be fixed. Alan is best contact I could find for ad1848... does someone
care about that driver, anyway? nm256_audio is written by
anonymous. Wonderfull...

Okay, it seems to me only users that matter are mtdcore, 3c509 and
maybe h3600_ts_input. After those are fixed, it should be okay to just
config it out/remove pm_register completely.
								Pavel



./drivers/input/touchscreen/h3600_ts_input.c:   ts->pm_dev = pm_register(PM_ILLUMINATION_DEV, PM_SYS_LIGHT,
./drivers/mtd/mtdcore.c:        mtd_pm_dev = pm_register(PM_UNKNOWN_DEV, 0, mtd_pm_callback);
./drivers/net/irda/ali-ircc.c:        pmdev = pm_register(PM_SYS_DEV, PM_SYS_IRDA, ali_ircc_pmproc);
./drivers/net/irda/nsc-ircc.c:        pmdev = pm_register(PM_SYS_DEV, PM_SYS_IRDA, nsc_ircc_pmproc);
./drivers/net/3c509.c:  lp->pmdev = pm_register(PM_ISA_DEV, card_idx, el3_pm_callback);
./drivers/serial/68328serial.c:     serial_pm[i] = pm_register(PM_SYS_DEV, PM_SYS_COM, serial_pm_callback);
./sound/oss/cs4281/cs4281m.c:   pmdev = cs_pm_register(PM_PCI_DEV, PM_PCI_ID(pcidev), cs4281_pm_callback);
./sound/oss/cs4281/cs4281pm-24.c:#define cs_pm_register(a, b, c) pm_register((a), (b), (c));
./sound/oss/ad1848.c:   devc->pmdev = pm_register(PM_ISA_DEV, my_dev, ad1848_pm_callback);
./sound/oss/cs46xx.c:   pmdev = cs_pm_register(PM_PCI_DEV, PM_PCI_ID(pci_dev), cs46xx_pm_callback);
./sound/oss/maestro.c:  pmdev = pm_register(PM_PCI_DEV, PM_PCI_ID(pcidev),
./sound/oss/nm256_audio.c:    pmdev = pm_register(PM_PCI_DEV, PM_PCI_ID(pcidev), handle_pm_event);
./sound/oss/opl3sa2.c:          opl3sa2_state[card].pmdev = pm_register(PM_ISA_DEV, card, opl3sa2_pm_callback);


Make pm_register stuff dependend on CONFIG_OLD_PM, so it can be removed.

---
commit fff4171d1a447da54f757e2ff0bd9739d995680c
tree 75b53f93650101814da506bfc435e8f415233672
parent 6c7cd9958aa0edfb01e04bac7fc670e485a1600f
author <pavel@amd.(none)> Sun, 11 Sep 2005 23:04:34 +0200
committer <pavel@amd.(none)> Sun, 11 Sep 2005 23:04:34 +0200

 arch/i386/kernel/apm.c |    6 ++++++
 include/linux/pm.h     |   14 ++++++++++----
 kernel/power/pm.c      |    3 ++-
 3 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/arch/i386/kernel/apm.c b/arch/i386/kernel/apm.c
--- a/arch/i386/kernel/apm.c
+++ b/arch/i386/kernel/apm.c
@@ -1180,6 +1180,7 @@ static int suspend(int vetoable)
 	int		err;
 	struct apm_user	*as;
 
+#ifdef CONFIG_OLD_PM
 	if (pm_send_all(PM_SUSPEND, (void *)3)) {
 		/* Vetoed */
 		if (vetoable) {
@@ -1192,6 +1193,7 @@ static int suspend(int vetoable)
 		}
 		printk(KERN_CRIT "apm: suspend was vetoed, but suspending anyway.\n");
 	}
+#endif
 
 	device_suspend(PMSG_SUSPEND);
 	local_irq_disable();
@@ -1234,7 +1236,9 @@ static int suspend(int vetoable)
 	device_power_up();
 	local_irq_enable();
 	device_resume();
+#ifdef CONFIG_OLD_PM
 	pm_send_all(PM_RESUME, (void *)0);
+#endif
 	queue_event(APM_NORMAL_RESUME, NULL);
  out:
 	spin_lock(&user_list_lock);
@@ -1355,7 +1359,9 @@ static void check_events(void)
 				set_time();
 				write_sequnlock_irq(&xtime_lock);
 				device_resume();
+#ifdef CONFIG_OLD_PM
 				pm_send_all(PM_RESUME, (void *)0);
+#endif
 				queue_event(event, NULL);
 			}
 			ignore_normal_resume = 0;
diff --git a/include/linux/pm.h b/include/linux/pm.h
--- a/include/linux/pm.h
+++ b/include/linux/pm.h
@@ -27,6 +27,15 @@
 #include <linux/list.h>
 #include <asm/atomic.h>
 
+#ifdef CONFIG_PM
+extern int pm_active;
+
+#define PM_IS_ACTIVE() (pm_active != 0)
+#else
+#define PM_IS_ACTIVE() (0)
+#endif
+
+#ifdef CONFIG_OLD_PM
 /*
  * Power management requests... these are passed to pm_send_all() and friends.
  *
@@ -96,10 +105,6 @@ struct pm_dev
 
 #ifdef CONFIG_PM
 
-extern int pm_active;
-
-#define PM_IS_ACTIVE() (pm_active != 0)
-
 /*
  * Register a device with power management
  */
@@ -145,6 +150,7 @@ static inline int pm_send_all(pm_request
 
 /* Functions above this comment are list-based old-style power
  * managment. Please avoid using them.  */
+#endif
 
 /*
  * Callbacks for platform drivers to implement.
diff --git a/kernel/power/pm.c b/kernel/power/pm.c
--- a/kernel/power/pm.c
+++ b/kernel/power/pm.c
@@ -27,6 +27,7 @@
 
 int pm_active;
 
+#ifdef CONFIG_OLD_PM
 /*
  *	Locking notes:
  *		pm_devs_lock can be a semaphore providing pm ops are not called
@@ -261,4 +262,4 @@ EXPORT_SYMBOL(pm_unregister_all);
 EXPORT_SYMBOL(pm_send_all);
 EXPORT_SYMBOL(pm_active);
 
-
+#endif

-- 
if you have sharp zaurus hardware you don't need... you know my address

^ permalink raw reply

* Re: pm_register should die
From: Andrew Morton @ 2005-09-12  9:41 UTC (permalink / raw)
  To: Pavel Machek
  Cc: linux-kernel, akpm, torvalds, vojtech, dwmw2, netdev,
	benjamin_kong, dagb, jgarzik, davidm, twoller, alan, mm, scott,
	jsimmons
In-Reply-To: <20050912093456.GA29205@elf.ucw.cz>

Pavel Machek <pavel@ucw.cz> wrote:
>
> +#ifdef CONFIG_OLD_PM
>   	if (pm_send_all(PM_SUSPEND, (void *)3)) {

Can we not do this without ifdefs?

#define pm_send_all(foo, bar) 0

?

^ permalink raw reply

* Re: pm_register should die
From: Pavel Machek @ 2005-09-12  9:53 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-kernel, akpm, torvalds, vojtech, dwmw2, netdev,
	benjamin_kong, dagb, jgarzik, davidm, twoller, alan, mm, scott,
	jsimmons
In-Reply-To: <20050912024145.3c4298ec.akpm@osdl.org>

Hi!

> > +#ifdef CONFIG_OLD_PM
> >   	if (pm_send_all(PM_SUSPEND, (void *)3)) {
> 
> Can we not do this without ifdefs?
> 
> #define pm_send_all(foo, bar) 0

Okay, we probably can, but the ifdefs make very nice/easy markers
"this is going away". I'd prefer to actually delete all the code
inside those ifdefs...

I agree this patch can be improved... I hope I can get people to fix
those 13 occurences and be able to just drop everything in #ifdef
_OLD_PM.

								Pavel

-- 
if you have sharp zaurus hardware you don't need... you know my address

^ permalink raw reply

* Re: pm_register should die
From: Pavel Machek @ 2005-09-12  9:55 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-kernel, akpm, torvalds, vojtech, dwmw2, netdev,
	benjamin_kong, dagb, jgarzik, davidm, twoller, alan, mm, scott,
	jsimmons
In-Reply-To: <20050912095323.GD27583@elf.ucw.cz>

Hi!

> > > +#ifdef CONFIG_OLD_PM
> > >   	if (pm_send_all(PM_SUSPEND, (void *)3)) {
> > 
> > Can we not do this without ifdefs?
> > 
> > #define pm_send_all(foo, bar) 0
> 
> Okay, we probably can, but the ifdefs make very nice/easy markers
> "this is going away". I'd prefer to actually delete all the code
> inside those ifdefs...
> 
> I agree this patch can be improved... I hope I can get people to fix
> those 13 occurences and be able to just drop everything in #ifdef
> _OLD_PM.

There's another reason: they are ifdef-ed out so that you don't see
"obsolete function called" warning. Breaking the function and hiding
the warning at same time would seem like a wrong thing to do. If
someone does pm_send_all in his code, we want him to see the warning.

								Pavel
-- 
if you have sharp zaurus hardware you don't need... you know my address

^ permalink raw reply

* Re: pm_register should die
From: Andrew Morton @ 2005-09-12 10:03 UTC (permalink / raw)
  To: Pavel Machek
  Cc: linux-kernel, torvalds, vojtech, dwmw2, netdev, benjamin_kong,
	dagb, jgarzik, davidm, twoller, alan, mm, scott, jsimmons
In-Reply-To: <20050912095532.GA27763@elf.ucw.cz>

Pavel Machek <pavel@suse.cz> wrote:
>
> Hi!
> 
> > > > +#ifdef CONFIG_OLD_PM
> > > >   	if (pm_send_all(PM_SUSPEND, (void *)3)) {
> > > 
> > > Can we not do this without ifdefs?
> > > 
> > > #define pm_send_all(foo, bar) 0
> > 
> > Okay, we probably can, but the ifdefs make very nice/easy markers
> > "this is going away". I'd prefer to actually delete all the code
> > inside those ifdefs...
> > 
> > I agree this patch can be improved... I hope I can get people to fix
> > those 13 occurences and be able to just drop everything in #ifdef
> > _OLD_PM.
> 
> There's another reason: they are ifdef-ed out so that you don't see
> "obsolete function called" warning. Breaking the function and hiding
> the warning at same time would seem like a wrong thing to do. If
> someone does pm_send_all in his code, we want him to see the warning.
> 

Fair enough.

^ permalink raw reply

* Re: skge: reboot on sysfs resource0 access
From: Bernd Schubert @ 2005-09-12 11:01 UTC (permalink / raw)
  To: Ben Greear; +Cc: Stephen Hemminger, netdev
In-Reply-To: <4321D2C0.10800@candelatech.com>

> > Sorry, this is not a driver bug.
>
> Does that mean if you do this:
>
> find /sys -name "*" -print|xargs grep foo
>
> that the system will crash?

I would also guess it would happen, though I won't try that now.

>
> I certainly would consider that a bug, and even if that somehow works, I'd
> think that at the least you should be able to read every file in the file
> system without crashing the system!
>
> Do you at least have to be root to cause this crash?

Yes, the resource0 file has rw access to root only.


Cheers,
	Bernd

^ permalink raw reply

* Re: 2.6.13-mm3
From: Reuben Farrelly @ 2005-09-12 13:15 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-kernel, netdev
In-Reply-To: <20050912024350.60e89eb1.akpm@osdl.org>

Hi,

On 12/09/2005 9:43 p.m., Andrew Morton wrote:
> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.13/2.6.13-mm3/
> 
> (temp copy at http://www.zip.com.au/~akpm/linux/patches/stuff/2.6.13-mm3.gz)
> 
> - perfctr was dropped.  Mikael has ceased development and recommends that
>   the focus be upon perfmon.  See
>   http://sourceforge.net/mailarchive/forum.php?thread_id=8102899&forum_id=2237
> 
> - There are several performance tuning patches here which need careful
>   attention and testing.  (Does anyone do performance testing any more?)
> 
>   - An update to the anticipatory scheduler to fix a performance problem
>     where processes do a single read then exit, in the presence of competing
>     I/O acticity.
> 
>   - The size of the page allocator per-cpu magazines has been increased
> 
>   - The page allocator has been changed to use higher-order allocations
>     when batch-loading the per-cpu magazines.  This is intended to give
>     improved cache colouring effects however it might have the downside of
>     causing extra page allocator fragmentation.
> 
>   - The page allocator's per-cpu magazines have had their lower threshold
>     set to zero.  And we can't remember why it ever had a lower threshold.
> 
> - Dropped all the virtualisation preparatory patches.  Will later pick these
>   up from a git tree which chrisw is running.
> 
> - There are still quite a few patches here for 2.6.14 (30-50, perhaps).

-mm2 and -mm3 seem good, at least compile and boot up :)

However for both, I'm seeing this when making modules_install:

if [ -r System.map -a -x /sbin/depmod ]; then /sbin/depmod -ae -F System.map 
2.6.13-mm3; fi
WARNING: /lib/modules/2.6.13-mm3/kernel/net/ipv6/netfilter/ip6t_NFQUEUE.ko 
needs unknown symbol ip6t_unregister_target
WARNING: /lib/modules/2.6.13-mm3/kernel/net/ipv6/netfilter/ip6t_NFQUEUE.ko 
needs unknown symbol ip6t_register_target
[root@tornado linux-2.6]#

Seems to be caused by this option in .config set to 'm':

<M>   Netfilter NFQUEUE over NFNETLINK interface
Symbol: NETFILTER_NETLINK_QUEUE [=m]
Prompt: Netfilter NFQUEUE over NFNETLINK interface
Defined at net/netfilter/Kconfig:7

Full .config up at http://www.reub.net/kernel/2.6.13-mm3-config.

I suspect there is a dependency here on ip6_tables, which I am not currently 
compiling in or building as a module?

reuben

^ permalink raw reply

* [patch 2.6.13 1/3] 3c59x: bounds checking for hw_checksums
From: John W. Linville @ 2005-09-12 14:48 UTC (permalink / raw)
  To: linux-kernel, netdev; +Cc: akpm, jgarzik
In-Reply-To: <09122005104852.31469@bilbo.tuxdriver.com>

Add bounds checking to usage of hw_checksums module parameter array.

Signed-off-by: John W. Linville <linville@tuxdriver.com>
---

 drivers/net/3c59x.c |   15 +++++++++------
 1 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/drivers/net/3c59x.c b/drivers/net/3c59x.c
--- a/drivers/net/3c59x.c
+++ b/drivers/net/3c59x.c
@@ -1536,9 +1536,11 @@ static int __devinit vortex_probe1(struc
 		dev->hard_start_xmit = boomerang_start_xmit;
 		/* Actually, it still should work with iommu. */
 		dev->features |= NETIF_F_SG;
-		if (((hw_checksums[card_idx] == -1) && (vp->drv_flags & HAS_HWCKSM)) ||
-					(hw_checksums[card_idx] == 1)) {
-				dev->features |= NETIF_F_IP_CSUM;
+		if ((card_idx < MAX_UNITS) &&
+		    (((hw_checksums[card_idx] == -1) &&
+		      (vp->drv_flags & HAS_HWCKSM)) ||
+		     (hw_checksums[card_idx] == 1))) {
+			dev->features |= NETIF_F_IP_CSUM;
 		}
 	} else {
 		dev->hard_start_xmit = vortex_start_xmit;
@@ -2811,9 +2813,10 @@ vortex_close(struct net_device *dev)
 	}
 
 #if DO_ZEROCOPY
-	if (	vp->rx_csumhits &&
-			((vp->drv_flags & HAS_HWCKSM) == 0) &&
-			(hw_checksums[vp->card_idx] == -1)) {
+	if (vp->rx_csumhits &&
+	    ((vp->drv_flags & HAS_HWCKSM) == 0) &&
+	    ((vp->card_idx >= MAX_UNITS) ||
+	     (hw_checksums[vp->card_idx] == -1))) {
 		printk(KERN_WARNING "%s supports hardware checksums, and we're not using them!\n", dev->name);
 	}
 #endif

^ permalink raw reply

* [patch 2.6.13 0/3] 3c59x misc fixes
From: John W. Linville @ 2005-09-12 14:48 UTC (permalink / raw)
  To: linux-kernel, netdev; +Cc: akpm, jgarzik

A collection of patches for the 3c59x driver:

	-- Add bounds checking for hw_checksums array

	-- Use cleaner method for array initialization

	-- Fix some typos in the module param descriptions

Patches to follow...

^ permalink raw reply

* [patch 2.6.13] 3c59x: enable use of memory-mapped PCI I/O
From: John W. Linville @ 2005-09-12 14:48 UTC (permalink / raw)
  To: linux-kernel, netdev; +Cc: akpm, jgarzik
In-Reply-To: <20050906161330.0138f5a2.akpm@osdl.org>

Add capability for 3c59x driver to use memory-mapped PCI I/O
resources. This may improve performance for those devices so
equipped. This will be the default behaviour for IS_CYCLONE
and IS_TORNADO devices. Additionally, it can be enabled/disabled
individually for up to MAX_UNITS number of devices via the use_mmio
module option or for all units via the global_use_mmio option. The
use_mmio option overrides the global_use_mmio option for those
devices specified.

Signed-off-by: John W. Linville <linville@tuxdriver.com>
---

 drivers/net/3c59x.c |   29 ++++++++++++++++++++++++++---
 1 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/drivers/net/3c59x.c b/drivers/net/3c59x.c
--- a/drivers/net/3c59x.c
+++ b/drivers/net/3c59x.c
@@ -908,9 +908,11 @@ static int full_duplex[MAX_UNITS] = {-1,
 static int hw_checksums[MAX_UNITS] = {-1, -1, -1, -1, -1, -1, -1, -1};
 static int flow_ctrl[MAX_UNITS] = {-1, -1, -1, -1, -1, -1, -1, -1};
 static int enable_wol[MAX_UNITS] = {-1, -1, -1, -1, -1, -1, -1, -1};
+static int use_mmio[MAX_UNITS] = {-1, -1, -1, -1, -1, -1, -1, -1};
 static int global_options = -1;
 static int global_full_duplex = -1;
 static int global_enable_wol = -1;
+static int global_use_mmio = -1;
 
 /* #define dev_alloc_skb dev_alloc_skb_debug */
 
@@ -935,6 +937,8 @@ module_param(compaq_ioaddr, int, 0);
 module_param(compaq_irq, int, 0);
 module_param(compaq_device_id, int, 0);
 module_param(watchdog, int, 0);
+module_param(global_use_mmio, int, 0);
+module_param_array(use_mmio, int, NULL, 0);
 MODULE_PARM_DESC(debug, "3c59x debug level (0-6)");
 MODULE_PARM_DESC(options, "3c59x: Bits 0-3: media type, bit 4: bus mastering, bit 9: full duplex");
 MODULE_PARM_DESC(global_options, "3c59x: same as options, but applies to all NICs if options is unset");
@@ -950,6 +954,8 @@ MODULE_PARM_DESC(compaq_ioaddr, "3c59x P
 MODULE_PARM_DESC(compaq_irq, "3c59x PCI IRQ number (Compaq BIOS problem workaround)");
 MODULE_PARM_DESC(compaq_device_id, "3c59x PCI device ID (Compaq BIOS problem workaround)");
 MODULE_PARM_DESC(watchdog, "3c59x transmit timeout in milliseconds");
+MODULE_PARM_DESC(global_use_mmio, "3c59x: same as use_mmio, but applies to all NICs if options is unset");
+MODULE_PARM_DESC(use_mmio, "3c59x: use memory-mapped PCI I/O resource (0-1)");
 
 #ifdef CONFIG_NET_POLL_CONTROLLER
 static void poll_vortex(struct net_device *dev)
@@ -1109,15 +1115,32 @@ static int __init vortex_eisa_init (void
 static int __devinit vortex_init_one (struct pci_dev *pdev,
 				      const struct pci_device_id *ent)
 {
-	int rc;
+	int rc, unit, pci_bar;
+	struct vortex_chip_info *vci;
+	void __iomem *ioaddr;
 
 	/* wake up and enable device */		
 	rc = pci_enable_device (pdev);
 	if (rc < 0)
 		goto out;
 
-	rc = vortex_probe1 (&pdev->dev, pci_iomap(pdev, 0, 0),
-			    pdev->irq, ent->driver_data, vortex_cards_found);
+	unit = vortex_cards_found;
+
+	if (global_use_mmio < 0 && (unit >= MAX_UNITS || use_mmio[unit] < 0)) {
+		/* Determine the default if the user didn't override us */
+		vci = &vortex_info_tbl[ent->driver_data];
+		pci_bar = vci->drv_flags & (IS_CYCLONE | IS_TORNADO) ? 1 : 0;
+	} else if (unit < MAX_UNITS && use_mmio[unit] >= 0) 
+		pci_bar = use_mmio[unit] ? 1 : 0;
+	else
+		pci_bar = global_use_mmio ? 1 : 0;
+
+	ioaddr = pci_iomap(pdev, pci_bar, 0);
+	if (!ioaddr) /* If mapping fails, fall-back to BAR 0... */
+		ioaddr = pci_iomap(pdev, 0, 0);
+
+	rc = vortex_probe1(&pdev->dev, ioaddr, pdev->irq,
+			   ent->driver_data, unit);
 	if (rc < 0) {
 		pci_disable_device (pdev);
 		goto out;

^ permalink raw reply

* [patch 2.6.13 0/16] implement ETHTOOL_GPERMADDR support for a number of drivers
From: John W. Linville @ 2005-09-12 14:48 UTC (permalink / raw)
  To: linux-kernel, netdev
  Cc: jgarzik, Jon_Wetzel, john.ronciak, ganesh.venkatesan, cramerj,
	jesse.brandeburg, ayyappan.veeraiyan, mchan, davem, p_gortmaker,
	tsbogend, romieu, shemminger, rl

A collection of patches which add support for ETHTOOL_GPERMADDR to
the following drivers: 3c59x, 8139cp, 8139too, b44, bnx2, e1000,
e100, forcedeth, ixgb, ne2k-pci, pcnet32, r8169, skge, sundance,
tg3, via-rhine.

I apologize for all the small patches, but I wanted to trim the cc:
lists appropriately for each driver.

^ permalink raw reply

* [patch 2.6.13 3/3] 3c59x: fix some grammar in module parameter descriptions
From: John W. Linville @ 2005-09-12 14:48 UTC (permalink / raw)
  To: linux-kernel, netdev; +Cc: akpm, jgarzik
In-Reply-To: <09122005104853.31588@bilbo.tuxdriver.com>

Correct several (apparently cut & paste) grammatical typos in module
parameter descriptions. They seem to have originated as copies of
the description for "global_options".

Signed-off-by: John W. Linville <linville@tuxdriver.com>
---

 drivers/net/3c59x.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/3c59x.c b/drivers/net/3c59x.c
--- a/drivers/net/3c59x.c
+++ b/drivers/net/3c59x.c
@@ -943,18 +943,18 @@ MODULE_PARM_DESC(debug, "3c59x debug lev
 MODULE_PARM_DESC(options, "3c59x: Bits 0-3: media type, bit 4: bus mastering, bit 9: full duplex");
 MODULE_PARM_DESC(global_options, "3c59x: same as options, but applies to all NICs if options is unset");
 MODULE_PARM_DESC(full_duplex, "3c59x full duplex setting(s) (1)");
-MODULE_PARM_DESC(global_full_duplex, "3c59x: same as full_duplex, but applies to all NICs if options is unset");
+MODULE_PARM_DESC(global_full_duplex, "3c59x: same as full_duplex, but applies to all NICs if full_duplex is unset");
 MODULE_PARM_DESC(hw_checksums, "3c59x Hardware checksum checking by adapter(s) (0-1)");
 MODULE_PARM_DESC(flow_ctrl, "3c59x 802.3x flow control usage (PAUSE only) (0-1)");
 MODULE_PARM_DESC(enable_wol, "3c59x: Turn on Wake-on-LAN for adapter(s) (0-1)");
-MODULE_PARM_DESC(global_enable_wol, "3c59x: same as enable_wol, but applies to all NICs if options is unset");
+MODULE_PARM_DESC(global_enable_wol, "3c59x: same as enable_wol, but applies to all NICs if enable_wol is unset");
 MODULE_PARM_DESC(rx_copybreak, "3c59x copy breakpoint for copy-only-tiny-frames");
 MODULE_PARM_DESC(max_interrupt_work, "3c59x maximum events handled per interrupt");
 MODULE_PARM_DESC(compaq_ioaddr, "3c59x PCI I/O base address (Compaq BIOS problem workaround)");
 MODULE_PARM_DESC(compaq_irq, "3c59x PCI IRQ number (Compaq BIOS problem workaround)");
 MODULE_PARM_DESC(compaq_device_id, "3c59x PCI device ID (Compaq BIOS problem workaround)");
 MODULE_PARM_DESC(watchdog, "3c59x transmit timeout in milliseconds");
-MODULE_PARM_DESC(global_use_mmio, "3c59x: same as use_mmio, but applies to all NICs if options is unset");
+MODULE_PARM_DESC(global_use_mmio, "3c59x: same as use_mmio, but applies to all NICs if use_mmio is unset");
 MODULE_PARM_DESC(use_mmio, "3c59x: use memory-mapped PCI I/O resource (0-1)");
 
 #ifdef CONFIG_NET_POLL_CONTROLLER

^ permalink raw reply

* [patch 2.6.13 2/3] 3c59x: cleanup init of module parameter arrays
From: John W. Linville @ 2005-09-12 14:48 UTC (permalink / raw)
  To: linux-kernel, netdev; +Cc: akpm, jgarzik
In-Reply-To: <09122005104852.31525@bilbo.tuxdriver.com>

Beautify the array initilizations for the module parameters.

Signed-off-by: John W. Linville <linville@tuxdriver.com>
---

 drivers/net/3c59x.c |   12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/net/3c59x.c b/drivers/net/3c59x.c
--- a/drivers/net/3c59x.c
+++ b/drivers/net/3c59x.c
@@ -903,12 +903,12 @@ static void set_8021q_mode(struct net_de
 /* This driver uses 'options' to pass the media type, full-duplex flag, etc. */
 /* Option count limit only -- unlimited interfaces are supported. */
 #define MAX_UNITS 8
-static int options[MAX_UNITS] = { -1, -1, -1, -1, -1, -1, -1, -1,};
-static int full_duplex[MAX_UNITS] = {-1, -1, -1, -1, -1, -1, -1, -1};
-static int hw_checksums[MAX_UNITS] = {-1, -1, -1, -1, -1, -1, -1, -1};
-static int flow_ctrl[MAX_UNITS] = {-1, -1, -1, -1, -1, -1, -1, -1};
-static int enable_wol[MAX_UNITS] = {-1, -1, -1, -1, -1, -1, -1, -1};
-static int use_mmio[MAX_UNITS] = {-1, -1, -1, -1, -1, -1, -1, -1};
+static int options[MAX_UNITS] = { [0 ... MAX_UNITS-1] = -1 };
+static int full_duplex[MAX_UNITS] = { [0 ... MAX_UNITS-1] = -1 };
+static int hw_checksums[MAX_UNITS] = { [0 ... MAX_UNITS-1] = -1 };
+static int flow_ctrl[MAX_UNITS] = { [0 ... MAX_UNITS-1] = -1 };
+static int enable_wol[MAX_UNITS] = { [0 ... MAX_UNITS-1] = -1 };
+static int use_mmio[MAX_UNITS] = { [0 ... MAX_UNITS-1] = -1 };
 static int global_options = -1;
 static int global_full_duplex = -1;
 static int global_enable_wol = -1;

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox