Netdev List
 help / color / mirror / Atom feed
* Re: BUG ? ipip unregister_netdevice_many()
From: Hans Schillstrom @ 2010-10-14  6:41 UTC (permalink / raw)
  To: David Miller
  Cc: jarkao2@gmail.com, ebiederm@xmission.com, daniel.lezcano@free.fr,
	netdev@vger.kernel.org
In-Reply-To: <20101013.145856.112590240.davem@davemloft.net>

On Wednesday 13 October 2010 23:58:56 David Miller wrote:
> From: Jarek Poplawski <jarkao2@gmail.com>
> Date: Wed, 13 Oct 2010 11:19:47 +0000
>
> >> -static void rt_do_flush(int process_context)
> >> +static void rt_do_flush(struct net *net, int process_context)
> >>  {
> >>  	unsigned int i;
> >>  	struct rtable *rth, *next;
> >> -	struct rtable * tail;
> >>
> >>  	for (i = 0; i <= rt_hash_mask; i++) {
> >> +		struct rtable *list, **pprev;
> >
> > Isn't "list = NULL" needed here?
>
> Yes it is, thanks for catching that.
>
It solves the crach but....

 #
Slab corruption: size-4096 start=ffff88000f950000, len=4096
010: 00 00 00 00 00 00 00 00 6b 6b 6b 6b 6b 6b 6b 6b
unregister_netdevice: waiting for lo to become free. Usage count = 4
Slab corruption: size-4096 start=ffff88000f9af000, len=4096
010: 00 00 00 00 00 00 00 00 6b 6b 6b 6b 6b 6b 6b 6b
unregister_netdevice: waiting for lo to become free. Usage count = 4
unregister_netdevice: waiting for lo to become free. Usage count = 4
unregister_netdevice: waiting for lo to become free. Usage count = 4

Regards
Hans Schillstrom <hans.schillstrom@ericsson.com>

^ permalink raw reply

* Re: tbf/htb qdisc limitations
From: Bill Fink @ 2010-10-14  7:13 UTC (permalink / raw)
  To: Jarek Poplawski; +Cc: Rick Jones, Steven Brudenell, netdev
In-Reply-To: <20101014064404.GA6219@ff.dom.local>

On Thu, 14 Oct, Jarek Poplawski wrote:

> On Wed, Oct 13, 2010 at 11:36:53PM -0400, Bill Fink wrote:
> > On Wed, 13 Oct 2010, Jarek Poplawski wrote:
> > 
> > > On Tue, Oct 12, 2010 at 03:17:18PM -0700, Rick Jones wrote:
> > > >>> my burst problem is the only semi-legitimate motivation i can think
> > > >>> of. the only other possible motivations i can imagine are setting
> > > >>> "limit" to buffer more than 4GB of packets and setting "rate" to
> > > >>> something more than 32 gigabit; both of these seem kind of dubious. is
> > > >>> there something else you had in mind?
> > > >>
> > > >>
> > > >> No, mainly 10 gigabit rates and additionally 64-bit stats.
> > > >
> > > > Any issue for bonded 10 GbE interfaces?  Now that the IEEE have ratified 
> > > > (June) how far out are 40 GbE interfaces?  Or 100 GbE for that matter.
> > > 
> > > Alas packet schedulers using rate tables are still around 1G. Above 2G
> > > they get less and less accurate, so hfsc is recommended.
> > 
> > I was just trying to do an 8 Gbps rate limit on a 10-GigE path,
> > and couldn't get it to work with either htb or tbf.  Are you
> > saying this currently isn't possible?
> 
> Let's start from reminding that no precise packet scheduling should be
> expected with gso/tso etc. turned on. I don't know current hardware
> limits for such a non-gso traffic, but for 8 Gbit rate htb or tbf
> would definitely have wrong rate tables (overflowed values) for packet
> sizes below 1500 bytes.

TSO/GSO was disabled and was using 9000-byte jumbo frames
(and specified mtu 9000 to tc command).

Here was one attempt I made using tbf:

tc qdisc add dev eth2 root handle 1: prio
tc qdisc add dev eth2 parent 1:1 handle 10: tbf rate 8900mbit buffer 1112500 limit 10000 mtu 9000
tc filter add dev eth2 protocol ip parent 1: prio 1 u32 match ip dst 192.168.1.23 flowid 10:1

I tried many variations of the above, all without success.

> > Or are you saying to use
> > this hfsc mechanism, which there doesn't seem to be a man page
> > for?
> 
> There was a try:
> http://lists.openwall.net/netdev/2009/02/26/138

Thanks for the pointer.  I will check it out later in detail,
but I'm already having difficulty with deciding if I have the
tc commands right for tbf and htb, and hfsc looks even more
involved.

					-Bill

^ permalink raw reply

* Re: [PATCH net-next] net:  allocate skbs on local node
From: David Rientjes @ 2010-10-14  7:23 UTC (permalink / raw)
  To: Pekka Enberg
  Cc: Christoph Lameter, Andrew Morton, Eric Dumazet, David Miller,
	netdev, Michael Chan, Eilon Greenstein, Christoph Hellwig, LKML,
	Nick Piggin
In-Reply-To: <4CB6A1AB.4030800@cs.helsinki.fi>

On Thu, 14 Oct 2010, Pekka Enberg wrote:

> Argh. Why would we want to introduce something that's effectively a new
> allocator based on SLUB? If there's something controversial in the current
> patch series, lets just keep it out of mainline. A "rewrite" is the reason
> we're in this mess so lets not repeat the same mistake again!
> 

SLUB is a good base framework for developing just about any slab allocator 
you can imagine, in part because of its enhanced debugging facilities.  
Nick originally developed SLQB with much of the same SLUB framework and 
the queueing changes that Christoph is proposing in his new unified 
allocator builds upon SLUB.

Instead of the slab.c, slab_queue.c, and slab_nonqueue.c trifecta, I 
suggested building as much of the core allocator into a single file as 
possible and then extending that with a config option such as 
CONFIG_SLAB_QUEUEING, if possible.  Christoph knows his allocator better 
than anybody so he'd be the person to ask if this was indeed feasible and, 
if so, I think it's in the best interest of a long-term maintainable 
kernel.

I care about how this is organized because I think the current config 
option demanding users select between SLAB and SLUB without really 
understanding the differences (especially for users who run a very wide 
range of applications and the pros and cons of better microbenchmark 
results for one allocator over another isn't at all convincing) is 
detrimental.

^ permalink raw reply

* Re: tbf/htb qdisc limitations
From: Jarek Poplawski @ 2010-10-14  6:44 UTC (permalink / raw)
  To: Bill Fink; +Cc: Rick Jones, Steven Brudenell, netdev
In-Reply-To: <20101013233653.1e363692.billfink@mindspring.com>

On Wed, Oct 13, 2010 at 11:36:53PM -0400, Bill Fink wrote:
> On Wed, 13 Oct 2010, Jarek Poplawski wrote:
> 
> > On Tue, Oct 12, 2010 at 03:17:18PM -0700, Rick Jones wrote:
> > >>> my burst problem is the only semi-legitimate motivation i can think
> > >>> of. the only other possible motivations i can imagine are setting
> > >>> "limit" to buffer more than 4GB of packets and setting "rate" to
> > >>> something more than 32 gigabit; both of these seem kind of dubious. is
> > >>> there something else you had in mind?
> > >>
> > >>
> > >> No, mainly 10 gigabit rates and additionally 64-bit stats.
> > >
> > > Any issue for bonded 10 GbE interfaces?  Now that the IEEE have ratified 
> > > (June) how far out are 40 GbE interfaces?  Or 100 GbE for that matter.
> > 
> > Alas packet schedulers using rate tables are still around 1G. Above 2G
> > they get less and less accurate, so hfsc is recommended.
> 
> I was just trying to do an 8 Gbps rate limit on a 10-GigE path,
> and couldn't get it to work with either htb or tbf.  Are you
> saying this currently isn't possible?

Let's start from reminding that no precise packet scheduling should be
expected with gso/tso etc. turned on. I don't know current hardware
limits for such a non-gso traffic, but for 8 Gbit rate htb or tbf
would definitely have wrong rate tables (overflowed values) for packet
sizes below 1500 bytes.

> Or are you saying to use
> this hfsc mechanism, which there doesn't seem to be a man page
> for?

There was a try:
http://lists.openwall.net/netdev/2009/02/26/138

Jarek P.

^ permalink raw reply

* Re: [v2 RFC PATCH 0/4] Implement multiqueue virtio-net
From: Krishna Kumar2 @ 2010-10-14  7:58 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: anthony, arnd, avi, davem, kvm, netdev, rusty
In-Reply-To: <20101012170907.GA30613@redhat.com>

"Michael S. Tsirkin" <mst@redhat.com> wrote on 10/12/2010 10:39:07 PM:

> > Sorry for the delay, I was sick last couple of days. The results
> > with your patch are (%'s over original code):
> >
> > Code               BW%       CPU%       RemoteCPU
> > MQ     (#txq=16)   31.4%     38.42%     6.41%
> > MQ+MST (#txq=16)   28.3%     18.9%      -10.77%
> >
> > The patch helps CPU utilization but didn't help single stream
> > drop.
> >
> > Thanks,
>
> What other shared TX/RX locks are there?  In your setup, is the same
> macvtap socket structure used for RX and TX?  If yes this will create
> cacheline bounces as sk_wmem_alloc/sk_rmem_alloc share a cache line,
> there might also be contention on the lock in sk_sleep waitqueue.
> Anything else?

The patch is not introducing any locking (both vhost and virtio-net).
The single stream drop is due to different vhost threads handling the
RX/TX traffic.

I added a heuristic (fuzzy) to determine if more than one flow
is being used on the device, and if not, use vhost[0] for both
tx and rx (vhost_poll_queue figures this out before waking up
the suitable vhost thread).  Testing shows that single stream
performance is as good as the original code.

__________________________________________________________________________
		       #txqs = 2 (#vhosts = 3)
#     BW1     BW2   (%)       CPU1    CPU2 (%)       RCPU1   RCPU2 (%)
__________________________________________________________________________
1     77344   74973 (-3.06)   172     143 (-16.86)   358     324 (-9.49)
2     20924   21107 (.87)     107     103 (-3.73)    220     217 (-1.36)
4     21629   32911 (52.16)   214     391 (82.71)    446     616 (38.11)
8     21678   34359 (58.49)   428     845 (97.42)    892     1286 (44.17)
16    22046   34401 (56.04)   841     1677 (99.40)   1785    2585 (44.81)
24    22396   35117 (56.80)   1272    2447 (92.37)   2667    3863 (44.84)
32    22750   35158 (54.54)   1719    3233 (88.07)   3569    5143 (44.10)
40    23041   35345 (53.40)   2219    3970 (78.90)   4478    6410 (43.14)
48    23209   35219 (51.74)   2707    4685 (73.06)   5386    7684 (42.66)
64    23215   35209 (51.66)   3639    6195 (70.23)   7206    10218 (41.79)
80    23443   35179 (50.06)   4633    7625 (64.58)   9051    12745 (40.81)
96    24006   36108 (50.41)   5635    9096 (61.41)   10864   15283 (40.67)
128   23601   35744 (51.45)   7475    12104 (61.92)  14495   20405 (40.77)
__________________________________________________________________________
SUM:     BW: (37.6)     CPU: (69.0)     RCPU: (41.2)

__________________________________________________________________________
		       #txqs = 8 (#vhosts = 5)
#     BW1     BW2    (%)      CPU1     CPU2 (%)      RCPU1     RCPU2 (%)
__________________________________________________________________________
1     77344   75341 (-2.58)   172     171 (-.58)     358     356 (-.55)
2     20924   26872 (28.42)   107     135 (26.16)    220     262 (19.09)
4     21629   33594 (55.31)   214     394 (84.11)    446     615 (37.89)
8     21678   39714 (83.19)   428     949 (121.72)   892     1358 (52.24)
16    22046   39879 (80.88)   841     1791 (112.96)  1785    2737 (53.33)
24    22396   38436 (71.61)   1272    2111 (65.95)   2667    3453 (29.47)
32    22750   38776 (70.44)   1719    3594 (109.07)  3569    5421 (51.89)
40    23041   38023 (65.02)   2219    4358 (96.39)   4478    6507 (45.31)
48    23209   33811 (45.68)   2707    4047 (49.50)   5386    6222 (15.52)
64    23215   30212 (30.13)   3639    3858 (6.01)    7206    5819 (-19.24)
80    23443   34497 (47.15)   4633    7214 (55.70)   9051    10776 (19.05)
96    24006   30990 (29.09)   5635    5731 (1.70)    10864   8799 (-19.00)
128   23601   29413 (24.62)   7475    7804 (4.40)    14495   11638 (-19.71)
__________________________________________________________________________
SUM:     BW: (40.1)     CPU: (35.7)     RCPU: (4.1)
_______________________________________________________________________________


The SD numbers are also good (same table as before, but SD
instead of CPU:

__________________________________________________________________________
		       #txqs = 2 (#vhosts = 3)
#     BW%       SD1     SD2 (%)        RSD1     RSD2 (%)
__________________________________________________________________________
1     -3.06)    5       4 (-20.00)     21       19 (-9.52)
2     .87       6       6 (0)          27       27 (0)
4     52.16     26      32 (23.07)     108      103 (-4.62)
8     58.49     103     146 (41.74)    431      445 (3.24)
16    56.04     407     514 (26.28)    1729     1586 (-8.27)
24    56.80     934     1161 (24.30)   3916     3665 (-6.40)
32    54.54     1668    2160 (29.49)   6925     6872 (-.76)
40    53.40     2655    3317 (24.93)   10712    10707 (-.04)
48    51.74     3920    4486 (14.43)   15598    14715 (-5.66)
64    51.66     7096    8250 (16.26)   28099    27211 (-3.16)
80    50.06     11240   12586 (11.97)  43913    42070 (-4.19)
96    50.41     16342   16976 (3.87)   63017    57048 (-9.47)
128   51.45     29254   32069 (9.62)   113451   108113 (-4.70)
__________________________________________________________________________
SUM:     BW: (37.6)     SD: (10.9)     RSD: (-5.3)

__________________________________________________________________________
		       #txqs = 8 (#vhosts = 5)
#     BW%       SD1     SD2 (%)         RSD1     RSD2 (%)
__________________________________________________________________________
1     -2.58     5       5 (0)           21       21 (0)
2     28.42     6       6 (0)           27       25 (-7.40)
4     55.31     26      32 (23.07)      108      102 (-5.55)
8     83.19     103     128 (24.27)     431      368 (-14.61)
16    80.88     407     593 (45.70)     1729     1814 (4.91)
24    71.61     934     965 (3.31)      3916     3156 (-19.40)
32    70.44     1668    3232 (93.76)    6925     9752 (40.82)
40    65.02     2655    5134 (93.37)    10712    15340 (43.20)
48    45.68     3920    4592 (17.14)    15598    14122 (-9.46)
64    30.13     7096    3928 (-44.64)   28099    11880 (-57.72)
80    47.15     11240   18389 (63.60)   43913    55154 (25.59)
96    29.09     16342   21695 (32.75)   63017    66892 (6.14)
128   24.62     29254   36371 (24.32)   113451   109219 (-3.73)
__________________________________________________________________________
SUM:     BW: (40.1)     SD: (29.0)     RSD: (0)

This approach works nicely for both single and multiple stream.
Does this look good?

Thanks,

- KK


^ permalink raw reply

* Re: [v2 RFC PATCH 0/4] Implement multiqueue virtio-net
From: Michael S. Tsirkin @ 2010-10-14  8:17 UTC (permalink / raw)
  To: Krishna Kumar2; +Cc: anthony, arnd, avi, davem, kvm, netdev, rusty
In-Reply-To: <OFA7630B83.BFDFF71D-ON652577BC.0026D199-652577BC.002B9158@in.ibm.com>

On Thu, Oct 14, 2010 at 01:28:58PM +0530, Krishna Kumar2 wrote:
> "Michael S. Tsirkin" <mst@redhat.com> wrote on 10/12/2010 10:39:07 PM:
> 
> > > Sorry for the delay, I was sick last couple of days. The results
> > > with your patch are (%'s over original code):
> > >
> > > Code               BW%       CPU%       RemoteCPU
> > > MQ     (#txq=16)   31.4%     38.42%     6.41%
> > > MQ+MST (#txq=16)   28.3%     18.9%      -10.77%
> > >
> > > The patch helps CPU utilization but didn't help single stream
> > > drop.
> > >
> > > Thanks,
> >
> > What other shared TX/RX locks are there?  In your setup, is the same
> > macvtap socket structure used for RX and TX?  If yes this will create
> > cacheline bounces as sk_wmem_alloc/sk_rmem_alloc share a cache line,
> > there might also be contention on the lock in sk_sleep waitqueue.
> > Anything else?
> 
> The patch is not introducing any locking (both vhost and virtio-net).
> The single stream drop is due to different vhost threads handling the
> RX/TX traffic.
> 
> I added a heuristic (fuzzy) to determine if more than one flow
> is being used on the device, and if not, use vhost[0] for both
> tx and rx (vhost_poll_queue figures this out before waking up
> the suitable vhost thread).  Testing shows that single stream
> performance is as good as the original code.

...

> This approach works nicely for both single and multiple stream.
> Does this look good?
> 
> Thanks,
> 
> - KK

Yes, but I guess it depends on the heuristic :) What's the logic?

-- 
MST

^ permalink raw reply

* Re: [v2 RFC PATCH 0/4] Implement multiqueue virtio-net
From: Krishna Kumar2 @ 2010-10-14  9:04 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: anthony, arnd, avi, davem, kvm, netdev, rusty
In-Reply-To: <20101014081723.GC11095@redhat.com>

> "Michael S. Tsirkin" <mst@redhat.com>
> > > What other shared TX/RX locks are there?  In your setup, is the same
> > > macvtap socket structure used for RX and TX?  If yes this will create
> > > cacheline bounces as sk_wmem_alloc/sk_rmem_alloc share a cache line,
> > > there might also be contention on the lock in sk_sleep waitqueue.
> > > Anything else?
> >
> > The patch is not introducing any locking (both vhost and virtio-net).
> > The single stream drop is due to different vhost threads handling the
> > RX/TX traffic.
> >
> > I added a heuristic (fuzzy) to determine if more than one flow
> > is being used on the device, and if not, use vhost[0] for both
> > tx and rx (vhost_poll_queue figures this out before waking up
> > the suitable vhost thread).  Testing shows that single stream
> > performance is as good as the original code.
>
> ...
>
> > This approach works nicely for both single and multiple stream.
> > Does this look good?
> >
> > Thanks,
> >
> > - KK
>
> Yes, but I guess it depends on the heuristic :) What's the logic?

I define how recently a txq was used. If 0 or 1 txq's were used
recently, use vq[0] (which also handles rx). Otherwise, use
multiple txq (vq[1-n]). The code is:

/*
 * Algorithm for selecting vq:
 *
 * Condition                                    Return
 * RX vq                                        vq[0]
 * If all txqs unused                           vq[0]
 * If one txq used, and new txq is same         vq[0]
 * If one txq used, and new txq is different    vq[vq->qnum]
 * If > 1 txqs used                             vq[vq->qnum]
 *      Where "used" means the txq was used in the last 'n' jiffies.
 *
 * Note: locking is not required as an update race will only result in
 * a different worker being woken up.
 */
static inline struct vhost_virtqueue *vhost_find_vq(struct vhost_poll
*poll)
{
	if (poll->vq->qnum) {
		struct vhost_dev *dev = poll->vq->dev;
		struct vhost_virtqueue *vq = &dev->vqs[0];
		unsigned long max_time = jiffies - 5; /* Some macro needed */
		unsigned long *table = dev->jiffies;
		int i, used = 0;

		for (i = 0; i < dev->nvqs - 1; i++) {
			if (time_after_eq(table[i], max_time) && ++used > 1) {
				vq = poll->vq;
				break;
			}
		}
		table[poll->vq->qnum - 1] = jiffies;
		return vq;
	}

	/* RX is handled by the same worker thread */
	return poll->vq;
}

void vhost_poll_queue(struct vhost_poll *poll)
{
        struct vhost_virtqueue *vq = vhost_find_vq(poll);

        vhost_work_queue(vq, &poll->work);
}

Since poll batches packets, find_vq does not seem to add much
to the CPU utilization (or BW). I am sure that code can be
optimized much better.

The results I sent in my last mail were without your use_mm
patch, and the only tuning was to make vhost threads run on
only cpus 0-3 (though the performance is good even without
that). I will test it later today with the use_mm patch too.

Thanks,

- KK


^ permalink raw reply

* Re: [RFC PATCH net-next] drivers/net Documentation/networking: Create directory intel_wired_lan
From: Jeff Kirsher @ 2010-10-14  9:34 UTC (permalink / raw)
  To: Joe Perches
  Cc: Brandeburg, Jesse, Allan, Bruce W, Wyborny, Carolyn,
	Skidmore, Donald C, Rose, Gregory V, Waskiewicz Jr, Peter P,
	Duyck, Alexander H, Ronciak, John, linux-kernel@vger.kernel.org,
	netdev@vger.kernel.org, e1000-devel
In-Reply-To: <1287035857.1117.528.camel@Joe-Laptop>


[-- Attachment #1.1: Type: text/plain, Size: 49368 bytes --]

On Wed, 2010-10-13 at 22:57 -0700, Joe Perches wrote:
> On Wed, 2010-10-13 at 21:57 -0700, Jeff Kirsher wrote:
> > On Wed, 2010-10-13 at 15:28 -0700, Joe Perches wrote:
> > Sorry I am not ignoring you, I was taking a closer look at your patch.
> > > What regression testing would actually be done?
> > The Makefile and Kconfig needs more work.  I applied your patch and none
> > of the Intel Wired drivers build.
> 
> Care to describe the Makefile/Kconfig issues you have seen?
> 
> I built it allyesconfig, defconfig, allmodconfig and allnoconfig.

Yeah, I found all of those built without errors, but if you build the
Intel Wired LAN drivers as modules, you will not find the *.ko files
after the build.  The Kconfig files look fine, the problem was with the
Makefiles.  Instead of creating a drivers/net/intel_wired_lan/Makefile,
I simply changed the path in drivers/net/Makefile to the updated path
and that resolved the issue.

Also I found that you missed moving e1000e.txt.

As far as the sub-directory name "intel_wired_lan", what about "intel"
or "intel_wired"?  Just a thought...

> 
> Perhaps you need to use "git am foo" in a test branch instead
> of "patch -p1 < foo" ?

I used "git am foo"...

> 
> > I am working on providing an updated RFC patch to resolve the
> > Makefile/Kconfig issues I found and few other minor issues I have
> > found. 
> 
> Oh good.
> 
> cheers, Joe
> 

Here is the updated patch (also attached)...

Documentation/networking drivers/net: Create directory intel_wired_lan

Based on original patch from Joe Perches <joe@perches.com>

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: Jeff Kirsher <jeffrey.t.kirsher@intel.com>

---
 .../networking/{ => intel_wired_lan}/e100.txt      |    0
 .../networking/{ => intel_wired_lan}/e1000.txt     |    0
 .../networking/{ => intel_wired_lan}/e1000e.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                               |   16 +-
 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}/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/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
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/e1000e.txt
b/Documentation/networking/intel_wired_lan/e1000e.txt
similarity index 100%
rename from Documentation/networking/e1000e.txt
rename to Documentation/networking/intel_wired_lan/e1000e.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,14 @@ obj-$(CONFIG_PHYLIB) += phy/
 
 obj-$(CONFIG_TI_DAVINCI_EMAC) += davinci_emac.o
 
-obj-$(CONFIG_E1000) += e1000/
-obj-$(CONFIG_E1000E) += e1000e/
+obj-$(CONFIG_E1000) += intel_wired_lan/e1000/
+obj-$(CONFIG_E1000E) += intel_wired_lan/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_IGB) += intel_wired_lan/igb/
+obj-$(CONFIG_IGBVF) += intel_wired_lan/igbvf/
+obj-$(CONFIG_IXGBE) += intel_wired_lan/ixgbe/
+obj-$(CONFIG_IXGBEVF) += intel_wired_lan/ixgbevf/
+obj-$(CONFIG_IXGB) += intel_wired_lan/ixgb/
 obj-$(CONFIG_IP1000) += ipg.o
 obj-$(CONFIG_CHELSIO_T1) += chelsio/
 obj-$(CONFIG_CHELSIO_T3) += cxgb3/
@@ -68,7 +68,7 @@ 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_E100) += intel_wired_lan/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.

[-- Attachment #1.2: RFC-intel_wired_lan.patch --]
[-- Type: text/x-patch, Size: 48114 bytes --]

From: Joe Perches <joe@perches.com>
intel: Create directory intel_wired_lan

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}/e1000e.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                               |   16 +-
 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}/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/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


--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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/e1000e.txt b/Documentation/networking/intel_wired_lan/e1000e.txt
similarity index 100%
rename from Documentation/networking/e1000e.txt
rename to Documentation/networking/intel_wired_lan/e1000e.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,14 @@ obj-$(CONFIG_PHYLIB) += phy/
 
 obj-$(CONFIG_TI_DAVINCI_EMAC) += davinci_emac.o
 
-obj-$(CONFIG_E1000) += e1000/
-obj-$(CONFIG_E1000E) += e1000e/
+obj-$(CONFIG_E1000) += intel_wired_lan/e1000/
+obj-$(CONFIG_E1000E) += intel_wired_lan/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_IGB) += intel_wired_lan/igb/
+obj-$(CONFIG_IGBVF) += intel_wired_lan/igbvf/
+obj-$(CONFIG_IXGBE) += intel_wired_lan/ixgbe/
+obj-$(CONFIG_IXGBEVF) += intel_wired_lan/ixgbevf/
+obj-$(CONFIG_IXGB) += intel_wired_lan/ixgb/
 obj-$(CONFIG_IP1000) += ipg.o
 obj-$(CONFIG_CHELSIO_T1) += chelsio/
 obj-$(CONFIG_CHELSIO_T3) += cxgb3/
@@ -68,7 +68,7 @@ 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_E100) += intel_wired_lan/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.

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

^ permalink raw reply related

* Re: tbf/htb qdisc limitations
From: Jarek Poplawski @ 2010-10-14  8:09 UTC (permalink / raw)
  To: Bill Fink; +Cc: Rick Jones, Steven Brudenell, netdev
In-Reply-To: <20101014031354.e172d737.billfink@mindspring.com>

On Thu, Oct 14, 2010 at 03:13:54AM -0400, Bill Fink wrote:
> On Thu, 14 Oct, Jarek Poplawski wrote:
> 
> > On Wed, Oct 13, 2010 at 11:36:53PM -0400, Bill Fink wrote:
> > > On Wed, 13 Oct 2010, Jarek Poplawski wrote:
> > > 
> > > > On Tue, Oct 12, 2010 at 03:17:18PM -0700, Rick Jones wrote:
> > > > >>> my burst problem is the only semi-legitimate motivation i can think
> > > > >>> of. the only other possible motivations i can imagine are setting
> > > > >>> "limit" to buffer more than 4GB of packets and setting "rate" to
> > > > >>> something more than 32 gigabit; both of these seem kind of dubious. is
> > > > >>> there something else you had in mind?
> > > > >>
> > > > >>
> > > > >> No, mainly 10 gigabit rates and additionally 64-bit stats.
> > > > >
> > > > > Any issue for bonded 10 GbE interfaces?  Now that the IEEE have ratified 
> > > > > (June) how far out are 40 GbE interfaces?  Or 100 GbE for that matter.
> > > > 
> > > > Alas packet schedulers using rate tables are still around 1G. Above 2G
> > > > they get less and less accurate, so hfsc is recommended.
> > > 
> > > I was just trying to do an 8 Gbps rate limit on a 10-GigE path,
> > > and couldn't get it to work with either htb or tbf.  Are you
> > > saying this currently isn't possible?
> > 
> > Let's start from reminding that no precise packet scheduling should be
> > expected with gso/tso etc. turned on. I don't know current hardware
> > limits for such a non-gso traffic, but for 8 Gbit rate htb or tbf
> > would definitely have wrong rate tables (overflowed values) for packet
> > sizes below 1500 bytes.
> 
> TSO/GSO was disabled and was using 9000-byte jumbo frames
> (and specified mtu 9000 to tc command).
> 
> Here was one attempt I made using tbf:
> 
> tc qdisc add dev eth2 root handle 1: prio
> tc qdisc add dev eth2 parent 1:1 handle 10: tbf rate 8900mbit buffer 1112500 limit 10000 mtu 9000
> tc filter add dev eth2 protocol ip parent 1: prio 1 u32 match ip dst 192.168.1.23 flowid 10:1
> 
> I tried many variations of the above, all without success.

The main problem are smaller packets. If you had (almost) only 9000b
frames this probably could work. But smaller packets (I don't remember
exact limits) with wrong rate table values might go almost unaccounted.

> > > Or are you saying to use
> > > this hfsc mechanism, which there doesn't seem to be a man page
> > > for?
> > 
> > There was a try:
> > http://lists.openwall.net/netdev/2009/02/26/138
> 
> Thanks for the pointer.  I will check it out later in detail,
> but I'm already having difficulty with deciding if I have the
> tc commands right for tbf and htb, and hfsc looks even more
> involved.

I don't know much about hfsc either, but it seems, with simplest
configs (second slope only) it shouldn't be much different from htb
or tbf.

Jarek P.

^ permalink raw reply

* Re: tbf/htb qdisc limitations
From: Jarek Poplawski @ 2010-10-14  8:50 UTC (permalink / raw)
  To: Bill Fink; +Cc: Rick Jones, Steven Brudenell, netdev
In-Reply-To: <20101014080939.GA7710@ff.dom.local>

On Thu, Oct 14, 2010 at 08:09:39AM +0000, Jarek Poplawski wrote:
> On Thu, Oct 14, 2010 at 03:13:54AM -0400, Bill Fink wrote:
> > TSO/GSO was disabled and was using 9000-byte jumbo frames
> > (and specified mtu 9000 to tc command).
> > 
> > Here was one attempt I made using tbf:
> > 
> > tc qdisc add dev eth2 root handle 1: prio
> > tc qdisc add dev eth2 parent 1:1 handle 10: tbf rate 8900mbit buffer 1112500 limit 10000 mtu 9000
> > tc filter add dev eth2 protocol ip parent 1: prio 1 u32 match ip dst 192.168.1.23 flowid 10:1
> > 
> > I tried many variations of the above, all without success.
> 
> The main problem are smaller packets. If you had (almost) only 9000b
> frames this probably could work. [...]

On the other hand, e.g. the limit above seems too low wrt mtu & rate.

Jarek P.

^ permalink raw reply

* [PATCH] tcp: sack lost marking fixes
From: Ilpo Järvinen @ 2010-10-14 11:42 UTC (permalink / raw)
  To: Netdev, David Miller; +Cc: Yuchung Cheng, Lennart Schulte

[-- Attachment #1: Type: TEXT/PLAIN, Size: 3010 bytes --]

When only fast rexmit should be done, tcp_mark_head_lost marks
L too far. Also, sacked_upto below 1 is perfectly valid number,
the packets == 0 then needs to be trapped elsewhere.

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
---
I think 6830c25b7d08fbbd922959425193791bc42079f2 that added the
packets == 0 check is mostly wrong but I cc'ed Lennart if he has some 
particular case I'm missing that wouldn't work after this patch.

Dave, no particular "bad regression" fixed here, so no absolute need to 
have this in net-2.6 but I leave it up to you whether there or net-next.

 net/ipv4/tcp_input.c |   24 ++++++++++++++----------
 1 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 548d575..9924cd1 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -2504,7 +2504,7 @@ static void tcp_timeout_skbs(struct sock *sk)
 /* Mark head of queue up as lost. With RFC3517 SACK, the packets is
  * is against sacked "cnt", otherwise it's against facked "cnt"
  */
-static void tcp_mark_head_lost(struct sock *sk, int packets)
+static void tcp_mark_head_lost(struct sock *sk, int packets, int mark_head)
 {
 	struct tcp_sock *tp = tcp_sk(sk);
 	struct sk_buff *skb;
@@ -2512,13 +2512,13 @@ static void tcp_mark_head_lost(struct sock *sk, int packets)
 	int err;
 	unsigned int mss;
 
-	if (packets == 0)
-		return;
-
 	WARN_ON(packets > tp->packets_out);
 	if (tp->lost_skb_hint) {
 		skb = tp->lost_skb_hint;
 		cnt = tp->lost_cnt_hint;
+		/* Head already handled? */
+		if (mark_head && skb != tcp_write_queue_head(sk))
+			return;
 	} else {
 		skb = tcp_write_queue_head(sk);
 		cnt = 0;
@@ -2552,6 +2552,9 @@ static void tcp_mark_head_lost(struct sock *sk, int packets)
 		}
 
 		tcp_skb_mark_lost(tp, skb);
+
+		if (mark_head)
+			break;
 	}
 	tcp_verify_left_out(tp);
 }
@@ -2563,17 +2566,18 @@ static void tcp_update_scoreboard(struct sock *sk, int fast_rexmit)
 	struct tcp_sock *tp = tcp_sk(sk);
 
 	if (tcp_is_reno(tp)) {
-		tcp_mark_head_lost(sk, 1);
+		tcp_mark_head_lost(sk, 1, 1);
 	} else if (tcp_is_fack(tp)) {
 		int lost = tp->fackets_out - tp->reordering;
 		if (lost <= 0)
 			lost = 1;
-		tcp_mark_head_lost(sk, lost);
+		tcp_mark_head_lost(sk, lost, 0);
 	} else {
 		int sacked_upto = tp->sacked_out - tp->reordering;
-		if (sacked_upto < fast_rexmit)
-			sacked_upto = fast_rexmit;
-		tcp_mark_head_lost(sk, sacked_upto);
+		if (sacked_upto >= 0)
+			tcp_mark_head_lost(sk, sacked_upto, 0);
+		else if (fast_rexmit)
+			tcp_mark_head_lost(sk, 1, 1);
 	}
 
 	tcp_timeout_skbs(sk);
@@ -2978,7 +2982,7 @@ static void tcp_fastretrans_alert(struct sock *sk, int pkts_acked, int flag)
 	    before(tp->snd_una, tp->high_seq) &&
 	    icsk->icsk_ca_state != TCP_CA_Open &&
 	    tp->fackets_out > tp->reordering) {
-		tcp_mark_head_lost(sk, tp->fackets_out - tp->reordering);
+		tcp_mark_head_lost(sk, tp->fackets_out - tp->reordering, 0);
 		NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPLOSS);
 	}
 
