Netdev List
 help / color / mirror / Atom feed
* RE: [PATCH v12 10/17] Add a hook to intercept external buffers from NIC driver.
From: Xin, Xiaohui @ 2010-10-11  7:06 UTC (permalink / raw)
  To: Eric Dumazet
  Cc: netdev@vger.kernel.org, kvm@vger.kernel.org,
	linux-kernel@vger.kernel.org, mst@redhat.com, mingo@elte.hu,
	davem@davemloft.net, herbert@gondor.apana.org.au,
	jdike@linux.intel.com
In-Reply-To: <1285856533.2615.573.camel@edumazet-laptop>

>-----Original Message-----
>From: Eric Dumazet [mailto:eric.dumazet@gmail.com]
>Sent: Thursday, September 30, 2010 10:22 PM
>To: Xin, Xiaohui
>Cc: netdev@vger.kernel.org; kvm@vger.kernel.org; linux-kernel@vger.kernel.org;
>mst@redhat.com; mingo@elte.hu; davem@davemloft.net; herbert@gondor.apana.org.au;
>jdike@linux.intel.com
>Subject: Re: [PATCH v12 10/17] Add a hook to intercept external buffers from NIC driver.
>
>Le jeudi 30 septembre 2010 à 22:04 +0800, xiaohui.xin@intel.com a
>écrit :
>> From: Xin Xiaohui <xiaohui.xin@intel.com>
>>
>> The hook is called in netif_receive_skb().
>> Signed-off-by: Xin Xiaohui <xiaohui.xin@intel.com>
>> Signed-off-by: Zhao Yu <yzhao81new@gmail.com>
>> Reviewed-by: Jeff Dike <jdike@linux.intel.com>
>> ---
>>  net/core/dev.c |   35 +++++++++++++++++++++++++++++++++++
>>  1 files changed, 35 insertions(+), 0 deletions(-)
>>
>> diff --git a/net/core/dev.c b/net/core/dev.c
>> index c11e32c..83172b8 100644
>> --- a/net/core/dev.c
>> +++ b/net/core/dev.c
>> @@ -2517,6 +2517,37 @@ err:
>>  EXPORT_SYMBOL(netdev_mp_port_prep);
>>  #endif
>>
>> +#if defined(CONFIG_MEDIATE_PASSTHRU) ||
>defined(CONFIG_MEDIATE_PASSTHRU_MODULE)
>> +/* Add a hook to intercept mediate passthru(zero-copy) packets,
>> + * and insert it to the socket queue owned by mp_port specially.
>> + */
>> +static inline struct sk_buff *handle_mpassthru(struct sk_buff *skb,
>> +					       struct packet_type **pt_prev,
>> +					       int *ret,
>> +					       struct net_device *orig_dev)
>> +{
>> +	struct mp_port *mp_port = NULL;
>> +	struct sock *sk = NULL;
>> +
>> +	if (!dev_is_mpassthru(skb->dev))
>> +		return skb;
>> +	mp_port = skb->dev->mp_port;
>> +
>> +	if (*pt_prev) {
>> +		*ret = deliver_skb(skb, *pt_prev, orig_dev);
>> +		*pt_prev = NULL;
>> +	}
>> +
>> +	sk = mp_port->sock->sk;
>> +	skb_queue_tail(&sk->sk_receive_queue, skb);
>> +	sk->sk_state_change(sk);
>> +
>> +	return NULL;
>> +}
>> +#else
>> +#define handle_mpassthru(skb, pt_prev, ret, orig_dev)     (skb)
>> +#endif
>> +
>>  /**
>>   *	netif_receive_skb - process receive buffer from network
>>   *	@skb: buffer to process
>> @@ -2598,6 +2629,10 @@ int netif_receive_skb(struct sk_buff *skb)
>>  ncls:
>>  #endif
>>
>> +	/* To intercept mediate passthru(zero-copy) packets here */
>> +	skb = handle_mpassthru(skb, &pt_prev, &ret, orig_dev);
>> +	if (!skb)
>> +		goto out;
>>  	skb = handle_bridge(skb, &pt_prev, &ret, orig_dev);
>>  	if (!skb)
>>  		goto out;
>
>This does not apply to current net-next-2.6
>
>We now have dev->rx_handler (currently for bridge or macvlan)
>
>
Ok. Thanks, will rebase to fix that.

Thanks
Xiaohui

>commit ab95bfe01f9872459c8678572ccadbf646badad0
>Author: Jiri Pirko <jpirko@redhat.com>
>Date:   Tue Jun 1 21:52:08 2010 +0000
>
>    net: replace hooks in __netif_receive_skb V5
>
>    What this patch does is it removes two receive frame hooks (for bridge and for
>    macvlan) from __netif_receive_skb. These are replaced them with a single
>    hook for both. It only supports one hook per device because it makes no
>    sense to do bridging and macvlan on the same device.
>
>    Then a network driver (of virtual netdev like macvlan or bridge) can register
>    an rx_handler for needed net device.
>
>    Signed-off-by: Jiri Pirko <jpirko@redhat.com>
>    Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
>    Signed-off-by: David S. Miller <davem@davemloft.net>
>
>


^ permalink raw reply

* RE: [PATCH v12 06/17] Use callback to deal with skb_release_data() specially.
From: Xin, Xiaohui @ 2010-10-11  7:06 UTC (permalink / raw)
  To: David Miller
  Cc: netdev@vger.kernel.org, kvm@vger.kernel.org,
	linux-kernel@vger.kernel.org, mst@redhat.com, mingo@elte.hu,
	herbert@gondor.apana.org.au, jdike@linux.intel.com
In-Reply-To: <20101001.001439.85411154.davem@davemloft.net>

>-----Original Message-----
>From: David Miller [mailto:davem@davemloft.net]
>Sent: Friday, October 01, 2010 3:15 PM
>To: Xin, Xiaohui
>Cc: netdev@vger.kernel.org; kvm@vger.kernel.org; linux-kernel@vger.kernel.org;
>mst@redhat.com; mingo@elte.hu; herbert@gondor.apana.org.au; jdike@linux.intel.com
>Subject: Re: [PATCH v12 06/17] Use callback to deal with skb_release_data() specially.
>
>From: xiaohui.xin@intel.com
>Date: Thu, 30 Sep 2010 22:04:23 +0800
>
>> @@ -197,10 +197,11 @@ struct skb_shared_info {
>>  	union skb_shared_tx tx_flags;
>>  	struct sk_buff	*frag_list;
>>  	struct skb_shared_hwtstamps hwtstamps;
>> -	skb_frag_t	frags[MAX_SKB_FRAGS];
>>  	/* Intermediate layers must ensure that destructor_arg
>>  	 * remains valid until skb destructor */
>>  	void *		destructor_arg;
>> +
>> +	skb_frag_t	frags[MAX_SKB_FRAGS];
>>  };
>>
>>  /* The structure is for a skb which pages may point to
>
>Why are you moving frags[] to the end like this?

That's to avoid the new cache miss caused by using destructor_arg in data path
like skb_release_data().
That's based on the comment from Eric Dumazet on v7 patches.

Thanks
Xiaohui

^ permalink raw reply

* Re: [PATCH 3/4] Phonet: cleanup pipe enable socket option
From: Kumar SANGHVI @ 2010-10-11  6:50 UTC (permalink / raw)
  To: Rémi Denis-Courmont; +Cc: netdev@vger.kernel.org, Rémi Denis-Courmont
In-Reply-To: <1286546523-3340-3-git-send-email-remi@remlab.net>

Hi,

On Fri, Oct 08, 2010 at 16:02:02 +0200, Rémi Denis-Courmont wrote:
> From: Rémi Denis-Courmont <remi.denis-courmont@nokia.com>
> 
> The current code works like this:
> 
>   int garbage, status;
>   socklen_t len = sizeof(status);
> 
>   /* enable pipe */
>   setsockopt(fd, SOL_PNPIPE, PNPIPE_ENABLE, &garbage, sizeof(garbage));
>   /* disable pipe */
>   setsockopt(fd, SOL_PNPIPE, PNPIPE_DISABLE, &garbage, sizeof(garbage));
>   /* get status */
>   getsockopt(fd, SOL_PNPIPE, PNPIPE_INQ, &status, &len);
> 
> ...which does not follow the usual socket option pattern. This patch
> merges all three "options" into a single gettable&settable option,
> before Linux 2.6.37 gets out:
> 
>   int status;
>   socklen_t len = sizeof(status);
> 
>   /* enable pipe */
>   status = 1;
>   setsockopt(fd, SOL_PNPIPE, PNPIPE_ENABLE, &status, sizeof(status));
>   /* disable pipe */
>   status = 0;
>   setsockopt(fd, SOL_PNPIPE, PNPIPE_ENABLE, &status, sizeof(status));
>   /* get status */
>   getsockopt(fd, SOL_PNPIPE, PNPIPE_ENABLE, &status, &len);
> 
> This also fixes the error code from EFAULT to ENOTCONN.
> 
> Signed-off-by: Rémi Denis-Courmont <remi.denis-courmont@nokia.com>
> Cc: Kumar Sanghvi <kumar.sanghvi@stericsson.com>
 
Thank you!

BR,
Kumar.

^ permalink raw reply

* Re: [PATCH 2/4] Phonet: advise against enabling the pipe controller
From: Kumar SANGHVI @ 2010-10-11  6:49 UTC (permalink / raw)
  To: Rémi Denis-Courmont; +Cc: netdev@vger.kernel.org, Rémi Denis-Courmont
In-Reply-To: <1286546523-3340-2-git-send-email-remi@remlab.net>

Hi,

On Fri, Oct 08, 2010 at 16:02:01 +0200, Rémi Denis-Courmont wrote:
> From: Rémi Denis-Courmont <remi.denis-courmont@nokia.com>
> 
> As it currently is, the new code path is not compatible with existing
> Nokia modems. This would break existing userspace for Nokia modem, such
> as the existing oFono ISI driver.
> 
> Signed-off-by: Rémi Denis-Courmont <remi.denis-courmont@nokia.com>

Yes, the pipe controller logic is not intended for existing Nokia modems
that already implement pipe controller inside them.
Thank you for putting correct warning message.

^ permalink raw reply

* [PATCH net-2.6] tg3: restore rx_dropped accounting
From: Eric Dumazet @ 2010-10-11  5:55 UTC (permalink / raw)
  To: David Miller; +Cc: netdev, Matt Carlson, Michael Chan

commit 511d22247be7 (tg3: 64 bit stats on all arches), overlooked the
rx_dropped accounting.

We use a full "struct rtnl_link_stats64" to hold rx_dropped value, but
forgot to report it in tg3_get_stats64().

Use an "unsigned long" instead to shrink "struct tg3" by 176 bytes, and
report this value to stats readers.

Increment rx_dropped counter for oversized frames.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
CC: Michael Chan <mchan@broadcom.com>
CC: Matt Carlson <mcarlson@broadcom.com>
---
 drivers/net/tg3.c |    6 ++++--
 drivers/net/tg3.h |    2 +-
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c
index bc3af78..1ec4b9e 100644
--- a/drivers/net/tg3.c
+++ b/drivers/net/tg3.c
@@ -4666,7 +4666,7 @@ static int tg3_rx(struct tg3_napi *tnapi, int budget)
 				       desc_idx, *post_ptr);
 		drop_it_no_recycle:
 			/* Other statistics kept track of by card. */
-			tp->net_stats.rx_dropped++;
+			tp->rx_dropped++;
 			goto next_pkt;
 		}
 
@@ -4726,7 +4726,7 @@ static int tg3_rx(struct tg3_napi *tnapi, int budget)
 		if (len > (tp->dev->mtu + ETH_HLEN) &&
 		    skb->protocol != htons(ETH_P_8021Q)) {
 			dev_kfree_skb(skb);
-			goto next_pkt;
+			goto drop_it_no_recycle;
 		}
 
 		if (desc->type_flags & RXD_FLAG_VLAN &&
@@ -9240,6 +9240,8 @@ static struct rtnl_link_stats64 *tg3_get_stats64(struct net_device *dev,
 	stats->rx_missed_errors = old_stats->rx_missed_errors +
 		get_stat64(&hw_stats->rx_discards);
 
+	stats->rx_dropped = tp->rx_dropped;
+
 	return stats;
 }
 
diff --git a/drivers/net/tg3.h b/drivers/net/tg3.h
index 4937bd1..be7ff13 100644
--- a/drivers/net/tg3.h
+++ b/drivers/net/tg3.h
@@ -2759,7 +2759,7 @@ struct tg3 {
 
 
 	/* begin "everything else" cacheline(s) section */
-	struct rtnl_link_stats64	net_stats;
+	unsigned long			rx_dropped;
 	struct rtnl_link_stats64	net_stats_prev;
 	struct tg3_ethtool_stats	estats;
 	struct tg3_ethtool_stats	estats_prev;



^ permalink raw reply related

* Re: [PATCH] net/fec: carrier off initially to avoid root mount failure
From: David Miller @ 2010-10-11  4:19 UTC (permalink / raw)
  To: oskar; +Cc: netdev, dan, bigeasy, hjk
In-Reply-To: <1286454630-7396-1-git-send-email-oskar@linutronix.de>

From: Oskar Schirmer <oskar@linutronix.de>
Date: Thu,  7 Oct 2010 14:30:30 +0200

> with hardware slow in negotiation, the system did freeze
> while trying to mount root on nfs at boot time.
> 
> the link state has not been initialised so network stack
> tried to start transmission right away. this caused instant
> retries, as the driver solely stated business upon link down,
> rendering the system unusable.
> 
> notify carrier off initially to prevent transmission until
> phylib will report link up.
> 
> Signed-off-by: Oskar Schirmer <oskar@linutronix.de>

I did some more investigation into this situation, and for now I'm
going to apply your patch.  It is correct, and it also matches what
the only other seemingly correct driver I could find using phylib does
(gianfar) :-) Actually, although I didn't check, bi-modal drivers
(those that only use phylib for some phy types) like tg3 probably do
the right thing here too.

Longer term I think the right thing to do might be:

1) Create some notion of "network device has managed carrier"

   This could simply be a flag bit in the netdev or netdev_ops,
   or some other kind of attribute.

2) Managed carrier devices start with netif_carrier_off(), otherwise
   the device starts with netif_carrier_on().

Then we gut all of the probe time netif_carrir_*() calls in all
of the drivers.

And hopefully it's less error prone than it is right now.

^ permalink raw reply

* Re: [PATCH] atl1c: Add support for Atheros AR8152 and AR8152
From: David Miller @ 2010-10-11  4:03 UTC (permalink / raw)
  To: ben; +Cc: lrodriguez, netdev
In-Reply-To: <1286759930.2955.285.camel@localhost>

From: Ben Hutchings <ben@decadent.org.uk>
Date: Mon, 11 Oct 2010 02:18:50 +0100

> Your commit 496c185c9495629ef1c65387cb2594578393cfe0 "atl1c: Add support
> for Atheros AR8152 and AR8152" included the following changes:
 ...