-- 
1.5.6.5

^ permalink raw reply related

* [PATCH] tcp: use correct counters in CA_CWR state too
From: Ilpo Järvinen @ 2010-10-14 11:52 UTC (permalink / raw)
  To: David Miller, Netdev

[-- Attachment #1: Type: TEXT/PLAIN, Size: 1536 bytes --]

As CWR is stronger than CA_Disorder state, we can miscount
SACK/Reno failure into other timeouts. Not a bad problem as
it can happen only due to ECN, FRTO detecting spurious RTO
or xmit error which are the only callers of tcp_enter_cwr.
And even then losses and RTO must still follow thereafter
to actually end up into the relevant code paths.

Compile tested.

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
---
 net/ipv4/tcp_timer.c |   13 +++++++------
 1 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c
index 74c54b3..16e591e 100644
--- a/net/ipv4/tcp_timer.c
+++ b/net/ipv4/tcp_timer.c
@@ -365,18 +365,19 @@ void tcp_retransmit_timer(struct sock *sk)
 	if (icsk->icsk_retransmits == 0) {
 		int mib_idx;
 
-		if (icsk->icsk_ca_state == TCP_CA_Disorder) {
-			if (tcp_is_sack(tp))
-				mib_idx = LINUX_MIB_TCPSACKFAILURES;
-			else
-				mib_idx = LINUX_MIB_TCPRENOFAILURES;
-		} else if (icsk->icsk_ca_state == TCP_CA_Recovery) {
+		if (icsk->icsk_ca_state == TCP_CA_Recovery) {
 			if (tcp_is_sack(tp))
 				mib_idx = LINUX_MIB_TCPSACKRECOVERYFAIL;
 			else
 				mib_idx = LINUX_MIB_TCPRENORECOVERYFAIL;
 		} else if (icsk->icsk_ca_state == TCP_CA_Loss) {
 			mib_idx = LINUX_MIB_TCPLOSSFAILURES;
+		} else if ((icsk->icsk_ca_state == TCP_CA_Disorder) ||
+			   tp->sacked_out) {
+			if (tcp_is_sack(tp))
+				mib_idx = LINUX_MIB_TCPSACKFAILURES;
+			else
+				mib_idx = LINUX_MIB_TCPRENOFAILURES;
 		} else {
 			mib_idx = LINUX_MIB_TCPTIMEOUTS;
 		}
-- 
1.5.6.3

^ permalink raw reply related

* Re: xfrm by MARK: tcp problems when mark for in and out differ
From: jamal @ 2010-10-14 12:02 UTC (permalink / raw)
  To: Gerd v. Egidy; +Cc: netdev, dev
In-Reply-To: <201010131557.06588.lists@egidy.de>

On Wed, 2010-10-13 at 15:57 +0200, Gerd v. Egidy wrote:
> Hi,

> 
> -> incoming packets are without mark, outgoing packets are marked with 5
> 

You could use tc ingress path to mark incoming packets. Example:

----
tc qdisc add dev eth0 ingress
tc filter add dev eth0 parent ffff: protocol ip pref 9 u32 \
match ip src 192.168.1.0/32 flowid 1:5 action skbedit mark 5
---

just remember that src on outgoing is dst on incoming..


cheers,
jamal


^ permalink raw reply

* Re: xfrm by MARK: tcp problems when mark for in and out differ
From: jamal @ 2010-10-14 12:05 UTC (permalink / raw)
  To: Gerd v. Egidy; +Cc: netdev
In-Reply-To: <201010131557.06588.lists@egidy.de>

Please dont cc subscriber-only mailing lists like
dev@lists.strongswan.org in the future.

cheers,
jamal


^ permalink raw reply

* Re: [v2 RFC PATCH 0/4] Implement multiqueue virtio-net
From: Krishna Kumar2 @ 2010-10-14 12:17 UTC (permalink / raw)
  To: Krishna Kumar2
  Cc: anthony, arnd, avi, davem, kvm, Michael S. Tsirkin, netdev, rusty
In-Reply-To: <OFEC86A094.39835EBF-ON652577BC.002F9AAF-652577BC.003186B5@LocalDomain>

Krishna Kumar2/India/IBM wrote on 10/14/2010 02:34:01 PM:

> void vhost_poll_queue(struct vhost_poll *poll)
> {
>         struct vhost_virtqueue *vq = vhost_find_vq(poll);
>
>         vhost_work_queue(vq, &poll->work);
> }
>
> Since poll batches packets, find_vq does not seem to add much
> to the CPU utilization (or BW). I am sure that code can be
> optimized much better.
>
> The results I sent in my last mail were without your use_mm
> patch, and the only tuning was to make vhost threads run on
> only cpus 0-3 (though the performance is good even without
> that). I will test it later today with the use_mm patch too.

There's a significant reduction in CPU/SD utilization with your
patch. Following is the performance of ORG vs MQ+mm patch:

_________________________________________________
               Org vs MQ+mm patch txq=2
#     BW%     CPU/RCPU%         SD/RSD%
_________________________________________________
1     2.26    -1.16    .27      -20.00  0
2     35.07   29.90    21.81     0      -11.11
4     55.03   84.57    37.66     26.92  -4.62
8     73.16   118.69   49.21     45.63  -.46
16    77.43   98.81    47.89     24.07  -7.80
24    71.59   105.18   48.44     62.84  18.18
32    70.91   102.38   47.15     49.22  8.54
40    63.26   90.58    41.00     85.27  37.33
48    45.25   45.99    11.23     14.31  -12.91
64    42.78   41.82    5.50      .43    -25.12
80    31.40   7.31     -18.69    15.78  -11.93
96    27.60   7.79     -18.54    17.39  -10.98
128   23.46   -11.89   -34.41    -.41   -25.53
_________________________________________________
BW: 40.2  CPU/RCPU: 29.9,-2.2   SD/RSD: 12.0,-15.6


Following is the performance of MQ vs MQ+mm patch:
_____________________________________________________
            MQ vs MQ+mm patch
#     BW%      CPU%       RCPU%    SD%      RSD%
_____________________________________________________
1      4.98    -.58       .84      -20.00    0
2      5.17     2.96      2.29      0       -4.00
4     -.18      .25      -.16       3.12     .98
8     -5.47    -1.36     -1.98      17.18    16.57
16    -1.90    -6.64     -3.54     -14.83   -12.12
24    -.01      23.63     14.65     57.61    46.64
32     .27     -3.19      -3.11    -22.98   -22.91
40    -1.06    -2.96      -2.96    -4.18    -4.10
48    -.28     -2.34      -3.71    -2.41    -3.81
64     9.71     33.77      30.65    81.44    77.09
80    -10.69    -31.07    -31.70   -29.22   -29.88
96    -1.14     5.98       .56     -11.57   -16.14
128   -.93     -15.60     -18.31   -19.89   -22.65
_____________________________________________________
  BW: 0   CPU/RCPU: -4.2,-6.1  SD/RSD: -13.1,-15.6
_____________________________________________________

Each test case is for 60 secs, sum over two runs (except
when number of netperf sessions is 1, which has 7 runs
of 10 secs each), numcpus=4, numtxqs=8, etc. No tuning
other than taskset each vhost to cpus 0-3.

Thanks,

- KK


^ permalink raw reply

* Re: [v2 RFC PATCH 0/4] Implement multiqueue virtio-net
From: Krishna Kumar2 @ 2010-10-14 12:47 UTC (permalink / raw)
  To: Krishna Kumar2
  Cc: anthony, arnd, avi, davem, kvm, Michael S. Tsirkin, netdev, rusty
In-Reply-To: <OF0BDA6B3A.F673A449-ON652577BC.00422911-652577BC.0043474B@LocalDomain>

Krishna Kumar2/India/IBM wrote on 10/14/2010 05:47:54 PM:

Sorry, it should read "txq=8" below.

- KK

> There's a significant reduction in CPU/SD utilization with your
> patch. Following is the performance of ORG vs MQ+mm patch:
>
> _________________________________________________
>                Org vs MQ+mm patch txq=2
> #     BW%     CPU/RCPU%         SD/RSD%
> _________________________________________________
> 1     2.26    -1.16    .27      -20.00  0
> 2     35.07   29.90    21.81     0      -11.11
> 4     55.03   84.57    37.66     26.92  -4.62
> 8     73.16   118.69   49.21     45.63  -.46
> 16    77.43   98.81    47.89     24.07  -7.80
> 24    71.59   105.18   48.44     62.84  18.18
> 32    70.91   102.38   47.15     49.22  8.54
> 40    63.26   90.58    41.00     85.27  37.33
> 48    45.25   45.99    11.23     14.31  -12.91
> 64    42.78   41.82    5.50      .43    -25.12
> 80    31.40   7.31     -18.69    15.78  -11.93
> 96    27.60   7.79     -18.54    17.39  -10.98
> 128   23.46   -11.89   -34.41    -.41   -25.53
> _________________________________________________
> BW: 40.2  CPU/RCPU: 29.9,-2.2   SD/RSD: 12.0,-15.6
>
> Following is the performance of MQ vs MQ+mm patch:
> _____________________________________________________
>             MQ vs MQ+mm patch
> #     BW%      CPU%       RCPU%    SD%      RSD%
> _____________________________________________________
> 1      4.98    -.58       .84      -20.00    0
> 2      5.17     2.96      2.29      0       -4.00
> 4     -.18      .25      -.16       3.12     .98
> 8     -5.47    -1.36     -1.98      17.18    16.57
> 16    -1.90    -6.64     -3.54     -14.83   -12.12
> 24    -.01      23.63     14.65     57.61    46.64
> 32     .27     -3.19      -3.11    -22.98   -22.91
> 40    -1.06    -2.96      -2.96    -4.18    -4.10
> 48    -.28     -2.34      -3.71    -2.41    -3.81
> 64     9.71     33.77      30.65    81.44    77.09
> 80    -10.69    -31.07    -31.70   -29.22   -29.88
> 96    -1.14     5.98       .56     -11.57   -16.14
> 128   -.93     -15.60     -18.31   -19.89   -22.65
> _____________________________________________________
>   BW: 0   CPU/RCPU: -4.2,-6.1  SD/RSD: -13.1,-15.6
> _____________________________________________________
>
> Each test case is for 60 secs, sum over two runs (except
> when number of netperf sessions is 1, which has 7 runs
> of 10 secs each), numcpus=4, numtxqs=8, etc. No tuning
> other than taskset each vhost to cpus 0-3.
>
> Thanks,
>
> - KK


^ permalink raw reply

* Re: xfrm by MARK: tcp problems when mark for in and out differ
From: Gerd v. Egidy @ 2010-10-14 13:01 UTC (permalink / raw)
  To: hadi; +Cc: netdev
In-Reply-To: <1287057741.3756.6.camel@bigi>

Hi Jamal,

> > -> incoming packets are without mark, outgoing packets are marked with 5
> 
> You could use tc ingress path to mark incoming packets. Example:

In my full setup I do exactly that. What I posted was a minimized setup to 
just show the problem.

I have a complex set of netfilter rules and routing tables to allow several 
ways of doing NAT on ipsec. The rules need different marks on packets coming 
from / going to the vpn to correctly distinguish packets in the forwarding 
case.

I did further testing, 2.6.36-rc7 has the problem too.

> When the SYN-ACK hits __xfrm_lookup, the value in fl->mark is 0 
> (more precisely: the mark value used in the incoming packet).

this is wrong, the value in fl->mark is always 0. I must have confused some 
data in my debug printks.

So it seems like the fl->mark is never initialized with the packet mark in the 
first place. What would be the correct stage in the kernel network stack to do 
that?

Kind regards,

Gerd

-- 
Address (better: trap) for people I really don't want to get mail from:
jonas@cactusamerica.com

^ permalink raw reply

* Re: xfrm by MARK: tcp problems when mark for in and out differ
From: jamal @ 2010-10-14 13:14 UTC (permalink / raw)
  To: Gerd v. Egidy; +Cc: netdev
In-Reply-To: <201010141501.59145.lists@egidy.de>

Gerd,

On Thu, 2010-10-14 at 15:01 +0200, Gerd v. Egidy wrote:

> this is wrong, the value in fl->mark is always 0. I must have confused some 
> data in my debug printks.
>
> So it seems like the fl->mark is never initialized with the packet mark in the 
> first place. What would be the correct stage in the kernel network stack to do 
> that?

Can you try a simple setup without xfrm/ipsec and see if this reverse
path works? Was there a kernel where it worked?

cheers,
jamal


^ permalink raw reply

* xfrm by MARK: expected behavior of masking
From: Gerd v. Egidy @ 2010-10-14 13:15 UTC (permalink / raw)
  To: jamal; +Cc: netdev

Hi,

while looking at the xfrm by MARK code I found a case where the masking of 
marks does not work as I would it expect to work.

Take for example a mark value of 5 and a mask of 0xfffffffe
->
src 192.168.5.0/24 dst 192.168.1.0/24 
        dir out priority 1760 ptype main 
        mark 5/0xfffffffe
        tmpl src 172.16.1.131 dst 172.16.1.130
                proto esp reqid 16384 mode tunnel

The code to check the marks always (e.g. in xfrm_policy.c, but several other 
places too) looks like this:

(fl->mark & pol->mark.m) != pol->mark.v

This means that a flow marked with 5 will actually never match. You have to 
use the first number in the mask (4 in this case) to make the policy work.

Is this expected behavior?

I'd expect that the kernel would either
a) still match those packets
or
b) refuse to configure such a policy

Kind regards,

Gerd

-- 
Address (better: trap) for people I really don't want to get mail from:
jonas@cactusamerica.com

^ permalink raw reply

* RE: [PATCH net-next] tipc: cleanup function namespace
From: Jon Maloy @ 2010-10-14 13:31 UTC (permalink / raw)
  To: Stephen Hemminger, David Miller, paul.gortmaker@windriver.com
  Cc: nhorman@tuxdriver.com, netdev@vger.kernel.org,
	allan.stephens@windriver.com
In-Reply-To: <20101013162035.0c2e8123@nehalam>


> Do some cleanups of TIPC based on make namespacecheck
>   1. Don't export unused symbols
>   2. Eliminate dead code
>   3. Make functions and variables local
>   4. Rename buf_acquire to tipc_buf_acquire since it is used 
> in several files
> 
> Compile tested only.
> This make break out of tree kernel modules that depend on 
> TIPC routines.
> 
> Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Acked-by: Jon Maloy <jon.maloy@ericsson.com>

^ permalink raw reply

* Re: [PATCH] tcp: sack lost marking fixes
From: Lennart Schulte @ 2010-10-14 13:36 UTC (permalink / raw)
  To: Ilpo Järvinen; +Cc: Netdev, David Miller, Yuchung Cheng
In-Reply-To: <alpine.DEB.2.00.1010141429150.26447@wel-95.cs.helsinki.fi>

At the moment I don't have any time to spare to look into this since my
master thesis has to be ready in about 2 weeks. Sorry for that!

On 14.10.2010 13:42, Ilpo Järvinen wrote:
> When only fast rexmit should be done, tcp_mark_head_lost marks
> L too far. Also, sacked_upto below 1 is perfectly valid number,
> the packets == 0 then needs to be trapped elsewhere.
> 
> Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
> ---
> I think 6830c25b7d08fbbd922959425193791bc42079f2 that added the
> packets == 0 check is mostly wrong but I cc'ed Lennart if he has some 
> particular case I'm missing that wouldn't work after this patch.
> 
> Dave, no particular "bad regression" fixed here, so no absolute need to 
> have this in net-2.6 but I leave it up to you whether there or net-next.
> 
>  ...


^ permalink raw reply

* Re: [PATCH] tcp: sack lost marking fixes
From: Lennart Schulte @ 2010-10-14 14:02 UTC (permalink / raw)
  To: Ilpo Järvinen; +Cc: Netdev, David Miller, Yuchung Cheng
In-Reply-To: <4CB7077B.2080007@nets.rwth-aachen.de>

I forgot to mention that I will of course have a look at it as soon as I
finished the thesis :)

On 14.10.2010 15:36, Lennart Schulte wrote:
> At the moment I don't have any time to spare to look into this since my
> master thesis has to be ready in about 2 weeks. Sorry for that!
> 
> On 14.10.2010 13:42, Ilpo Järvinen wrote:
>> When only fast rexmit should be done, tcp_mark_head_lost marks
>> L too far. Also, sacked_upto below 1 is perfectly valid number,
>> the packets == 0 then needs to be trapped elsewhere.
>>
>> Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
>> ---
>> I think 6830c25b7d08fbbd922959425193791bc42079f2 that added the
>> packets == 0 check is mostly wrong but I cc'ed Lennart if he has some 
>> particular case I'm missing that wouldn't work after this patch.
>>
>> Dave, no particular "bad regression" fixed here, so no absolute need to 
>> have this in net-2.6 but I leave it up to you whether there or net-next.
>>
>>  ...
> 
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


^ permalink raw reply

* -j MARK in raw vs. mangle (was Re: xfrm by MARK: tcp problems when mark for in and out differ)
From: Gerd v. Egidy @ 2010-10-14 14:14 UTC (permalink / raw)
  To: hadi; +Cc: netdev, Netfilter Development Mailinglist
In-Reply-To: <1287062098.3756.9.camel@bigi>