>> +		if (hw->nic_type == athr_l1c || hw->nic_type == athr_l2c_b) {
 ...
>> +	if ((hw->nic_type == athr_l1c || hw->nic_type == athr_l2c)) {
 ...
> Shouldn't the first if-statement use the same condition as the second
> i.e. matching the previously-defined hardware types athr_l1c and
> athr_l2c?

Yeah that definitely looks like a bug to me.

^ permalink raw reply

* Re: [GIT PULL net-next-2.6] IrDA 2.6.37 updates
From: David Miller @ 2010-10-11  3:57 UTC (permalink / raw)
  To: samuel; +Cc: netdev
In-Reply-To: <cover.1286756123.git.sameo@linux.intel.com>

From: Samuel Ortiz <samuel@sortiz.org>
Date: Mon, 11 Oct 2010 02:24:57 +0200

> I have 5 pending IrDA patches for the next merge window.
> The bulk of it is made of the BKL removal for irda, along with a couple of
> security fixes.
> 
> The following changes since commit 7b738b55b2ec0e95a5030037c45b3c312e385789:
> 
>   sundance: get_stats proper locking (2010-10-09 09:22:54 -0700)
> 
> are available in the git repository at:
>   git://git.kernel.org/pub/scm/linux/kernel/git/sameo/irda-2.6.git for-davem

Pulled, thanks Sam.

^ permalink raw reply

* Re: [PATCH net-next 2/5] bnx2x: save cycles in setting gso_size
From: David Miller @ 2010-10-11  3:52 UTC (permalink / raw)
  To: dmitry; +Cc: netdev, vladz, eilong
In-Reply-To: <1286749675.4669.24.camel@lb-tlvb-dmitry>

From: "Dmitry Kravkov" <dmitry@broadcom.com>
Date: Mon, 11 Oct 2010 00:27:55 +0200

> diff --git a/drivers/net/bnx2x/bnx2x_cmn.c b/drivers/net/bnx2x/bnx2x_cmn.c
> index cb2a3d6..ddf90e1 100644
> --- a/drivers/net/bnx2x/bnx2x_cmn.c
> +++ b/drivers/net/bnx2x/bnx2x_cmn.c
> @@ -277,8 +277,7 @@ static int bnx2x_fill_frag_skb(struct bnx2x *bp, struct bnx2x_fastpath *fp,
>  
>  	/* This is needed in order to enable forwarding support */
>  	if (frag_size)
> -		skb_shinfo(skb)->gso_size = min((u32)SGE_PAGE_SIZE,
> -					       max(frag_size, (u32)len_on_bd));
> +		skb_shinfo(skb)->gso_size = 1;
>  

I wonder why you need to set this here.

When you pass this packet into the stack, dev_gro_receive() is going
to set ->gro_size() unconditionally if any GRO processing is going to
occur at all.

Why do you need to set it at all?

And if we do need it, doesn't every driver that builds fragmented SKBs?
And if it's correct, why is setting a don't care value like "1" ok and
will not cause problems to whoever cares about this value?

I really want all of these questions answered, and at least lightly
explained in the commit message before I apply this patch.

Thanks.

^ permalink raw reply

* Re: [PATCH] atl1c: Add support for Atheros AR8152 and AR8152
From: Ben Hutchings @ 2010-10-11  1:18 UTC (permalink / raw)
  To: Luis R. Rodriguez; +Cc: netdev

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

Your commit 496c185c9495629ef1c65387cb2594578393cfe0 "atl1c: Add support
for Atheros AR8152 and AR8152" included the following changes:

> --- a/drivers/net/atl1c/atl1c_hw.c
> +++ b/drivers/net/atl1c/atl1c_hw.c
> @@ -70,17 +70,39 @@ static int atl1c_get_permanent_address(struct atl1c_hw *hw)
[...]
> -		/* Enable OTP CLK */
> -		if (!(otp_ctrl_data & OTP_CTRL_CLK_EN)) {
> -			otp_ctrl_data |= OTP_CTRL_CLK_EN;
> -			AT_WRITE_REG(hw, REG_OTP_CTRL, otp_ctrl_data);
> -			AT_WRITE_FLUSH(hw);
> -			msleep(1);
> +		if (hw->nic_type == athr_l1c || hw->nic_type == athr_l2c_b) {
> +			/* Enable OTP CLK */
> +			if (!(otp_ctrl_data & OTP_CTRL_CLK_EN)) {
> +				otp_ctrl_data |= OTP_CTRL_CLK_EN;
> +				AT_WRITE_REG(hw, REG_OTP_CTRL, otp_ctrl_data);
> +				AT_WRITE_FLUSH(hw);
> +				msleep(1);
> +			}
> +		}
[...]
> @@ -96,11 +118,31 @@ static int atl1c_get_permanent_address(struct atl1c_hw *hw)
>  			return -1;
>  	}
>  	/* Disable OTP_CLK */
> -	if (otp_ctrl_data & OTP_CTRL_CLK_EN) {
> -		otp_ctrl_data &= ~OTP_CTRL_CLK_EN;
> -		AT_WRITE_REG(hw, REG_OTP_CTRL, otp_ctrl_data);
> -		AT_WRITE_FLUSH(hw);
> -		msleep(1);
> +	if ((hw->nic_type == athr_l1c || hw->nic_type == athr_l2c)) {
> +		if (otp_ctrl_data & OTP_CTRL_CLK_EN) {
> +			otp_ctrl_data &= ~OTP_CTRL_CLK_EN;
> +			AT_WRITE_REG(hw, REG_OTP_CTRL, otp_ctrl_data);
> +			AT_WRITE_FLUSH(hw);
> +			msleep(1);
> +		}
> +	}

Shouldn't the first if-statement use the same condition as the second
i.e. matching the previously-defined hardware types athr_l1c and
athr_l2c?

Ben.

-- 
Ben Hutchings
Once a job is fouled up, anything done to improve it makes it worse.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 828 bytes --]

^ permalink raw reply

* Re: [RFC PATCH net-next] drivers/net Documentation/networking: Create directory intel_wired_lan
From: Joe Perches @ 2010-10-11  0:41 UTC (permalink / raw)
  To: Stephen Hemminger
  Cc: e1000-devel, Bruce Allan, Jesse Brandeburg, linux-kernel,
	Greg Rose, John Ronciak, Jeff Kirsher, netdev, PJ
In-Reply-To: <20101010144440.0d7a69f9@nehalam>

On Sun, 2010-10-10 at 14:44 -0700, Stephen Hemminger wrote:
> On Sun, 10 Oct 2010 13:42:32 -0700
> Joe Perches <joe@perches.com> wrote:
> > Perhaps it's better to move drivers from the very populated
> > drivers/net directory into vendor specific directories similar
> > to the Atheros approach used for drivers/net/wireless/ath/
> > Move intel drivers and Documentation to separate directories
> Seems like it would introduce more confusion and trouble.

It would also allow common code to be consolidated from the
various drivers.



------------------------------------------------------------------------------
Beautiful is writing same markup. Internet Explorer 9 supports
standards for HTML5, CSS3, SVG 1.1,  ECMAScript5, and DOM L2 & L3.
Spend less time writing and  rewriting code and more time creating great
experiences on the web. Be a part of the beta today.
http://p.sf.net/sfu/beautyoftheweb
_______________________________________________
E1000-devel mailing list
E1000-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel&#174; Ethernet, visit http://communities.intel.com/community/wired

^ permalink raw reply

* [PATCH net-next 5/5] irda: Fix heap memory corruption in iriap.c
From: Samuel Ortiz @ 2010-10-11  0:25 UTC (permalink / raw)
  To: David S. Miller; +Cc: netdev, Samuel Ortiz, stable
In-Reply-To: <cover.1286756123.git.sameo@linux.intel.com>

While parsing the GetValuebyClass command frame, we could potentially write
passed the skb->data pointer.

Cc: stable@kernel.org
Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
Signed-off-by: Samuel Ortiz <samuel@sortiz.org>
---
 net/irda/iriap.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/net/irda/iriap.c b/net/irda/iriap.c
index fce364c..5b743bd 100644
--- a/net/irda/iriap.c
+++ b/net/irda/iriap.c
@@ -502,7 +502,8 @@ static void iriap_getvaluebyclass_confirm(struct iriap_cb *self,
 		IRDA_DEBUG(4, "%s(), strlen=%d\n", __func__, value_len);
 
 		/* Make sure the string is null-terminated */
-		fp[n+value_len] = 0x00;
+		if (n + value_len < skb->len)
+			fp[n + value_len] = 0x00;
 		IRDA_DEBUG(4, "Got string %s\n", fp+n);
 
 		/* Will truncate to IAS_MAX_STRING bytes */
-- 
1.7.1


^ permalink raw reply related

* [PATCH net-next 4/5] irda: Fix parameter extraction stack overflow
From: Samuel Ortiz @ 2010-10-11  0:25 UTC (permalink / raw)
  To: David S. Miller; +Cc: netdev, Samuel Ortiz, stable
In-Reply-To: <cover.1286756123.git.sameo@linux.intel.com>

Cc: stable@kernel.org
Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
Signed-off-by: Samuel Ortiz <samuel@sortiz.org>
---
 net/irda/parameters.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/net/irda/parameters.c b/net/irda/parameters.c
index fc1a205..71cd38c 100644
--- a/net/irda/parameters.c
+++ b/net/irda/parameters.c
@@ -298,6 +298,8 @@ static int irda_extract_string(void *self, __u8 *buf, int len, __u8 pi,
 
 	p.pi = pi;     /* In case handler needs to know */
 	p.pl = buf[1]; /* Extract length of value */
+	if (p.pl > 32)
+		p.pl = 32;
 
 	IRDA_DEBUG(2, "%s(), pi=%#x, pl=%d\n", __func__,
 		   p.pi, p.pl);
@@ -318,7 +320,7 @@ static int irda_extract_string(void *self, __u8 *buf, int len, __u8 pi,
 		   (__u8) str[0], (__u8) str[1]);
 
 	/* Null terminate string */
-	str[p.pl+1] = '\0';
+	str[p.pl] = '\0';
 
 	p.pv.c = str; /* Handler will need to take a copy */
 
-- 
1.7.1


^ permalink raw reply related

* [PATCH net-next 3/5] irda: Test index before read in stir421x_patch_device()
From: Samuel Ortiz @ 2010-10-11  0:25 UTC (permalink / raw)
  To: David S. Miller; +Cc: netdev, Roel Kluin, Samuel Ortiz
In-Reply-To: <cover.1286756123.git.sameo@linux.intel.com>

From: Roel Kluin <roel.kluin@gmail.com>

Test whether index exceeds fw->size before reading the element

Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
Signed-off-by: Samuel Ortiz <samuel@sortiz.org>
---
 drivers/net/irda/irda-usb.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/net/irda/irda-usb.c b/drivers/net/irda/irda-usb.c
index cce82f1..e4ea619 100644
--- a/drivers/net/irda/irda-usb.c
+++ b/drivers/net/irda/irda-usb.c
@@ -1124,11 +1124,11 @@ static int stir421x_patch_device(struct irda_usb_cb *self)
                  * The actual image starts after the "STMP" keyword
                  * so forward to the firmware header tag
                  */
-                for (i = 0; (fw->data[i] != STIR421X_PATCH_END_OF_HDR_TAG) &&
-			     (i < fw->size); i++) ;
+                for (i = 0; i < fw->size && fw->data[i] !=
+			     STIR421X_PATCH_END_OF_HDR_TAG; i++) ;
                 /* here we check for the out of buffer case */
-                if ((STIR421X_PATCH_END_OF_HDR_TAG == fw->data[i]) &&
-                    (i < STIR421X_PATCH_CODE_OFFSET)) {
+                if (i < STIR421X_PATCH_CODE_OFFSET && i < fw->size &&
+				STIR421X_PATCH_END_OF_HDR_TAG == fw->data[i]) {
                         if (!memcmp(fw->data + i + 1, STIR421X_PATCH_STMP_TAG,
                                     sizeof(STIR421X_PATCH_STMP_TAG) - 1)) {
 
-- 
1.7.1


^ permalink raw reply related

* [PATCH net-next 2/5] irda: Remove BKL instances from irnet
From: Samuel Ortiz @ 2010-10-11  0:24 UTC (permalink / raw)
  To: David S. Miller; +Cc: netdev, Samuel Ortiz
In-Reply-To: <cover.1286756123.git.sameo@linux.intel.com>

The code intends to lock the irnet_socket, so adding a mutex to it allows
for a complet BKL removal.

Signed-off-by: Samuel Ortiz <samuel@sortiz.org>
---
 net/irda/irnet/irnet.h     |    2 +
 net/irda/irnet/irnet_ppp.c |   61 ++++++++++++++++++++++++++++++-------------
 2 files changed, 44 insertions(+), 19 deletions(-)

diff --git a/net/irda/irnet/irnet.h b/net/irda/irnet/irnet.h
index 4300df3..0d82ff5 100644
--- a/net/irda/irnet/irnet.h
+++ b/net/irda/irnet/irnet.h
@@ -458,6 +458,8 @@ typedef struct irnet_socket
   int			disco_index;	/* Last read in the discovery log */
   int			disco_number;	/* Size of the discovery log */
 
+  struct mutex		lock;
+
 } irnet_socket;
 
 /*
diff --git a/net/irda/irnet/irnet_ppp.c b/net/irda/irnet/irnet_ppp.c
index 69f1fa6..0993bd4 100644
--- a/net/irda/irnet/irnet_ppp.c
+++ b/net/irda/irnet/irnet_ppp.c
@@ -480,7 +480,6 @@ dev_irnet_open(struct inode *	inode,
   ap = kzalloc(sizeof(*ap), GFP_KERNEL);
   DABORT(ap == NULL, -ENOMEM, FS_ERROR, "Can't allocate struct irnet...\n");
 
-  lock_kernel();
   /* initialize the irnet structure */
   ap->file = file;
 
@@ -502,18 +501,20 @@ dev_irnet_open(struct inode *	inode,
     {
       DERROR(FS_ERROR, "Can't setup IrDA link...\n");
       kfree(ap);
-      unlock_kernel();
+
       return err;
     }
 
   /* For the control channel */
   ap->event_index = irnet_events.index;	/* Cancel all past events */
 
+  mutex_init(&ap->lock);
+
   /* Put our stuff where we will be able to find it later */
   file->private_data = ap;
 
   DEXIT(FS_TRACE, " - ap=0x%p\n", ap);
-  unlock_kernel();
+
   return 0;
 }
 
@@ -664,7 +665,9 @@ dev_irnet_ioctl(
 	{
 	  DEBUG(FS_INFO, "Entering PPP discipline.\n");
 	  /* PPP channel setup (ap->chan in configued in dev_irnet_open())*/
-	  lock_kernel();
+	  if (mutex_lock_interruptible(&ap->lock))
+		  return -EINTR;
+
 	  err = ppp_register_channel(&ap->chan);
 	  if(err == 0)
 	    {
@@ -677,14 +680,17 @@ dev_irnet_ioctl(
 	    }
 	  else
 	    DERROR(FS_ERROR, "Can't setup PPP channel...\n");
-          unlock_kernel();
+
+          mutex_unlock(&ap->lock);
 	}
       else
 	{
 	  /* In theory, should be N_TTY */
 	  DEBUG(FS_INFO, "Exiting PPP discipline.\n");
 	  /* Disconnect from the generic PPP layer */
-	  lock_kernel();
+	  if (mutex_lock_interruptible(&ap->lock))
+		  return -EINTR;
+
 	  if(ap->ppp_open)
 	    {
 	      ap->ppp_open = 0;
@@ -693,24 +699,31 @@ dev_irnet_ioctl(
 	  else
 	    DERROR(FS_ERROR, "Channel not registered !\n");
 	  err = 0;
-	  unlock_kernel();
+
+	  mutex_unlock(&ap->lock);
 	}
       break;
 
       /* Query PPP channel and unit number */
     case PPPIOCGCHAN:
-      lock_kernel();
+      if (mutex_lock_interruptible(&ap->lock))
+	      return -EINTR;
+
       if(ap->ppp_open && !put_user(ppp_channel_index(&ap->chan),
 						(int __user *)argp))
 	err = 0;
-      unlock_kernel();
+
+      mutex_unlock(&ap->lock);
       break;
     case PPPIOCGUNIT:
-      lock_kernel();
+      if (mutex_lock_interruptible(&ap->lock))
+	      return -EINTR;
+
       if(ap->ppp_open && !put_user(ppp_unit_number(&ap->chan),
 						(int __user *)argp))
         err = 0;
-      unlock_kernel();
+
+      mutex_unlock(&ap->lock);
       break;
 
       /* All these ioctls can be passed both directly and from ppp_generic,
@@ -730,9 +743,12 @@ dev_irnet_ioctl(
       if(!capable(CAP_NET_ADMIN))
 	err = -EPERM;
       else {
-	lock_kernel();
+	if (mutex_lock_interruptible(&ap->lock))
+	      return -EINTR;
+
 	err = ppp_irnet_ioctl(&ap->chan, cmd, arg);
-	unlock_kernel();
+
+	mutex_unlock(&ap->lock);
       }
       break;
 
@@ -740,7 +756,9 @@ dev_irnet_ioctl(
       /* Get termios */
     case TCGETS:
       DEBUG(FS_INFO, "Get termios.\n");
-      lock_kernel();
+      if (mutex_lock_interruptible(&ap->lock))
+	      return -EINTR;
+
 #ifndef TCGETS2
       if(!kernel_termios_to_user_termios((struct termios __user *)argp, &ap->termios))
 	err = 0;
@@ -748,12 +766,15 @@ dev_irnet_ioctl(
       if(kernel_termios_to_user_termios_1((struct termios __user *)argp, &ap->termios))
 	err = 0;
 #endif
-      unlock_kernel();
+
+      mutex_unlock(&ap->lock);
       break;
       /* Set termios */
     case TCSETSF:
       DEBUG(FS_INFO, "Set termios.\n");
-      lock_kernel();
+      if (mutex_lock_interruptible(&ap->lock))
+	      return -EINTR;
+
 #ifndef TCGETS2
       if(!user_termios_to_kernel_termios(&ap->termios, (struct termios __user *)argp))
 	err = 0;
@@ -761,7 +782,8 @@ dev_irnet_ioctl(
       if(!user_termios_to_kernel_termios_1(&ap->termios, (struct termios __user *)argp))
 	err = 0;
 #endif
-      unlock_kernel();
+
+      mutex_unlock(&ap->lock);
       break;
 
       /* Set DTR/RTS */
@@ -784,9 +806,10 @@ dev_irnet_ioctl(
        * We should also worry that we don't accept junk here and that
        * we get rid of our own buffers */
 #ifdef FLUSH_TO_PPP
-      lock_kernel();
+      if (mutex_lock_interruptible(&ap->lock))
+	      return -EINTR;
       ppp_output_wakeup(&ap->chan);
-      unlock_kernel();
+      mutex_unlock(&ap->lock);
 #endif /* FLUSH_TO_PPP */
       err = 0;
       break;
-- 
1.7.1


^ permalink raw reply related

* [PATCH net-next 1/5] irda: Remove BKL instances from af_irda.c
From: Samuel Ortiz @ 2010-10-11  0:24 UTC (permalink / raw)
  To: David S. Miller; +Cc: netdev, Samuel Ortiz
In-Reply-To: <cover.1286756123.git.sameo@linux.intel.com>

Most of the times, lock_kernel() was pointless or could simply be replaced
by lock_sock().

Signed-off-by: Samuel Ortiz <samuel@sortiz.org>
---
 net/irda/af_irda.c |  370 +++++++++++++++++++++++++++------------------------
 1 files changed, 196 insertions(+), 174 deletions(-)

diff --git a/net/irda/af_irda.c b/net/irda/af_irda.c
index bf36351..7f09798 100644
--- a/net/irda/af_irda.c
+++ b/net/irda/af_irda.c
@@ -715,14 +715,11 @@ static int irda_getname(struct socket *sock, struct sockaddr *uaddr,
 	struct sockaddr_irda saddr;
 	struct sock *sk = sock->sk;
 	struct irda_sock *self = irda_sk(sk);
-	int err;
 
-	lock_kernel();
 	memset(&saddr, 0, sizeof(saddr));
 	if (peer) {
-		err  = -ENOTCONN;
 		if (sk->sk_state != TCP_ESTABLISHED)
-			goto out;
+			return -ENOTCONN;
 
 		saddr.sir_family = AF_IRDA;
 		saddr.sir_lsap_sel = self->dtsap_sel;
@@ -739,10 +736,8 @@ static int irda_getname(struct socket *sock, struct sockaddr *uaddr,
 	/* uaddr_len come to us uninitialised */
 	*uaddr_len = sizeof (struct sockaddr_irda);
 	memcpy(uaddr, &saddr, *uaddr_len);
-	err = 0;
-out:
-	unlock_kernel();
-	return err;
+
+	return 0;
 }
 
 /*
@@ -758,7 +753,8 @@ static int irda_listen(struct socket *sock, int backlog)
 
 	IRDA_DEBUG(2, "%s()\n", __func__);
 
-	lock_kernel();
+	lock_sock(sk);
+
 	if ((sk->sk_type != SOCK_STREAM) && (sk->sk_type != SOCK_SEQPACKET) &&
 	    (sk->sk_type != SOCK_DGRAM))
 		goto out;
@@ -770,7 +766,7 @@ static int irda_listen(struct socket *sock, int backlog)
 		err = 0;
 	}
 out:
-	unlock_kernel();
+	release_sock(sk);
 
 	return err;
 }
@@ -793,7 +789,7 @@ static int irda_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
 	if (addr_len != sizeof(struct sockaddr_irda))
 		return -EINVAL;
 
-	lock_kernel();
+	lock_sock(sk);
 #ifdef CONFIG_IRDA_ULTRA
 	/* Special care for Ultra sockets */
 	if ((sk->sk_type == SOCK_DGRAM) &&
@@ -836,7 +832,7 @@ static int irda_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
 
 	err = 0;
 out:
-	unlock_kernel();
+	release_sock(sk);
 	return err;
 }
 
@@ -856,12 +852,13 @@ static int irda_accept(struct socket *sock, struct socket *newsock, int flags)
 
 	IRDA_DEBUG(2, "%s()\n", __func__);
 
-	lock_kernel();
 	err = irda_create(sock_net(sk), newsock, sk->sk_protocol, 0);
 	if (err)
-		goto out;
+		return err;
 
 	err = -EINVAL;
+
+	lock_sock(sk);
 	if (sock->state != SS_UNCONNECTED)
 		goto out;
 
@@ -947,7 +944,7 @@ static int irda_accept(struct socket *sock, struct socket *newsock, int flags)
 	irda_connect_response(new);
 	err = 0;
 out:
-	unlock_kernel();
+	release_sock(sk);
 	return err;
 }
 
@@ -981,7 +978,7 @@ static int irda_connect(struct socket *sock, struct sockaddr *uaddr,
 
 	IRDA_DEBUG(2, "%s(%p)\n", __func__, self);
 
-	lock_kernel();
+	lock_sock(sk);
 	/* Don't allow connect for Ultra sockets */
 	err = -ESOCKTNOSUPPORT;
 	if ((sk->sk_type == SOCK_DGRAM) && (sk->sk_protocol == IRDAPROTO_ULTRA))
@@ -1072,6 +1069,8 @@ static int irda_connect(struct socket *sock, struct sockaddr *uaddr,
 
 	if (sk->sk_state != TCP_ESTABLISHED) {
 		sock->state = SS_UNCONNECTED;
+		if (sk->sk_prot->disconnect(sk, flags))
+			sock->state = SS_DISCONNECTING;
 		err = sock_error(sk);
 		if (!err)
 			err = -ECONNRESET;
@@ -1084,7 +1083,7 @@ static int irda_connect(struct socket *sock, struct sockaddr *uaddr,
 	self->saddr = irttp_get_saddr(self->tsap);
 	err = 0;
 out:
-	unlock_kernel();
+	release_sock(sk);
 	return err;
 }
 
@@ -1231,7 +1230,6 @@ static int irda_release(struct socket *sock)
 	if (sk == NULL)
 		return 0;
 
-	lock_kernel();
 	lock_sock(sk);
 	sk->sk_state       = TCP_CLOSE;
 	sk->sk_shutdown   |= SEND_SHUTDOWN;
@@ -1250,7 +1248,6 @@ static int irda_release(struct socket *sock)
 	/* Destroy networking socket if we are the last reference on it,
 	 * i.e. if(sk->sk_refcnt == 0) -> sk_free(sk) */
 	sock_put(sk);
-	unlock_kernel();
 
 	/* Notes on socket locking and deallocation... - Jean II
 	 * In theory we should put pairs of sock_hold() / sock_put() to
@@ -1298,7 +1295,6 @@ static int irda_sendmsg(struct kiocb *iocb, struct socket *sock,
 
 	IRDA_DEBUG(4, "%s(), len=%zd\n", __func__, len);
 
-	lock_kernel();
 	/* Note : socket.c set MSG_EOR on SEQPACKET sockets */
 	if (msg->msg_flags & ~(MSG_DONTWAIT | MSG_EOR | MSG_CMSG_COMPAT |
 			       MSG_NOSIGNAL)) {
@@ -1306,6 +1302,8 @@ static int irda_sendmsg(struct kiocb *iocb, struct socket *sock,
 		goto out;
 	}
 
+	lock_sock(sk);
+
 	if (sk->sk_shutdown & SEND_SHUTDOWN)
 		goto out_err;
 
@@ -1361,14 +1359,14 @@ static int irda_sendmsg(struct kiocb *iocb, struct socket *sock,
 		goto out_err;
 	}
 
-	unlock_kernel();
+	release_sock(sk);
 	/* Tell client how much data we actually sent */
 	return len;
 
 out_err:
 	err = sk_stream_error(sk, msg->msg_flags, err);
 out:
-	unlock_kernel();
+	release_sock(sk);
 	return err;
 
 }
@@ -1390,14 +1388,10 @@ static int irda_recvmsg_dgram(struct kiocb *iocb, struct socket *sock,
 
 	IRDA_DEBUG(4, "%s()\n", __func__);
 
-	lock_kernel();
-	if ((err = sock_error(sk)) < 0)
-		goto out;
-
 	skb = skb_recv_datagram(sk, flags & ~MSG_DONTWAIT,
 				flags & MSG_DONTWAIT, &err);
 	if (!skb)
-		goto out;
+		return err;
 
 	skb_reset_transport_header(skb);
 	copied = skb->len;
@@ -1425,12 +1419,8 @@ static int irda_recvmsg_dgram(struct kiocb *iocb, struct socket *sock,
 			irttp_flow_request(self->tsap, FLOW_START);
 		}
 	}
-	unlock_kernel();
-	return copied;
 
-out:
-	unlock_kernel();
-	return err;
+	return copied;
 }
 
 /*
@@ -1448,17 +1438,15 @@ static int irda_recvmsg_stream(struct kiocb *iocb, struct socket *sock,
 
 	IRDA_DEBUG(3, "%s()\n", __func__);
 
-	lock_kernel();
 	if ((err = sock_error(sk)) < 0)
-		goto out;
+		return err;
 
-	err = -EINVAL;
 	if (sock->flags & __SO_ACCEPTCON)
-		goto out;
+		return -EINVAL;
 
 	err =-EOPNOTSUPP;
 	if (flags & MSG_OOB)
-		goto out;
+		return -EOPNOTSUPP;
 
 	err = 0;
 	target = sock_rcvlowat(sk, flags & MSG_WAITALL, size);
@@ -1500,7 +1488,7 @@ static int irda_recvmsg_stream(struct kiocb *iocb, struct socket *sock,
 			finish_wait(sk_sleep(sk), &wait);
 
 			if (err)
-				goto out;
+				return err;
 			if (sk->sk_shutdown & RCV_SHUTDOWN)
 				break;
 
@@ -1553,9 +1541,7 @@ static int irda_recvmsg_stream(struct kiocb *iocb, struct socket *sock,
 		}
 	}
 
-out:
-	unlock_kernel();
-	return err ? : copied;
+	return copied;
 }
 
 /*
@@ -1573,13 +1559,12 @@ static int irda_sendmsg_dgram(struct kiocb *iocb, struct socket *sock,
 	struct sk_buff *skb;
 	int err;
 
-	lock_kernel();
-
 	IRDA_DEBUG(4, "%s(), len=%zd\n", __func__, len);
 
-	err = -EINVAL;
 	if (msg->msg_flags & ~(MSG_DONTWAIT|MSG_CMSG_COMPAT))
-		goto out;
+		return -EINVAL;
+
+	lock_sock(sk);
 
 	if (sk->sk_shutdown & SEND_SHUTDOWN) {
 		send_sig(SIGPIPE, current, 0);
@@ -1630,10 +1615,12 @@ static int irda_sendmsg_dgram(struct kiocb *iocb, struct socket *sock,
 		IRDA_DEBUG(0, "%s(), err=%d\n", __func__, err);
 		goto out;
 	}
-	unlock_kernel();
+
+	release_sock(sk);
 	return len;
+
 out:
-	unlock_kernel();
+	release_sock(sk);
 	return err;
 }
 
@@ -1656,10 +1643,11 @@ static int irda_sendmsg_ultra(struct kiocb *iocb, struct socket *sock,
 
 	IRDA_DEBUG(4, "%s(), len=%zd\n", __func__, len);
 
-	lock_kernel();
 	err = -EINVAL;
 	if (msg->msg_flags & ~(MSG_DONTWAIT|MSG_CMSG_COMPAT))
-		goto out;
+		return -EINVAL;
+
+	lock_sock(sk);
 
 	err = -EPIPE;
 	if (sk->sk_shutdown & SEND_SHUTDOWN) {
@@ -1732,7 +1720,7 @@ static int irda_sendmsg_ultra(struct kiocb *iocb, struct socket *sock,
 	if (err)
 		IRDA_DEBUG(0, "%s(), err=%d\n", __func__, err);
 out:
-	unlock_kernel();
+	release_sock(sk);
 	return err ? : len;
 }
 #endif /* CONFIG_IRDA_ULTRA */
@@ -1747,7 +1735,7 @@ static int irda_shutdown(struct socket *sock, int how)
 
 	IRDA_DEBUG(1, "%s(%p)\n", __func__, self);
 
-	lock_kernel();
+	lock_sock(sk);
 
 	sk->sk_state       = TCP_CLOSE;
 	sk->sk_shutdown   |= SEND_SHUTDOWN;
@@ -1769,7 +1757,7 @@ static int irda_shutdown(struct socket *sock, int how)
 	self->daddr = DEV_ADDR_ANY;	/* Until we get re-connected */
 	self->saddr = 0x0;		/* so IrLMP assign us any link */
 
-	unlock_kernel();
+	release_sock(sk);
 
 	return 0;
 }
@@ -1786,7 +1774,6 @@ static unsigned int irda_poll(struct file * file, struct socket *sock,
 
 	IRDA_DEBUG(4, "%s()\n", __func__);
 
-	lock_kernel();
 	poll_wait(file, sk_sleep(sk), wait);
 	mask = 0;
 
@@ -1834,20 +1821,8 @@ static unsigned int irda_poll(struct file * file, struct socket *sock,
 	default:
 		break;
 	}
-	unlock_kernel();
-	return mask;
-}
 
-static unsigned int irda_datagram_poll(struct file *file, struct socket *sock,
-			   poll_table *wait)
-{
-	int err;
-
-	lock_kernel();
-	err = datagram_poll(file, sock, wait);
-	unlock_kernel();
-
-	return err;
+	return mask;
 }
 
 /*
@@ -1860,7 +1835,6 @@ static int irda_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
 
 	IRDA_DEBUG(4, "%s(), cmd=%#x\n", __func__, cmd);
 
-	lock_kernel();
 	err = -EINVAL;
 	switch (cmd) {
 	case TIOCOUTQ: {
@@ -1903,7 +1877,6 @@ static int irda_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
 		IRDA_DEBUG(1, "%s(), doing device ioctl!\n", __func__);
 		err = -ENOIOCTLCMD;
 	}
-	unlock_kernel();
 
 	return err;
 }
@@ -1927,7 +1900,7 @@ static int irda_compat_ioctl(struct socket *sock, unsigned int cmd, unsigned lon
  *    Set some options for the socket
  *
  */
-static int __irda_setsockopt(struct socket *sock, int level, int optname,
+static int irda_setsockopt(struct socket *sock, int level, int optname,
 			   char __user *optval, unsigned int optlen)
 {
 	struct sock *sk = sock->sk;
@@ -1935,13 +1908,15 @@ static int __irda_setsockopt(struct socket *sock, int level, int optname,
 	struct irda_ias_set    *ias_opt;
 	struct ias_object      *ias_obj;
 	struct ias_attrib *	ias_attr;	/* Attribute in IAS object */
-	int opt, free_ias = 0;
+	int opt, free_ias = 0, err = 0;
 
 	IRDA_DEBUG(2, "%s(%p)\n", __func__, self);
 
 	if (level != SOL_IRLMP)
 		return -ENOPROTOOPT;
 
+	lock_sock(sk);
+
 	switch (optname) {
 	case IRLMP_IAS_SET:
 		/* The user want to add an attribute to an existing IAS object
@@ -1951,17 +1926,22 @@ static int __irda_setsockopt(struct socket *sock, int level, int optname,
 		 * create the right attribute...
 		 */
 
-		if (optlen != sizeof(struct irda_ias_set))
-			return -EINVAL;
+		if (optlen != sizeof(struct irda_ias_set)) {
+			err = -EINVAL;
+			goto out;
+		}
 
 		ias_opt = kmalloc(sizeof(struct irda_ias_set), GFP_ATOMIC);
-		if (ias_opt == NULL)
-			return -ENOMEM;
+		if (ias_opt == NULL) {
+			err = -ENOMEM;
+			goto out;
+		}
 
 		/* Copy query to the driver. */
 		if (copy_from_user(ias_opt, optval, optlen)) {
 			kfree(ias_opt);
-			return -EFAULT;
+			err = -EFAULT;
+			goto out;
 		}
 
 		/* Find the object we target.
@@ -1971,7 +1951,8 @@ static int __irda_setsockopt(struct socket *sock, int level, int optname,
 		if(ias_opt->irda_class_name[0] == '\0') {
 			if(self->ias_obj == NULL) {
 				kfree(ias_opt);
-				return -EINVAL;
+				err = -EINVAL;
+				goto out;
 			}
 			ias_obj = self->ias_obj;
 		} else
@@ -1983,7 +1964,8 @@ static int __irda_setsockopt(struct socket *sock, int level, int optname,
 		if((!capable(CAP_NET_ADMIN)) &&
 		   ((ias_obj == NULL) || (ias_obj != self->ias_obj))) {
 			kfree(ias_opt);
-			return -EPERM;
+			err = -EPERM;
+			goto out;
 		}
 
 		/* If the object doesn't exist, create it */
@@ -1993,7 +1975,8 @@ static int __irda_setsockopt(struct socket *sock, int level, int optname,
 						   jiffies);
 			if (ias_obj == NULL) {
 				kfree(ias_opt);
-				return -ENOMEM;
+				err = -ENOMEM;
+				goto out;
 			}
 			free_ias = 1;
 		}
@@ -2005,7 +1988,8 @@ static int __irda_setsockopt(struct socket *sock, int level, int optname,
 				kfree(ias_obj->name);
 				kfree(ias_obj);
 			}
-			return -EINVAL;
+			err = -EINVAL;
+			goto out;
 		}
 
 		/* Look at the type */
@@ -2028,7 +2012,8 @@ static int __irda_setsockopt(struct socket *sock, int level, int optname,
 					kfree(ias_obj);
 				}
 
-				return -EINVAL;
+				err = -EINVAL;
+				goto out;
 			}
 			/* Add an octet sequence attribute */
 			irias_add_octseq_attrib(
@@ -2060,7 +2045,8 @@ static int __irda_setsockopt(struct socket *sock, int level, int optname,
 				kfree(ias_obj->name);
 				kfree(ias_obj);
 			}
-			return -EINVAL;
+			err = -EINVAL;
+			goto out;
 		}
 		irias_insert_object(ias_obj);
 		kfree(ias_opt);
@@ -2071,17 +2057,22 @@ static int __irda_setsockopt(struct socket *sock, int level, int optname,
 		 * object is not owned by the kernel and delete it.
 		 */
 
-		if (optlen != sizeof(struct irda_ias_set))
-			return -EINVAL;
+		if (optlen != sizeof(struct irda_ias_set)) {
+			err = -EINVAL;
+			goto out;
+		}
 
 		ias_opt = kmalloc(sizeof(struct irda_ias_set), GFP_ATOMIC);
-		if (ias_opt == NULL)
-			return -ENOMEM;
+		if (ias_opt == NULL) {
+			err = -ENOMEM;
+			goto out;
+		}
 
 		/* Copy query to the driver. */
 		if (copy_from_user(ias_opt, optval, optlen)) {
 			kfree(ias_opt);
-			return -EFAULT;
+			err = -EFAULT;
+			goto out;
 		}
 
 		/* Find the object we target.
@@ -2094,7 +2085,8 @@ static int __irda_setsockopt(struct socket *sock, int level, int optname,
 			ias_obj = irias_find_object(ias_opt->irda_class_name);
 		if(ias_obj == (struct ias_object *) NULL) {
 			kfree(ias_opt);
-			return -EINVAL;
+			err = -EINVAL;
+			goto out;
 		}
 
 		/* Only ROOT can mess with the global IAS database.
@@ -2103,7 +2095,8 @@ static int __irda_setsockopt(struct socket *sock, int level, int optname,
 		if((!capable(CAP_NET_ADMIN)) &&
 		   ((ias_obj == NULL) || (ias_obj != self->ias_obj))) {
 			kfree(ias_opt);
-			return -EPERM;
+			err = -EPERM;
+			goto out;
 		}
 
 		/* Find the attribute (in the object) we target */
@@ -2111,14 +2104,16 @@ static int __irda_setsockopt(struct socket *sock, int level, int optname,
 					     ias_opt->irda_attrib_name);
 		if(ias_attr == (struct ias_attrib *) NULL) {
 			kfree(ias_opt);
-			return -EINVAL;
+			err = -EINVAL;
+			goto out;
 		}
 
 		/* Check is the user space own the object */
 		if(ias_attr->value->owner != IAS_USER_ATTR) {
 			IRDA_DEBUG(1, "%s(), attempting to delete a kernel attribute\n", __func__);
 			kfree(ias_opt);
-			return -EPERM;
+			err = -EPERM;
+			goto out;
 		}
 
 		/* Remove the attribute (and maybe the object) */
@@ -2126,11 +2121,15 @@ static int __irda_setsockopt(struct socket *sock, int level, int optname,
 		kfree(ias_opt);
 		break;
 	case IRLMP_MAX_SDU_SIZE:
-		if (optlen < sizeof(int))
-			return -EINVAL;
+		if (optlen < sizeof(int)) {
+			err = -EINVAL;
+			goto out;
+		}
 
-		if (get_user(opt, (int __user *)optval))
-			return -EFAULT;
+		if (get_user(opt, (int __user *)optval)) {
+			err = -EFAULT;
+			goto out;
+		}
 
 		/* Only possible for a seqpacket service (TTP with SAR) */
 		if (sk->sk_type != SOCK_SEQPACKET) {
@@ -2140,16 +2139,21 @@ static int __irda_setsockopt(struct socket *sock, int level, int optname,
 		} else {
 			IRDA_WARNING("%s: not allowed to set MAXSDUSIZE for this socket type!\n",
 				     __func__);
-			return -ENOPROTOOPT;
+			err = -ENOPROTOOPT;
+			goto out;
 		}
 		break;
 	case IRLMP_HINTS_SET:
-		if (optlen < sizeof(int))
-			return -EINVAL;
+		if (optlen < sizeof(int)) {
+			err = -EINVAL;
+			goto out;
+		}
 
 		/* The input is really a (__u8 hints[2]), easier as an int */
-		if (get_user(opt, (int __user *)optval))
-			return -EFAULT;
+		if (get_user(opt, (int __user *)optval)) {
+			err = -EFAULT;
+			goto out;
+		}
 
 		/* Unregister any old registration */
 		if (self->skey)
@@ -2163,12 +2167,16 @@ static int __irda_setsockopt(struct socket *sock, int level, int optname,
 		 * making a discovery (nodes which don't match any hint
 		 * bit in the mask are not reported).
 		 */
-		if (optlen < sizeof(int))
-			return -EINVAL;
+		if (optlen < sizeof(int)) {
+			err = -EINVAL;
+			goto out;
+		}
 
 		/* The input is really a (__u8 hints[2]), easier as an int */
-		if (get_user(opt, (int __user *)optval))
-			return -EFAULT;
+		if (get_user(opt, (int __user *)optval)) {
+			err = -EFAULT;
+			goto out;
+		}
 
 		/* Set the new hint mask */
 		self->mask.word = (__u16) opt;
@@ -2180,19 +2188,12 @@ static int __irda_setsockopt(struct socket *sock, int level, int optname,
 
 		break;
 	default:
-		return -ENOPROTOOPT;
+		err = -ENOPROTOOPT;
+		break;
 	}
-	return 0;
-}
 
-static int irda_setsockopt(struct socket *sock, int level, int optname,
-			   char __user *optval, unsigned int optlen)
-{
-	int err;
-
-	lock_kernel();
-	err = __irda_setsockopt(sock, level, optname, optval, optlen);
-	unlock_kernel();
+out:
+	release_sock(sk);
 
 	return err;
 }
@@ -2249,7 +2250,7 @@ static int irda_extract_ias_value(struct irda_ias_set *ias_opt,
 /*
  * Function irda_getsockopt (sock, level, optname, optval, optlen)
  */
-static int __irda_getsockopt(struct socket *sock, int level, int optname,
+static int irda_getsockopt(struct socket *sock, int level, int optname,
 			   char __user *optval, int __user *optlen)
 {
 	struct sock *sk = sock->sk;
@@ -2262,7 +2263,7 @@ static int __irda_getsockopt(struct socket *sock, int level, int optname,
 	int daddr = DEV_ADDR_ANY;	/* Dest address for IAS queries */
 	int val = 0;
 	int len = 0;
-	int err;
+	int err = 0;
 	int offset, total;
 
 	IRDA_DEBUG(2, "%s(%p)\n", __func__, self);
@@ -2276,15 +2277,18 @@ static int __irda_getsockopt(struct socket *sock, int level, int optname,
 	if(len < 0)
 		return -EINVAL;
 
+	lock_sock(sk);
+
 	switch (optname) {
 	case IRLMP_ENUMDEVICES:
 		/* Ask lmp for the current discovery log */
 		discoveries = irlmp_get_discoveries(&list.len, self->mask.word,
 						    self->nslots);
 		/* Check if the we got some results */
-		if (discoveries == NULL)
-			return -EAGAIN;		/* Didn't find any devices */
-		err = 0;
+		if (discoveries == NULL) {
+			err = -EAGAIN;
+			goto out;		/* Didn't find any devices */
+		}
 
 		/* Write total list length back to client */
 		if (copy_to_user(optval, &list,
@@ -2297,8 +2301,7 @@ static int __irda_getsockopt(struct socket *sock, int level, int optname,
 			sizeof(struct irda_device_info);
 
 		/* Copy the list itself - watch for overflow */
-		if(list.len > 2048)
-		{
+		if (list.len > 2048) {
 			err = -EINVAL;
 			goto bed;
 		}
@@ -2314,17 +2317,20 @@ static int __irda_getsockopt(struct socket *sock, int level, int optname,
 bed:
 		/* Free up our buffer */
 		kfree(discoveries);
-		if (err)
-			return err;
 		break;
 	case IRLMP_MAX_SDU_SIZE:
 		val = self->max_data_size;
 		len = sizeof(int);
-		if (put_user(len, optlen))
-			return -EFAULT;
+		if (put_user(len, optlen)) {
+			err = -EFAULT;
+			goto out;
+		}
+
+		if (copy_to_user(optval, &val, len)) {
+			err = -EFAULT;
+			goto out;
+		}
 
-		if (copy_to_user(optval, &val, len))
-			return -EFAULT;
 		break;
 	case IRLMP_IAS_GET:
 		/* The user want an object from our local IAS database.
@@ -2332,17 +2338,22 @@ bed:
 		 * that we found */
 
 		/* Check that the user has allocated the right space for us */
-		if (len != sizeof(struct irda_ias_set))
-			return -EINVAL;
+		if (len != sizeof(struct irda_ias_set)) {
+			err = -EINVAL;
+			goto out;
+		}
 
 		ias_opt = kmalloc(sizeof(struct irda_ias_set), GFP_ATOMIC);
-		if (ias_opt == NULL)
-			return -ENOMEM;
+		if (ias_opt == NULL) {
+			err = -ENOMEM;
+			goto out;
+		}
 
 		/* Copy query to the driver. */
 		if (copy_from_user(ias_opt, optval, len)) {
 			kfree(ias_opt);
-			return -EFAULT;
+			err = -EFAULT;
+			goto out;
 		}
 
 		/* Find the object we target.
@@ -2355,7 +2366,8 @@ bed:
 			ias_obj = irias_find_object(ias_opt->irda_class_name);
 		if(ias_obj == (struct ias_object *) NULL) {
 			kfree(ias_opt);
-			return -EINVAL;
+			err = -EINVAL;
+			goto out;
 		}
 
 		/* Find the attribute (in the object) we target */
@@ -2363,21 +2375,23 @@ bed:
 					     ias_opt->irda_attrib_name);
 		if(ias_attr == (struct ias_attrib *) NULL) {
 			kfree(ias_opt);
-			return -EINVAL;
+			err = -EINVAL;
+			goto out;
 		}
 
 		/* Translate from internal to user structure */
 		err = irda_extract_ias_value(ias_opt, ias_attr->value);
 		if(err) {
 			kfree(ias_opt);
-			return err;
+			goto out;
 		}
 
 		/* Copy reply to the user */
 		if (copy_to_user(optval, ias_opt,
 				 sizeof(struct irda_ias_set))) {
 			kfree(ias_opt);
-			return -EFAULT;
+			err = -EFAULT;
+			goto out;
 		}
 		/* Note : don't need to put optlen, we checked it */
 		kfree(ias_opt);
@@ -2388,17 +2402,22 @@ bed:
 		 * then wait for the answer to come back. */
 
 		/* Check that the user has allocated the right space for us */
-		if (len != sizeof(struct irda_ias_set))
-			return -EINVAL;
+		if (len != sizeof(struct irda_ias_set)) {
+			err = -EINVAL;
+			goto out;
+		}
 
 		ias_opt = kmalloc(sizeof(struct irda_ias_set), GFP_ATOMIC);
-		if (ias_opt == NULL)
-			return -ENOMEM;
+		if (ias_opt == NULL) {
+			err = -ENOMEM;
+			goto out;
+		}
 
 		/* Copy query to the driver. */
 		if (copy_from_user(ias_opt, optval, len)) {
 			kfree(ias_opt);
-			return -EFAULT;
+			err = -EFAULT;
+			goto out;
 		}
 
 		/* At this point, there are two cases...
@@ -2419,7 +2438,8 @@ bed:
 			daddr = ias_opt->daddr;
 			if((!daddr) || (daddr == DEV_ADDR_ANY)) {
 				kfree(ias_opt);
-				return -EINVAL;
+				err = -EINVAL;
+				goto out;
 			}
 		}
 
@@ -2428,7 +2448,8 @@ bed:
 			IRDA_WARNING("%s: busy with a previous query\n",
 				     __func__);
 			kfree(ias_opt);
-			return -EBUSY;
+			err = -EBUSY;
+			goto out;
 		}
 
 		self->iriap = iriap_open(LSAP_ANY, IAS_CLIENT, self,
@@ -2436,7 +2457,8 @@ bed:
 
 		if (self->iriap == NULL) {
 			kfree(ias_opt);
-			return -ENOMEM;
+			err = -ENOMEM;
+			goto out;
 		}
 
 		/* Treat unexpected wakeup as disconnect */
@@ -2455,7 +2477,8 @@ bed:
 			 * we can free it regardless! */
 			kfree(ias_opt);
 			/* Treat signals as disconnect */
-			return -EHOSTUNREACH;
+			err = -EHOSTUNREACH;
+			goto out;
 		}
 
 		/* Check what happened */
@@ -2465,9 +2488,11 @@ bed:
 			/* Requested object/attribute doesn't exist */
 			if((self->errno == IAS_CLASS_UNKNOWN) ||
 			   (self->errno == IAS_ATTRIB_UNKNOWN))
-				return -EADDRNOTAVAIL;
+				err = -EADDRNOTAVAIL;
 			else
-				return -EHOSTUNREACH;
+				err = -EHOSTUNREACH;
+
+			goto out;
 		}
 
 		/* Translate from internal to user structure */
@@ -2476,14 +2501,15 @@ bed:
 			irias_delete_value(self->ias_result);
 		if (err) {
 			kfree(ias_opt);
-			return err;
+			goto out;
 		}
 
 		/* Copy reply to the user */
 		if (copy_to_user(optval, ias_opt,
 				 sizeof(struct irda_ias_set))) {
 			kfree(ias_opt);
-			return -EFAULT;
+			err = -EFAULT;
+			goto out;
 		}
 		/* Note : don't need to put optlen, we checked it */
 		kfree(ias_opt);
@@ -2504,11 +2530,15 @@ bed:
 		 */
 
 		/* Check that the user is passing us an int */
-		if (len != sizeof(int))
-			return -EINVAL;
+		if (len != sizeof(int)) {
+			err = -EINVAL;
+			goto out;
+		}
 		/* Get timeout in ms (max time we block the caller) */
-		if (get_user(val, (int __user *)optval))
-			return -EFAULT;
+		if (get_user(val, (int __user *)optval)) {
+			err = -EFAULT;
+			goto out;
+		}
 
 		/* Tell IrLMP we want to be notified */
 		irlmp_update_client(self->ckey, self->mask.word,
@@ -2520,8 +2550,6 @@ bed:
 
 		/* Wait until a node is discovered */
 		if (!self->cachedaddr) {
-			int ret = 0;
-
 			IRDA_DEBUG(1, "%s(), nothing discovered yet, going to sleep...\n", __func__);
 
 			/* Set watchdog timer to expire in <val> ms. */
@@ -2534,7 +2562,7 @@ bed:
 			/* Wait for IR-LMP to call us back */
 			__wait_event_interruptible(self->query_wait,
 			      (self->cachedaddr != 0 || self->errno == -ETIME),
-						   ret);
+						   err);
 
 			/* If watchdog is still activated, kill it! */
 			if(timer_pending(&(self->watchdog)))
@@ -2542,8 +2570,8 @@ bed:
 
 			IRDA_DEBUG(1, "%s(), ...waking up !\n", __func__);
 
-			if (ret != 0)
-				return ret;
+			if (err != 0)
+				goto out;
 		}
 		else
 			IRDA_DEBUG(1, "%s(), found immediately !\n",
@@ -2566,25 +2594,19 @@ bed:
 		 * If the user want more details, he should query
 		 * the whole discovery log and pick one device...
 		 */
-		if (put_user(daddr, (int __user *)optval))
-			return -EFAULT;
+		if (put_user(daddr, (int __user *)optval)) {
+			err = -EFAULT;
+			goto out;
+		}
 
 		break;
 	default:
-		return -ENOPROTOOPT;
+		err = -ENOPROTOOPT;
 	}
 
-	return 0;
-}
-
-static int irda_getsockopt(struct socket *sock, int level, int optname,
-			   char __user *optval, int __user *optlen)
-{
-	int err;
+out:
 
-	lock_kernel();
-	err = __irda_getsockopt(sock, level, optname, optval, optlen);
-	unlock_kernel();
+	release_sock(sk);
 
 	return err;
 }
@@ -2628,7 +2650,7 @@ static const struct proto_ops irda_seqpacket_ops = {
 	.socketpair =	sock_no_socketpair,
 	.accept =	irda_accept,
 	.getname =	irda_getname,
-	.poll =		irda_datagram_poll,
+	.poll =		datagram_poll,
 	.ioctl =	irda_ioctl,
 #ifdef CONFIG_COMPAT
 	.compat_ioctl =	irda_compat_ioctl,
@@ -2652,7 +2674,7 @@ static const struct proto_ops irda_dgram_ops = {
 	.socketpair =	sock_no_socketpair,
 	.accept =	irda_accept,
 	.getname =	irda_getname,
-	.poll =		irda_datagram_poll,
+	.poll =		datagram_poll,
 	.ioctl =	irda_ioctl,
 #ifdef CONFIG_COMPAT
 	.compat_ioctl =	irda_compat_ioctl,
@@ -2677,7 +2699,7 @@ static const struct proto_ops irda_ultra_ops = {
 	.socketpair =	sock_no_socketpair,
 	.accept =	sock_no_accept,
 	.getname =	irda_getname,
-	.poll =		irda_datagram_poll,
+	.poll =		datagram_poll,
 	.ioctl =	irda_ioctl,
 #ifdef CONFIG_COMPAT
 	.compat_ioctl =	irda_compat_ioctl,
-- 
1.7.1


^ permalink raw reply related

* [GIT PULL net-next-2.6] IrDA 2.6.37 updates
From: Samuel Ortiz @ 2010-10-11  0:24 UTC (permalink / raw)
  To: David S. Miller; +Cc: netdev, Samuel Ortiz

Hi Dave,

I have 5 pending IrDA patches for the next merge window.
The bulk of it is made of the BKL removal for irda, along with a couple of
security fixes.

The following changes since commit 7b738b55b2ec0e95a5030037c45b3c312e385789:

  sundance: get_stats proper locking (2010-10-09 09:22:54 -0700)

are available in the git repository at:
  git://git.kernel.org/pub/scm/linux/kernel/git/sameo/irda-2.6.git for-davem

Roel Kluin (1):
  irda: Test index before read in stir421x_patch_device()

Samuel Ortiz (4):
  irda: Remove BKL instances from af_irda.c
  irda: Remove BKL instances from irnet
  irda: Fix parameter extraction stack overflow
  irda: Fix heap memory corruption in iriap.c

 drivers/net/irda/irda-usb.c |    8 +-
 net/irda/af_irda.c          |  370 +++++++++++++++++++++++--------------------
 net/irda/iriap.c            |    3 +-
 net/irda/irnet/irnet.h      |    2 +
 net/irda/irnet/irnet_ppp.c  |   61 +++++---
 net/irda/parameters.c       |    4 +-
 6 files changed, 249 insertions(+), 199 deletions(-)


^ permalink raw reply

* [PATCH net-next 4/5] bnx2x: do not deal with power if no capability
From: Dmitry Kravkov @ 2010-10-10 22:30 UTC (permalink / raw)
  To: davem, netdev; +Cc: vladz, eilong


Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com>
Signed-off-by: Vladislav Zolotarov <vladz@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
---
 drivers/net/bnx2x/bnx2x_cmn.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/drivers/net/bnx2x/bnx2x_cmn.c b/drivers/net/bnx2x/bnx2x_cmn.c
index 3f0540c..9a3208e 100644
--- a/drivers/net/bnx2x/bnx2x_cmn.c
+++ b/drivers/net/bnx2x/bnx2x_cmn.c
@@ -1520,6 +1520,12 @@ int bnx2x_set_power_state(struct bnx2x *bp, pci_power_t state)
 {
 	u16 pmcsr;
 
+	/* If there is no power capability, silently succeed */
+	if (!bp->pm_cap) {
+		DP(NETIF_MSG_HW, "No power capability. Breaking.\n");
+		return 0;
+	}
+
 	pci_read_config_word(bp->pdev, bp->pm_cap + PCI_PM_CTRL, &pmcsr);
 
 	switch (state) {
-- 
1.7.1





^ permalink raw reply related

* [PATCH net-next 5/5] bnx2x: Use correct FW constant for header padding
From: Dmitry Kravkov @ 2010-10-10 22:30 UTC (permalink / raw)
  To: davem, netdev; +Cc: vladz, eilong


the value of the constant is the same, but it's clearer to use original
constant provided by HSI

Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
---
 drivers/net/bnx2x/bnx2x_cmn.c |    2 +-
 drivers/net/bnx2x/bnx2x_cmn.h |    2 --
 2 files changed, 1 insertions(+), 3 deletions(-)

diff --git a/drivers/net/bnx2x/bnx2x_cmn.c b/drivers/net/bnx2x/bnx2x_cmn.c
index 9a3208e..29ed500 100644
--- a/drivers/net/bnx2x/bnx2x_cmn.c
+++ b/drivers/net/bnx2x/bnx2x_cmn.c
@@ -830,7 +830,7 @@ void bnx2x_init_rx_rings(struct bnx2x *bp)
 	int i, j;
 
 	bp->rx_buf_size = bp->dev->mtu + ETH_OVREHEAD + BNX2X_RX_ALIGN +
-		BNX2X_FW_IP_HDR_ALIGN_PAD;
+		IP_HEADER_ALIGNMENT_PADDING;
 
 	DP(NETIF_MSG_IFUP,
 	   "mtu %d  rx_buf_size %d\n", bp->dev->mtu, bp->rx_buf_size);
diff --git a/drivers/net/bnx2x/bnx2x_cmn.h b/drivers/net/bnx2x/bnx2x_cmn.h
index 7f52cec..5bfe0ab 100644
--- a/drivers/net/bnx2x/bnx2x_cmn.h
+++ b/drivers/net/bnx2x/bnx2x_cmn.h
@@ -1032,6 +1032,4 @@ static inline void storm_memset_cmng(struct bnx2x *bp,
 void bnx2x_acquire_phy_lock(struct bnx2x *bp);
 void bnx2x_release_phy_lock(struct bnx2x *bp);
 
-#define BNX2X_FW_IP_HDR_ALIGN_PAD	2 /* FW places hdr with this padding */
-
 #endif /* BNX2X_CMN_H */
-- 
1.7.1





^ permalink raw reply related

* [PATCH net-next 2/5] bnx2x: save cycles in setting gso_size
From: Dmitry Kravkov @ 2010-10-10 22:27 UTC (permalink / raw)
  To: davem, netdev; +Cc: vladz, eilong

From: Vladislav Zolotarov <vladz@broadcom.com>

the field needs to be set to ANY non-zero value in order to enable forwarding.

Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com>
Signed-off-by: Vladislav Zolotarov <vladz@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
---
 drivers/net/bnx2x/bnx2x_cmn.c |    3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/drivers/net/bnx2x/bnx2x_cmn.c b/drivers/net/bnx2x/bnx2x_cmn.c
index cb2a3d6..ddf90e1 100644
--- a/drivers/net/bnx2x/bnx2x_cmn.c
+++ b/drivers/net/bnx2x/bnx2x_cmn.c
@@ -277,8 +277,7 @@ static int bnx2x_fill_frag_skb(struct bnx2x *bp, struct bnx2x_fastpath *fp,
 
 	/* This is needed in order to enable forwarding support */
 	if (frag_size)
-		skb_shinfo(skb)->gso_size = min((u32)SGE_PAGE_SIZE,
-					       max(frag_size, (u32)len_on_bd));
+		skb_shinfo(skb)->gso_size = 1;
 
 #ifdef BNX2X_STOP_ON_ERROR
 	if (pages > min_t(u32, 8, MAX_SKB_FRAGS)*SGE_PAGE_SIZE*PAGES_PER_SGE) {
-- 
1.7.1





^ permalink raw reply related

* [PATCH net-next 3/5] bnx2x: remove redundant commands during error handling
From: Dmitry Kravkov @ 2010-10-10 22:29 UTC (permalink / raw)
  To: davem, netdev; +Cc: vladz, eilong


Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
---
 drivers/net/bnx2x/bnx2x_cmn.c |    2 --
 1 files changed, 0 insertions(+), 2 deletions(-)

diff --git a/drivers/net/bnx2x/bnx2x_cmn.c b/drivers/net/bnx2x/bnx2x_cmn.c
index ddf90e1..3f0540c 100644
--- a/drivers/net/bnx2x/bnx2x_cmn.c
+++ b/drivers/net/bnx2x/bnx2x_cmn.c
@@ -1288,8 +1288,6 @@ int bnx2x_nic_load(struct bnx2x *bp, int load_mode)
 	if (rc) {
 		BNX2X_ERR("HW init failed, aborting\n");
 		bnx2x_fw_command(bp, DRV_MSG_CODE_LOAD_DONE, 0);
-		bnx2x_fw_command(bp, DRV_MSG_CODE_UNLOAD_REQ_WOL_MCP, 0);
-		bnx2x_fw_command(bp, DRV_MSG_CODE_UNLOAD_DONE, 0);
 		goto load_error2;
 	}
 
-- 
1.7.1





^ permalink raw reply related

* [PATCH net-next 1/5] bnx2x: Optimized the branching in the bnx2x_rx_int()
From: Dmitry Kravkov @ 2010-10-10 22:26 UTC (permalink / raw)
  To: davem, netdev; +Cc: vladz, eilong

From: Vladislav Zolotarov <vladz@broadcom.com>

Optimized the branching in the bnx2x_rx_int() based on the fact
that FP CQE will always have at least one of START or STOP flags set,
so if not both bits are set and START bit is not set,
then it's a STOP bit that is set.

Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com>
Signed-off-by: Vladislav Zolotarov <vladz@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
---
 drivers/net/bnx2x/bnx2x_cmn.c |   11 ++++++-----
 1 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/drivers/net/bnx2x/bnx2x_cmn.c b/drivers/net/bnx2x/bnx2x_cmn.c
index 97ef674..cb2a3d6 100644
--- a/drivers/net/bnx2x/bnx2x_cmn.c
+++ b/drivers/net/bnx2x/bnx2x_cmn.c
@@ -507,8 +507,11 @@ int bnx2x_rx_int(struct bnx2x_fastpath *fp, int budget)
 			len = le16_to_cpu(cqe->fast_path_cqe.pkt_len);
 			pad = cqe->fast_path_cqe.placement_offset;
 
-			/* If CQE is marked both TPA_START and TPA_END
-			   it is a non-TPA CQE */
+			/* - If CQE is marked both TPA_START and TPA_END it is
+			 *   a non-TPA CQE.
+			 * - FP CQE will always have either TPA_START or/and
+			 *   TPA_STOP flags set.
+			 */
 			if ((!fp->disable_tpa) &&
 			    (TPA_TYPE(cqe_fp_flags) !=
 					(TPA_TYPE_START | TPA_TYPE_END))) {
@@ -526,9 +529,7 @@ int bnx2x_rx_int(struct bnx2x_fastpath *fp, int budget)
 					bnx2x_set_skb_rxhash(bp, cqe, skb);
 
 					goto next_rx;
-				}
-
-				if (TPA_TYPE(cqe_fp_flags) == TPA_TYPE_END) {
+				} else { /* TPA_STOP */
 					DP(NETIF_MSG_RX_STATUS,
 					   "calling tpa_stop on queue %d\n",
 					   queue);
-- 
1.7.1





^ permalink raw reply related

* [PATCH net-next 0/5] bnx2x: patch series
From: Dmitry Kravkov @ 2010-10-10 22:22 UTC (permalink / raw)
  To: davem, netdev; +Cc: vladz, eilong

Hi Dave,

Please consider applying the series of small patches to net-next
It includes several enhancements in fast path and removes some unnecessary code


Thanks
Dmitry





^ permalink raw reply

* Re: [RFC PATCH net-next] drivers/net Documentation/networking: Create directory intel_wired_lan
From: Stephen Hemminger @ 2010-10-10 21:44 UTC (permalink / raw)
  To: Joe Perches
  Cc: e1000-devel, Bruce Allan, Jesse Brandeburg, linux-kernel,
	Greg Rose, John Ronciak, Jeff Kirsher, netdev, PJ
In-Reply-To: <1286743352.11039.165.camel@Joe-Laptop>

On Sun, 10 Oct 2010 13:42:32 -0700
Joe Perches <joe@perches.com> wrote:

> Perhaps it's better to move drivers from the very populated
> drivers/net directory into vendor specific directories similar
> to the Atheros approach used for drivers/net/wireless/ath/
> 
> Move intel drivers and Documentation to separate directories
> Create drivers/net/intel_wired_lan/Kconfig.<speed> and Makefile
> Modify drivers/net/Kconfig and Makefile
> Update MAINTAINERS
> 
> Signed-off-by: Joe Perches <joe@perches.com>
> ---
>  .../networking/{ => intel_wired_lan}/e100.txt      |    0
>  .../networking/{ => intel_wired_lan}/e1000.txt     |    0
>  .../networking/{ => intel_wired_lan}/igb.txt       |    0
>  .../networking/{ => intel_wired_lan}/igbvf.txt     |    0
>  .../networking/{ => intel_wired_lan}/ixgb.txt      |    0
>  .../networking/{ => intel_wired_lan}/ixgbe.txt     |    0
>  .../networking/{ => intel_wired_lan}/ixgbevf.txt   |    0
>  MAINTAINERS                                        |   18 +--
>  drivers/net/Kconfig                                |  214 +-------------------
>  drivers/net/Makefile                               |    8 -
>  drivers/net/intel_wired_lan/Kconfig.100            |   25 +++
>  drivers/net/intel_wired_lan/Kconfig.1000           |  102 ++++++++++
>  drivers/net/intel_wired_lan/Kconfig.10000          |   81 ++++++++
>  drivers/net/intel_wired_lan/Makefile               |    9 +
>  drivers/net/{ => intel_wired_lan}/e100.c           |    0
>  drivers/net/{ => intel_wired_lan}/e1000/Makefile   |    0
>  drivers/net/{ => intel_wired_lan}/e1000/e1000.h    |    0
>  .../{ => intel_wired_lan}/e1000/e1000_ethtool.c    |    0
>  drivers/net/{ => intel_wired_lan}/e1000/e1000_hw.c |    0
>  drivers/net/{ => intel_wired_lan}/e1000/e1000_hw.h |    0
>  .../net/{ => intel_wired_lan}/e1000/e1000_main.c   |    0
>  .../net/{ => intel_wired_lan}/e1000/e1000_osdep.h  |    0
>  .../net/{ => intel_wired_lan}/e1000/e1000_param.c  |    0
>  drivers/net/{ => intel_wired_lan}/e1000e/82571.c   |    0
>  drivers/net/{ => intel_wired_lan}/e1000e/Makefile  |    0
>  drivers/net/{ => intel_wired_lan}/e1000e/defines.h |    0
>  drivers/net/{ => intel_wired_lan}/e1000e/e1000.h   |    0
>  drivers/net/{ => intel_wired_lan}/e1000e/es2lan.c  |    0
>  drivers/net/{ => intel_wired_lan}/e1000e/ethtool.c |    0
>  drivers/net/{ => intel_wired_lan}/e1000e/hw.h      |    0
>  drivers/net/{ => intel_wired_lan}/e1000e/ich8lan.c |    0
>  drivers/net/{ => intel_wired_lan}/e1000e/lib.c     |    0
>  drivers/net/{ => intel_wired_lan}/e1000e/netdev.c  |    0
>  drivers/net/{ => intel_wired_lan}/e1000e/param.c   |    0
>  drivers/net/{ => intel_wired_lan}/e1000e/phy.c     |    0
>  drivers/net/{ => intel_wired_lan}/igb/Makefile     |    0
>  .../net/{ => intel_wired_lan}/igb/e1000_82575.c    |    0
>  .../net/{ => intel_wired_lan}/igb/e1000_82575.h    |    0
>  .../net/{ => intel_wired_lan}/igb/e1000_defines.h  |    0
>  drivers/net/{ => intel_wired_lan}/igb/e1000_hw.h   |    0
>  drivers/net/{ => intel_wired_lan}/igb/e1000_mac.c  |    0
>  drivers/net/{ => intel_wired_lan}/igb/e1000_mac.h  |    0
>  drivers/net/{ => intel_wired_lan}/igb/e1000_mbx.c  |    0
>  drivers/net/{ => intel_wired_lan}/igb/e1000_mbx.h  |    0
>  drivers/net/{ => intel_wired_lan}/igb/e1000_nvm.c  |    0
>  drivers/net/{ => intel_wired_lan}/igb/e1000_nvm.h  |    0
>  drivers/net/{ => intel_wired_lan}/igb/e1000_phy.c  |    0
>  drivers/net/{ => intel_wired_lan}/igb/e1000_phy.h  |    0
>  drivers/net/{ => intel_wired_lan}/igb/e1000_regs.h |    0
>  drivers/net/{ => intel_wired_lan}/igb/igb.h        |    0
>  .../net/{ => intel_wired_lan}/igb/igb_ethtool.c    |    0
>  drivers/net/{ => intel_wired_lan}/igb/igb_main.c   |    0
>  drivers/net/{ => intel_wired_lan}/igbvf/Makefile   |    0
>  drivers/net/{ => intel_wired_lan}/igbvf/defines.h  |    0
>  drivers/net/{ => intel_wired_lan}/igbvf/ethtool.c  |    0
>  drivers/net/{ => intel_wired_lan}/igbvf/igbvf.h    |    0
>  drivers/net/{ => intel_wired_lan}/igbvf/mbx.c      |    0
>  drivers/net/{ => intel_wired_lan}/igbvf/mbx.h      |    0
>  drivers/net/{ => intel_wired_lan}/igbvf/netdev.c   |    0
>  drivers/net/{ => intel_wired_lan}/igbvf/regs.h     |    0
>  drivers/net/{ => intel_wired_lan}/igbvf/vf.c       |    0
>  drivers/net/{ => intel_wired_lan}/igbvf/vf.h       |    0
>  drivers/net/{ => intel_wired_lan}/ixgb/Makefile    |    0
>  drivers/net/{ => intel_wired_lan}/ixgb/ixgb.h      |    0
>  drivers/net/{ => intel_wired_lan}/ixgb/ixgb_ee.c   |    0
>  drivers/net/{ => intel_wired_lan}/ixgb/ixgb_ee.h   |    0
>  .../net/{ => intel_wired_lan}/ixgb/ixgb_ethtool.c  |    0
>  drivers/net/{ => intel_wired_lan}/ixgb/ixgb_hw.c   |    0
>  drivers/net/{ => intel_wired_lan}/ixgb/ixgb_hw.h   |    0
>  drivers/net/{ => intel_wired_lan}/ixgb/ixgb_ids.h  |    0
>  drivers/net/{ => intel_wired_lan}/ixgb/ixgb_main.c |    0
>  .../net/{ => intel_wired_lan}/ixgb/ixgb_osdep.h    |    0
>  .../net/{ => intel_wired_lan}/ixgb/ixgb_param.c    |    0
>  drivers/net/{ => intel_wired_lan}/ixgbe/Makefile   |    0
>  drivers/net/{ => intel_wired_lan}/ixgbe/ixgbe.h    |    0
>  .../net/{ => intel_wired_lan}/ixgbe/ixgbe_82598.c  |    0
>  .../net/{ => intel_wired_lan}/ixgbe/ixgbe_82599.c  |    0
>  .../net/{ => intel_wired_lan}/ixgbe/ixgbe_common.c |    0
>  .../net/{ => intel_wired_lan}/ixgbe/ixgbe_common.h |    0
>  .../net/{ => intel_wired_lan}/ixgbe/ixgbe_dcb.c    |    0
>  .../net/{ => intel_wired_lan}/ixgbe/ixgbe_dcb.h    |    0
>  .../{ => intel_wired_lan}/ixgbe/ixgbe_dcb_82598.c  |    0
>  .../{ => intel_wired_lan}/ixgbe/ixgbe_dcb_82598.h  |    0
>  .../{ => intel_wired_lan}/ixgbe/ixgbe_dcb_82599.c  |    0
>  .../{ => intel_wired_lan}/ixgbe/ixgbe_dcb_82599.h  |    0
>  .../net/{ => intel_wired_lan}/ixgbe/ixgbe_dcb_nl.c |    0
>  .../{ => intel_wired_lan}/ixgbe/ixgbe_ethtool.c    |    0
>  .../net/{ => intel_wired_lan}/ixgbe/ixgbe_fcoe.c   |    0
>  .../net/{ => intel_wired_lan}/ixgbe/ixgbe_fcoe.h   |    0
>  .../net/{ => intel_wired_lan}/ixgbe/ixgbe_main.c   |    0
>  .../net/{ => intel_wired_lan}/ixgbe/ixgbe_mbx.c    |    0
>  .../net/{ => intel_wired_lan}/ixgbe/ixgbe_mbx.h    |    0
>  .../net/{ => intel_wired_lan}/ixgbe/ixgbe_phy.c    |    0
>  .../net/{ => intel_wired_lan}/ixgbe/ixgbe_phy.h    |    0
>  .../net/{ => intel_wired_lan}/ixgbe/ixgbe_sriov.c  |    0
>  .../net/{ => intel_wired_lan}/ixgbe/ixgbe_sriov.h  |    0
>  .../net/{ => intel_wired_lan}/ixgbe/ixgbe_type.h   |    0
>  drivers/net/{ => intel_wired_lan}/ixgbevf/Makefile |    0
>  .../net/{ => intel_wired_lan}/ixgbevf/defines.h    |    0
>  .../net/{ => intel_wired_lan}/ixgbevf/ethtool.c    |    0
>  .../net/{ => intel_wired_lan}/ixgbevf/ixgbevf.h    |    0
>  .../{ => intel_wired_lan}/ixgbevf/ixgbevf_main.c   |    0
>  drivers/net/{ => intel_wired_lan}/ixgbevf/mbx.c    |    0
>  drivers/net/{ => intel_wired_lan}/ixgbevf/mbx.h    |    0
>  drivers/net/{ => intel_wired_lan}/ixgbevf/regs.h   |    0
>  drivers/net/{ => intel_wired_lan}/ixgbevf/vf.c     |    0
>  drivers/net/{ => intel_wired_lan}/ixgbevf/vf.h     |    0
>  107 files changed, 224 insertions(+), 233 deletions(-)
> 
> diff --git a/Documentation/networking/e100.txt b/Documentation/networking/intel_wired_lan/e100.txt
> similarity index 100%
> rename from Documentation/networking/e100.txt
> rename to Documentation/networking/intel_wired_lan/e100.txt
> diff --git a/Documentation/networking/e1000.txt b/Documentation/networking/intel_wired_lan/e1000.txt
> similarity index 100%
> rename from Documentation/networking/e1000.txt
> rename to Documentation/networking/intel_wired_lan/e1000.txt
> diff --git a/Documentation/networking/igb.txt b/Documentation/networking/intel_wired_lan/igb.txt
> similarity index 100%
> rename from Documentation/networking/igb.txt
> rename to Documentation/networking/intel_wired_lan/igb.txt
> diff --git a/Documentation/networking/igbvf.txt b/Documentation/networking/intel_wired_lan/igbvf.txt
> similarity index 100%
> rename from Documentation/networking/igbvf.txt
> rename to Documentation/networking/intel_wired_lan/igbvf.txt
> diff --git a/Documentation/networking/ixgb.txt b/Documentation/networking/intel_wired_lan/ixgb.txt
> similarity index 100%
> rename from Documentation/networking/ixgb.txt
> rename to Documentation/networking/intel_wired_lan/ixgb.txt
> diff --git a/Documentation/networking/ixgbe.txt b/Documentation/networking/intel_wired_lan/ixgbe.txt
> similarity index 100%
> rename from Documentation/networking/ixgbe.txt
> rename to Documentation/networking/intel_wired_lan/ixgbe.txt
> diff --git a/Documentation/networking/ixgbevf.txt b/Documentation/networking/intel_wired_lan/ixgbevf.txt
> similarity index 100%
> rename from Documentation/networking/ixgbevf.txt
> rename to Documentation/networking/intel_wired_lan/ixgbevf.txt
> diff --git a/MAINTAINERS b/MAINTAINERS
> index ba8603c..b086404 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -3096,22 +3096,8 @@ M:	John Ronciak <john.ronciak@intel.com>
>  L:	e1000-devel@lists.sourceforge.net
>  W:	http://e1000.sourceforge.net/
>  S:	Supported
> -F:	Documentation/networking/e100.txt
> -F:	Documentation/networking/e1000.txt
> -F:	Documentation/networking/e1000e.txt
> -F:	Documentation/networking/igb.txt
> -F:	Documentation/networking/igbvf.txt
> -F:	Documentation/networking/ixgb.txt
> -F:	Documentation/networking/ixgbe.txt
> -F:	Documentation/networking/ixgbevf.txt
> -F:	drivers/net/e100.c
> -F:	drivers/net/e1000/
> -F:	drivers/net/e1000e/
> -F:	drivers/net/igb/
> -F:	drivers/net/igbvf/
> -F:	drivers/net/ixgb/
> -F:	drivers/net/ixgbe/
> -F:	drivers/net/ixgbevf/
> +F:	Documentation/networking/intel_wired_lan/
> +F:	drivers/net/intel_wired_lan/
>  
>  INTEL PRO/WIRELESS 2100 NETWORK CONNECTION SUPPORT
>  L:	linux-wireless@vger.kernel.org
> diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
> index 13d01f3..4d6448d 100644
> --- a/drivers/net/Kconfig
> +++ b/drivers/net/Kconfig
> @@ -1495,32 +1495,6 @@ config TC35815
>  	depends on NET_PCI && PCI && MIPS
>  	select PHYLIB
>  
> -config E100
> -	tristate "Intel(R) PRO/100+ support"
> -	depends on NET_PCI && PCI
> -	select MII
> -	---help---
> -	  This driver supports Intel(R) PRO/100 family of adapters.
> -	  To verify that your adapter is supported, find the board ID number 
> -	  on the adapter. Look for a label that has a barcode and a number 
> -	  in the format 123456-001 (six digits hyphen three digits). 
> -
> -	  Use the above information and the Adapter & Driver ID Guide at:
> -
> -	  <http://support.intel.com/support/network/adapter/pro100/21397.htm>
> -
> -          to identify the adapter.
> -
> -	  For the latest Intel PRO/100 network driver for Linux, see:
> -
> -	  <http://appsr.intel.com/scripts-df/support_intel.asp>
> -
> -	  More specific information on configuring the driver is in 
> -	  <file:Documentation/networking/e100.txt>.
> -
> -	  To compile this driver as a module, choose M here. The module
> -	  will be called e100.
> -
>  config LNE390
>  	tristate "Mylex EISA LNE390A/B support (EXPERIMENTAL)"
>  	depends on NET_PCI && EISA && EXPERIMENTAL
> @@ -1995,6 +1969,8 @@ source "drivers/net/fs_enet/Kconfig"
>  
>  source "drivers/net/octeon/Kconfig"
>  
> +source "drivers/net/intel_wired_lan/Kconfig.100"
> +
>  endif # NET_ETHERNET
>  
>  #
> @@ -2059,45 +2035,7 @@ config DL2K
>  	  To compile this driver as a module, choose M here: the
>  	  module will be called dl2k.
>  
> -config E1000
> -	tristate "Intel(R) PRO/1000 Gigabit Ethernet support"
> -	depends on PCI
> -	---help---
> -	  This driver supports Intel(R) PRO/1000 gigabit ethernet family of
> -	  adapters.  For more information on how to identify your adapter, go 
> -	  to the Adapter & Driver ID Guide at:
> -
> -	  <http://support.intel.com/support/network/adapter/pro100/21397.htm>
> -
> -	  For general information and support, go to the Intel support
> -	  website at:
> -
> -	  <http://support.intel.com>
> -
> -	  More specific information on configuring the driver is in 
> -	  <file:Documentation/networking/e1000.txt>.
> -
> -	  To compile this driver as a module, choose M here. The module
> -	  will be called e1000.
> -
> -config E1000E
> -	tristate "Intel(R) PRO/1000 PCI-Express Gigabit Ethernet support"
> -	depends on PCI && (!SPARC32 || BROKEN)
> -	---help---
> -	  This driver supports the PCI-Express Intel(R) PRO/1000 gigabit
> -	  ethernet family of adapters. For PCI or PCI-X e1000 adapters,
> -	  use the regular e1000 driver For more information on how to
> -	  identify your adapter, go to the Adapter & Driver ID Guide at:
> -
> -	  <http://support.intel.com/support/network/adapter/pro100/21397.htm>
> -
> -	  For general information and support, go to the Intel support
> -	  website at:
> -
> -	  <http://support.intel.com>
> -
> -	  To compile this driver as a module, choose M here. The module
> -	  will be called e1000e.
> +source "drivers/net/intel_wired_lan/Kconfig.1000"
>  
>  config IP1000
>  	tristate "IP1000 Gigabit Ethernet support"
> @@ -2109,57 +2047,6 @@ config IP1000
>  	  To compile this driver as a module, choose M here: the module
>  	  will be called ipg.  This is recommended.
>  
> -config IGB
> -       tristate "Intel(R) 82575/82576 PCI-Express Gigabit Ethernet support"
> -       depends on PCI
> -       ---help---
> -         This driver supports Intel(R) 82575/82576 gigabit ethernet family of
> -         adapters.  For more information on how to identify your adapter, go
> -         to the Adapter & Driver ID Guide at:
> -
> -         <http://support.intel.com/support/network/adapter/pro100/21397.htm>
> -
> -         For general information and support, go to the Intel support
> -         website at:
> -
> -         <http://support.intel.com>
> -
> -         More specific information on configuring the driver is in
> -         <file:Documentation/networking/e1000.txt>.
> -
> -         To compile this driver as a module, choose M here. The module
> -         will be called igb.
> -
> -config IGB_DCA
> -	bool "Direct Cache Access (DCA) Support"
> -	default y
> -	depends on IGB && DCA && !(IGB=y && DCA=m)
> -	---help---
> -	  Say Y here if you want to use Direct Cache Access (DCA) in the
> -	  driver.  DCA is a method for warming the CPU cache before data
> -	  is used, with the intent of lessening the impact of cache misses.
> -
> -config IGBVF
> -       tristate "Intel(R) 82576 Virtual Function Ethernet support"
> -       depends on PCI
> -       ---help---
> -         This driver supports Intel(R) 82576 virtual functions.  For more
> -         information on how to identify your adapter, go to the Adapter &
> -         Driver ID Guide at:
> -
> -         <http://support.intel.com/support/network/adapter/pro100/21397.htm>
> -
> -         For general information and support, go to the Intel support
> -         website at:
> -
> -         <http://support.intel.com>
> -
> -         More specific information on configuring the driver is in
> -         <file:Documentation/networking/e1000.txt>.
> -
> -         To compile this driver as a module, choose M here. The module
> -         will be called igbvf.
> -
>  source "drivers/net/ixp2000/Kconfig"
>  
>  config MYRI_SBUS
> @@ -2515,17 +2402,6 @@ config S6GMAC
>  
>  source "drivers/net/stmmac/Kconfig"
>  
> -config PCH_GBE
> -	tristate "PCH Gigabit Ethernet"
> -	depends on PCI
> -	---help---
> -	  This is a gigabit ethernet driver for Topcliff PCH.
> -	  Topcliff PCH is the platform controller hub that is used in Intel's
> -	  general embedded platform.
> -	  Topcliff PCH has Gigabit Ethernet interface.
> -	  Using this interface, it is able to access system devices connected
> -	  to Gigabit Ethernet.
> -	  This driver enables Gigabit Ethernet function.
>  
>  endif # NETDEV_1000
>  
> @@ -2659,94 +2535,14 @@ config EHEA
>  	  To compile the driver as a module, choose M here. The module
>  	  will be called ehea.
>  
> +source "drivers/net/intel_wired_lan/Kconfig.10000"
> +
>  config ENIC
>  	tristate "Cisco VIC Ethernet NIC Support"
>  	depends on PCI && INET
>  	help
>  	  This enables the support for the Cisco VIC Ethernet card.
>  
> -config IXGBE
> -	tristate "Intel(R) 10GbE PCI Express adapters support"
> -	depends on PCI && INET
> -	select MDIO
> -	---help---
> -	  This driver supports Intel(R) 10GbE PCI Express family of
> -	  adapters.  For more information on how to identify your adapter, go
> -	  to the Adapter & Driver ID Guide at:
> -
> -	  <http://support.intel.com/support/network/adapter/pro100/21397.htm>
> -
> -	  For general information and support, go to the Intel support
> -	  website at:
> -
> -	  <http://support.intel.com>
> -
> -	  To compile this driver as a module, choose M here. The module
> -	  will be called ixgbe.
> -
> -config IXGBE_DCA
> -	bool "Direct Cache Access (DCA) Support"
> -	default y
> -	depends on IXGBE && DCA && !(IXGBE=y && DCA=m)
> -	---help---
> -	  Say Y here if you want to use Direct Cache Access (DCA) in the
> -	  driver.  DCA is a method for warming the CPU cache before data
> -	  is used, with the intent of lessening the impact of cache misses.
> -
> -config IXGBE_DCB
> -	bool "Data Center Bridging (DCB) Support"
> -	default n
> -	depends on IXGBE && DCB
> -	---help---
> -	  Say Y here if you want to use Data Center Bridging (DCB) in the
> -	  driver.
> -
> -	  If unsure, say N.
> -
> -config IXGBEVF
> -       tristate "Intel(R) 82599 Virtual Function Ethernet support"
> -       depends on PCI_MSI
> -       ---help---
> -         This driver supports Intel(R) 82599 virtual functions.  For more
> -         information on how to identify your adapter, go to the Adapter &
> -         Driver ID Guide at:
> -
> -         <http://support.intel.com/support/network/sb/CS-008441.htm>
> -
> -         For general information and support, go to the Intel support
> -         website at:
> -
> -         <http://support.intel.com>
> -
> -         More specific information on configuring the driver is in
> -         <file:Documentation/networking/ixgbevf.txt>.
> -
> -         To compile this driver as a module, choose M here. The module
> -         will be called ixgbevf.  MSI-X interrupt support is required
> -         for this driver to work correctly.
> -
> -config IXGB
> -	tristate "Intel(R) PRO/10GbE support"
> -	depends on PCI
> -	---help---
> -	  This driver supports Intel(R) PRO/10GbE family of adapters for
> -	  PCI-X type cards. For PCI-E type cards, use the "ixgbe" driver
> -	  instead. For more information on how to identify your adapter, go
> -	  to the Adapter & Driver ID Guide at:
> -
> -	  <http://support.intel.com/support/network/adapter/pro100/21397.htm>
> -
> -	  For general information and support, go to the Intel support
> -	  website at:
> -
> -	  <http://support.intel.com>
> -
> -	  More specific information on configuring the driver is in 
> -	  <file:Documentation/networking/ixgb.txt>.
> -
> -	  To compile this driver as a module, choose M here. The module
> -	  will be called ixgb.
> -
>  config S2IO
>  	tristate "S2IO 10Gbe XFrame NIC"
>  	depends on PCI
> diff --git a/drivers/net/Makefile b/drivers/net/Makefile
> index b8bf93d..e457b3c 100644
> --- a/drivers/net/Makefile
> +++ b/drivers/net/Makefile
> @@ -8,14 +8,7 @@ obj-$(CONFIG_PHYLIB) += phy/
>  
>  obj-$(CONFIG_TI_DAVINCI_EMAC) += davinci_emac.o
>  
> -obj-$(CONFIG_E1000) += e1000/
> -obj-$(CONFIG_E1000E) += e1000e/
>  obj-$(CONFIG_IBM_NEW_EMAC) += ibm_newemac/
> -obj-$(CONFIG_IGB) += igb/
> -obj-$(CONFIG_IGBVF) += igbvf/
> -obj-$(CONFIG_IXGBE) += ixgbe/
> -obj-$(CONFIG_IXGBEVF) += ixgbevf/
> -obj-$(CONFIG_IXGB) += ixgb/
>  obj-$(CONFIG_IP1000) += ipg.o
>  obj-$(CONFIG_CHELSIO_T1) += chelsio/
>  obj-$(CONFIG_CHELSIO_T3) += cxgb3/
> @@ -68,7 +61,6 @@ obj-$(CONFIG_VORTEX) += 3c59x.o
>  obj-$(CONFIG_TYPHOON) += typhoon.o
>  obj-$(CONFIG_NE2K_PCI) += ne2k-pci.o 8390.o
>  obj-$(CONFIG_PCNET32) += pcnet32.o
> -obj-$(CONFIG_E100) += e100.o
>  obj-$(CONFIG_TLAN) += tlan.o
>  obj-$(CONFIG_EPIC100) += epic100.o
>  obj-$(CONFIG_SMSC9420) += smsc9420.o
> diff --git a/drivers/net/intel_wired_lan/Kconfig.100 b/drivers/net/intel_wired_lan/Kconfig.100
> new file mode 100644
> index 0000000..6651ae9
> --- /dev/null
> +++ b/drivers/net/intel_wired_lan/Kconfig.100
> @@ -0,0 +1,25 @@
> +config E100
> +	tristate "Intel(R) PRO/100+ support"
> +	depends on NET_PCI && PCI
> +	select MII
> +	---help---
> +	  This driver supports Intel(R) PRO/100 family of adapters.
> +	  To verify that your adapter is supported, find the board ID number
> +	  on the adapter. Look for a label that has a barcode and a number
> +	  in the format 123456-001 (six digits hyphen three digits).
> +
> +	  Use the above information and the Adapter & Driver ID Guide at:
> +
> +	  <http://support.intel.com/support/network/adapter/pro100/21397.htm>
> +
> +          to identify the adapter.
> +
> +	  For the latest Intel PRO/100 network driver for Linux, see:
> +
> +	  <http://appsr.intel.com/scripts-df/support_intel.asp>
> +
> +	  More specific information on configuring the driver is in
> +	  <file:Documentation/networking/intel_wired_lan/e100.txt>.
> +
> +	  To compile this driver as a module, choose M here. The module
> +	  will be called e100.
> diff --git a/drivers/net/intel_wired_lan/Kconfig.1000 b/drivers/net/intel_wired_lan/Kconfig.1000
> new file mode 100644
> index 0000000..4a7e13a
> --- /dev/null
> +++ b/drivers/net/intel_wired_lan/Kconfig.1000
> @@ -0,0 +1,102 @@
> +config E1000
> +	tristate "Intel(R) PRO/1000 Gigabit Ethernet support"
> +	depends on PCI
> +	---help---
> +	  This driver supports Intel(R) PRO/1000 gigabit ethernet family of
> +	  adapters.  For more information on how to identify your adapter, go
> +	  to the Adapter & Driver ID Guide at:
> +
> +	  <http://support.intel.com/support/network/adapter/pro100/21397.htm>
> +
> +	  For general information and support, go to the Intel support
> +	  website at:
> +
> +	  <http://support.intel.com>
> +
> +	  More specific information on configuring the driver is in
> +	  <file:Documentation/networking/intel_wired_lan/e1000.txt>.
> +
> +	  To compile this driver as a module, choose M here. The module
> +	  will be called e1000.
> +
> +config E1000E
> +	tristate "Intel(R) PRO/1000 PCI-Express Gigabit Ethernet support"
> +	depends on PCI && (!SPARC32 || BROKEN)
> +	---help---
> +	  This driver supports the PCI-Express Intel(R) PRO/1000 gigabit
> +	  ethernet family of adapters. For PCI or PCI-X e1000 adapters,
> +	  use the regular e1000 driver For more information on how to
> +	  identify your adapter, go to the Adapter & Driver ID Guide at:
> +
> +	  <http://support.intel.com/support/network/adapter/pro100/21397.htm>
> +
> +	  For general information and support, go to the Intel support
> +	  website at:
> +
> +	  <http://support.intel.com>
> +
> +	  To compile this driver as a module, choose M here. The module
> +	  will be called e1000e.
> +
> +config IGB
> +       tristate "Intel(R) 82575/82576 PCI-Express Gigabit Ethernet support"
> +       depends on PCI
> +       ---help---
> +         This driver supports Intel(R) 82575/82576 gigabit ethernet family of
> +         adapters.  For more information on how to identify your adapter, go
> +         to the Adapter & Driver ID Guide at:
> +
> +         <http://support.intel.com/support/network/adapter/pro100/21397.htm>
> +
> +         For general information and support, go to the Intel support
> +         website at:
> +
> +         <http://support.intel.com>
> +
> +         More specific information on configuring the driver is in
> +         <file:Documentation/networking/intel_wired_lan/e1000.txt>.
> +
> +         To compile this driver as a module, choose M here. The module
> +         will be called igb.
> +
> +config IGB_DCA
> +	bool "Direct Cache Access (DCA) Support"
> +	default y
> +	depends on IGB && DCA && !(IGB=y && DCA=m)
> +	---help---
> +	  Say Y here if you want to use Direct Cache Access (DCA) in the
> +	  driver.  DCA is a method for warming the CPU cache before data
> +	  is used, with the intent of lessening the impact of cache misses.
> +
> +config IGBVF
> +       tristate "Intel(R) 82576 Virtual Function Ethernet support"
> +       depends on PCI
> +       ---help---
> +         This driver supports Intel(R) 82576 virtual functions.  For more
> +         information on how to identify your adapter, go to the Adapter &
> +         Driver ID Guide at:
> +
> +         <http://support.intel.com/support/network/adapter/pro100/21397.htm>
> +
> +         For general information and support, go to the Intel support
> +         website at:
> +
> +         <http://support.intel.com>
> +
> +         More specific information on configuring the driver is in
> +         <file:Documentation/networking/intel_wired_lan/e1000.txt>.
> +
> +         To compile this driver as a module, choose M here. The module
> +         will be called igbvf.
> +
> +config PCH_GBE
> +	tristate "PCH Gigabit Ethernet"
> +	depends on PCI
> +	---help---
> +	  This is a gigabit ethernet driver for Topcliff PCH.
> +	  Topcliff PCH is the platform controller hub that is used in Intel's
> +	  general embedded platform.
> +	  Topcliff PCH has Gigabit Ethernet interface.
> +	  Using this interface, it is able to access system devices connected
> +	  to Gigabit Ethernet.
> +	  This driver enables Gigabit Ethernet function.
> diff --git a/drivers/net/intel_wired_lan/Kconfig.10000 b/drivers/net/intel_wired_lan/Kconfig.10000
> new file mode 100644
> index 0000000..ef35ebd
> --- /dev/null
> +++ b/drivers/net/intel_wired_lan/Kconfig.10000
> @@ -0,0 +1,81 @@
> +config IXGBE
> +	tristate "Intel(R) 10GbE PCI Express adapters support"
> +	depends on PCI && INET
> +	select MDIO
> +	---help---
> +	  This driver supports Intel(R) 10GbE PCI Express family of
> +	  adapters.  For more information on how to identify your adapter, go
> +	  to the Adapter & Driver ID Guide at:
> +
> +	  <http://support.intel.com/support/network/adapter/pro100/21397.htm>
> +
> +	  For general information and support, go to the Intel support
> +	  website at:
> +
> +	  <http://support.intel.com>
> +
> +	  To compile this driver as a module, choose M here. The module
> +	  will be called ixgbe.
> +
> +config IXGBE_DCA
> +	bool "Direct Cache Access (DCA) Support"
> +	default y
> +	depends on IXGBE && DCA && !(IXGBE=y && DCA=m)
> +	---help---
> +	  Say Y here if you want to use Direct Cache Access (DCA) in the
> +	  driver.  DCA is a method for warming the CPU cache before data
> +	  is used, with the intent of lessening the impact of cache misses.
> +
> +config IXGBE_DCB
> +	bool "Data Center Bridging (DCB) Support"
> +	default n
> +	depends on IXGBE && DCB
> +	---help---
> +	  Say Y here if you want to use Data Center Bridging (DCB) in the
> +	  driver.
> +
> +	  If unsure, say N.
> +
> +config IXGBEVF
> +       tristate "Intel(R) 82599 Virtual Function Ethernet support"
> +       depends on PCI_MSI
> +       ---help---
> +         This driver supports Intel(R) 82599 virtual functions.  For more
> +         information on how to identify your adapter, go to the Adapter &
> +         Driver ID Guide at:
> +
> +         <http://support.intel.com/support/network/sb/CS-008441.htm>
> +
> +         For general information and support, go to the Intel support
> +         website at:
> +
> +         <http://support.intel.com>
> +
> +         More specific information on configuring the driver is in
> +         <file:Documentation/networking/intel_wired_lan/ixgbevf.txt>.
> +
> +         To compile this driver as a module, choose M here. The module
> +         will be called ixgbevf.  MSI-X interrupt support is required
> +         for this driver to work correctly.
> +
> +config IXGB
> +	tristate "Intel(R) PRO/10GbE support"
> +	depends on PCI
> +	---help---
> +	  This driver supports Intel(R) PRO/10GbE family of adapters for
> +	  PCI-X type cards. For PCI-E type cards, use the "ixgbe" driver
> +	  instead. For more information on how to identify your adapter, go
> +	  to the Adapter & Driver ID Guide at:
> +
> +	  <http://support.intel.com/support/network/adapter/pro100/21397.htm>
> +
> +	  For general information and support, go to the Intel support
> +	  website at:
> +
> +	  <http://support.intel.com>
> +
> +	  More specific information on configuring the driver is in
> +	  <file:Documentation/networking/intel_wired_lan/ixgb.txt>.
> +
> +	  To compile this driver as a module, choose M here. The module
> +	  will be called ixgb.
> diff --git a/drivers/net/intel_wired_lan/Makefile b/drivers/net/intel_wired_lan/Makefile
> new file mode 100644
> index 0000000..87d7ba0
> --- /dev/null
> +++ b/drivers/net/intel_wired_lan/Makefile
> @@ -0,0 +1,9 @@
> +obj-$(CONFIG_E1000) += e1000/
> +obj-$(CONFIG_E1000E) += e1000e/
> +obj-$(CONFIG_IGB) += igb/
> +obj-$(CONFIG_IGBVF) += igbvf/
> +obj-$(CONFIG_IXGBE) += ixgbe/
> +obj-$(CONFIG_IXGBEVF) += ixgbevf/
> +obj-$(CONFIG_IXGB) += ixgb/
> +
> +obj-$(CONFIG_E100) += e100.o
> diff --git a/drivers/net/e100.c b/drivers/net/intel_wired_lan/e100.c
> similarity index 100%
> rename from drivers/net/e100.c
> rename to drivers/net/intel_wired_lan/e100.c
> diff --git a/drivers/net/e1000/Makefile b/drivers/net/intel_wired_lan/e1000/Makefile
> similarity index 100%
> rename from drivers/net/e1000/Makefile
> rename to drivers/net/intel_wired_lan/e1000/Makefile
> diff --git a/drivers/net/e1000/e1000.h b/drivers/net/intel_wired_lan/e1000/e1000.h
> similarity index 100%
> rename from drivers/net/e1000/e1000.h
> rename to drivers/net/intel_wired_lan/e1000/e1000.h
> diff --git a/drivers/net/e1000/e1000_ethtool.c b/drivers/net/intel_wired_lan/e1000/e1000_ethtool.c
> similarity index 100%
> rename from drivers/net/e1000/e1000_ethtool.c
> rename to drivers/net/intel_wired_lan/e1000/e1000_ethtool.c
> diff --git a/drivers/net/e1000/e1000_hw.c b/drivers/net/intel_wired_lan/e1000/e1000_hw.c
> similarity index 100%
> rename from drivers/net/e1000/e1000_hw.c
> rename to drivers/net/intel_wired_lan/e1000/e1000_hw.c
> diff --git a/drivers/net/e1000/e1000_hw.h b/drivers/net/intel_wired_lan/e1000/e1000_hw.h
> similarity index 100%
> rename from drivers/net/e1000/e1000_hw.h
> rename to drivers/net/intel_wired_lan/e1000/e1000_hw.h
> diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/intel_wired_lan/e1000/e1000_main.c
> similarity index 100%
> rename from drivers/net/e1000/e1000_main.c
> rename to drivers/net/intel_wired_lan/e1000/e1000_main.c
> diff --git a/drivers/net/e1000/e1000_osdep.h b/drivers/net/intel_wired_lan/e1000/e1000_osdep.h
> similarity index 100%
> rename from drivers/net/e1000/e1000_osdep.h
> rename to drivers/net/intel_wired_lan/e1000/e1000_osdep.h
> diff --git a/drivers/net/e1000/e1000_param.c b/drivers/net/intel_wired_lan/e1000/e1000_param.c
> similarity index 100%
> rename from drivers/net/e1000/e1000_param.c
> rename to drivers/net/intel_wired_lan/e1000/e1000_param.c
> diff --git a/drivers/net/e1000e/82571.c b/drivers/net/intel_wired_lan/e1000e/82571.c
> similarity index 100%
> rename from drivers/net/e1000e/82571.c
> rename to drivers/net/intel_wired_lan/e1000e/82571.c
> diff --git a/drivers/net/e1000e/Makefile b/drivers/net/intel_wired_lan/e1000e/Makefile
> similarity index 100%
> rename from drivers/net/e1000e/Makefile
> rename to drivers/net/intel_wired_lan/e1000e/Makefile
> diff --git a/drivers/net/e1000e/defines.h b/drivers/net/intel_wired_lan/e1000e/defines.h
> similarity index 100%
> rename from drivers/net/e1000e/defines.h
> rename to drivers/net/intel_wired_lan/e1000e/defines.h
> diff --git a/drivers/net/e1000e/e1000.h b/drivers/net/intel_wired_lan/e1000e/e1000.h
> similarity index 100%
> rename from drivers/net/e1000e/e1000.h
> rename to drivers/net/intel_wired_lan/e1000e/e1000.h
> diff --git a/drivers/net/e1000e/es2lan.c b/drivers/net/intel_wired_lan/e1000e/es2lan.c
> similarity index 100%
> rename from drivers/net/e1000e/es2lan.c
> rename to drivers/net/intel_wired_lan/e1000e/es2lan.c
> diff --git a/drivers/net/e1000e/ethtool.c b/drivers/net/intel_wired_lan/e1000e/ethtool.c
> similarity index 100%
> rename from drivers/net/e1000e/ethtool.c
> rename to drivers/net/intel_wired_lan/e1000e/ethtool.c
> diff --git a/drivers/net/e1000e/hw.h b/drivers/net/intel_wired_lan/e1000e/hw.h
> similarity index 100%
> rename from drivers/net/e1000e/hw.h
> rename to drivers/net/intel_wired_lan/e1000e/hw.h
> diff --git a/drivers/net/e1000e/ich8lan.c b/drivers/net/intel_wired_lan/e1000e/ich8lan.c
> similarity index 100%
> rename from drivers/net/e1000e/ich8lan.c
> rename to drivers/net/intel_wired_lan/e1000e/ich8lan.c
> diff --git a/drivers/net/e1000e/lib.c b/drivers/net/intel_wired_lan/e1000e/lib.c
> similarity index 100%
> rename from drivers/net/e1000e/lib.c
> rename to drivers/net/intel_wired_lan/e1000e/lib.c
> diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/intel_wired_lan/e1000e/netdev.c
> similarity index 100%
> rename from drivers/net/e1000e/netdev.c
> rename to drivers/net/intel_wired_lan/e1000e/netdev.c
> diff --git a/drivers/net/e1000e/param.c b/drivers/net/intel_wired_lan/e1000e/param.c
> similarity index 100%
> rename from drivers/net/e1000e/param.c
> rename to drivers/net/intel_wired_lan/e1000e/param.c
> diff --git a/drivers/net/e1000e/phy.c b/drivers/net/intel_wired_lan/e1000e/phy.c
> similarity index 100%
> rename from drivers/net/e1000e/phy.c
> rename to drivers/net/intel_wired_lan/e1000e/phy.c
> diff --git a/drivers/net/igb/Makefile b/drivers/net/intel_wired_lan/igb/Makefile
> similarity index 100%
> rename from drivers/net/igb/Makefile
> rename to drivers/net/intel_wired_lan/igb/Makefile
> diff --git a/drivers/net/igb/e1000_82575.c b/drivers/net/intel_wired_lan/igb/e1000_82575.c
> similarity index 100%
> rename from drivers/net/igb/e1000_82575.c
> rename to drivers/net/intel_wired_lan/igb/e1000_82575.c
> diff --git a/drivers/net/igb/e1000_82575.h b/drivers/net/intel_wired_lan/igb/e1000_82575.h
> similarity index 100%
> rename from drivers/net/igb/e1000_82575.h
> rename to drivers/net/intel_wired_lan/igb/e1000_82575.h
> diff --git a/drivers/net/igb/e1000_defines.h b/drivers/net/intel_wired_lan/igb/e1000_defines.h
> similarity index 100%
> rename from drivers/net/igb/e1000_defines.h
> rename to drivers/net/intel_wired_lan/igb/e1000_defines.h
> diff --git a/drivers/net/igb/e1000_hw.h b/drivers/net/intel_wired_lan/igb/e1000_hw.h
> similarity index 100%
> rename from drivers/net/igb/e1000_hw.h
> rename to drivers/net/intel_wired_lan/igb/e1000_hw.h
> diff --git a/drivers/net/igb/e1000_mac.c b/drivers/net/intel_wired_lan/igb/e1000_mac.c
> similarity index 100%
> rename from drivers/net/igb/e1000_mac.c
> rename to drivers/net/intel_wired_lan/igb/e1000_mac.c
> diff --git a/drivers/net/igb/e1000_mac.h b/drivers/net/intel_wired_lan/igb/e1000_mac.h
> similarity index 100%
> rename from drivers/net/igb/e1000_mac.h
> rename to drivers/net/intel_wired_lan/igb/e1000_mac.h
> diff --git a/drivers/net/igb/e1000_mbx.c b/drivers/net/intel_wired_lan/igb/e1000_mbx.c
> similarity index 100%
> rename from drivers/net/igb/e1000_mbx.c
> rename to drivers/net/intel_wired_lan/igb/e1000_mbx.c
> diff --git a/drivers/net/igb/e1000_mbx.h b/drivers/net/intel_wired_lan/igb/e1000_mbx.h
> similarity index 100%
> rename from drivers/net/igb/e1000_mbx.h
> rename to drivers/net/intel_wired_lan/igb/e1000_mbx.h
> diff --git a/drivers/net/igb/e1000_nvm.c b/drivers/net/intel_wired_lan/igb/e1000_nvm.c
> similarity index 100%
> rename from drivers/net/igb/e1000_nvm.c
> rename to drivers/net/intel_wired_lan/igb/e1000_nvm.c
> diff --git a/drivers/net/igb/e1000_nvm.h b/drivers/net/intel_wired_lan/igb/e1000_nvm.h
> similarity index 100%
> rename from drivers/net/igb/e1000_nvm.h
> rename to drivers/net/intel_wired_lan/igb/e1000_nvm.h
> diff --git a/drivers/net/igb/e1000_phy.c b/drivers/net/intel_wired_lan/igb/e1000_phy.c
> similarity index 100%
> rename from drivers/net/igb/e1000_phy.c
> rename to drivers/net/intel_wired_lan/igb/e1000_phy.c
> diff --git a/drivers/net/igb/e1000_phy.h b/drivers/net/intel_wired_lan/igb/e1000_phy.h
> similarity index 100%
> rename from drivers/net/igb/e1000_phy.h
> rename to drivers/net/intel_wired_lan/igb/e1000_phy.h
> diff --git a/drivers/net/igb/e1000_regs.h b/drivers/net/intel_wired_lan/igb/e1000_regs.h
> similarity index 100%
> rename from drivers/net/igb/e1000_regs.h
> rename to drivers/net/intel_wired_lan/igb/e1000_regs.h
> diff --git a/drivers/net/igb/igb.h b/drivers/net/intel_wired_lan/igb/igb.h
> similarity index 100%
> rename from drivers/net/igb/igb.h
> rename to drivers/net/intel_wired_lan/igb/igb.h
> diff --git a/drivers/net/igb/igb_ethtool.c b/drivers/net/intel_wired_lan/igb/igb_ethtool.c
> similarity index 100%
> rename from drivers/net/igb/igb_ethtool.c
> rename to drivers/net/intel_wired_lan/igb/igb_ethtool.c
> diff --git a/drivers/net/igb/igb_main.c b/drivers/net/intel_wired_lan/igb/igb_main.c
> similarity index 100%
> rename from drivers/net/igb/igb_main.c
> rename to drivers/net/intel_wired_lan/igb/igb_main.c
> diff --git a/drivers/net/igbvf/Makefile b/drivers/net/intel_wired_lan/igbvf/Makefile
> similarity index 100%
> rename from drivers/net/igbvf/Makefile
> rename to drivers/net/intel_wired_lan/igbvf/Makefile
> diff --git a/drivers/net/igbvf/defines.h b/drivers/net/intel_wired_lan/igbvf/defines.h
> similarity index 100%
> rename from drivers/net/igbvf/defines.h
> rename to drivers/net/intel_wired_lan/igbvf/defines.h
> diff --git a/drivers/net/igbvf/ethtool.c b/drivers/net/intel_wired_lan/igbvf/ethtool.c
> similarity index 100%
> rename from drivers/net/igbvf/ethtool.c
> rename to drivers/net/intel_wired_lan/igbvf/ethtool.c
> diff --git a/drivers/net/igbvf/igbvf.h b/drivers/net/intel_wired_lan/igbvf/igbvf.h
> similarity index 100%
> rename from drivers/net/igbvf/igbvf.h
> rename to drivers/net/intel_wired_lan/igbvf/igbvf.h
> diff --git a/drivers/net/igbvf/mbx.c b/drivers/net/intel_wired_lan/igbvf/mbx.c
> similarity index 100%
> rename from drivers/net/igbvf/mbx.c
> rename to drivers/net/intel_wired_lan/igbvf/mbx.c
> diff --git a/drivers/net/igbvf/mbx.h b/drivers/net/intel_wired_lan/igbvf/mbx.h
> similarity index 100%
> rename from drivers/net/igbvf/mbx.h
> rename to drivers/net/intel_wired_lan/igbvf/mbx.h
> diff --git a/drivers/net/igbvf/netdev.c b/drivers/net/intel_wired_lan/igbvf/netdev.c
> similarity index 100%
> rename from drivers/net/igbvf/netdev.c
> rename to drivers/net/intel_wired_lan/igbvf/netdev.c
> diff --git a/drivers/net/igbvf/regs.h b/drivers/net/intel_wired_lan/igbvf/regs.h
> similarity index 100%
> rename from drivers/net/igbvf/regs.h
> rename to drivers/net/intel_wired_lan/igbvf/regs.h
> diff --git a/drivers/net/igbvf/vf.c b/drivers/net/intel_wired_lan/igbvf/vf.c
> similarity index 100%
> rename from drivers/net/igbvf/vf.c
> rename to drivers/net/intel_wired_lan/igbvf/vf.c
> diff --git a/drivers/net/igbvf/vf.h b/drivers/net/intel_wired_lan/igbvf/vf.h
> similarity index 100%
> rename from drivers/net/igbvf/vf.h
> rename to drivers/net/intel_wired_lan/igbvf/vf.h
> diff --git a/drivers/net/ixgb/Makefile b/drivers/net/intel_wired_lan/ixgb/Makefile
> similarity index 100%
> rename from drivers/net/ixgb/Makefile
> rename to drivers/net/intel_wired_lan/ixgb/Makefile
> diff --git a/drivers/net/ixgb/ixgb.h b/drivers/net/intel_wired_lan/ixgb/ixgb.h
> similarity index 100%
> rename from drivers/net/ixgb/ixgb.h
> rename to drivers/net/intel_wired_lan/ixgb/ixgb.h
> diff --git a/drivers/net/ixgb/ixgb_ee.c b/drivers/net/intel_wired_lan/ixgb/ixgb_ee.c
> similarity index 100%
> rename from drivers/net/ixgb/ixgb_ee.c
> rename to drivers/net/intel_wired_lan/ixgb/ixgb_ee.c
> diff --git a/drivers/net/ixgb/ixgb_ee.h b/drivers/net/intel_wired_lan/ixgb/ixgb_ee.h
> similarity index 100%
> rename from drivers/net/ixgb/ixgb_ee.h
> rename to drivers/net/intel_wired_lan/ixgb/ixgb_ee.h
> diff --git a/drivers/net/ixgb/ixgb_ethtool.c b/drivers/net/intel_wired_lan/ixgb/ixgb_ethtool.c
> similarity index 100%
> rename from drivers/net/ixgb/ixgb_ethtool.c
> rename to drivers/net/intel_wired_lan/ixgb/ixgb_ethtool.c
> diff --git a/drivers/net/ixgb/ixgb_hw.c b/drivers/net/intel_wired_lan/ixgb/ixgb_hw.c
> similarity index 100%
> rename from drivers/net/ixgb/ixgb_hw.c
> rename to drivers/net/intel_wired_lan/ixgb/ixgb_hw.c
> diff --git a/drivers/net/ixgb/ixgb_hw.h b/drivers/net/intel_wired_lan/ixgb/ixgb_hw.h
> similarity index 100%
> rename from drivers/net/ixgb/ixgb_hw.h
> rename to drivers/net/intel_wired_lan/ixgb/ixgb_hw.h
> diff --git a/drivers/net/ixgb/ixgb_ids.h b/drivers/net/intel_wired_lan/ixgb/ixgb_ids.h
> similarity index 100%
> rename from drivers/net/ixgb/ixgb_ids.h
> rename to drivers/net/intel_wired_lan/ixgb/ixgb_ids.h
> diff --git a/drivers/net/ixgb/ixgb_main.c b/drivers/net/intel_wired_lan/ixgb/ixgb_main.c
> similarity index 100%
> rename from drivers/net/ixgb/ixgb_main.c
> rename to drivers/net/intel_wired_lan/ixgb/ixgb_main.c
> diff --git a/drivers/net/ixgb/ixgb_osdep.h b/drivers/net/intel_wired_lan/ixgb/ixgb_osdep.h
> similarity index 100%
> rename from drivers/net/ixgb/ixgb_osdep.h
> rename to drivers/net/intel_wired_lan/ixgb/ixgb_osdep.h
> diff --git a/drivers/net/ixgb/ixgb_param.c b/drivers/net/intel_wired_lan/ixgb/ixgb_param.c
> similarity index 100%
> rename from drivers/net/ixgb/ixgb_param.c
> rename to drivers/net/intel_wired_lan/ixgb/ixgb_param.c
> diff --git a/drivers/net/ixgbe/Makefile b/drivers/net/intel_wired_lan/ixgbe/Makefile
> similarity index 100%
> rename from drivers/net/ixgbe/Makefile
> rename to drivers/net/intel_wired_lan/ixgbe/Makefile
> diff --git a/drivers/net/ixgbe/ixgbe.h b/drivers/net/intel_wired_lan/ixgbe/ixgbe.h
> similarity index 100%
> rename from drivers/net/ixgbe/ixgbe.h
> rename to drivers/net/intel_wired_lan/ixgbe/ixgbe.h
> diff --git a/drivers/net/ixgbe/ixgbe_82598.c b/drivers/net/intel_wired_lan/ixgbe/ixgbe_82598.c
> similarity index 100%
> rename from drivers/net/ixgbe/ixgbe_82598.c
> rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_82598.c
> diff --git a/drivers/net/ixgbe/ixgbe_82599.c b/drivers/net/intel_wired_lan/ixgbe/ixgbe_82599.c
> similarity index 100%
> rename from drivers/net/ixgbe/ixgbe_82599.c
> rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_82599.c
> diff --git a/drivers/net/ixgbe/ixgbe_common.c b/drivers/net/intel_wired_lan/ixgbe/ixgbe_common.c
> similarity index 100%
> rename from drivers/net/ixgbe/ixgbe_common.c
> rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_common.c
> diff --git a/drivers/net/ixgbe/ixgbe_common.h b/drivers/net/intel_wired_lan/ixgbe/ixgbe_common.h
> similarity index 100%
> rename from drivers/net/ixgbe/ixgbe_common.h
> rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_common.h
> diff --git a/drivers/net/ixgbe/ixgbe_dcb.c b/drivers/net/intel_wired_lan/ixgbe/ixgbe_dcb.c
> similarity index 100%
> rename from drivers/net/ixgbe/ixgbe_dcb.c
> rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_dcb.c
> diff --git a/drivers/net/ixgbe/ixgbe_dcb.h b/drivers/net/intel_wired_lan/ixgbe/ixgbe_dcb.h
> similarity index 100%
> rename from drivers/net/ixgbe/ixgbe_dcb.h
> rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_dcb.h
> diff --git a/drivers/net/ixgbe/ixgbe_dcb_82598.c b/drivers/net/intel_wired_lan/ixgbe/ixgbe_dcb_82598.c
> similarity index 100%
> rename from drivers/net/ixgbe/ixgbe_dcb_82598.c
> rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_dcb_82598.c
> diff --git a/drivers/net/ixgbe/ixgbe_dcb_82598.h b/drivers/net/intel_wired_lan/ixgbe/ixgbe_dcb_82598.h
> similarity index 100%
> rename from drivers/net/ixgbe/ixgbe_dcb_82598.h
> rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_dcb_82598.h
> diff --git a/drivers/net/ixgbe/ixgbe_dcb_82599.c b/drivers/net/intel_wired_lan/ixgbe/ixgbe_dcb_82599.c
> similarity index 100%
> rename from drivers/net/ixgbe/ixgbe_dcb_82599.c
> rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_dcb_82599.c
> diff --git a/drivers/net/ixgbe/ixgbe_dcb_82599.h b/drivers/net/intel_wired_lan/ixgbe/ixgbe_dcb_82599.h
> similarity index 100%
> rename from drivers/net/ixgbe/ixgbe_dcb_82599.h
> rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_dcb_82599.h
> diff --git a/drivers/net/ixgbe/ixgbe_dcb_nl.c b/drivers/net/intel_wired_lan/ixgbe/ixgbe_dcb_nl.c
> similarity index 100%
> rename from drivers/net/ixgbe/ixgbe_dcb_nl.c
> rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_dcb_nl.c
> diff --git a/drivers/net/ixgbe/ixgbe_ethtool.c b/drivers/net/intel_wired_lan/ixgbe/ixgbe_ethtool.c
> similarity index 100%
> rename from drivers/net/ixgbe/ixgbe_ethtool.c
> rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_ethtool.c
> diff --git a/drivers/net/ixgbe/ixgbe_fcoe.c b/drivers/net/intel_wired_lan/ixgbe/ixgbe_fcoe.c
> similarity index 100%
> rename from drivers/net/ixgbe/ixgbe_fcoe.c
> rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_fcoe.c
> diff --git a/drivers/net/ixgbe/ixgbe_fcoe.h b/drivers/net/intel_wired_lan/ixgbe/ixgbe_fcoe.h
> similarity index 100%
> rename from drivers/net/ixgbe/ixgbe_fcoe.h
> rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_fcoe.h
> diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/intel_wired_lan/ixgbe/ixgbe_main.c
> similarity index 100%
> rename from drivers/net/ixgbe/ixgbe_main.c
> rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_main.c
> diff --git a/drivers/net/ixgbe/ixgbe_mbx.c b/drivers/net/intel_wired_lan/ixgbe/ixgbe_mbx.c
> similarity index 100%
> rename from drivers/net/ixgbe/ixgbe_mbx.c
> rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_mbx.c
> diff --git a/drivers/net/ixgbe/ixgbe_mbx.h b/drivers/net/intel_wired_lan/ixgbe/ixgbe_mbx.h
> similarity index 100%
> rename from drivers/net/ixgbe/ixgbe_mbx.h
> rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_mbx.h
> diff --git a/drivers/net/ixgbe/ixgbe_phy.c b/drivers/net/intel_wired_lan/ixgbe/ixgbe_phy.c
> similarity index 100%
> rename from drivers/net/ixgbe/ixgbe_phy.c
> rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_phy.c
> diff --git a/drivers/net/ixgbe/ixgbe_phy.h b/drivers/net/intel_wired_lan/ixgbe/ixgbe_phy.h
> similarity index 100%
> rename from drivers/net/ixgbe/ixgbe_phy.h
> rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_phy.h
> diff --git a/drivers/net/ixgbe/ixgbe_sriov.c b/drivers/net/intel_wired_lan/ixgbe/ixgbe_sriov.c
> similarity index 100%
> rename from drivers/net/ixgbe/ixgbe_sriov.c
> rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_sriov.c
> diff --git a/drivers/net/ixgbe/ixgbe_sriov.h b/drivers/net/intel_wired_lan/ixgbe/ixgbe_sriov.h
> similarity index 100%
> rename from drivers/net/ixgbe/ixgbe_sriov.h
> rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_sriov.h
> diff --git a/drivers/net/ixgbe/ixgbe_type.h b/drivers/net/intel_wired_lan/ixgbe/ixgbe_type.h
> similarity index 100%
> rename from drivers/net/ixgbe/ixgbe_type.h
> rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_type.h
> diff --git a/drivers/net/ixgbevf/Makefile b/drivers/net/intel_wired_lan/ixgbevf/Makefile
> similarity index 100%
> rename from drivers/net/ixgbevf/Makefile
> rename to drivers/net/intel_wired_lan/ixgbevf/Makefile
> diff --git a/drivers/net/ixgbevf/defines.h b/drivers/net/intel_wired_lan/ixgbevf/defines.h
> similarity index 100%
> rename from drivers/net/ixgbevf/defines.h
> rename to drivers/net/intel_wired_lan/ixgbevf/defines.h
> diff --git a/drivers/net/ixgbevf/ethtool.c b/drivers/net/intel_wired_lan/ixgbevf/ethtool.c
> similarity index 100%
> rename from drivers/net/ixgbevf/ethtool.c
> rename to drivers/net/intel_wired_lan/ixgbevf/ethtool.c
> diff --git a/drivers/net/ixgbevf/ixgbevf.h b/drivers/net/intel_wired_lan/ixgbevf/ixgbevf.h
> similarity index 100%
> rename from drivers/net/ixgbevf/ixgbevf.h
> rename to drivers/net/intel_wired_lan/ixgbevf/ixgbevf.h
> diff --git a/drivers/net/ixgbevf/ixgbevf_main.c b/drivers/net/intel_wired_lan/ixgbevf/ixgbevf_main.c
> similarity index 100%
> rename from drivers/net/ixgbevf/ixgbevf_main.c
> rename to drivers/net/intel_wired_lan/ixgbevf/ixgbevf_main.c
> diff --git a/drivers/net/ixgbevf/mbx.c b/drivers/net/intel_wired_lan/ixgbevf/mbx.c
> similarity index 100%
> rename from drivers/net/ixgbevf/mbx.c
> rename to drivers/net/intel_wired_lan/ixgbevf/mbx.c
> diff --git a/drivers/net/ixgbevf/mbx.h b/drivers/net/intel_wired_lan/ixgbevf/mbx.h
> similarity index 100%
> rename from drivers/net/ixgbevf/mbx.h
> rename to drivers/net/intel_wired_lan/ixgbevf/mbx.h
> diff --git a/drivers/net/ixgbevf/regs.h b/drivers/net/intel_wired_lan/ixgbevf/regs.h
> similarity index 100%
> rename from drivers/net/ixgbevf/regs.h
> rename to drivers/net/intel_wired_lan/ixgbevf/regs.h
> diff --git a/drivers/net/ixgbevf/vf.c b/drivers/net/intel_wired_lan/ixgbevf/vf.c
> similarity index 100%
> rename from drivers/net/ixgbevf/vf.c
> rename to drivers/net/intel_wired_lan/ixgbevf/vf.c
> diff --git a/drivers/net/ixgbevf/vf.h b/drivers/net/intel_wired_lan/ixgbevf/vf.h
> similarity index 100%
> rename from drivers/net/ixgbevf/vf.h
> rename to drivers/net/intel_wired_lan/ixgbevf/vf.h

Seems like it would introduce more confusion and trouble.


-- 

------------------------------------------------------------------------------
Beautiful is writing same markup. Internet Explorer 9 supports
standards for HTML5, CSS3, SVG 1.1,  ECMAScript5, and DOM L2 & L3.
Spend less time writing and  rewriting code and more time creating great
experiences on the web. Be a part of the beta today.
http://p.sf.net/sfu/beautyoftheweb
_______________________________________________
E1000-devel mailing list
E1000-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel&#174; Ethernet, visit http://communities.intel.com/community/wired

^ permalink raw reply

* [RFC PATCH net-next] drivers/net Documentation/networking: Create directory intel_wired_lan
From: Joe Perches @ 2010-10-10 20:42 UTC (permalink / raw)
  To: Jeff Kirsher
  Cc: Don, e1000-devel, Bruce Allan, Jesse Brandeburg, linux-kernel,
	Greg Rose, John Ronciak, netdev

Perhaps it's better to move drivers from the very populated
drivers/net directory into vendor specific directories similar
to the Atheros approach used for drivers/net/wireless/ath/

Move intel drivers and Documentation to separate directories
Create drivers/net/intel_wired_lan/Kconfig.<speed> and Makefile
Modify drivers/net/Kconfig and Makefile
Update MAINTAINERS

Signed-off-by: Joe Perches <joe@perches.com>
---
 .../networking/{ => intel_wired_lan}/e100.txt      |    0
 .../networking/{ => intel_wired_lan}/e1000.txt     |    0
 .../networking/{ => intel_wired_lan}/igb.txt       |    0
 .../networking/{ => intel_wired_lan}/igbvf.txt     |    0
 .../networking/{ => intel_wired_lan}/ixgb.txt      |    0
 .../networking/{ => intel_wired_lan}/ixgbe.txt     |    0
 .../networking/{ => intel_wired_lan}/ixgbevf.txt   |    0
 MAINTAINERS                                        |   18 +--
 drivers/net/Kconfig                                |  214 +-------------------
 drivers/net/Makefile                               |    8 -
 drivers/net/intel_wired_lan/Kconfig.100            |   25 +++
 drivers/net/intel_wired_lan/Kconfig.1000           |  102 ++++++++++
 drivers/net/intel_wired_lan/Kconfig.10000          |   81 ++++++++
 drivers/net/intel_wired_lan/Makefile               |    9 +
 drivers/net/{ => intel_wired_lan}/e100.c           |    0
 drivers/net/{ => intel_wired_lan}/e1000/Makefile   |    0
 drivers/net/{ => intel_wired_lan}/e1000/e1000.h    |    0
 .../{ => intel_wired_lan}/e1000/e1000_ethtool.c    |    0
 drivers/net/{ => intel_wired_lan}/e1000/e1000_hw.c |    0
 drivers/net/{ => intel_wired_lan}/e1000/e1000_hw.h |    0
 .../net/{ => intel_wired_lan}/e1000/e1000_main.c   |    0
 .../net/{ => intel_wired_lan}/e1000/e1000_osdep.h  |    0
 .../net/{ => intel_wired_lan}/e1000/e1000_param.c  |    0
 drivers/net/{ => intel_wired_lan}/e1000e/82571.c   |    0
 drivers/net/{ => intel_wired_lan}/e1000e/Makefile  |    0
 drivers/net/{ => intel_wired_lan}/e1000e/defines.h |    0
 drivers/net/{ => intel_wired_lan}/e1000e/e1000.h   |    0
 drivers/net/{ => intel_wired_lan}/e1000e/es2lan.c  |    0
 drivers/net/{ => intel_wired_lan}/e1000e/ethtool.c |    0
 drivers/net/{ => intel_wired_lan}/e1000e/hw.h      |    0
 drivers/net/{ => intel_wired_lan}/e1000e/ich8lan.c |    0
 drivers/net/{ => intel_wired_lan}/e1000e/lib.c     |    0
 drivers/net/{ => intel_wired_lan}/e1000e/netdev.c  |    0
 drivers/net/{ => intel_wired_lan}/e1000e/param.c   |    0
 drivers/net/{ => intel_wired_lan}/e1000e/phy.c     |    0
 drivers/net/{ => intel_wired_lan}/igb/Makefile     |    0
 .../net/{ => intel_wired_lan}/igb/e1000_82575.c    |    0
 .../net/{ => intel_wired_lan}/igb/e1000_82575.h    |    0
 .../net/{ => intel_wired_lan}/igb/e1000_defines.h  |    0
 drivers/net/{ => intel_wired_lan}/igb/e1000_hw.h   |    0
 drivers/net/{ => intel_wired_lan}/igb/e1000_mac.c  |    0
 drivers/net/{ => intel_wired_lan}/igb/e1000_mac.h  |    0
 drivers/net/{ => intel_wired_lan}/igb/e1000_mbx.c  |    0
 drivers/net/{ => intel_wired_lan}/igb/e1000_mbx.h  |    0
 drivers/net/{ => intel_wired_lan}/igb/e1000_nvm.c  |    0
 drivers/net/{ => intel_wired_lan}/igb/e1000_nvm.h  |    0
 drivers/net/{ => intel_wired_lan}/igb/e1000_phy.c  |    0
 drivers/net/{ => intel_wired_lan}/igb/e1000_phy.h  |    0
 drivers/net/{ => intel_wired_lan}/igb/e1000_regs.h |    0
 drivers/net/{ => intel_wired_lan}/igb/igb.h        |    0
 .../net/{ => intel_wired_lan}/igb/igb_ethtool.c    |    0
 drivers/net/{ => intel_wired_lan}/igb/igb_main.c   |    0
 drivers/net/{ => intel_wired_lan}/igbvf/Makefile   |    0
 drivers/net/{ => intel_wired_lan}/igbvf/defines.h  |    0
 drivers/net/{ => intel_wired_lan}/igbvf/ethtool.c  |    0
 drivers/net/{ => intel_wired_lan}/igbvf/igbvf.h    |    0
 drivers/net/{ => intel_wired_lan}/igbvf/mbx.c      |    0
 drivers/net/{ => intel_wired_lan}/igbvf/mbx.h      |    0
 drivers/net/{ => intel_wired_lan}/igbvf/netdev.c   |    0
 drivers/net/{ => intel_wired_lan}/igbvf/regs.h     |    0
 drivers/net/{ => intel_wired_lan}/igbvf/vf.c       |    0
 drivers/net/{ => intel_wired_lan}/igbvf/vf.h       |    0
 drivers/net/{ => intel_wired_lan}/ixgb/Makefile    |    0
 drivers/net/{ => intel_wired_lan}/ixgb/ixgb.h      |    0
 drivers/net/{ => intel_wired_lan}/ixgb/ixgb_ee.c   |    0
 drivers/net/{ => intel_wired_lan}/ixgb/ixgb_ee.h   |    0
 .../net/{ => intel_wired_lan}/ixgb/ixgb_ethtool.c  |    0
 drivers/net/{ => intel_wired_lan}/ixgb/ixgb_hw.c   |    0
 drivers/net/{ => intel_wired_lan}/ixgb/ixgb_hw.h   |    0
 drivers/net/{ => intel_wired_lan}/ixgb/ixgb_ids.h  |    0
 drivers/net/{ => intel_wired_lan}/ixgb/ixgb_main.c |    0
 .../net/{ => intel_wired_lan}/ixgb/ixgb_osdep.h    |    0
 .../net/{ => intel_wired_lan}/ixgb/ixgb_param.c    |    0
 drivers/net/{ => intel_wired_lan}/ixgbe/Makefile   |    0
 drivers/net/{ => intel_wired_lan}/ixgbe/ixgbe.h    |    0
 .../net/{ => intel_wired_lan}/ixgbe/ixgbe_82598.c  |    0
 .../net/{ => intel_wired_lan}/ixgbe/ixgbe_82599.c  |    0
 .../net/{ => intel_wired_lan}/ixgbe/ixgbe_common.c |    0
 .../net/{ => intel_wired_lan}/ixgbe/ixgbe_common.h |    0
 .../net/{ => intel_wired_lan}/ixgbe/ixgbe_dcb.c    |    0
 .../net/{ => intel_wired_lan}/ixgbe/ixgbe_dcb.h    |    0
 .../{ => intel_wired_lan}/ixgbe/ixgbe_dcb_82598.c  |    0
 .../{ => intel_wired_lan}/ixgbe/ixgbe_dcb_82598.h  |    0
 .../{ => intel_wired_lan}/ixgbe/ixgbe_dcb_82599.c  |    0
 .../{ => intel_wired_lan}/ixgbe/ixgbe_dcb_82599.h  |    0
 .../net/{ => intel_wired_lan}/ixgbe/ixgbe_dcb_nl.c |    0
 .../{ => intel_wired_lan}/ixgbe/ixgbe_ethtool.c    |    0
 .../net/{ => intel_wired_lan}/ixgbe/ixgbe_fcoe.c   |    0
 .../net/{ => intel_wired_lan}/ixgbe/ixgbe_fcoe.h   |    0
 .../net/{ => intel_wired_lan}/ixgbe/ixgbe_main.c   |    0
 .../net/{ => intel_wired_lan}/ixgbe/ixgbe_mbx.c    |    0
 .../net/{ => intel_wired_lan}/ixgbe/ixgbe_mbx.h    |    0
 .../net/{ => intel_wired_lan}/ixgbe/ixgbe_phy.c    |    0
 .../net/{ => intel_wired_lan}/ixgbe/ixgbe_phy.h    |    0
 .../net/{ => intel_wired_lan}/ixgbe/ixgbe_sriov.c  |    0
 .../net/{ => intel_wired_lan}/ixgbe/ixgbe_sriov.h  |    0
 .../net/{ => intel_wired_lan}/ixgbe/ixgbe_type.h   |    0
 drivers/net/{ => intel_wired_lan}/ixgbevf/Makefile |    0
 .../net/{ => intel_wired_lan}/ixgbevf/defines.h    |    0
 .../net/{ => intel_wired_lan}/ixgbevf/ethtool.c    |    0
 .../net/{ => intel_wired_lan}/ixgbevf/ixgbevf.h    |    0
 .../{ => intel_wired_lan}/ixgbevf/ixgbevf_main.c   |    0
 drivers/net/{ => intel_wired_lan}/ixgbevf/mbx.c    |    0
 drivers/net/{ => intel_wired_lan}/ixgbevf/mbx.h    |    0
 drivers/net/{ => intel_wired_lan}/ixgbevf/regs.h   |    0
 drivers/net/{ => intel_wired_lan}/ixgbevf/vf.c     |    0
 drivers/net/{ => intel_wired_lan}/ixgbevf/vf.h     |    0
 107 files changed, 224 insertions(+), 233 deletions(-)

diff --git a/Documentation/networking/e100.txt b/Documentation/networking/intel_wired_lan/e100.txt
similarity index 100%
rename from Documentation/networking/e100.txt
rename to Documentation/networking/intel_wired_lan/e100.txt
diff --git a/Documentation/networking/e1000.txt b/Documentation/networking/intel_wired_lan/e1000.txt
similarity index 100%
rename from Documentation/networking/e1000.txt
rename to Documentation/networking/intel_wired_lan/e1000.txt
diff --git a/Documentation/networking/igb.txt b/Documentation/networking/intel_wired_lan/igb.txt
similarity index 100%
rename from Documentation/networking/igb.txt
rename to Documentation/networking/intel_wired_lan/igb.txt
diff --git a/Documentation/networking/igbvf.txt b/Documentation/networking/intel_wired_lan/igbvf.txt
similarity index 100%
rename from Documentation/networking/igbvf.txt
rename to Documentation/networking/intel_wired_lan/igbvf.txt
diff --git a/Documentation/networking/ixgb.txt b/Documentation/networking/intel_wired_lan/ixgb.txt
similarity index 100%
rename from Documentation/networking/ixgb.txt
rename to Documentation/networking/intel_wired_lan/ixgb.txt
diff --git a/Documentation/networking/ixgbe.txt b/Documentation/networking/intel_wired_lan/ixgbe.txt
similarity index 100%
rename from Documentation/networking/ixgbe.txt
rename to Documentation/networking/intel_wired_lan/ixgbe.txt
diff --git a/Documentation/networking/ixgbevf.txt b/Documentation/networking/intel_wired_lan/ixgbevf.txt
similarity index 100%
rename from Documentation/networking/ixgbevf.txt
rename to Documentation/networking/intel_wired_lan/ixgbevf.txt
diff --git a/MAINTAINERS b/MAINTAINERS
index ba8603c..b086404 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3096,22 +3096,8 @@ M:	John Ronciak <john.ronciak@intel.com>
 L:	e1000-devel@lists.sourceforge.net
 W:	http://e1000.sourceforge.net/
 S:	Supported
-F:	Documentation/networking/e100.txt
-F:	Documentation/networking/e1000.txt
-F:	Documentation/networking/e1000e.txt
-F:	Documentation/networking/igb.txt
-F:	Documentation/networking/igbvf.txt
-F:	Documentation/networking/ixgb.txt
-F:	Documentation/networking/ixgbe.txt
-F:	Documentation/networking/ixgbevf.txt
-F:	drivers/net/e100.c
-F:	drivers/net/e1000/
-F:	drivers/net/e1000e/
-F:	drivers/net/igb/
-F:	drivers/net/igbvf/
-F:	drivers/net/ixgb/
-F:	drivers/net/ixgbe/
-F:	drivers/net/ixgbevf/
+F:	Documentation/networking/intel_wired_lan/
+F:	drivers/net/intel_wired_lan/
 
 INTEL PRO/WIRELESS 2100 NETWORK CONNECTION SUPPORT
 L:	linux-wireless@vger.kernel.org
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
index 13d01f3..4d6448d 100644
--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
@@ -1495,32 +1495,6 @@ config TC35815
 	depends on NET_PCI && PCI && MIPS
 	select PHYLIB
 
-config E100
-	tristate "Intel(R) PRO/100+ support"
-	depends on NET_PCI && PCI
-	select MII
-	---help---
-	  This driver supports Intel(R) PRO/100 family of adapters.
-	  To verify that your adapter is supported, find the board ID number 
-	  on the adapter. Look for a label that has a barcode and a number 
-	  in the format 123456-001 (six digits hyphen three digits). 
-
-	  Use the above information and the Adapter & Driver ID Guide at:
-
-	  <http://support.intel.com/support/network/adapter/pro100/21397.htm>
-
-          to identify the adapter.
-
-	  For the latest Intel PRO/100 network driver for Linux, see:
-
-	  <http://appsr.intel.com/scripts-df/support_intel.asp>
-
-	  More specific information on configuring the driver is in 
-	  <file:Documentation/networking/e100.txt>.
-
-	  To compile this driver as a module, choose M here. The module
-	  will be called e100.
-
 config LNE390
 	tristate "Mylex EISA LNE390A/B support (EXPERIMENTAL)"
 	depends on NET_PCI && EISA && EXPERIMENTAL
@@ -1995,6 +1969,8 @@ source "drivers/net/fs_enet/Kconfig"
 
 source "drivers/net/octeon/Kconfig"
 
+source "drivers/net/intel_wired_lan/Kconfig.100"
+
 endif # NET_ETHERNET
 
 #
@@ -2059,45 +2035,7 @@ config DL2K
 	  To compile this driver as a module, choose M here: the
 	  module will be called dl2k.
 
-config E1000
-	tristate "Intel(R) PRO/1000 Gigabit Ethernet support"
-	depends on PCI
-	---help---
-	  This driver supports Intel(R) PRO/1000 gigabit ethernet family of
-	  adapters.  For more information on how to identify your adapter, go 
-	  to the Adapter & Driver ID Guide at:
-
-	  <http://support.intel.com/support/network/adapter/pro100/21397.htm>
-
-	  For general information and support, go to the Intel support
-	  website at:
-
-	  <http://support.intel.com>
-
-	  More specific information on configuring the driver is in 
-	  <file:Documentation/networking/e1000.txt>.
-
-	  To compile this driver as a module, choose M here. The module
-	  will be called e1000.
-
-config E1000E
-	tristate "Intel(R) PRO/1000 PCI-Express Gigabit Ethernet support"
-	depends on PCI && (!SPARC32 || BROKEN)
-	---help---
-	  This driver supports the PCI-Express Intel(R) PRO/1000 gigabit
-	  ethernet family of adapters. For PCI or PCI-X e1000 adapters,
-	  use the regular e1000 driver For more information on how to
-	  identify your adapter, go to the Adapter & Driver ID Guide at:
-
-	  <http://support.intel.com/support/network/adapter/pro100/21397.htm>
-
-	  For general information and support, go to the Intel support
-	  website at:
-
-	  <http://support.intel.com>
-
-	  To compile this driver as a module, choose M here. The module
-	  will be called e1000e.
+source "drivers/net/intel_wired_lan/Kconfig.1000"
 
 config IP1000
 	tristate "IP1000 Gigabit Ethernet support"
@@ -2109,57 +2047,6 @@ config IP1000
 	  To compile this driver as a module, choose M here: the module
 	  will be called ipg.  This is recommended.
 
-config IGB
-       tristate "Intel(R) 82575/82576 PCI-Express Gigabit Ethernet support"
-       depends on PCI
-       ---help---
-         This driver supports Intel(R) 82575/82576 gigabit ethernet family of
-         adapters.  For more information on how to identify your adapter, go
-         to the Adapter & Driver ID Guide at:
-
-         <http://support.intel.com/support/network/adapter/pro100/21397.htm>
-
-         For general information and support, go to the Intel support
-         website at:
-
-         <http://support.intel.com>
-
-         More specific information on configuring the driver is in
-         <file:Documentation/networking/e1000.txt>.
-
-         To compile this driver as a module, choose M here. The module
-         will be called igb.
-
-config IGB_DCA
-	bool "Direct Cache Access (DCA) Support"
-	default y
-	depends on IGB && DCA && !(IGB=y && DCA=m)
-	---help---
-	  Say Y here if you want to use Direct Cache Access (DCA) in the
-	  driver.  DCA is a method for warming the CPU cache before data
-	  is used, with the intent of lessening the impact of cache misses.
-
-config IGBVF
-       tristate "Intel(R) 82576 Virtual Function Ethernet support"
-       depends on PCI
-       ---help---
-         This driver supports Intel(R) 82576 virtual functions.  For more
-         information on how to identify your adapter, go to the Adapter &
-         Driver ID Guide at:
-
-         <http://support.intel.com/support/network/adapter/pro100/21397.htm>
-
-         For general information and support, go to the Intel support
-         website at:
-
-         <http://support.intel.com>
-
-         More specific information on configuring the driver is in
-         <file:Documentation/networking/e1000.txt>.
-
-         To compile this driver as a module, choose M here. The module
-         will be called igbvf.
-
 source "drivers/net/ixp2000/Kconfig"
 
 config MYRI_SBUS
@@ -2515,17 +2402,6 @@ config S6GMAC
 
 source "drivers/net/stmmac/Kconfig"
 
-config PCH_GBE
-	tristate "PCH Gigabit Ethernet"
-	depends on PCI
-	---help---
-	  This is a gigabit ethernet driver for Topcliff PCH.
-	  Topcliff PCH is the platform controller hub that is used in Intel's
-	  general embedded platform.
-	  Topcliff PCH has Gigabit Ethernet interface.
-	  Using this interface, it is able to access system devices connected
-	  to Gigabit Ethernet.
-	  This driver enables Gigabit Ethernet function.
 
 endif # NETDEV_1000
 
@@ -2659,94 +2535,14 @@ config EHEA
 	  To compile the driver as a module, choose M here. The module
 	  will be called ehea.
 
+source "drivers/net/intel_wired_lan/Kconfig.10000"
+
 config ENIC
 	tristate "Cisco VIC Ethernet NIC Support"
 	depends on PCI && INET
 	help
 	  This enables the support for the Cisco VIC Ethernet card.
 
-config IXGBE
-	tristate "Intel(R) 10GbE PCI Express adapters support"
-	depends on PCI && INET
-	select MDIO
-	---help---
-	  This driver supports Intel(R) 10GbE PCI Express family of
-	  adapters.  For more information on how to identify your adapter, go
-	  to the Adapter & Driver ID Guide at:
-
-	  <http://support.intel.com/support/network/adapter/pro100/21397.htm>
-
-	  For general information and support, go to the Intel support
-	  website at:
-
-	  <http://support.intel.com>
-
-	  To compile this driver as a module, choose M here. The module
-	  will be called ixgbe.
-
-config IXGBE_DCA
-	bool "Direct Cache Access (DCA) Support"
-	default y
-	depends on IXGBE && DCA && !(IXGBE=y && DCA=m)
-	---help---
-	  Say Y here if you want to use Direct Cache Access (DCA) in the
-	  driver.  DCA is a method for warming the CPU cache before data
-	  is used, with the intent of lessening the impact of cache misses.
-
-config IXGBE_DCB
-	bool "Data Center Bridging (DCB) Support"
-	default n
-	depends on IXGBE && DCB
-	---help---
-	  Say Y here if you want to use Data Center Bridging (DCB) in the
-	  driver.
-
-	  If unsure, say N.
-
-config IXGBEVF
-       tristate "Intel(R) 82599 Virtual Function Ethernet support"
-       depends on PCI_MSI
-       ---help---
-         This driver supports Intel(R) 82599 virtual functions.  For more
-         information on how to identify your adapter, go to the Adapter &
-         Driver ID Guide at:
-
-         <http://support.intel.com/support/network/sb/CS-008441.htm>
-
-         For general information and support, go to the Intel support
-         website at:
-
-         <http://support.intel.com>
-
-         More specific information on configuring the driver is in
-         <file:Documentation/networking/ixgbevf.txt>.
-
-         To compile this driver as a module, choose M here. The module
-         will be called ixgbevf.  MSI-X interrupt support is required
-         for this driver to work correctly.
-
-config IXGB
-	tristate "Intel(R) PRO/10GbE support"
-	depends on PCI
-	---help---
-	  This driver supports Intel(R) PRO/10GbE family of adapters for
-	  PCI-X type cards. For PCI-E type cards, use the "ixgbe" driver
-	  instead. For more information on how to identify your adapter, go
-	  to the Adapter & Driver ID Guide at:
-
-	  <http://support.intel.com/support/network/adapter/pro100/21397.htm>
-
-	  For general information and support, go to the Intel support
-	  website at:
-
-	  <http://support.intel.com>
-
-	  More specific information on configuring the driver is in 
-	  <file:Documentation/networking/ixgb.txt>.
-
-	  To compile this driver as a module, choose M here. The module
-	  will be called ixgb.
-
 config S2IO
 	tristate "S2IO 10Gbe XFrame NIC"
 	depends on PCI
diff --git a/drivers/net/Makefile b/drivers/net/Makefile
index b8bf93d..e457b3c 100644
--- a/drivers/net/Makefile
+++ b/drivers/net/Makefile
@@ -8,14 +8,7 @@ obj-$(CONFIG_PHYLIB) += phy/
 
 obj-$(CONFIG_TI_DAVINCI_EMAC) += davinci_emac.o
 
-obj-$(CONFIG_E1000) += e1000/
-obj-$(CONFIG_E1000E) += e1000e/
 obj-$(CONFIG_IBM_NEW_EMAC) += ibm_newemac/
-obj-$(CONFIG_IGB) += igb/
-obj-$(CONFIG_IGBVF) += igbvf/
-obj-$(CONFIG_IXGBE) += ixgbe/
-obj-$(CONFIG_IXGBEVF) += ixgbevf/
-obj-$(CONFIG_IXGB) += ixgb/
 obj-$(CONFIG_IP1000) += ipg.o
 obj-$(CONFIG_CHELSIO_T1) += chelsio/
 obj-$(CONFIG_CHELSIO_T3) += cxgb3/
@@ -68,7 +61,6 @@ obj-$(CONFIG_VORTEX) += 3c59x.o
 obj-$(CONFIG_TYPHOON) += typhoon.o
 obj-$(CONFIG_NE2K_PCI) += ne2k-pci.o 8390.o
 obj-$(CONFIG_PCNET32) += pcnet32.o
-obj-$(CONFIG_E100) += e100.o
 obj-$(CONFIG_TLAN) += tlan.o
 obj-$(CONFIG_EPIC100) += epic100.o
 obj-$(CONFIG_SMSC9420) += smsc9420.o
diff --git a/drivers/net/intel_wired_lan/Kconfig.100 b/drivers/net/intel_wired_lan/Kconfig.100
new file mode 100644
index 0000000..6651ae9
--- /dev/null
+++ b/drivers/net/intel_wired_lan/Kconfig.100
@@ -0,0 +1,25 @@
+config E100
+	tristate "Intel(R) PRO/100+ support"
+	depends on NET_PCI && PCI
+	select MII
+	---help---
+	  This driver supports Intel(R) PRO/100 family of adapters.
+	  To verify that your adapter is supported, find the board ID number
+	  on the adapter. Look for a label that has a barcode and a number
+	  in the format 123456-001 (six digits hyphen three digits).
+
+	  Use the above information and the Adapter & Driver ID Guide at:
+
+	  <http://support.intel.com/support/network/adapter/pro100/21397.htm>
+
+          to identify the adapter.
+
+	  For the latest Intel PRO/100 network driver for Linux, see:
+
+	  <http://appsr.intel.com/scripts-df/support_intel.asp>
+
+	  More specific information on configuring the driver is in
+	  <file:Documentation/networking/intel_wired_lan/e100.txt>.
+
+	  To compile this driver as a module, choose M here. The module
+	  will be called e100.
diff --git a/drivers/net/intel_wired_lan/Kconfig.1000 b/drivers/net/intel_wired_lan/Kconfig.1000
new file mode 100644
index 0000000..4a7e13a
--- /dev/null
+++ b/drivers/net/intel_wired_lan/Kconfig.1000
@@ -0,0 +1,102 @@
+config E1000
+	tristate "Intel(R) PRO/1000 Gigabit Ethernet support"
+	depends on PCI
+	---help---
+	  This driver supports Intel(R) PRO/1000 gigabit ethernet family of
+	  adapters.  For more information on how to identify your adapter, go
+	  to the Adapter & Driver ID Guide at:
+
+	  <http://support.intel.com/support/network/adapter/pro100/21397.htm>
+
+	  For general information and support, go to the Intel support
+	  website at:
+
+	  <http://support.intel.com>
+
+	  More specific information on configuring the driver is in
+	  <file:Documentation/networking/intel_wired_lan/e1000.txt>.
+
+	  To compile this driver as a module, choose M here. The module
+	  will be called e1000.
+
+config E1000E
+	tristate "Intel(R) PRO/1000 PCI-Express Gigabit Ethernet support"
+	depends on PCI && (!SPARC32 || BROKEN)
+	---help---
+	  This driver supports the PCI-Express Intel(R) PRO/1000 gigabit
+	  ethernet family of adapters. For PCI or PCI-X e1000 adapters,
+	  use the regular e1000 driver For more information on how to
+	  identify your adapter, go to the Adapter & Driver ID Guide at:
+
+	  <http://support.intel.com/support/network/adapter/pro100/21397.htm>
+
+	  For general information and support, go to the Intel support
+	  website at:
+
+	  <http://support.intel.com>
+
+	  To compile this driver as a module, choose M here. The module
+	  will be called e1000e.
+
+config IGB
+       tristate "Intel(R) 82575/82576 PCI-Express Gigabit Ethernet support"
+       depends on PCI
+       ---help---
+         This driver supports Intel(R) 82575/82576 gigabit ethernet family of
+         adapters.  For more information on how to identify your adapter, go
+         to the Adapter & Driver ID Guide at:
+
+         <http://support.intel.com/support/network/adapter/pro100/21397.htm>
+
+         For general information and support, go to the Intel support
+         website at:
+
+         <http://support.intel.com>
+
+         More specific information on configuring the driver is in
+         <file:Documentation/networking/intel_wired_lan/e1000.txt>.
+
+         To compile this driver as a module, choose M here. The module
+         will be called igb.
+
+config IGB_DCA
+	bool "Direct Cache Access (DCA) Support"
+	default y
+	depends on IGB && DCA && !(IGB=y && DCA=m)
+	---help---
+	  Say Y here if you want to use Direct Cache Access (DCA) in the
+	  driver.  DCA is a method for warming the CPU cache before data
+	  is used, with the intent of lessening the impact of cache misses.
+
+config IGBVF
+       tristate "Intel(R) 82576 Virtual Function Ethernet support"
+       depends on PCI
+       ---help---
+         This driver supports Intel(R) 82576 virtual functions.  For more
+         information on how to identify your adapter, go to the Adapter &
+         Driver ID Guide at:
+
+         <http://support.intel.com/support/network/adapter/pro100/21397.htm>
+
+         For general information and support, go to the Intel support
+         website at:
+
+         <http://support.intel.com>
+
+         More specific information on configuring the driver is in
+         <file:Documentation/networking/intel_wired_lan/e1000.txt>.
+
+         To compile this driver as a module, choose M here. The module
+         will be called igbvf.
+
+config PCH_GBE
+	tristate "PCH Gigabit Ethernet"
+	depends on PCI
+	---help---
+	  This is a gigabit ethernet driver for Topcliff PCH.
+	  Topcliff PCH is the platform controller hub that is used in Intel's
+	  general embedded platform.
+	  Topcliff PCH has Gigabit Ethernet interface.
+	  Using this interface, it is able to access system devices connected
+	  to Gigabit Ethernet.
+	  This driver enables Gigabit Ethernet function.
diff --git a/drivers/net/intel_wired_lan/Kconfig.10000 b/drivers/net/intel_wired_lan/Kconfig.10000
new file mode 100644
index 0000000..ef35ebd
--- /dev/null
+++ b/drivers/net/intel_wired_lan/Kconfig.10000
@@ -0,0 +1,81 @@
+config IXGBE
+	tristate "Intel(R) 10GbE PCI Express adapters support"
+	depends on PCI && INET
+	select MDIO
+	---help---
+	  This driver supports Intel(R) 10GbE PCI Express family of
+	  adapters.  For more information on how to identify your adapter, go
+	  to the Adapter & Driver ID Guide at:
+
+	  <http://support.intel.com/support/network/adapter/pro100/21397.htm>
+
+	  For general information and support, go to the Intel support
+	  website at:
+
+	  <http://support.intel.com>
+
+	  To compile this driver as a module, choose M here. The module
+	  will be called ixgbe.
+
+config IXGBE_DCA
+	bool "Direct Cache Access (DCA) Support"
+	default y
+	depends on IXGBE && DCA && !(IXGBE=y && DCA=m)
+	---help---
+	  Say Y here if you want to use Direct Cache Access (DCA) in the
+	  driver.  DCA is a method for warming the CPU cache before data
+	  is used, with the intent of lessening the impact of cache misses.
+
+config IXGBE_DCB
+	bool "Data Center Bridging (DCB) Support"
+	default n
+	depends on IXGBE && DCB
+	---help---
+	  Say Y here if you want to use Data Center Bridging (DCB) in the
+	  driver.
+
+	  If unsure, say N.
+
+config IXGBEVF
+       tristate "Intel(R) 82599 Virtual Function Ethernet support"
+       depends on PCI_MSI
+       ---help---
+         This driver supports Intel(R) 82599 virtual functions.  For more
+         information on how to identify your adapter, go to the Adapter &
+         Driver ID Guide at:
+
+         <http://support.intel.com/support/network/sb/CS-008441.htm>
+
+         For general information and support, go to the Intel support
+         website at:
+
+         <http://support.intel.com>
+
+         More specific information on configuring the driver is in
+         <file:Documentation/networking/intel_wired_lan/ixgbevf.txt>.
+
+         To compile this driver as a module, choose M here. The module
+         will be called ixgbevf.  MSI-X interrupt support is required
+         for this driver to work correctly.
+
+config IXGB
+	tristate "Intel(R) PRO/10GbE support"
+	depends on PCI
+	---help---
+	  This driver supports Intel(R) PRO/10GbE family of adapters for
+	  PCI-X type cards. For PCI-E type cards, use the "ixgbe" driver
+	  instead. For more information on how to identify your adapter, go
+	  to the Adapter & Driver ID Guide at:
+
+	  <http://support.intel.com/support/network/adapter/pro100/21397.htm>
+
+	  For general information and support, go to the Intel support
+	  website at:
+
+	  <http://support.intel.com>
+
+	  More specific information on configuring the driver is in
+	  <file:Documentation/networking/intel_wired_lan/ixgb.txt>.
+
+	  To compile this driver as a module, choose M here. The module
+	  will be called ixgb.
diff --git a/drivers/net/intel_wired_lan/Makefile b/drivers/net/intel_wired_lan/Makefile
new file mode 100644
index 0000000..87d7ba0
--- /dev/null
+++ b/drivers/net/intel_wired_lan/Makefile
@@ -0,0 +1,9 @@
+obj-$(CONFIG_E1000) += e1000/
+obj-$(CONFIG_E1000E) += e1000e/
+obj-$(CONFIG_IGB) += igb/
+obj-$(CONFIG_IGBVF) += igbvf/
+obj-$(CONFIG_IXGBE) += ixgbe/
+obj-$(CONFIG_IXGBEVF) += ixgbevf/
+obj-$(CONFIG_IXGB) += ixgb/
+
+obj-$(CONFIG_E100) += e100.o
diff --git a/drivers/net/e100.c b/drivers/net/intel_wired_lan/e100.c
similarity index 100%
rename from drivers/net/e100.c
rename to drivers/net/intel_wired_lan/e100.c
diff --git a/drivers/net/e1000/Makefile b/drivers/net/intel_wired_lan/e1000/Makefile
similarity index 100%
rename from drivers/net/e1000/Makefile
rename to drivers/net/intel_wired_lan/e1000/Makefile
diff --git a/drivers/net/e1000/e1000.h b/drivers/net/intel_wired_lan/e1000/e1000.h
similarity index 100%
rename from drivers/net/e1000/e1000.h
rename to drivers/net/intel_wired_lan/e1000/e1000.h
diff --git a/drivers/net/e1000/e1000_ethtool.c b/drivers/net/intel_wired_lan/e1000/e1000_ethtool.c
similarity index 100%
rename from drivers/net/e1000/e1000_ethtool.c
rename to drivers/net/intel_wired_lan/e1000/e1000_ethtool.c
diff --git a/drivers/net/e1000/e1000_hw.c b/drivers/net/intel_wired_lan/e1000/e1000_hw.c
similarity index 100%
rename from drivers/net/e1000/e1000_hw.c
rename to drivers/net/intel_wired_lan/e1000/e1000_hw.c
diff --git a/drivers/net/e1000/e1000_hw.h b/drivers/net/intel_wired_lan/e1000/e1000_hw.h
similarity index 100%
rename from drivers/net/e1000/e1000_hw.h
rename to drivers/net/intel_wired_lan/e1000/e1000_hw.h
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/intel_wired_lan/e1000/e1000_main.c
similarity index 100%
rename from drivers/net/e1000/e1000_main.c
rename to drivers/net/intel_wired_lan/e1000/e1000_main.c
diff --git a/drivers/net/e1000/e1000_osdep.h b/drivers/net/intel_wired_lan/e1000/e1000_osdep.h
similarity index 100%
rename from drivers/net/e1000/e1000_osdep.h
rename to drivers/net/intel_wired_lan/e1000/e1000_osdep.h
diff --git a/drivers/net/e1000/e1000_param.c b/drivers/net/intel_wired_lan/e1000/e1000_param.c
similarity index 100%
rename from drivers/net/e1000/e1000_param.c
rename to drivers/net/intel_wired_lan/e1000/e1000_param.c
diff --git a/drivers/net/e1000e/82571.c b/drivers/net/intel_wired_lan/e1000e/82571.c
similarity index 100%
rename from drivers/net/e1000e/82571.c
rename to drivers/net/intel_wired_lan/e1000e/82571.c
diff --git a/drivers/net/e1000e/Makefile b/drivers/net/intel_wired_lan/e1000e/Makefile
similarity index 100%
rename from drivers/net/e1000e/Makefile
rename to drivers/net/intel_wired_lan/e1000e/Makefile
diff --git a/drivers/net/e1000e/defines.h b/drivers/net/intel_wired_lan/e1000e/defines.h
similarity index 100%
rename from drivers/net/e1000e/defines.h
rename to drivers/net/intel_wired_lan/e1000e/defines.h
diff --git a/drivers/net/e1000e/e1000.h b/drivers/net/intel_wired_lan/e1000e/e1000.h
similarity index 100%
rename from drivers/net/e1000e/e1000.h
rename to drivers/net/intel_wired_lan/e1000e/e1000.h
diff --git a/drivers/net/e1000e/es2lan.c b/drivers/net/intel_wired_lan/e1000e/es2lan.c
similarity index 100%
rename from drivers/net/e1000e/es2lan.c
rename to drivers/net/intel_wired_lan/e1000e/es2lan.c
diff --git a/drivers/net/e1000e/ethtool.c b/drivers/net/intel_wired_lan/e1000e/ethtool.c
similarity index 100%
rename from drivers/net/e1000e/ethtool.c
rename to drivers/net/intel_wired_lan/e1000e/ethtool.c
diff --git a/drivers/net/e1000e/hw.h b/drivers/net/intel_wired_lan/e1000e/hw.h
similarity index 100%
rename from drivers/net/e1000e/hw.h
rename to drivers/net/intel_wired_lan/e1000e/hw.h
diff --git a/drivers/net/e1000e/ich8lan.c b/drivers/net/intel_wired_lan/e1000e/ich8lan.c
similarity index 100%
rename from drivers/net/e1000e/ich8lan.c
rename to drivers/net/intel_wired_lan/e1000e/ich8lan.c
diff --git a/drivers/net/e1000e/lib.c b/drivers/net/intel_wired_lan/e1000e/lib.c
similarity index 100%
rename from drivers/net/e1000e/lib.c
rename to drivers/net/intel_wired_lan/e1000e/lib.c
diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/intel_wired_lan/e1000e/netdev.c
similarity index 100%
rename from drivers/net/e1000e/netdev.c
rename to drivers/net/intel_wired_lan/e1000e/netdev.c
diff --git a/drivers/net/e1000e/param.c b/drivers/net/intel_wired_lan/e1000e/param.c
similarity index 100%
rename from drivers/net/e1000e/param.c
rename to drivers/net/intel_wired_lan/e1000e/param.c
diff --git a/drivers/net/e1000e/phy.c b/drivers/net/intel_wired_lan/e1000e/phy.c
similarity index 100%
rename from drivers/net/e1000e/phy.c
rename to drivers/net/intel_wired_lan/e1000e/phy.c
diff --git a/drivers/net/igb/Makefile b/drivers/net/intel_wired_lan/igb/Makefile
similarity index 100%
rename from drivers/net/igb/Makefile
rename to drivers/net/intel_wired_lan/igb/Makefile
diff --git a/drivers/net/igb/e1000_82575.c b/drivers/net/intel_wired_lan/igb/e1000_82575.c
similarity index 100%
rename from drivers/net/igb/e1000_82575.c
rename to drivers/net/intel_wired_lan/igb/e1000_82575.c
diff --git a/drivers/net/igb/e1000_82575.h b/drivers/net/intel_wired_lan/igb/e1000_82575.h
similarity index 100%
rename from drivers/net/igb/e1000_82575.h
rename to drivers/net/intel_wired_lan/igb/e1000_82575.h
diff --git a/drivers/net/igb/e1000_defines.h b/drivers/net/intel_wired_lan/igb/e1000_defines.h
similarity index 100%
rename from drivers/net/igb/e1000_defines.h
rename to drivers/net/intel_wired_lan/igb/e1000_defines.h
diff --git a/drivers/net/igb/e1000_hw.h b/drivers/net/intel_wired_lan/igb/e1000_hw.h
similarity index 100%
rename from drivers/net/igb/e1000_hw.h
rename to drivers/net/intel_wired_lan/igb/e1000_hw.h
diff --git a/drivers/net/igb/e1000_mac.c b/drivers/net/intel_wired_lan/igb/e1000_mac.c
similarity index 100%
rename from drivers/net/igb/e1000_mac.c
rename to drivers/net/intel_wired_lan/igb/e1000_mac.c
diff --git a/drivers/net/igb/e1000_mac.h b/drivers/net/intel_wired_lan/igb/e1000_mac.h
similarity index 100%
rename from drivers/net/igb/e1000_mac.h
rename to drivers/net/intel_wired_lan/igb/e1000_mac.h
diff --git a/drivers/net/igb/e1000_mbx.c b/drivers/net/intel_wired_lan/igb/e1000_mbx.c
similarity index 100%
rename from drivers/net/igb/e1000_mbx.c
rename to drivers/net/intel_wired_lan/igb/e1000_mbx.c
diff --git a/drivers/net/igb/e1000_mbx.h b/drivers/net/intel_wired_lan/igb/e1000_mbx.h
similarity index 100%
rename from drivers/net/igb/e1000_mbx.h
rename to drivers/net/intel_wired_lan/igb/e1000_mbx.h
diff --git a/drivers/net/igb/e1000_nvm.c b/drivers/net/intel_wired_lan/igb/e1000_nvm.c
similarity index 100%
rename from drivers/net/igb/e1000_nvm.c
rename to drivers/net/intel_wired_lan/igb/e1000_nvm.c
diff --git a/drivers/net/igb/e1000_nvm.h b/drivers/net/intel_wired_lan/igb/e1000_nvm.h
similarity index 100%
rename from drivers/net/igb/e1000_nvm.h
rename to drivers/net/intel_wired_lan/igb/e1000_nvm.h
diff --git a/drivers/net/igb/e1000_phy.c b/drivers/net/intel_wired_lan/igb/e1000_phy.c
similarity index 100%
rename from drivers/net/igb/e1000_phy.c
rename to drivers/net/intel_wired_lan/igb/e1000_phy.c
diff --git a/drivers/net/igb/e1000_phy.h b/drivers/net/intel_wired_lan/igb/e1000_phy.h
similarity index 100%
rename from drivers/net/igb/e1000_phy.h
rename to drivers/net/intel_wired_lan/igb/e1000_phy.h
diff --git a/drivers/net/igb/e1000_regs.h b/drivers/net/intel_wired_lan/igb/e1000_regs.h
similarity index 100%
rename from drivers/net/igb/e1000_regs.h
rename to drivers/net/intel_wired_lan/igb/e1000_regs.h
diff --git a/drivers/net/igb/igb.h b/drivers/net/intel_wired_lan/igb/igb.h
similarity index 100%
rename from drivers/net/igb/igb.h
rename to drivers/net/intel_wired_lan/igb/igb.h
diff --git a/drivers/net/igb/igb_ethtool.c b/drivers/net/intel_wired_lan/igb/igb_ethtool.c
similarity index 100%
rename from drivers/net/igb/igb_ethtool.c
rename to drivers/net/intel_wired_lan/igb/igb_ethtool.c
diff --git a/drivers/net/igb/igb_main.c b/drivers/net/intel_wired_lan/igb/igb_main.c
similarity index 100%
rename from drivers/net/igb/igb_main.c
rename to drivers/net/intel_wired_lan/igb/igb_main.c
diff --git a/drivers/net/igbvf/Makefile b/drivers/net/intel_wired_lan/igbvf/Makefile
similarity index 100%
rename from drivers/net/igbvf/Makefile
rename to drivers/net/intel_wired_lan/igbvf/Makefile
diff --git a/drivers/net/igbvf/defines.h b/drivers/net/intel_wired_lan/igbvf/defines.h
similarity index 100%
rename from drivers/net/igbvf/defines.h
rename to drivers/net/intel_wired_lan/igbvf/defines.h
diff --git a/drivers/net/igbvf/ethtool.c b/drivers/net/intel_wired_lan/igbvf/ethtool.c
similarity index 100%
rename from drivers/net/igbvf/ethtool.c
rename to drivers/net/intel_wired_lan/igbvf/ethtool.c
diff --git a/drivers/net/igbvf/igbvf.h b/drivers/net/intel_wired_lan/igbvf/igbvf.h
similarity index 100%
rename from drivers/net/igbvf/igbvf.h
rename to drivers/net/intel_wired_lan/igbvf/igbvf.h
diff --git a/drivers/net/igbvf/mbx.c b/drivers/net/intel_wired_lan/igbvf/mbx.c
similarity index 100%
rename from drivers/net/igbvf/mbx.c
rename to drivers/net/intel_wired_lan/igbvf/mbx.c
diff --git a/drivers/net/igbvf/mbx.h b/drivers/net/intel_wired_lan/igbvf/mbx.h
similarity index 100%
rename from drivers/net/igbvf/mbx.h
rename to drivers/net/intel_wired_lan/igbvf/mbx.h
diff --git a/drivers/net/igbvf/netdev.c b/drivers/net/intel_wired_lan/igbvf/netdev.c
similarity index 100%
rename from drivers/net/igbvf/netdev.c
rename to drivers/net/intel_wired_lan/igbvf/netdev.c
diff --git a/drivers/net/igbvf/regs.h b/drivers/net/intel_wired_lan/igbvf/regs.h
similarity index 100%
rename from drivers/net/igbvf/regs.h
rename to drivers/net/intel_wired_lan/igbvf/regs.h
diff --git a/drivers/net/igbvf/vf.c b/drivers/net/intel_wired_lan/igbvf/vf.c
similarity index 100%
rename from drivers/net/igbvf/vf.c
rename to drivers/net/intel_wired_lan/igbvf/vf.c
diff --git a/drivers/net/igbvf/vf.h b/drivers/net/intel_wired_lan/igbvf/vf.h
similarity index 100%
rename from drivers/net/igbvf/vf.h
rename to drivers/net/intel_wired_lan/igbvf/vf.h
diff --git a/drivers/net/ixgb/Makefile b/drivers/net/intel_wired_lan/ixgb/Makefile
similarity index 100%
rename from drivers/net/ixgb/Makefile
rename to drivers/net/intel_wired_lan/ixgb/Makefile
diff --git a/drivers/net/ixgb/ixgb.h b/drivers/net/intel_wired_lan/ixgb/ixgb.h
similarity index 100%
rename from drivers/net/ixgb/ixgb.h
rename to drivers/net/intel_wired_lan/ixgb/ixgb.h
diff --git a/drivers/net/ixgb/ixgb_ee.c b/drivers/net/intel_wired_lan/ixgb/ixgb_ee.c
similarity index 100%
rename from drivers/net/ixgb/ixgb_ee.c
rename to drivers/net/intel_wired_lan/ixgb/ixgb_ee.c
diff --git a/drivers/net/ixgb/ixgb_ee.h b/drivers/net/intel_wired_lan/ixgb/ixgb_ee.h
similarity index 100%
rename from drivers/net/ixgb/ixgb_ee.h
rename to drivers/net/intel_wired_lan/ixgb/ixgb_ee.h
diff --git a/drivers/net/ixgb/ixgb_ethtool.c b/drivers/net/intel_wired_lan/ixgb/ixgb_ethtool.c
similarity index 100%
rename from drivers/net/ixgb/ixgb_ethtool.c
rename to drivers/net/intel_wired_lan/ixgb/ixgb_ethtool.c
diff --git a/drivers/net/ixgb/ixgb_hw.c b/drivers/net/intel_wired_lan/ixgb/ixgb_hw.c
similarity index 100%
rename from drivers/net/ixgb/ixgb_hw.c
rename to drivers/net/intel_wired_lan/ixgb/ixgb_hw.c
diff --git a/drivers/net/ixgb/ixgb_hw.h b/drivers/net/intel_wired_lan/ixgb/ixgb_hw.h
similarity index 100%
rename from drivers/net/ixgb/ixgb_hw.h
rename to drivers/net/intel_wired_lan/ixgb/ixgb_hw.h
diff --git a/drivers/net/ixgb/ixgb_ids.h b/drivers/net/intel_wired_lan/ixgb/ixgb_ids.h
similarity index 100%
rename from drivers/net/ixgb/ixgb_ids.h
rename to drivers/net/intel_wired_lan/ixgb/ixgb_ids.h
diff --git a/drivers/net/ixgb/ixgb_main.c b/drivers/net/intel_wired_lan/ixgb/ixgb_main.c
similarity index 100%
rename from drivers/net/ixgb/ixgb_main.c
rename to drivers/net/intel_wired_lan/ixgb/ixgb_main.c
diff --git a/drivers/net/ixgb/ixgb_osdep.h b/drivers/net/intel_wired_lan/ixgb/ixgb_osdep.h
similarity index 100%
rename from drivers/net/ixgb/ixgb_osdep.h
rename to drivers/net/intel_wired_lan/ixgb/ixgb_osdep.h
diff --git a/drivers/net/ixgb/ixgb_param.c b/drivers/net/intel_wired_lan/ixgb/ixgb_param.c
similarity index 100%
rename from drivers/net/ixgb/ixgb_param.c
rename to drivers/net/intel_wired_lan/ixgb/ixgb_param.c
diff --git a/drivers/net/ixgbe/Makefile b/drivers/net/intel_wired_lan/ixgbe/Makefile
similarity index 100%
rename from drivers/net/ixgbe/Makefile
rename to drivers/net/intel_wired_lan/ixgbe/Makefile
diff --git a/drivers/net/ixgbe/ixgbe.h b/drivers/net/intel_wired_lan/ixgbe/ixgbe.h
similarity index 100%
rename from drivers/net/ixgbe/ixgbe.h
rename to drivers/net/intel_wired_lan/ixgbe/ixgbe.h
diff --git a/drivers/net/ixgbe/ixgbe_82598.c b/drivers/net/intel_wired_lan/ixgbe/ixgbe_82598.c
similarity index 100%
rename from drivers/net/ixgbe/ixgbe_82598.c
rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_82598.c
diff --git a/drivers/net/ixgbe/ixgbe_82599.c b/drivers/net/intel_wired_lan/ixgbe/ixgbe_82599.c
similarity index 100%
rename from drivers/net/ixgbe/ixgbe_82599.c
rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_82599.c
diff --git a/drivers/net/ixgbe/ixgbe_common.c b/drivers/net/intel_wired_lan/ixgbe/ixgbe_common.c
similarity index 100%
rename from drivers/net/ixgbe/ixgbe_common.c
rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_common.c
diff --git a/drivers/net/ixgbe/ixgbe_common.h b/drivers/net/intel_wired_lan/ixgbe/ixgbe_common.h
similarity index 100%
rename from drivers/net/ixgbe/ixgbe_common.h
rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_common.h
diff --git a/drivers/net/ixgbe/ixgbe_dcb.c b/drivers/net/intel_wired_lan/ixgbe/ixgbe_dcb.c
similarity index 100%
rename from drivers/net/ixgbe/ixgbe_dcb.c
rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_dcb.c
diff --git a/drivers/net/ixgbe/ixgbe_dcb.h b/drivers/net/intel_wired_lan/ixgbe/ixgbe_dcb.h
similarity index 100%
rename from drivers/net/ixgbe/ixgbe_dcb.h
rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_dcb.h
diff --git a/drivers/net/ixgbe/ixgbe_dcb_82598.c b/drivers/net/intel_wired_lan/ixgbe/ixgbe_dcb_82598.c
similarity index 100%
rename from drivers/net/ixgbe/ixgbe_dcb_82598.c
rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_dcb_82598.c
diff --git a/drivers/net/ixgbe/ixgbe_dcb_82598.h b/drivers/net/intel_wired_lan/ixgbe/ixgbe_dcb_82598.h
similarity index 100%
rename from drivers/net/ixgbe/ixgbe_dcb_82598.h
rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_dcb_82598.h
diff --git a/drivers/net/ixgbe/ixgbe_dcb_82599.c b/drivers/net/intel_wired_lan/ixgbe/ixgbe_dcb_82599.c
similarity index 100%
rename from drivers/net/ixgbe/ixgbe_dcb_82599.c
rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_dcb_82599.c
diff --git a/drivers/net/ixgbe/ixgbe_dcb_82599.h b/drivers/net/intel_wired_lan/ixgbe/ixgbe_dcb_82599.h
similarity index 100%
rename from drivers/net/ixgbe/ixgbe_dcb_82599.h
rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_dcb_82599.h
diff --git a/drivers/net/ixgbe/ixgbe_dcb_nl.c b/drivers/net/intel_wired_lan/ixgbe/ixgbe_dcb_nl.c
similarity index 100%
rename from drivers/net/ixgbe/ixgbe_dcb_nl.c
rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_dcb_nl.c
diff --git a/drivers/net/ixgbe/ixgbe_ethtool.c b/drivers/net/intel_wired_lan/ixgbe/ixgbe_ethtool.c
similarity index 100%
rename from drivers/net/ixgbe/ixgbe_ethtool.c
rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_ethtool.c
diff --git a/drivers/net/ixgbe/ixgbe_fcoe.c b/drivers/net/intel_wired_lan/ixgbe/ixgbe_fcoe.c
similarity index 100%
rename from drivers/net/ixgbe/ixgbe_fcoe.c
rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_fcoe.c
diff --git a/drivers/net/ixgbe/ixgbe_fcoe.h b/drivers/net/intel_wired_lan/ixgbe/ixgbe_fcoe.h
similarity index 100%
rename from drivers/net/ixgbe/ixgbe_fcoe.h
rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_fcoe.h
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/intel_wired_lan/ixgbe/ixgbe_main.c
similarity index 100%
rename from drivers/net/ixgbe/ixgbe_main.c
rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_main.c
diff --git a/drivers/net/ixgbe/ixgbe_mbx.c b/drivers/net/intel_wired_lan/ixgbe/ixgbe_mbx.c
similarity index 100%
rename from drivers/net/ixgbe/ixgbe_mbx.c
rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_mbx.c
diff --git a/drivers/net/ixgbe/ixgbe_mbx.h b/drivers/net/intel_wired_lan/ixgbe/ixgbe_mbx.h
similarity index 100%
rename from drivers/net/ixgbe/ixgbe_mbx.h
rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_mbx.h
diff --git a/drivers/net/ixgbe/ixgbe_phy.c b/drivers/net/intel_wired_lan/ixgbe/ixgbe_phy.c
similarity index 100%
rename from drivers/net/ixgbe/ixgbe_phy.c
rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_phy.c
diff --git a/drivers/net/ixgbe/ixgbe_phy.h b/drivers/net/intel_wired_lan/ixgbe/ixgbe_phy.h
similarity index 100%
rename from drivers/net/ixgbe/ixgbe_phy.h
rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_phy.h
diff --git a/drivers/net/ixgbe/ixgbe_sriov.c b/drivers/net/intel_wired_lan/ixgbe/ixgbe_sriov.c
similarity index 100%
rename from drivers/net/ixgbe/ixgbe_sriov.c
rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_sriov.c
diff --git a/drivers/net/ixgbe/ixgbe_sriov.h b/drivers/net/intel_wired_lan/ixgbe/ixgbe_sriov.h
similarity index 100%
rename from drivers/net/ixgbe/ixgbe_sriov.h
rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_sriov.h
diff --git a/drivers/net/ixgbe/ixgbe_type.h b/drivers/net/intel_wired_lan/ixgbe/ixgbe_type.h
similarity index 100%
rename from drivers/net/ixgbe/ixgbe_type.h
rename to drivers/net/intel_wired_lan/ixgbe/ixgbe_type.h
diff --git a/drivers/net/ixgbevf/Makefile b/drivers/net/intel_wired_lan/ixgbevf/Makefile
similarity index 100%
rename from drivers/net/ixgbevf/Makefile
rename to drivers/net/intel_wired_lan/ixgbevf/Makefile
diff --git a/drivers/net/ixgbevf/defines.h b/drivers/net/intel_wired_lan/ixgbevf/defines.h
similarity index 100%
rename from drivers/net/ixgbevf/defines.h
rename to drivers/net/intel_wired_lan/ixgbevf/defines.h
diff --git a/drivers/net/ixgbevf/ethtool.c b/drivers/net/intel_wired_lan/ixgbevf/ethtool.c
similarity index 100%
rename from drivers/net/ixgbevf/ethtool.c
rename to drivers/net/intel_wired_lan/ixgbevf/ethtool.c
diff --git a/drivers/net/ixgbevf/ixgbevf.h b/drivers/net/intel_wired_lan/ixgbevf/ixgbevf.h
similarity index 100%
rename from drivers/net/ixgbevf/ixgbevf.h
rename to drivers/net/intel_wired_lan/ixgbevf/ixgbevf.h
diff --git a/drivers/net/ixgbevf/ixgbevf_main.c b/drivers/net/intel_wired_lan/ixgbevf/ixgbevf_main.c
similarity index 100%
rename from drivers/net/ixgbevf/ixgbevf_main.c
rename to drivers/net/intel_wired_lan/ixgbevf/ixgbevf_main.c
diff --git a/drivers/net/ixgbevf/mbx.c b/drivers/net/intel_wired_lan/ixgbevf/mbx.c
similarity index 100%
rename from drivers/net/ixgbevf/mbx.c
rename to drivers/net/intel_wired_lan/ixgbevf/mbx.c
diff --git a/drivers/net/ixgbevf/mbx.h b/drivers/net/intel_wired_lan/ixgbevf/mbx.h
similarity index 100%
rename from drivers/net/ixgbevf/mbx.h
rename to drivers/net/intel_wired_lan/ixgbevf/mbx.h
diff --git a/drivers/net/ixgbevf/regs.h b/drivers/net/intel_wired_lan/ixgbevf/regs.h
similarity index 100%
rename from drivers/net/ixgbevf/regs.h
rename to drivers/net/intel_wired_lan/ixgbevf/regs.h
diff --git a/drivers/net/ixgbevf/vf.c b/drivers/net/intel_wired_lan/ixgbevf/vf.c
similarity index 100%
rename from drivers/net/ixgbevf/vf.c
rename to drivers/net/intel_wired_lan/ixgbevf/vf.c
diff --git a/drivers/net/ixgbevf/vf.h b/drivers/net/intel_wired_lan/ixgbevf/vf.h
similarity index 100%
rename from drivers/net/ixgbevf/vf.h
rename to drivers/net/intel_wired_lan/ixgbevf/vf.h



------------------------------------------------------------------------------
Beautiful is writing same markup. Internet Explorer 9 supports
standards for HTML5, CSS3, SVG 1.1,  ECMAScript5, and DOM L2 & L3.
Spend less time writing and  rewriting code and more time creating great
experiences on the web. Be a part of the beta today.
http://p.sf.net/sfu/beautyoftheweb
_______________________________________________
E1000-devel mailing list
E1000-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel&#174; Ethernet, visit http://communities.intel.com/community/wired

^ permalink raw reply related


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