Hi Jamal,

thanks for your help.

> > So it seems like the fl->mark is never initialized with the packet mark
> > in the first place. What would be the correct stage in the kernel
> > network stack to do that?
> 
> Can you try a simple setup without xfrm/ipsec and see if this reverse
> path works? Was there a kernel where it worked?

I just tried opening a simple tcp connection without any xfrm or other weird 
stuff. I just had one iptables rule in place:

-t raw -A OUTPUT -d 192.168.5.200 -j MARK --set-mark 99

192.168.5.200 is the other system I open the tcp connection from. So this 
should mark all response packets to the client.

But the moment __xfrm_lookup is called (this is where my debug printk sits), 
fl->mark is always 0.

By chance I changed the rule over to the mangle table:

-t mangle -A OUTPUT -d 192.168.5.200 -j MARK --set-mark 99

Now it works, the mark in the flow is 99!

So it seems this has nothing to do with xfrm, but that the MARK target has 
different effects when used in raw than in mangle. I was using raw because I 
had to set conntrack zones too and it was more conveniant to do both in one 
place.

Can one of the netfilter guys comment on this? Is using MARK in raw not fully 
supported or has known deficiencies?

Kind regards,

Gerd

-- 
Address (better: trap) for people I really don't want to get mail from:
jonas@cactusamerica.com

^ permalink raw reply

* -j MARK in raw vs. mangle (was Re: xfrm by MARK: tcp problems when mark for in and out differ)
From: Gerd v. Egidy @ 2010-10-14 14:16 UTC (permalink / raw)
  To: hadi, netfilter-devel; +Cc: netdev

Hi Jamal,

thanks for your help.

> > So it seems like the fl->mark is never initialized with the packet mark
> > in the first place. What would be the correct stage in the kernel
> > network stack to do that?
> 
> Can you try a simple setup without xfrm/ipsec and see if this reverse
> path works? Was there a kernel where it worked?

I just tried opening a simple tcp connection without any xfrm or other weird 
stuff. I just had one iptables rule in place:

-t raw -A OUTPUT -d 192.168.5.200 -j MARK --set-mark 99

192.168.5.200 is the other system I open the tcp connection from. So this 
should mark all response packets to the client.

But the moment __xfrm_lookup is called (this is where my debug printk sits), 
fl->mark is always 0.

By chance I changed the rule over to the mangle table:

-t mangle -A OUTPUT -d 192.168.5.200 -j MARK --set-mark 99

Now it works, the mark in the flow is 99!

So it seems this has nothing to do with xfrm, but that the MARK target has 
different effects when used in raw than in mangle. I was using raw because I 
had to set conntrack zones too and it was more conveniant to do both in one 
place.

Can one of the netfilter guys comment on this? Is using MARK in raw not fully 
supported or has known deficiencies?

Kind regards,

Gerd

PS: sorry for the double post, had an old netfilter-devel address in my 
mailer.

-- 
Address (better: trap) for people I really don't want to get mail from:
jonas@cactusamerica.com

^ permalink raw reply

* Re: BUG ? ipip unregister_netdevice_many()
From: David Miller @ 2010-10-14 15:09 UTC (permalink / raw)
  To: ebiederm; +Cc: hans.schillstrom, daniel.lezcano, netdev
In-Reply-To: <m162x5492h.fsf@fess.ebiederm.org>

From: ebiederm@xmission.com (Eric W. Biederman)
Date: Wed, 13 Oct 2010 22:20:28 -0700

> With the network namespace support we limit the scope of the test of
> the invalidate to just a single network namespace, and as such
> rt_is_expired stops being true for every cache entry.  So we cannot
> unconditionally throw away entire chains.
> 
> All of which can be either done by network namespace equality or by
> rt_is_expired().  Although Denis picked rt_is_expired() when he made
> his change.

Right, and I choose to use namespace equality which will completely
compile into no code at all when namespace support is not in the
kernel.

Therefore, making the non-namespace case equivalent and as efficient
as it always was.

> The only place it makes a noticable difference in practice is what
> happens when we do batched deleletes of lots of network devices in
> different network namespaces.
> 
> During batched network device deletes in fib_netdev_event we do
> rt_cache_flush(dev_net(dev), -1) for each network device.  and then a
> final rt_cache_flush_batch() to remove the invalidated entries.  These
> devices can be from multiple network namespaces, so I suspect that is
> a savings worth having.

How can it make a real difference even in this case?  We'll obliterate
all the entries, and then on subsequent passes we'll find nothing
matching that namespace any more.

Show me performance tests that show it makes any difference, please.

> So if we are going to change the tests we need to do something with
> rt_cache_flush_batch().  Further I do not see what is confusing about
> a test that asks if the routing cache entry is unusable.  Is
> rt_cache_expired() a bad name?

It's not a bad name, it's just an unnecessary test that we don't need
to even make in this specific place.

Redundancy tends to accumulate.

^ permalink raw reply


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