Netdev List
 help / color / mirror / Atom feed
* Your Email-ID has been awarded 500,000.00 Pounds in our Gmail Award Draw. Provide??: NAMES,DETAILS,TEL
From: claimsfund_dept@hotmail.com @ 2012-07-04 17:33 UTC (permalink / raw)




^ permalink raw reply

* Re: [PATCH net-next 13/15] netfilter: nfdbus: Add D-bus message parsing
From: Pablo Neira Ayuso @ 2012-07-04 17:30 UTC (permalink / raw)
  To: Javier Martinez Canillas
  Cc: Vincent Sanders, netdev, linux-kernel, David S. Miller,
	Alban Crequy
In-Reply-To: <4FF1C1AF.9080104@collabora.co.uk>

On Mon, Jul 02, 2012 at 05:43:43PM +0200, Javier Martinez Canillas wrote:
> On 06/29/2012 07:11 PM, Pablo Neira Ayuso wrote:
> > On Fri, Jun 29, 2012 at 05:45:52PM +0100, Vincent Sanders wrote:
> >> From: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
> >> 
> >> The netfilter D-Bus module needs to parse D-bus messages sent by
> >> applications to decide whether a peer can receive or not a D-Bus
> >> message. Add D-bus message parsing logic to be able to analyze.
> > 
> > Not talking about the entire patchset, only about the part I'm
> > responsible for.
> > 
> > I don't see why you think this belong to netfilter at all.
> > 
> > This doesn't integrate into the existing filtering infrastructure,
> > neither it extends it in any way.
> > 
> 
> Hello Pablo,
> 
> Thanks a lot for your feedback.
> 
> This is the first of a set of patches that adds a netfilter module to parse
> D-Bus messages, the complete patch-set is:
> 
> [PATCH 13/15] netfilter: nfdbus: Add D-bus message parsing
> [PATCH 14/15] netfilter: nfdbus: Add D-bus match rule implementation
> [PATCH 15/15] netfilter: add netfilter D-Bus module
> 
> patches 13 and 14 just include D-Bus helper code to be used by the netfilter
> module (added on patch 15) and specially the dbus_filter netfilter hook function.

I see, the use of the netfilter hooks seems to be the only reason why
you consider these chunks belong to netfilter.

> For the next post version we will reorganize the patches so first the D-Bus
> netfilter module is added with an empty dbus_filter function and then added the
> D-Bus helper code.
> 
> Also, we will move the nfdbus netfilter module to net/bus so is not inside the
> netfilter core code.

Yes, please, remove this stuff from my directory tree, I believe this
filtering infrastructure has not much to do with Netfilter itself.

It uses the connector to communicate kernel <-> userspace instead of
nfnetlink and, as said, it does neither integrate into existing
filtering kernel/userspace infrastructure nor integrates into it.

So, please, if you plan to give another try to this patchset, move
this to your net/bus directory as you propose and find a different
(better) name for the filtering part (just to avoid confusion in the
future).

Thanks.

^ permalink raw reply

* Re: [PATCH] netem: fix rate extension and drop accounting
From: Hagen Paul Pfeifer @ 2012-07-04 17:30 UTC (permalink / raw)
  To: Eric Dumazet; +Cc: netdev, Yuchung Cheng, Andreas Terzis, Mark Gordon
In-Reply-To: <1341422601.2583.2393.camel@edumazet-glaptop>

* Eric Dumazet | 2012-07-04 19:23:21 [+0200]:

>I fear you did your tests with no delay on netem.
>
>Try to setup a rate of 100kbit and a delay of 100ms and to really get
>full bandwith (100kbit), I am afraid it doesnt work.
>
>Your algo is OK only if no packets are in queue (obviously)
>
>But if you have 2 or 3 packets, the delay are cumulative,
>but the delay should be a fixed bias for each packet.

Right, we did not test it with delay because we emulated satelite links.
Static delay was negligible. All delay was caused by a limited rate. ok, I
will look at this!

^ permalink raw reply

* Re: [PATCH] netem: fix rate extension and drop accounting
From: Eric Dumazet @ 2012-07-04 17:23 UTC (permalink / raw)
  To: Hagen Paul Pfeifer; +Cc: netdev, Yuchung Cheng, Andreas Terzis, Mark Gordon
In-Reply-To: <20120704165132.GA3455@nuttenaction>

On Wed, 2012-07-04 at 18:51 +0200, Hagen Paul Pfeifer wrote:
> OK, I will work on it tomorrow! But Eric, keep in mind that this accumulative
> behavior is intended: think about a hypothetical satellite link with a
> bandwidth (rate) of 1000 byte/s. If you send three 1000 byte consecutively
> packets. The first packet is delayed for 1 second, the second then is
> transmitted after 2 seconds, the third after three seconds and so on. So
> _this_ accumulative behavior is correct. Anyway, I will look at this tomorrow!
> 

I fear you did your tests with no delay on netem.

Try to setup a rate of 100kbit and a delay of 100ms and to really get
full bandwith (100kbit), I am afraid it doesnt work.

Your algo is OK only if no packets are in queue (obviously)

But if you have 2 or 3 packets, the delay are cumulative,
but the delay should be a fixed bias for each packet.


> Thanks Eric!
> 
> PS: one last question: what do you want to test? TBF and netem rate at the
> same time looks, mmhh, special ... ;-) I ask myself what link exhibit this
> characteristic?

TBF as a netem child was the usual way to have delay + rate before your
patch ?

Not sure why you find it special ?

^ permalink raw reply

* Re: [PATCH] bcm87xx: fix reg-init comment typo
From: David Daney @ 2012-07-04 17:22 UTC (permalink / raw)
  To: Peter Korsgaard; +Cc: netdev, david.daney, davem
In-Reply-To: <1341414345-16626-1-git-send-email-jacmet@sunsite.dk>

On 07/04/2012 08:05 AM, Peter Korsgaard wrote:
> broadcom, not marvell.
>
> Signed-off-by: Peter Korsgaard<jacmet@sunsite.dk>

Indeed, it was a cut-and-paste error.  Thanks for fixing it...

Acked-by: David Daney <david.daney@cavium.com>

> ---
>   drivers/net/phy/bcm87xx.c |    2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/phy/bcm87xx.c b/drivers/net/phy/bcm87xx.c
> index 9a90dcf..a6df68c 100644
> --- a/drivers/net/phy/bcm87xx.c
> +++ b/drivers/net/phy/bcm87xx.c
> @@ -22,7 +22,7 @@
>
>   #if IS_ENABLED(CONFIG_OF_MDIO)
>   /* Set and/or override some configuration registers based on the
> - * marvell,reg-init property stored in the of_node for the phydev.
> + * broadcom,c45-reg-init property stored in the of_node for the phydev.
>    *
>    * broadcom,c45-reg-init =<devid reg mask value>,...;
>    *

^ permalink raw reply

* Re: [PATCH] netem: fix rate extension and drop accounting
From: Hagen Paul Pfeifer @ 2012-07-04 16:51 UTC (permalink / raw)
  To: Eric Dumazet; +Cc: netdev, Yuchung Cheng, Andreas Terzis, Mark Gordon
In-Reply-To: <1341381488.2583.1395.camel@edumazet-glaptop>

* Eric Dumazet | 2012-07-04 07:58:08 [+0200]:


>DEV=eth0
>tc qdisc del dev $DEV root
>tc qdisc add dev $DEV root handle 30: est 1sec 4sec netem \
>        delay 100ms 10ms reorder 3
>tc qdisc add dev $DEV handle 40:0 parent 30:0 tbf \
>        burst 5000 limit 10000 mtu 1514 rate 100kbit
>tc qdisc add dev $DEV handle 50:00 parent 40:0 pfifo limit 200
>
>fundamentally, mixing the TBF is going to be hard with "delay ..."
>especially with jitter.
>
>Same problem for reorder : since packets are put at head of queue,
>they have no effect on the 'time_to_send' of packets already in queue
>and netem use more bandwidth than allowed.
>
>I'll send the patch on the double drop accounting problem because the
>fix is easy enough, but fir the rate limiting, I prefer letting you work
>on it if you dont mind ?

OK, I will work on it tomorrow! But Eric, keep in mind that this accumulative
behavior is intended: think about a hypothetical satellite link with a
bandwidth (rate) of 1000 byte/s. If you send three 1000 byte consecutively
packets. The first packet is delayed for 1 second, the second then is
transmitted after 2 seconds, the third after three seconds and so on. So
_this_ accumulative behavior is correct. Anyway, I will look at this tomorrow!

Thanks Eric!

PS: one last question: what do you want to test? TBF and netem rate at the
same time looks, mmhh, special ... ;-) I ask myself what link exhibit this
characteristic?

^ permalink raw reply

* [PATCH] phylib: Support registering a bunch of drivers
From: Christian Hohnstaedt @ 2012-07-04 15:44 UTC (permalink / raw)
  To: netdev

If registering of one of them fails, all already registered drivers
of this module will be unregistered.

Use the new register/unregister functions in all drivers
registering more than one driver.

amd.c, realtek.c: Simplify: directly return registration result.

Tested with broadcom.c
All others compile-tested.

Signed-off-by: Christian Hohnstaedt <chohnstaedt@innominate.com>
---
 drivers/net/phy/amd.c        |    8 +---
 drivers/net/phy/bcm63xx.c    |   31 +++--------
 drivers/net/phy/bcm87xx.c    |   24 +++------
 drivers/net/phy/broadcom.c   |  119 ++++++------------------------------------
 drivers/net/phy/cicada.c     |   35 ++++---------
 drivers/net/phy/davicom.c    |   41 +++-----------
 drivers/net/phy/icplus.c     |   31 +++--------
 drivers/net/phy/lxt.c        |   47 ++++------------
 drivers/net/phy/marvell.c    |   22 ++------
 drivers/net/phy/micrel.c     |   62 ++++------------------
 drivers/net/phy/phy_device.c |   25 +++++++++
 drivers/net/phy/realtek.c    |    6 +--
 drivers/net/phy/smsc.c       |   64 ++++-------------------
 drivers/net/phy/ste10Xp.c    |   21 +++-----
 drivers/net/phy/vitesse.c    |   52 ++++++++-----------
 include/linux/phy.h          |    2 +
 16 files changed, 159 insertions(+), 431 deletions(-)

diff --git a/drivers/net/phy/amd.c b/drivers/net/phy/amd.c
index cfabd5f..a3fb5ce 100644
--- a/drivers/net/phy/amd.c
+++ b/drivers/net/phy/amd.c
@@ -77,13 +77,7 @@ static struct phy_driver am79c_driver = {
 
 static int __init am79c_init(void)
 {
-	int ret;
-
-	ret = phy_driver_register(&am79c_driver);
-	if (ret)
-		return ret;
-
-	return 0;
+	return phy_driver_register(&am79c_driver);
 }
 
 static void __exit am79c_exit(void)
diff --git a/drivers/net/phy/bcm63xx.c b/drivers/net/phy/bcm63xx.c
index cd802eb..d936ca8 100644
--- a/drivers/net/phy/bcm63xx.c
+++ b/drivers/net/phy/bcm63xx.c
@@ -71,7 +71,8 @@ static int bcm63xx_config_intr(struct phy_device *phydev)
 	return err;
 }
 
-static struct phy_driver bcm63xx_1_driver = {
+static struct phy_driver bcm63xx_driver[] = {
+{
 	.phy_id		= 0x00406000,
 	.phy_id_mask	= 0xfffffc00,
 	.name		= "Broadcom BCM63XX (1)",
@@ -84,10 +85,8 @@ static struct phy_driver bcm63xx_1_driver = {
 	.ack_interrupt	= bcm63xx_ack_interrupt,
 	.config_intr	= bcm63xx_config_intr,
 	.driver		= { .owner = THIS_MODULE },
-};
-
-/* same phy as above, with just a different OUI */
-static struct phy_driver bcm63xx_2_driver = {
+}, {
+	/* same phy as above, with just a different OUI */
 	.phy_id		= 0x002bdc00,
 	.phy_id_mask	= 0xfffffc00,
 	.name		= "Broadcom BCM63XX (2)",
@@ -99,30 +98,18 @@ static struct phy_driver bcm63xx_2_driver = {
 	.ack_interrupt	= bcm63xx_ack_interrupt,
 	.config_intr	= bcm63xx_config_intr,
 	.driver		= { .owner = THIS_MODULE },
-};
+} };
 
 static int __init bcm63xx_phy_init(void)
 {
-	int ret;
-
-	ret = phy_driver_register(&bcm63xx_1_driver);
-	if (ret)
-		goto out_63xx_1;
-	ret = phy_driver_register(&bcm63xx_2_driver);
-	if (ret)
-		goto out_63xx_2;
-	return ret;
-
-out_63xx_2:
-	phy_driver_unregister(&bcm63xx_1_driver);
-out_63xx_1:
-	return ret;
+	return phy_drivers_register(bcm63xx_driver,
+		ARRAY_SIZE(bcm63xx_driver));
 }
 
 static void __exit bcm63xx_phy_exit(void)
 {
-	phy_driver_unregister(&bcm63xx_1_driver);
-	phy_driver_unregister(&bcm63xx_2_driver);
+	phy_drivers_unregister(bcm63xx_driver,
+		ARRAY_SIZE(bcm63xx_driver));
 }
 
 module_init(bcm63xx_phy_init);
diff --git a/drivers/net/phy/bcm87xx.c b/drivers/net/phy/bcm87xx.c
index f5f0562..8d02ae5 100644
--- a/drivers/net/phy/bcm87xx.c
+++ b/drivers/net/phy/bcm87xx.c
@@ -186,7 +186,8 @@ static int bcm8727_match_phy_device(struct phy_device *phydev)
 	return phydev->c45_ids.device_ids[4] == PHY_ID_BCM8727;
 }
 
-static struct phy_driver bcm8706_driver = {
+static struct phy_driver bcm87xx_driver[] = {
+{
 	.phy_id		= PHY_ID_BCM8706,
 	.phy_id_mask	= 0xffffffff,
 	.name		= "Broadcom BCM8706",
@@ -199,9 +200,7 @@ static struct phy_driver bcm8706_driver = {
 	.did_interrupt	= bcm87xx_did_interrupt,
 	.match_phy_device = bcm8706_match_phy_device,
 	.driver		= { .owner = THIS_MODULE },
-};
-
-static struct phy_driver bcm8727_driver = {
+}, {
 	.phy_id		= PHY_ID_BCM8727,
 	.phy_id_mask	= 0xffffffff,
 	.name		= "Broadcom BCM8727",
@@ -214,25 +213,18 @@ static struct phy_driver bcm8727_driver = {
 	.did_interrupt	= bcm87xx_did_interrupt,
 	.match_phy_device = bcm8727_match_phy_device,
 	.driver		= { .owner = THIS_MODULE },
-};
+} };
 
 static int __init bcm87xx_init(void)
 {
-	int ret;
-
-	ret = phy_driver_register(&bcm8706_driver);
-	if (ret)
-		goto err;
-
-	ret = phy_driver_register(&bcm8727_driver);
-err:
-	return ret;
+	return phy_drivers_register(bcm87xx_driver,
+		ARRAY_SIZE(bcm87xx_driver));
 }
 module_init(bcm87xx_init);
 
 static void __exit bcm87xx_exit(void)
 {
-	phy_driver_unregister(&bcm8706_driver);
-	phy_driver_unregister(&bcm8727_driver);
+	phy_drivers_unregister(bcm87xx_driver,
+		ARRAY_SIZE(bcm87xx_driver));
 }
 module_exit(bcm87xx_exit);
diff --git a/drivers/net/phy/broadcom.c b/drivers/net/phy/broadcom.c
index 60338ff..2e3694b 100644
--- a/drivers/net/phy/broadcom.c
+++ b/drivers/net/phy/broadcom.c
@@ -682,7 +682,8 @@ static int brcm_fet_config_intr(struct phy_device *phydev)
 	return err;
 }
 
-static struct phy_driver bcm5411_driver = {
+static struct phy_driver broadcom_drivers[] = {
+{
 	.phy_id		= PHY_ID_BCM5411,
 	.phy_id_mask	= 0xfffffff0,
 	.name		= "Broadcom BCM5411",
@@ -695,9 +696,7 @@ static struct phy_driver bcm5411_driver = {
 	.ack_interrupt	= bcm54xx_ack_interrupt,
 	.config_intr	= bcm54xx_config_intr,
 	.driver		= { .owner = THIS_MODULE },
-};
-
-static struct phy_driver bcm5421_driver = {
+}, {
 	.phy_id		= PHY_ID_BCM5421,
 	.phy_id_mask	= 0xfffffff0,
 	.name		= "Broadcom BCM5421",
@@ -710,9 +709,7 @@ static struct phy_driver bcm5421_driver = {
 	.ack_interrupt	= bcm54xx_ack_interrupt,
 	.config_intr	= bcm54xx_config_intr,
 	.driver		= { .owner = THIS_MODULE },
-};
-
-static struct phy_driver bcm5461_driver = {
+}, {
 	.phy_id		= PHY_ID_BCM5461,
 	.phy_id_mask	= 0xfffffff0,
 	.name		= "Broadcom BCM5461",
@@ -725,9 +722,7 @@ static struct phy_driver bcm5461_driver = {
 	.ack_interrupt	= bcm54xx_ack_interrupt,
 	.config_intr	= bcm54xx_config_intr,
 	.driver		= { .owner = THIS_MODULE },
-};
-
-static struct phy_driver bcm5464_driver = {
+}, {
 	.phy_id		= PHY_ID_BCM5464,
 	.phy_id_mask	= 0xfffffff0,
 	.name		= "Broadcom BCM5464",
@@ -740,9 +735,7 @@ static struct phy_driver bcm5464_driver = {
 	.ack_interrupt	= bcm54xx_ack_interrupt,
 	.config_intr	= bcm54xx_config_intr,
 	.driver		= { .owner = THIS_MODULE },
-};
-
-static struct phy_driver bcm5481_driver = {
+}, {
 	.phy_id		= PHY_ID_BCM5481,
 	.phy_id_mask	= 0xfffffff0,
 	.name		= "Broadcom BCM5481",
@@ -755,9 +748,7 @@ static struct phy_driver bcm5481_driver = {
 	.ack_interrupt	= bcm54xx_ack_interrupt,
 	.config_intr	= bcm54xx_config_intr,
 	.driver		= { .owner = THIS_MODULE },
-};
-
-static struct phy_driver bcm5482_driver = {
+}, {
 	.phy_id		= PHY_ID_BCM5482,
 	.phy_id_mask	= 0xfffffff0,
 	.name		= "Broadcom BCM5482",
@@ -770,9 +761,7 @@ static struct phy_driver bcm5482_driver = {
 	.ack_interrupt	= bcm54xx_ack_interrupt,
 	.config_intr	= bcm54xx_config_intr,
 	.driver		= { .owner = THIS_MODULE },
-};
-
-static struct phy_driver bcm50610_driver = {
+}, {
 	.phy_id		= PHY_ID_BCM50610,
 	.phy_id_mask	= 0xfffffff0,
 	.name		= "Broadcom BCM50610",
@@ -785,9 +774,7 @@ static struct phy_driver bcm50610_driver = {
 	.ack_interrupt	= bcm54xx_ack_interrupt,
 	.config_intr	= bcm54xx_config_intr,
 	.driver		= { .owner = THIS_MODULE },
-};
-
-static struct phy_driver bcm50610m_driver = {
+}, {
 	.phy_id		= PHY_ID_BCM50610M,
 	.phy_id_mask	= 0xfffffff0,
 	.name		= "Broadcom BCM50610M",
@@ -800,9 +787,7 @@ static struct phy_driver bcm50610m_driver = {
 	.ack_interrupt	= bcm54xx_ack_interrupt,
 	.config_intr	= bcm54xx_config_intr,
 	.driver		= { .owner = THIS_MODULE },
-};
-
-static struct phy_driver bcm57780_driver = {
+}, {
 	.phy_id		= PHY_ID_BCM57780,
 	.phy_id_mask	= 0xfffffff0,
 	.name		= "Broadcom BCM57780",
@@ -815,9 +800,7 @@ static struct phy_driver bcm57780_driver = {
 	.ack_interrupt	= bcm54xx_ack_interrupt,
 	.config_intr	= bcm54xx_config_intr,
 	.driver		= { .owner = THIS_MODULE },
-};
-
-static struct phy_driver bcmac131_driver = {
+}, {
 	.phy_id		= PHY_ID_BCMAC131,
 	.phy_id_mask	= 0xfffffff0,
 	.name		= "Broadcom BCMAC131",
@@ -830,9 +813,7 @@ static struct phy_driver bcmac131_driver = {
 	.ack_interrupt	= brcm_fet_ack_interrupt,
 	.config_intr	= brcm_fet_config_intr,
 	.driver		= { .owner = THIS_MODULE },
-};
-
-static struct phy_driver bcm5241_driver = {
+}, {
 	.phy_id		= PHY_ID_BCM5241,
 	.phy_id_mask	= 0xfffffff0,
 	.name		= "Broadcom BCM5241",
@@ -845,84 +826,18 @@ static struct phy_driver bcm5241_driver = {
 	.ack_interrupt	= brcm_fet_ack_interrupt,
 	.config_intr	= brcm_fet_config_intr,
 	.driver		= { .owner = THIS_MODULE },
-};
+} };
 
 static int __init broadcom_init(void)
 {
-	int ret;
-
-	ret = phy_driver_register(&bcm5411_driver);
-	if (ret)
-		goto out_5411;
-	ret = phy_driver_register(&bcm5421_driver);
-	if (ret)
-		goto out_5421;
-	ret = phy_driver_register(&bcm5461_driver);
-	if (ret)
-		goto out_5461;
-	ret = phy_driver_register(&bcm5464_driver);
-	if (ret)
-		goto out_5464;
-	ret = phy_driver_register(&bcm5481_driver);
-	if (ret)
-		goto out_5481;
-	ret = phy_driver_register(&bcm5482_driver);
-	if (ret)
-		goto out_5482;
-	ret = phy_driver_register(&bcm50610_driver);
-	if (ret)
-		goto out_50610;
-	ret = phy_driver_register(&bcm50610m_driver);
-	if (ret)
-		goto out_50610m;
-	ret = phy_driver_register(&bcm57780_driver);
-	if (ret)
-		goto out_57780;
-	ret = phy_driver_register(&bcmac131_driver);
-	if (ret)
-		goto out_ac131;
-	ret = phy_driver_register(&bcm5241_driver);
-	if (ret)
-		goto out_5241;
-	return ret;
-
-out_5241:
-	phy_driver_unregister(&bcmac131_driver);
-out_ac131:
-	phy_driver_unregister(&bcm57780_driver);
-out_57780:
-	phy_driver_unregister(&bcm50610m_driver);
-out_50610m:
-	phy_driver_unregister(&bcm50610_driver);
-out_50610:
-	phy_driver_unregister(&bcm5482_driver);
-out_5482:
-	phy_driver_unregister(&bcm5481_driver);
-out_5481:
-	phy_driver_unregister(&bcm5464_driver);
-out_5464:
-	phy_driver_unregister(&bcm5461_driver);
-out_5461:
-	phy_driver_unregister(&bcm5421_driver);
-out_5421:
-	phy_driver_unregister(&bcm5411_driver);
-out_5411:
-	return ret;
+	return phy_drivers_register(broadcom_drivers,
+		ARRAY_SIZE(broadcom_drivers));
 }
 
 static void __exit broadcom_exit(void)
 {
-	phy_driver_unregister(&bcm5241_driver);
-	phy_driver_unregister(&bcmac131_driver);
-	phy_driver_unregister(&bcm57780_driver);
-	phy_driver_unregister(&bcm50610m_driver);
-	phy_driver_unregister(&bcm50610_driver);
-	phy_driver_unregister(&bcm5482_driver);
-	phy_driver_unregister(&bcm5481_driver);
-	phy_driver_unregister(&bcm5464_driver);
-	phy_driver_unregister(&bcm5461_driver);
-	phy_driver_unregister(&bcm5421_driver);
-	phy_driver_unregister(&bcm5411_driver);
+	phy_drivers_unregister(broadcom_drivers,
+		ARRAY_SIZE(broadcom_drivers));
 }
 
 module_init(broadcom_init);
diff --git a/drivers/net/phy/cicada.c b/drivers/net/phy/cicada.c
index d281731..16d6960 100644
--- a/drivers/net/phy/cicada.c
+++ b/drivers/net/phy/cicada.c
@@ -102,7 +102,8 @@ static int cis820x_config_intr(struct phy_device *phydev)
 }
 
 /* Cicada 8201, a.k.a Vitesse VSC8201 */
-static struct phy_driver cis8201_driver = {
+static struct phy_driver cis820x_driver[] = {
+{
 	.phy_id		= 0x000fc410,
 	.name		= "Cicada Cis8201",
 	.phy_id_mask	= 0x000ffff0,
@@ -113,11 +114,8 @@ static struct phy_driver cis8201_driver = {
 	.read_status	= &genphy_read_status,
 	.ack_interrupt	= &cis820x_ack_interrupt,
 	.config_intr	= &cis820x_config_intr,
-	.driver 	= { .owner = THIS_MODULE,},
-};
-
-/* Cicada 8204 */
-static struct phy_driver cis8204_driver = {
+	.driver		= { .owner = THIS_MODULE,},
+}, {
 	.phy_id		= 0x000fc440,
 	.name		= "Cicada Cis8204",
 	.phy_id_mask	= 0x000fffc0,
@@ -128,32 +126,19 @@ static struct phy_driver cis8204_driver = {
 	.read_status	= &genphy_read_status,
 	.ack_interrupt	= &cis820x_ack_interrupt,
 	.config_intr	= &cis820x_config_intr,
-	.driver 	= { .owner = THIS_MODULE,},
-};
+	.driver		= { .owner = THIS_MODULE,},
+} };
 
 static int __init cicada_init(void)
 {
-	int ret;
-
-	ret = phy_driver_register(&cis8204_driver);
-	if (ret)
-		goto err1;
-
-	ret = phy_driver_register(&cis8201_driver);
-	if (ret)
-		goto err2;
-	return 0;
-
-err2:
-	phy_driver_unregister(&cis8204_driver);
-err1:
-	return ret;
+	return phy_drivers_register(cis820x_driver,
+		ARRAY_SIZE(cis820x_driver));
 }
 
 static void __exit cicada_exit(void)
 {
-	phy_driver_unregister(&cis8204_driver);
-	phy_driver_unregister(&cis8201_driver);
+	phy_drivers_unregister(cis820x_driver,
+		ARRAY_SIZE(cis820x_driver));
 }
 
 module_init(cicada_init);
diff --git a/drivers/net/phy/davicom.c b/drivers/net/phy/davicom.c
index 5f59cc0..a8eb820 100644
--- a/drivers/net/phy/davicom.c
+++ b/drivers/net/phy/davicom.c
@@ -144,7 +144,8 @@ static int dm9161_ack_interrupt(struct phy_device *phydev)
 	return (err < 0) ? err : 0;
 }
 
-static struct phy_driver dm9161e_driver = {
+static struct phy_driver dm91xx_driver[] = {
+{
 	.phy_id		= 0x0181b880,
 	.name		= "Davicom DM9161E",
 	.phy_id_mask	= 0x0ffffff0,
@@ -153,9 +154,7 @@ static struct phy_driver dm9161e_driver = {
 	.config_aneg	= dm9161_config_aneg,
 	.read_status	= genphy_read_status,
 	.driver		= { .owner = THIS_MODULE,},
-};
-
-static struct phy_driver dm9161a_driver = {
+}, {
 	.phy_id		= 0x0181b8a0,
 	.name		= "Davicom DM9161A",
 	.phy_id_mask	= 0x0ffffff0,
@@ -164,9 +163,7 @@ static struct phy_driver dm9161a_driver = {
 	.config_aneg	= dm9161_config_aneg,
 	.read_status	= genphy_read_status,
 	.driver		= { .owner = THIS_MODULE,},
-};
-
-static struct phy_driver dm9131_driver = {
+}, {
 	.phy_id		= 0x00181b80,
 	.name		= "Davicom DM9131",
 	.phy_id_mask	= 0x0ffffff0,
@@ -177,38 +174,18 @@ static struct phy_driver dm9131_driver = {
 	.ack_interrupt	= dm9161_ack_interrupt,
 	.config_intr	= dm9161_config_intr,
 	.driver		= { .owner = THIS_MODULE,},
-};
+} };
 
 static int __init davicom_init(void)
 {
-	int ret;
-
-	ret = phy_driver_register(&dm9161e_driver);
-	if (ret)
-		goto err1;
-
-	ret = phy_driver_register(&dm9161a_driver);
-	if (ret)
-		goto err2;
-
-	ret = phy_driver_register(&dm9131_driver);
-	if (ret)
-		goto err3;
-	return 0;
-
- err3:
-	phy_driver_unregister(&dm9161a_driver);
- err2:
-	phy_driver_unregister(&dm9161e_driver);
- err1:
-	return ret;
+	return phy_drivers_register(dm91xx_driver,
+		ARRAY_SIZE(dm91xx_driver));
 }
 
 static void __exit davicom_exit(void)
 {
-	phy_driver_unregister(&dm9161e_driver);
-	phy_driver_unregister(&dm9161a_driver);
-	phy_driver_unregister(&dm9131_driver);
+	phy_drivers_unregister(dm91xx_driver,
+		ARRAY_SIZE(dm91xx_driver));
 }
 
 module_init(davicom_init);
diff --git a/drivers/net/phy/icplus.c b/drivers/net/phy/icplus.c
index 47f8e89..0d2f04f 100644
--- a/drivers/net/phy/icplus.c
+++ b/drivers/net/phy/icplus.c
@@ -202,7 +202,8 @@ static int ip101a_g_ack_interrupt(struct phy_device *phydev)
 	return 0;
 }
 
-static struct phy_driver ip175c_driver = {
+static struct phy_driver icplus_driver[] = {
+{
 	.phy_id		= 0x02430d80,
 	.name		= "ICPlus IP175C",
 	.phy_id_mask	= 0x0ffffff0,
@@ -213,9 +214,7 @@ static struct phy_driver ip175c_driver = {
 	.suspend	= genphy_suspend,
 	.resume		= genphy_resume,
 	.driver		= { .owner = THIS_MODULE,},
-};
-
-static struct phy_driver ip1001_driver = {
+}, {
 	.phy_id		= 0x02430d90,
 	.name		= "ICPlus IP1001",
 	.phy_id_mask	= 0x0ffffff0,
@@ -227,9 +226,7 @@ static struct phy_driver ip1001_driver = {
 	.suspend	= genphy_suspend,
 	.resume		= genphy_resume,
 	.driver		= { .owner = THIS_MODULE,},
-};
-
-static struct phy_driver ip101a_g_driver = {
+}, {
 	.phy_id		= 0x02430c54,
 	.name		= "ICPlus IP101A/G",
 	.phy_id_mask	= 0x0ffffff0,
@@ -243,28 +240,18 @@ static struct phy_driver ip101a_g_driver = {
 	.suspend	= genphy_suspend,
 	.resume		= genphy_resume,
 	.driver		= { .owner = THIS_MODULE,},
-};
+} };
 
 static int __init icplus_init(void)
 {
-	int ret = 0;
-
-	ret = phy_driver_register(&ip1001_driver);
-	if (ret < 0)
-		return -ENODEV;
-
-	ret = phy_driver_register(&ip101a_g_driver);
-	if (ret < 0)
-		return -ENODEV;
-
-	return phy_driver_register(&ip175c_driver);
+	return phy_drivers_register(icplus_driver,
+		ARRAY_SIZE(icplus_driver));
 }
 
 static void __exit icplus_exit(void)
 {
-	phy_driver_unregister(&ip1001_driver);
-	phy_driver_unregister(&ip101a_g_driver);
-	phy_driver_unregister(&ip175c_driver);
+	phy_drivers_unregister(icplus_driver,
+		ARRAY_SIZE(icplus_driver));
 }
 
 module_init(icplus_init);
diff --git a/drivers/net/phy/lxt.c b/drivers/net/phy/lxt.c
index 6f6e8b6..f679cfe 100644
--- a/drivers/net/phy/lxt.c
+++ b/drivers/net/phy/lxt.c
@@ -149,7 +149,8 @@ static int lxt973_config_aneg(struct phy_device *phydev)
 	return phydev->priv ? 0 : genphy_config_aneg(phydev);
 }
 
-static struct phy_driver lxt970_driver = {
+static struct phy_driver lxt97x_driver[] = {
+{
 	.phy_id		= 0x78100000,
 	.name		= "LXT970",
 	.phy_id_mask	= 0xfffffff0,
@@ -160,10 +161,8 @@ static struct phy_driver lxt970_driver = {
 	.read_status	= genphy_read_status,
 	.ack_interrupt	= lxt970_ack_interrupt,
 	.config_intr	= lxt970_config_intr,
-	.driver 	= { .owner = THIS_MODULE,},
-};
-
-static struct phy_driver lxt971_driver = {
+	.driver		= { .owner = THIS_MODULE,},
+}, {
 	.phy_id		= 0x001378e0,
 	.name		= "LXT971",
 	.phy_id_mask	= 0xfffffff0,
@@ -173,10 +172,8 @@ static struct phy_driver lxt971_driver = {
 	.read_status	= genphy_read_status,
 	.ack_interrupt	= lxt971_ack_interrupt,
 	.config_intr	= lxt971_config_intr,
-	.driver 	= { .owner = THIS_MODULE,},
-};
-
-static struct phy_driver lxt973_driver = {
+	.driver		= { .owner = THIS_MODULE,},
+}, {
 	.phy_id		= 0x00137a10,
 	.name		= "LXT973",
 	.phy_id_mask	= 0xfffffff0,
@@ -185,39 +182,19 @@ static struct phy_driver lxt973_driver = {
 	.probe		= lxt973_probe,
 	.config_aneg	= lxt973_config_aneg,
 	.read_status	= genphy_read_status,
-	.driver 	= { .owner = THIS_MODULE,},
-};
+	.driver		= { .owner = THIS_MODULE,},
+} };
 
 static int __init lxt_init(void)
 {
-	int ret;
-
-	ret = phy_driver_register(&lxt970_driver);
-	if (ret)
-		goto err1;
-
-	ret = phy_driver_register(&lxt971_driver);
-	if (ret)
-		goto err2;
-
-	ret = phy_driver_register(&lxt973_driver);
-	if (ret)
-		goto err3;
-	return 0;
-
- err3:
-	phy_driver_unregister(&lxt971_driver);
- err2:
-	phy_driver_unregister(&lxt970_driver);
- err1:
-	return ret;
+	return phy_drivers_register(lxt97x_driver,
+		ARRAY_SIZE(lxt97x_driver));
 }
 
 static void __exit lxt_exit(void)
 {
-	phy_driver_unregister(&lxt970_driver);
-	phy_driver_unregister(&lxt971_driver);
-	phy_driver_unregister(&lxt973_driver);
+	phy_drivers_unregister(lxt97x_driver,
+		ARRAY_SIZE(lxt97x_driver));
 }
 
 module_init(lxt_init);
diff --git a/drivers/net/phy/marvell.c b/drivers/net/phy/marvell.c
index 418928d..5d2a3f2 100644
--- a/drivers/net/phy/marvell.c
+++ b/drivers/net/phy/marvell.c
@@ -826,28 +826,14 @@ static struct phy_driver marvell_drivers[] = {
 
 static int __init marvell_init(void)
 {
-	int ret;
-	int i;
-
-	for (i = 0; i < ARRAY_SIZE(marvell_drivers); i++) {
-		ret = phy_driver_register(&marvell_drivers[i]);
-
-		if (ret) {
-			while (i-- > 0)
-				phy_driver_unregister(&marvell_drivers[i]);
-			return ret;
-		}
-	}
-
-	return 0;
+	return phy_drivers_register(marvell_drivers,
+		 ARRAY_SIZE(marvell_drivers));
 }
 
 static void __exit marvell_exit(void)
 {
-	int i;
-
-	for (i = 0; i < ARRAY_SIZE(marvell_drivers); i++)
-		phy_driver_unregister(&marvell_drivers[i]);
+	phy_drivers_unregister(marvell_drivers,
+		 ARRAY_SIZE(marvell_drivers));
 }
 
 module_init(marvell_init);
diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c
index 9d6c80c..2c9b5a2 100644
--- a/drivers/net/phy/micrel.c
+++ b/drivers/net/phy/micrel.c
@@ -114,7 +114,8 @@ static int ks8051_config_init(struct phy_device *phydev)
 	return 0;
 }
 
-static struct phy_driver ks8737_driver = {
+static struct phy_driver ksphy_driver[] = {
+{
 	.phy_id		= PHY_ID_KS8737,
 	.phy_id_mask	= 0x00fffff0,
 	.name		= "Micrel KS8737",
@@ -126,9 +127,7 @@ static struct phy_driver ks8737_driver = {
 	.ack_interrupt	= kszphy_ack_interrupt,
 	.config_intr	= ks8737_config_intr,
 	.driver		= { .owner = THIS_MODULE,},
-};
-
-static struct phy_driver ks8041_driver = {
+}, {
 	.phy_id		= PHY_ID_KS8041,
 	.phy_id_mask	= 0x00fffff0,
 	.name		= "Micrel KS8041",
@@ -141,9 +140,7 @@ static struct phy_driver ks8041_driver = {
 	.ack_interrupt	= kszphy_ack_interrupt,
 	.config_intr	= kszphy_config_intr,
 	.driver		= { .owner = THIS_MODULE,},
-};
-
-static struct phy_driver ks8051_driver = {
+}, {
 	.phy_id		= PHY_ID_KS8051,
 	.phy_id_mask	= 0x00fffff0,
 	.name		= "Micrel KS8051",
@@ -156,9 +153,7 @@ static struct phy_driver ks8051_driver = {
 	.ack_interrupt	= kszphy_ack_interrupt,
 	.config_intr	= kszphy_config_intr,
 	.driver		= { .owner = THIS_MODULE,},
-};
-
-static struct phy_driver ks8001_driver = {
+}, {
 	.phy_id		= PHY_ID_KS8001,
 	.name		= "Micrel KS8001 or KS8721",
 	.phy_id_mask	= 0x00ffffff,
@@ -170,9 +165,7 @@ static struct phy_driver ks8001_driver = {
 	.ack_interrupt	= kszphy_ack_interrupt,
 	.config_intr	= kszphy_config_intr,
 	.driver		= { .owner = THIS_MODULE,},
-};
-
-static struct phy_driver ksz9021_driver = {
+}, {
 	.phy_id		= PHY_ID_KSZ9021,
 	.phy_id_mask	= 0x000ffffe,
 	.name		= "Micrel KSZ9021 Gigabit PHY",
@@ -185,51 +178,18 @@ static struct phy_driver ksz9021_driver = {
 	.ack_interrupt	= kszphy_ack_interrupt,
 	.config_intr	= ksz9021_config_intr,
 	.driver		= { .owner = THIS_MODULE, },
-};
+} };
 
 static int __init ksphy_init(void)
 {
-	int ret;
-
-	ret = phy_driver_register(&ks8001_driver);
-	if (ret)
-		goto err1;
-
-	ret = phy_driver_register(&ksz9021_driver);
-	if (ret)
-		goto err2;
-
-	ret = phy_driver_register(&ks8737_driver);
-	if (ret)
-		goto err3;
-	ret = phy_driver_register(&ks8041_driver);
-	if (ret)
-		goto err4;
-	ret = phy_driver_register(&ks8051_driver);
-	if (ret)
-		goto err5;
-
-	return 0;
-
-err5:
-	phy_driver_unregister(&ks8041_driver);
-err4:
-	phy_driver_unregister(&ks8737_driver);
-err3:
-	phy_driver_unregister(&ksz9021_driver);
-err2:
-	phy_driver_unregister(&ks8001_driver);
-err1:
-	return ret;
+	return phy_drivers_register(ksphy_driver,
+		ARRAY_SIZE(ksphy_driver));
 }
 
 static void __exit ksphy_exit(void)
 {
-	phy_driver_unregister(&ks8001_driver);
-	phy_driver_unregister(&ks8737_driver);
-	phy_driver_unregister(&ksz9021_driver);
-	phy_driver_unregister(&ks8041_driver);
-	phy_driver_unregister(&ks8051_driver);
+	phy_drivers_unregister(ksphy_driver,
+		ARRAY_SIZE(ksphy_driver));
 }
 
 module_init(ksphy_init);
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
index 47e02e7..7d49e6c 100644
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
@@ -1079,12 +1079,37 @@ int phy_driver_register(struct phy_driver *new_driver)
 }
 EXPORT_SYMBOL(phy_driver_register);
 
+int phy_drivers_register(struct phy_driver *new_driver, int n)
+{
+	int i, ret = 0;
+
+	for (i = 0; i < n; i++) {
+		ret = phy_driver_register(new_driver + i);
+		if (ret) {
+			while (i-- > 0)
+				phy_driver_unregister(new_driver + i);
+			break;
+		}
+	}
+	return ret;
+}
+EXPORT_SYMBOL(phy_drivers_register);
+
 void phy_driver_unregister(struct phy_driver *drv)
 {
 	driver_unregister(&drv->driver);
 }
 EXPORT_SYMBOL(phy_driver_unregister);
 
+void phy_drivers_unregister(struct phy_driver *drv, int n)
+{
+	int i;
+	for (i = 0; i < n; i++) {
+		phy_driver_unregister(drv + i);
+	}
+}
+EXPORT_SYMBOL(phy_drivers_unregister);
+
 static struct phy_driver genphy_driver = {
 	.phy_id		= 0xffffffff,
 	.phy_id_mask	= 0xffffffff,
diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c
index f414ffb..72f9347 100644
--- a/drivers/net/phy/realtek.c
+++ b/drivers/net/phy/realtek.c
@@ -65,11 +65,7 @@ static struct phy_driver rtl821x_driver = {
 
 static int __init realtek_init(void)
 {
-	int ret;
-
-	ret = phy_driver_register(&rtl821x_driver);
-
-	return ret;
+	return phy_driver_register(&rtl821x_driver);
 }
 
 static void __exit realtek_exit(void)
diff --git a/drivers/net/phy/smsc.c b/drivers/net/phy/smsc.c
index fc3e7e9..5fb677b1 100644
--- a/drivers/net/phy/smsc.c
+++ b/drivers/net/phy/smsc.c
@@ -61,7 +61,8 @@ static int lan911x_config_init(struct phy_device *phydev)
 	return smsc_phy_ack_interrupt(phydev);
 }
 
-static struct phy_driver lan83c185_driver = {
+static struct phy_driver smsc_phy_driver[] = {
+{
 	.phy_id		= 0x0007c0a0, /* OUI=0x00800f, Model#=0x0a */
 	.phy_id_mask	= 0xfffffff0,
 	.name		= "SMSC LAN83C185",
@@ -83,9 +84,7 @@ static struct phy_driver lan83c185_driver = {
 	.resume		= genphy_resume,
 
 	.driver		= { .owner = THIS_MODULE, }
-};
-
-static struct phy_driver lan8187_driver = {
+}, {
 	.phy_id		= 0x0007c0b0, /* OUI=0x00800f, Model#=0x0b */
 	.phy_id_mask	= 0xfffffff0,
 	.name		= "SMSC LAN8187",
@@ -107,9 +106,7 @@ static struct phy_driver lan8187_driver = {
 	.resume		= genphy_resume,
 
 	.driver		= { .owner = THIS_MODULE, }
-};
-
-static struct phy_driver lan8700_driver = {
+}, {
 	.phy_id		= 0x0007c0c0, /* OUI=0x00800f, Model#=0x0c */
 	.phy_id_mask	= 0xfffffff0,
 	.name		= "SMSC LAN8700",
@@ -131,9 +128,7 @@ static struct phy_driver lan8700_driver = {
 	.resume		= genphy_resume,
 
 	.driver		= { .owner = THIS_MODULE, }
-};
-
-static struct phy_driver lan911x_int_driver = {
+}, {
 	.phy_id		= 0x0007c0d0, /* OUI=0x00800f, Model#=0x0d */
 	.phy_id_mask	= 0xfffffff0,
 	.name		= "SMSC LAN911x Internal PHY",
@@ -155,9 +150,7 @@ static struct phy_driver lan911x_int_driver = {
 	.resume		= genphy_resume,
 
 	.driver		= { .owner = THIS_MODULE, }
-};
-
-static struct phy_driver lan8710_driver = {
+}, {
 	.phy_id		= 0x0007c0f0, /* OUI=0x00800f, Model#=0x0f */
 	.phy_id_mask	= 0xfffffff0,
 	.name		= "SMSC LAN8710/LAN8720",
@@ -179,53 +172,18 @@ static struct phy_driver lan8710_driver = {
 	.resume		= genphy_resume,
 
 	.driver		= { .owner = THIS_MODULE, }
-};
+} };
 
 static int __init smsc_init(void)
 {
-	int ret;
-
-	ret = phy_driver_register (&lan83c185_driver);
-	if (ret)
-		goto err1;
-
-	ret = phy_driver_register (&lan8187_driver);
-	if (ret)
-		goto err2;
-
-	ret = phy_driver_register (&lan8700_driver);
-	if (ret)
-		goto err3;
-
-	ret = phy_driver_register (&lan911x_int_driver);
-	if (ret)
-		goto err4;
-
-	ret = phy_driver_register (&lan8710_driver);
-	if (ret)
-		goto err5;
-
-	return 0;
-
-err5:
-	phy_driver_unregister (&lan911x_int_driver);
-err4:
-	phy_driver_unregister (&lan8700_driver);
-err3:
-	phy_driver_unregister (&lan8187_driver);
-err2:
-	phy_driver_unregister (&lan83c185_driver);
-err1:
-	return ret;
+	return phy_drivers_register(smsc_phy_driver,
+		ARRAY_SIZE(smsc_phy_driver));
 }
 
 static void __exit smsc_exit(void)
 {
-	phy_driver_unregister (&lan8710_driver);
-	phy_driver_unregister (&lan911x_int_driver);
-	phy_driver_unregister (&lan8700_driver);
-	phy_driver_unregister (&lan8187_driver);
-	phy_driver_unregister (&lan83c185_driver);
+	return phy_drivers_unregister(smsc_phy_driver,
+		ARRAY_SIZE(smsc_phy_driver));
 }
 
 MODULE_DESCRIPTION("SMSC PHY driver");
diff --git a/drivers/net/phy/ste10Xp.c b/drivers/net/phy/ste10Xp.c
index 187a2fa..5e1eb13 100644
--- a/drivers/net/phy/ste10Xp.c
+++ b/drivers/net/phy/ste10Xp.c
@@ -81,7 +81,8 @@ static int ste10Xp_ack_interrupt(struct phy_device *phydev)
 	return 0;
 }
 
-static struct phy_driver ste101p_pdriver = {
+static struct phy_driver ste10xp_pdriver[] = {
+{
 	.phy_id = STE101P_PHY_ID,
 	.phy_id_mask = 0xfffffff0,
 	.name = "STe101p",
@@ -95,9 +96,7 @@ static struct phy_driver ste101p_pdriver = {
 	.suspend = genphy_suspend,
 	.resume = genphy_resume,
 	.driver = {.owner = THIS_MODULE,}
-};
-
-static struct phy_driver ste100p_pdriver = {
+}, {
 	.phy_id = STE100P_PHY_ID,
 	.phy_id_mask = 0xffffffff,
 	.name = "STe100p",
@@ -111,22 +110,18 @@ static struct phy_driver ste100p_pdriver = {
 	.suspend = genphy_suspend,
 	.resume = genphy_resume,
 	.driver = {.owner = THIS_MODULE,}
-};
+} };
 
 static int __init ste10Xp_init(void)
 {
-	int retval;
-
-	retval = phy_driver_register(&ste100p_pdriver);
-	if (retval < 0)
-		return retval;
-	return phy_driver_register(&ste101p_pdriver);
+	return phy_drivers_register(ste10xp_pdriver,
+		ARRAY_SIZE(ste10xp_pdriver));
 }
 
 static void __exit ste10Xp_exit(void)
 {
-	phy_driver_unregister(&ste100p_pdriver);
-	phy_driver_unregister(&ste101p_pdriver);
+	phy_drivers_unregister(ste10xp_pdriver,
+		ARRAY_SIZE(ste10xp_pdriver));
 }
 
 module_init(ste10Xp_init);
diff --git a/drivers/net/phy/vitesse.c b/drivers/net/phy/vitesse.c
index 0ec8e09..939ebbe 100644
--- a/drivers/net/phy/vitesse.c
+++ b/drivers/net/phy/vitesse.c
@@ -138,21 +138,6 @@ static int vsc82xx_config_intr(struct phy_device *phydev)
 	return err;
 }
 
-/* Vitesse 824x */
-static struct phy_driver vsc8244_driver = {
-	.phy_id		= PHY_ID_VSC8244,
-	.name		= "Vitesse VSC8244",
-	.phy_id_mask	= 0x000fffc0,
-	.features	= PHY_GBIT_FEATURES,
-	.flags		= PHY_HAS_INTERRUPT,
-	.config_init	= &vsc824x_config_init,
-	.config_aneg	= &genphy_config_aneg,
-	.read_status	= &genphy_read_status,
-	.ack_interrupt	= &vsc824x_ack_interrupt,
-	.config_intr	= &vsc82xx_config_intr,
-	.driver 	= { .owner = THIS_MODULE,},
-};
-
 static int vsc8221_config_init(struct phy_device *phydev)
 {
 	int err;
@@ -165,8 +150,22 @@ static int vsc8221_config_init(struct phy_device *phydev)
 	   Options are 802.3Z SerDes or SGMII */
 }
 
-/* Vitesse 8221 */
-static struct phy_driver vsc8221_driver = {
+/* Vitesse 824x */
+static struct phy_driver vsc82xx_driver[] = {
+{
+	.phy_id		= PHY_ID_VSC8244,
+	.name		= "Vitesse VSC8244",
+	.phy_id_mask	= 0x000fffc0,
+	.features	= PHY_GBIT_FEATURES,
+	.flags		= PHY_HAS_INTERRUPT,
+	.config_init	= &vsc824x_config_init,
+	.config_aneg	= &genphy_config_aneg,
+	.read_status	= &genphy_read_status,
+	.ack_interrupt	= &vsc824x_ack_interrupt,
+	.config_intr	= &vsc82xx_config_intr,
+	.driver		= { .owner = THIS_MODULE,},
+}, {
+	/* Vitesse 8221 */
 	.phy_id		= PHY_ID_VSC8221,
 	.phy_id_mask	= 0x000ffff0,
 	.name		= "Vitesse VSC8221",
@@ -177,26 +176,19 @@ static struct phy_driver vsc8221_driver = {
 	.read_status	= &genphy_read_status,
 	.ack_interrupt	= &vsc824x_ack_interrupt,
 	.config_intr	= &vsc82xx_config_intr,
-	.driver 	= { .owner = THIS_MODULE,},
-};
+	.driver		= { .owner = THIS_MODULE,},
+} };
 
 static int __init vsc82xx_init(void)
 {
-	int err;
-
-	err = phy_driver_register(&vsc8244_driver);
-	if (err < 0)
-		return err;
-	err = phy_driver_register(&vsc8221_driver);
-	if (err < 0)
-		phy_driver_unregister(&vsc8244_driver);
-	return err;
+	return phy_drivers_register(vsc82xx_driver,
+		ARRAY_SIZE(vsc82xx_driver));
 }
 
 static void __exit vsc82xx_exit(void)
 {
-	phy_driver_unregister(&vsc8244_driver);
-	phy_driver_unregister(&vsc8221_driver);
+	return phy_drivers_unregister(vsc82xx_driver,
+		ARRAY_SIZE(vsc82xx_driver));
 }
 
 module_init(vsc82xx_init);
diff --git a/include/linux/phy.h b/include/linux/phy.h
index c35299e..93b3cf7 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -533,7 +533,9 @@ int genphy_read_status(struct phy_device *phydev);
 int genphy_suspend(struct phy_device *phydev);
 int genphy_resume(struct phy_device *phydev);
 void phy_driver_unregister(struct phy_driver *drv);
+void phy_drivers_unregister(struct phy_driver *drv, int n);
 int phy_driver_register(struct phy_driver *new_driver);
+int phy_drivers_register(struct phy_driver *new_driver, int n);
 void phy_state_machine(struct work_struct *work);
 void phy_start_machine(struct phy_device *phydev,
 		void (*handler)(struct net_device *));
-- 
1.7.2.5

^ permalink raw reply related

* Re: [PATCH] ipv4: Create and use fib_compute_spec_dst() helper.
From: Eric Dumazet @ 2012-07-04 15:21 UTC (permalink / raw)
  To: David Miller; +Cc: ja, netdev
In-Reply-To: <20120628.184500.114483408843364230.davem@davemloft.net>

On Thu, 2012-06-28 at 18:45 -0700, David Miller wrote:
> From: Julian Anastasov <ja@ssi.bg>
> Date: Fri, 29 Jun 2012 02:16:25 +0300 (EEST)
> 
> > 	This is bad for looped m/b-cast: ip_mc_output calls
> > ip_dev_loopback_xmit where pkt_type is set to PACKET_LOOPBACK.
> > May be we have to check skb_dst as below.
> 
> Agreed, for many reasons the pkt_type check is bogus.
> 
> > 	It is not clear to me why ip_route_input_mc and
> > ip_route_input_slow (brd_input) call fib_validate_source()
> > with arg oif=0. How would fib_rule_match match flowi_iif
> > for such traffic then?
> > 
> > 	May be iif should be always set just like in
> > ip_route_output_slow because now we do output lookup to
> > unicast target?:
> > 
> > 	fl4.flowi4_iif = net->loopback_dev->ifindex;
> 
> Ok.  I am not brave enough to adjust what broadcast and
> multicast code do in route.c :-)
> 
> > 	Here only 0 is allowed for m/b-cast daddr, we are not
> > going to use ip_hdr(skb)->daddr, so no need to provide it:
> > 
> > 	fl4.saddr = 0;
> 
> Agreed.
> 
> > 	What about providing ip_hdr(skb)->saddr as
> > 2nd argument here (it is validated by input routing
> > to be unicast or 0.0.0.0):
>  ...
> > 	By this way we will prefer local address from the
> > same subnet as iph->saddr. Also, we should not call
> > fib_lookup if ipv4_is_zeronet(ip_hdr(skb)->saddr), we
> > should use RT_SCOPE_LINK for inet_select_addr in this case.
> > By this way we will prefer addresses with scope link for
> > target 0.0.0.0. There is such logic that uses RT_SCOPE_LINK in
> > ip_route_input_mc() and ip_route_input_slow().
> 
> Also agreed.
> 
> > 	If we use rt_flags above I'm not sure whether
> > ip_options_compile is called with valid rt_flags from the
> > bridging code.
> 
> It will not be the first time we need to fix bridging from
> sending up garbage.
> 
> Here's what I committed based upon your feedback, thanks!
> 
> ====================
> ipv4: Fix bugs in fib_compute_spec_dst().
> 
> Based upon feedback from Julian Anastasov.
> 
> 1) Use route flags to determine multicast/broadcast, not the
>    packet flags.
> 
> 2) Leave saddr unspecified in flow key.
> 
> 3) Adjust how we invoke inet_select_addr().  Pass ip_hdr(skb)->saddr as
>    second arg, and if it was zeronet use link scope.
> 
> 4) Use loopback as input interface in flow key.
> 
> Signed-off-by: David S. Miller <davem@davemloft.net>
> ---
>  net/ipv4/fib_frontend.c |   34 +++++++++++++++++++++-------------
>  1 file changed, 21 insertions(+), 13 deletions(-)
> 
> diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c
> index 63b11ca..1d13217 100644
> --- a/net/ipv4/fib_frontend.c
> +++ b/net/ipv4/fib_frontend.c
> @@ -185,28 +185,36 @@ __be32 fib_compute_spec_dst(struct sk_buff *skb)
>  	struct net_device *dev = skb->dev;
>  	struct in_device *in_dev;
>  	struct fib_result res;
> +	struct rtable *rt;
>  	struct flowi4 fl4;
>  	struct net *net;
> +	int scope;
>  
> -	if (skb->pkt_type != PACKET_BROADCAST &&
> -	    skb->pkt_type != PACKET_MULTICAST)
> +	rt = skb_rtable(skb);
> +	if (!(rt->rt_flags & (RTCF_BROADCAST | RTCF_MULTICAST)))
>  		return ip_hdr(skb)->daddr;
>  

David I tried to setup a bridge to investigate problems reported on
another thread and got immediate crash because of this patch.

Crash in fib_compute_spec_dst() if skb_rtable(skb) is NULL

brctl addbr br0
brctl addif br0 eth0
ifconfig br0 up
ip addr del 172.30.42.23/27 dev eth0
ip addr add 172.30.42.23/27 dev br0
...
<crash>

[  166.706951] Modules linked in: ip6table_filter ip6_tables ebtable_nat ebtables fuse ipt_MASQUERADE iptable_nat nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 xt_state nf_conntrack ipt_REJECT iptable_mangle iptable_filter bridge stp rt61pci crc_itu_t rt2x00pci rt2x00lib eeprom_93cx6 tg3 ixgbe mdio igb
[  166.706955] Pid: 0, comm: swapper/0 Not tainted 3.5.0-rc4+ #494
[  166.706956] Call Trace:
[  166.706965]  <IRQ>  [<ffffffff81039c5f>] warn_slowpath_common+0x7f/0xc0
[  166.706969]  [<ffffffff81039cba>] warn_slowpath_null+0x1a/0x20
[  166.706973]  [<ffffffff815baade>] fib_compute_spec_dst+0x12e/0x1c0
[  166.706979]  [<ffffffff81581d71>] ip_options_compile+0x31/0x5b0
[  166.706985]  [<ffffffff8125ddf6>] ? security_sock_rcv_skb+0x16/0x20
[  166.706991]  [<ffffffff816b8245>] ? _raw_read_unlock_bh+0x25/0x30
[  166.706996]  [<ffffffffa0119465>] ? ebt_do_table+0x6a5/0x770 [ebtables]
[  166.707004]  [<ffffffffa00b8ce5>] br_parse_ip_options+0x105/0x210 [bridge]
[  166.707010]  [<ffffffffa00b9ef8>] br_nf_pre_routing+0x398/0x6a0 [bridge]
[  166.707015]  [<ffffffff81573534>] nf_iterate+0x84/0xd0
[  166.707021]  [<ffffffffa00b3ba0>] ? br_handle_local_finish+0x50/0x50 [bridge]
[  166.707024]  [<ffffffff81573605>] nf_hook_slow+0x85/0x130
[  166.707029]  [<ffffffffa00b3ba0>] ? br_handle_local_finish+0x50/0x50 [bridge]
[  166.707035]  [<ffffffff816201c7>] ? packet_rcv_spkt+0x47/0x190
[  166.707041]  [<ffffffffa00b3f40>] br_handle_frame+0x1c0/0x260 [bridge]
[  166.707044]  [<ffffffff816201c7>] ? packet_rcv_spkt+0x47/0x190
[  166.707050]  [<ffffffffa00b3d80>] ? br_handle_frame_finish+0x1e0/0x1e0 [bridge]
[  166.707054]  [<ffffffff8154538b>] __netif_receive_skb+0x1bb/0x5f0
[  166.707058]  [<ffffffff81545955>] netif_receive_skb+0x25/0xc0
[  166.707061]  [<ffffffff81545ced>] ? dev_gro_receive+0x1dd/0x2f0
[  166.707065]  [<ffffffff81546450>] napi_skb_finish+0x70/0xa0
[  166.707068]  [<ffffffff815483e5>] napi_gro_receive+0xf5/0x140
[  166.707075]  [<ffffffffa00720f2>] tg3_poll_work+0xc42/0xde0 [tg3]
[  166.707080]  [<ffffffff816647c7>] ? ieee80211_rx+0x357/0x890
[  166.707086]  [<ffffffffa007976c>] tg3_poll+0x8c/0x3c0 [tg3]
[  166.707091]  [<ffffffffa009093f>] ? rt2x00lib_rxdone+0x28f/0x450 [rt2x00lib]
[  166.707095]  [<ffffffff81547a2b>] net_rx_action+0x12b/0x250

^ permalink raw reply

* Re: Using interface number probing for usbnet drivers before 3.6-rc1?
From: Greg Kroah-Hartman @ 2012-07-04 15:11 UTC (permalink / raw)
  To: Bjørn Mork
  Cc: David Miller, netdev-u79uwXL29TY76Z2rM5mHXA,
	linux-usb-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <87ipe3lgvm.fsf-lbf33ChDnrE/G1V5fR+Y7Q@public.gmane.org>

On Wed, Jul 04, 2012 at 04:50:53PM +0200, Bjørn Mork wrote:
> Greg Kroah-Hartman <gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org> writes:
> > On Wed, Jul 04, 2012 at 01:19:35PM +0200, Bjørn Mork wrote:
> >> David Miller <davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org> writes:
> >> > From: Bjørn Mork <bjorn-yOkvZcmFvRU@public.gmane.org>
> >> > Date: Sat, 23 Jun 2012 11:26:54 +0200
> >> >
> >> >> Is waiting for 3.6-rc1 the best alternative, or is cherry-picking them
> >> >> an option?
> >> >
> >> > I'm extremely reluctant to have a dependency on another tree.
> >> >
> >> > The USB tree, on the other hand, could pull the net-next tree
> >> > in so you can continue your dependent work there.
> >> 
> >> Hello Greg,
> >> 
> >> I know I said I would be more careful about cross-tree dependencies, but
> >> here I am again...
> >> 
> >> The context is: How should I proceed with interface number based probing
> >> for usbnet drivers, in particular qmi_wwan which already has a few
> >> patches in net-next?
> >> 
> >> I see two possible remaining options:
> >> 
> >>  1) you pull the net-next changes into usb-next so that I can do the
> >>     work against usb-next now, or
> >>  2) I wait for 3.6-rc1 and do the work against the net tree after
> >>     3.6-rc1 is merged there
> >> 
> >> I have decided to go for option #2 unless either of you have other
> >> preferences, as I believe that is going to cause the least work and
> >> merge trouble for you both.
> >
> > What about:
> >    3) You send the usb interface number matching patches again for them
> >    to be included in the net-next tree as well, causing duplicates to be
> >    in linux-next, but allowing you to send your patches into net-next.
> >
> > That is what we have done at times for other patches, and if David is ok
> > with it, so am I.  Odds are, the merge will happen automatically, but if
> > not, I can handle it when 3.6-rc1 comes around.
> >
> > Sound good?
> 
> I could have misunderstood, but I thought that was out of the question
> given that David didn't want to cherry-pick them from usb-next.

Well, I said to email them again, which makes it easier for David, but
if he doesn't want to do that, then you will have to wait for option 2
above, sorry.

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply

* [PATCH] bcm87xx: fix reg-init comment typo
From: Peter Korsgaard @ 2012-07-04 15:05 UTC (permalink / raw)
  To: netdev, david.daney, davem; +Cc: Peter Korsgaard

broadcom, not marvell.

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
---
 drivers/net/phy/bcm87xx.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/phy/bcm87xx.c b/drivers/net/phy/bcm87xx.c
index 9a90dcf..a6df68c 100644
--- a/drivers/net/phy/bcm87xx.c
+++ b/drivers/net/phy/bcm87xx.c
@@ -22,7 +22,7 @@
 
 #if IS_ENABLED(CONFIG_OF_MDIO)
 /* Set and/or override some configuration registers based on the
- * marvell,reg-init property stored in the of_node for the phydev.
+ * broadcom,c45-reg-init property stored in the of_node for the phydev.
  *
  * broadcom,c45-reg-init = <devid reg mask value>,...;
  *
-- 
1.7.10

^ permalink raw reply related

* pull-request: can-next 2012-07-04
From: Marc Kleine-Budde @ 2012-07-04 15:00 UTC (permalink / raw)
  To: David Miller; +Cc: Linux Netdev List, linux-can@vger.kernel.org

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

Hello David,

our third pull request for upcoming v3.6 net-next. First Oliver and me
fix some sparse warnings, then 3 patches by Hui Wang and Shawn Guo
which improve flexcan support and finally the patch by Rostislav Lisovy
that adds CAN frame classifier.

regards,
Marc

---

The following changes since commit e87183c2b5ab1f55ebad2f260a7eb4d31549ce25:

  Merge tag 'batman-adv-for-davem' of git://git.open-mesh.org/linux-merge (2012-07-01 17:56:33 -0700)

are available in the git repository at:


  git://gitorious.org/linux-can/linux-can-next.git for-davem

for you to fetch changes up to f057bbb6f9ed0fb61ea11105c9ef0ed5ac1a354d:

  net: em_canid: Ematch rule to match CAN frames according to their identifiers (2012-07-04 13:07:05 +0200)

----------------------------------------------------------------
Hui Wang (2):
      can: flexcan: use of_property_read_u32 to get DT entry value
      can: flexcan: add hardware controller version support

Marc Kleine-Budde (2):
      can: cc770: fix sparse warning for cc770_interrupt
      can: dev: fix sparse warning for can_restart

Oliver Hartkopp (1):
      can: fix sparse warning in af_can.c

Rostislav Lisovy (1):
      net: em_canid: Ematch rule to match CAN frames according to their identifiers

Shawn Guo (1):
      net: flexcan: clock-frequency is optional for device tree probe

 .../devicetree/bindings/net/can/fsl-flexcan.txt    |    3 +
 drivers/net/can/cc770/cc770.c                      |    2 +-
 drivers/net/can/dev.c                              |    2 +-
 drivers/net/can/flexcan.c                          |   71 ++++--
 include/linux/can.h                                |    3 +
 include/linux/pkt_cls.h                            |    5 +-
 net/can/af_can.h                                   |    3 +
 net/can/proc.c                                     |    3 -
 net/sched/Kconfig                                  |   10 +
 net/sched/Makefile                                 |    1 +
 net/sched/em_canid.c                               |  240 ++++++++++++++++++++
 11 files changed, 320 insertions(+), 23 deletions(-)
 create mode 100644 net/sched/em_canid.c

-- 
Pengutronix e.K.                  | Marc Kleine-Budde           |
Industrial Linux Solutions        | Phone: +49-231-2826-924     |
Vertretung West/Dortmund          | Fax:   +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686  | http://www.pengutronix.de   |


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 262 bytes --]

^ permalink raw reply

* Re: [PATCH 2/2] net: add support for NS8390 based eth controllers on some ColdFire CPU boards
From: Joe Perches @ 2012-07-04 14:52 UTC (permalink / raw)
  To: Geert Uytterhoeven; +Cc: Greg Ungerer, netdev, linux-m68k, Greg Ungerer
In-Reply-To: <CAMuHMdVYiQyurOQOoeLbd6zXnaVK8Y9bUC=wXkHxhQO+cQwecQ@mail.gmail.com>

On Wed, 2012-07-04 at 09:52 +0200, Geert Uytterhoeven wrote:
> On Wed, Jul 4, 2012 at 8:39 AM, Joe Perches <joe@perches.com> wrote:
> >> >> +static int mcf8390_init(struct net_device *dev)
> >> >> +{
> >> >> +  static u32 offsets[] = {
> >> >> +          0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
> >> >> +          0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
> >> >> +  };
> >> >
> >> > const?  u8?
> >>
> >> That is assigned to the "reg_offset" field of "struct ei_device"
> >> (defined in the existing 8390.h) and that is:
> >>
> >>      u32 *reg_offset;         /* Register mapping table */
> >>
> >> So I can't change this.
> >
> > Sure you can, you can assign a u8 to a u32 just fine.
> 
> It's not the value that's assigned, but a pointer to the table, so
> for now it must be non-const u32 *.

Oh, then of course you and Greg are correct.

It looks like the code in ax88796.c may actually
need u32 sizes too.

^ permalink raw reply

* Re: Using interface number probing for usbnet drivers before 3.6-rc1?
From: Bjørn Mork @ 2012-07-04 14:50 UTC (permalink / raw)
  To: Greg Kroah-Hartman; +Cc: David Miller, netdev, linux-usb
In-Reply-To: <20120704144649.GC23020@kroah.com>

Greg Kroah-Hartman <gregkh@linuxfoundation.org> writes:
> On Wed, Jul 04, 2012 at 01:19:35PM +0200, Bjørn Mork wrote:
>> David Miller <davem@davemloft.net> writes:
>> > From: Bjørn Mork <bjorn@mork.no>
>> > Date: Sat, 23 Jun 2012 11:26:54 +0200
>> >
>> >> Is waiting for 3.6-rc1 the best alternative, or is cherry-picking them
>> >> an option?
>> >
>> > I'm extremely reluctant to have a dependency on another tree.
>> >
>> > The USB tree, on the other hand, could pull the net-next tree
>> > in so you can continue your dependent work there.
>> 
>> Hello Greg,
>> 
>> I know I said I would be more careful about cross-tree dependencies, but
>> here I am again...
>> 
>> The context is: How should I proceed with interface number based probing
>> for usbnet drivers, in particular qmi_wwan which already has a few
>> patches in net-next?
>> 
>> I see two possible remaining options:
>> 
>>  1) you pull the net-next changes into usb-next so that I can do the
>>     work against usb-next now, or
>>  2) I wait for 3.6-rc1 and do the work against the net tree after
>>     3.6-rc1 is merged there
>> 
>> I have decided to go for option #2 unless either of you have other
>> preferences, as I believe that is going to cause the least work and
>> merge trouble for you both.
>
> What about:
>    3) You send the usb interface number matching patches again for them
>    to be included in the net-next tree as well, causing duplicates to be
>    in linux-next, but allowing you to send your patches into net-next.
>
> That is what we have done at times for other patches, and if David is ok
> with it, so am I.  Odds are, the merge will happen automatically, but if
> not, I can handle it when 3.6-rc1 comes around.
>
> Sound good?

I could have misunderstood, but I thought that was out of the question
given that David didn't want to cherry-pick them from usb-next.


Bjørn 

^ permalink raw reply

* Re: Using interface number probing for usbnet drivers before 3.6-rc1? (was: Re: [PATCH net] net: qmi_wwan: fix Gobi device probing)
From: Greg Kroah-Hartman @ 2012-07-04 14:46 UTC (permalink / raw)
  To: Bjørn Mork
  Cc: David Miller, netdev-u79uwXL29TY76Z2rM5mHXA,
	linux-usb-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <87mx3flqns.fsf_-_-lbf33ChDnrE/G1V5fR+Y7Q@public.gmane.org>

On Wed, Jul 04, 2012 at 01:19:35PM +0200, Bjørn Mork wrote:
> David Miller <davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org> writes:
> > From: Bjørn Mork <bjorn-yOkvZcmFvRU@public.gmane.org>
> > Date: Sat, 23 Jun 2012 11:26:54 +0200
> >
> >> Is waiting for 3.6-rc1 the best alternative, or is cherry-picking them
> >> an option?
> >
> > I'm extremely reluctant to have a dependency on another tree.
> >
> > The USB tree, on the other hand, could pull the net-next tree
> > in so you can continue your dependent work there.
> 
> Hello Greg,
> 
> I know I said I would be more careful about cross-tree dependencies, but
> here I am again...
> 
> The context is: How should I proceed with interface number based probing
> for usbnet drivers, in particular qmi_wwan which already has a few
> patches in net-next?
> 
> I see two possible remaining options:
> 
>  1) you pull the net-next changes into usb-next so that I can do the
>     work against usb-next now, or
>  2) I wait for 3.6-rc1 and do the work against the net tree after
>     3.6-rc1 is merged there
> 
> I have decided to go for option #2 unless either of you have other
> preferences, as I believe that is going to cause the least work and
> merge trouble for you both.

What about:
   3) You send the usb interface number matching patches again for them
   to be included in the net-next tree as well, causing duplicates to be
   in linux-next, but allowing you to send your patches into net-next.

That is what we have done at times for other patches, and if David is ok
with it, so am I.  Odds are, the merge will happen automatically, but if
not, I can handle it when 3.6-rc1 comes around.

Sound good?

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply

* Re: Bridged networking panics
From: Massimo Cetra @ 2012-07-04 13:50 UTC (permalink / raw)
  To: Eric Dumazet; +Cc: Massimo Cetra, netdev, linux-kernel
In-Reply-To: <1341408298.2583.1963.camel@edumazet-glaptop>

On 04/07/2012 15:24, Eric Dumazet wrote:

> Posting a bug report is not enough to get people working for free on the
> problem.

Thanks for the reply.

I'd like to point out that without a reply of what is need of what i'm 
doing wrong i cannot provide anything useful.

> Apparently your configuration is kind of special if nobody but you hits
> the problem so often.

> So it would help if you can reproduce the bug using current kernel and
> provide all necessary steps to reproduce the bug. Ideally a script.sh
> file doing all the configuration you use to trigger the bug, assuming
> a basic machine freshly booted with no special config already done.

I can try to setup a fresh KVM image and see if the bug is reproduceable 
there. Would it be ok ?

> The panics dont happen in the bridge code itself, but in the
> BRIDGE_NETFILTER one. Do you need it, and why ?
>
> Are you using vlans ?

No, no VLANS.

I have 2 real network cards (Broadcom Corporation NetXtreme II BCM5716) 
configured as bridges.

Each bridge (br0 and br1) has an ip address which is fixed (does never 
change).

The server(s) run KVM machines which are attached to tun interfaces 
(created with "vde_tunctl -u $user -t $IFACE)

Each virtual KVM server has an IP address that is forwarded through the 
bridge and has as gateway the router of the main server.

Up to this point there is nothing strange in the configuration and if 
the system is used this way, there are no panics.


The (maybe) peculiar configs are:

1) heartbeat is installed and creates alias interfaces for the bridge 
and assigns them an IP address. So the server has br0:1 and br1:1 that 
are associated with a couple of IP addresses.

2) the server runs ipvs (to redirect HTTP requests to two KVM servers 
that are natted behind the br0:1 br1:1 addresses).


IF i remove the br0:1 and br1:1 interfaces (that are configured with the 
ip addresses used by IPVS i don't have any single problem and the crash 
(at least with 3.2.21) doesn't happen.

So, if i turn off heartbeat (and the alias ip addresses used by IPVSare 
switched to the other host) there are no panics.

The more the traffic, the quicker the panic happens.

Note that up to 2.6.36 this configuration was working without problems.

Ah, the last setting that i modified is disabling tcp_sack in sysctl.conf.

> Please try following patch

I will try on the latest 3.2.y for now, trying to replicate the problem.

Thanks again,

MC

^ permalink raw reply

* Re: [PATCH net-next 1/2] ieee802154: sparse warnings: make symbols static
From: Eric Dumazet @ 2012-07-04 13:45 UTC (permalink / raw)
  To: Alexander Smirnov; +Cc: davem, netdev, dbaryshkov
In-Reply-To: <CAJmB2rAdDvpGhEDzBQddJBi5fJ55McN8uJEzLQiF_froR4hxVA@mail.gmail.com>

On Wed, 2012-07-04 at 17:38 +0400, Alexander Smirnov wrote:

> Do I need to create 2 separate patches: one for revert and second to
> initialize spinlock correctly, or I can combine these changes in one
> patch?
> 

you can combine patch

> >
> > You should validate this code with LOCKDEP
> 
> Nothing was shown by LOCKDEP for 6lowpan. :-(
> 

Because path was not hit ( fragment expire )

You would have to simulate a drop or something to trigger the lockdep
splat, when lowpan_fragment_timer_expired() fires.

> I've selected the following options:
> 
> -*- Spinlock and rw-lock debugging: basic checks
> -*- Mutex debugging: basic checks
> -*- Lock debugging: detect incorrect freeing of live locks
> [*] Lock usage statistics
> [*] Lock dependency engine debugging
> 
> >
> > lowpan_dellink() does a spin_lock(&flist_lock);
> > while same lock can be taken by lowpan_fragment_timer_expired() from
> > timer irq, -> deadlock.
> 
> What would be the best way to solve this context mismatch? Can I do
> something like following:
> 1. create some 6lowpan internal workqueue
> 2. replace lowpan_fragment_timer_expired() body by queue_work() with
> current list_deleting routine
> 3. when 6lowpan is going to be deleted - I'll flush the queue and
> remove all the timers and respective fragments
> 

Just use the spin_lock_bh() variant to disable BH, so that timer doesnt
deadlock with you.

^ permalink raw reply

* Re: [PATCH net-next 1/2] ieee802154: sparse warnings: make symbols static
From: Alexander Smirnov @ 2012-07-04 13:38 UTC (permalink / raw)
  To: Eric Dumazet; +Cc: davem, netdev, dbaryshkov
In-Reply-To: <1341211751.5269.6.camel@edumazet-glaptop>

Hi Eric,

just a several questions:

>> >
>> > static DEFINE_SPINLOCK(flist_lock);
>>
>>
>> and of course commit 768f7c7c121e80f4 (6lowpan: add missing
>> spin_lock_init() ) must be reverted.

Do I need to create 2 separate patches: one for revert and second to
initialize spinlock correctly, or I can combine these changes in one
patch?

>
> You should validate this code with LOCKDEP

Nothing was shown by LOCKDEP for 6lowpan. :-(

I've selected the following options:

-*- Spinlock and rw-lock debugging: basic checks
-*- Mutex debugging: basic checks
-*- Lock debugging: detect incorrect freeing of live locks
[*] Lock usage statistics
[*] Lock dependency engine debugging

>
> lowpan_dellink() does a spin_lock(&flist_lock);
> while same lock can be taken by lowpan_fragment_timer_expired() from
> timer irq, -> deadlock.

What would be the best way to solve this context mismatch? Can I do
something like following:
1. create some 6lowpan internal workqueue
2. replace lowpan_fragment_timer_expired() body by queue_work() with
current list_deleting routine
3. when 6lowpan is going to be deleted - I'll flush the queue and
remove all the timers and respective fragments

Alex

^ permalink raw reply

* Re: Bridged networking panics
From: Eric Dumazet @ 2012-07-04 13:24 UTC (permalink / raw)
  To: Massimo Cetra; +Cc: netdev, linux-kernel
In-Reply-To: <4FF41E1A.4070102@navynet.it>

On Wed, 2012-07-04 at 12:42 +0200, Massimo Cetra wrote:

> Ok, waiting for an answer (sincerely i don't understand why no ones 
> cares for months) i'm attaching 3 more panics happened this morning on a 
> vanilla 3.2.21.
> 
> The problem is related to heavy network traffic.
> 
> I'm not a kernel hacker but I see that net_rx_action() is in the backtrace.
> So (probably reaching wrong conclusions) if those panics are triggered 
> by incoming network traffic, can an attacker use this to crash a machine ?
> 
> Anyone willing to reply or at least tell me what's going on ?

Posting a bug report is not enough to get people working for free on the
problem.

Apparently your configuration is kind of special if nobody but you hits
the problem so often.

So it would help if you can reproduce the bug using current kernel and
provide all necessary steps to reproduce the bug. Ideally a script.sh
file doing all the configuration you use to trigger the bug, assuming
a basic machine freshly booted with no special config already done.

The panics dont happen in the bridge code itself, but in the
BRIDGE_NETFILTER one. Do you need it, and why ?

Are you using vlans ?

Please try following patch

 net/bridge/br_netfilter.c |   20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/net/bridge/br_netfilter.c b/net/bridge/br_netfilter.c
index e41456b..a73a8cb 100644
--- a/net/bridge/br_netfilter.c
+++ b/net/bridge/br_netfilter.c
@@ -173,9 +173,13 @@ static inline struct rtable *bridge_parent_rtable(const struct net_device *dev)
 static inline struct net_device *bridge_parent(const struct net_device *dev)
 {
 	struct net_bridge_port *port;
+	struct net_device *parent;
 
 	port = br_port_get_rcu(dev);
-	return port ? port->br->dev : NULL;
+	parent = port ? port->br->dev : NULL;
+	if (parent && !(parent->flags & IFF_UP))
+		parent = NULL;
+	return parent;
 }
 
 static inline struct nf_bridge_info *nf_bridge_alloc(struct sk_buff *skb)
@@ -510,6 +514,8 @@ static struct net_device *brnf_get_logical_dev(struct sk_buff *skb, const struct
 	struct net_device *vlan, *br;
 
 	br = bridge_parent(dev);
+	if (!br)
+		return NULL;
 	if (brnf_pass_vlan_indev == 0 || !vlan_tx_tag_present(skb))
 		return br;
 
@@ -748,7 +754,7 @@ static unsigned int br_nf_forward_ip(unsigned int hook, struct sk_buff *skb,
 				     int (*okfn)(struct sk_buff *))
 {
 	struct nf_bridge_info *nf_bridge;
-	struct net_device *parent;
+	struct net_device *parent, *ldev;
 	u_int8_t pf;
 
 	if (!skb->nf_bridge)
@@ -789,8 +795,11 @@ static unsigned int br_nf_forward_ip(unsigned int hook, struct sk_buff *skb,
 	else
 		skb->protocol = htons(ETH_P_IPV6);
 
-	NF_HOOK(pf, NF_INET_FORWARD, skb, brnf_get_logical_dev(skb, in), parent,
-		br_nf_forward_finish);
+	ldev = brnf_get_logical_dev(skb, in);
+	if (!ldev)
+		return NF_DROP;
+
+	NF_HOOK(pf, NF_INET_FORWARD, skb, ldev, parent, br_nf_forward_finish);
 
 	return NF_STOLEN;
 }
@@ -861,12 +870,13 @@ static unsigned int br_nf_post_routing(unsigned int hook, struct sk_buff *skb,
 				       int (*okfn)(struct sk_buff *))
 {
 	struct nf_bridge_info *nf_bridge = skb->nf_bridge;
-	struct net_device *realoutdev = bridge_parent(skb->dev);
+	struct net_device *realoutdev;
 	u_int8_t pf;
 
 	if (!nf_bridge || !(nf_bridge->mask & BRNF_BRIDGED))
 		return NF_ACCEPT;
 
+	realoutdev = bridge_parent(skb->dev);
 	if (!realoutdev)
 		return NF_DROP;
 

^ permalink raw reply related

* [net] ixgbe: DCB and SR-IOV can not co-exist and will cause hangs
From: Jeff Kirsher @ 2012-07-04 12:00 UTC (permalink / raw)
  To: davem; +Cc: Alexander Duyck, netdev, gospo, sassmann, Jeff Kirsher

From: Alexander Duyck <alexander.h.duyck@intel.com>

DCB and SR-IOV cannot currently be enabled at the same time as the queueing
schemes are incompatible.  If they are both enabled it will result in Tx
hangs since only the first Tx queue will be able to transmit any traffic.

This simple fix for this is to block us from enabling TCs in ixgbe_setup_tc
if SR-IOV is enabled.  This change will be reverted once we can support
SR-IOV and DCB coexistence.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Acked-by: John Fastabend <john.r.fastabend@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Tested-by: Ross Brattain <ross.b.brattain@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c |    5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index 18ca3bc..e242104 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -6647,6 +6647,11 @@ int ixgbe_setup_tc(struct net_device *dev, u8 tc)
 		return -EINVAL;
 	}
 
+	if (adapter->flags & IXGBE_FLAG_SRIOV_ENABLED) {
+		e_err(drv, "Enable failed, SR-IOV enabled\n");
+		return -EINVAL;
+	}
+
 	/* Hardware supports up to 8 traffic classes */
 	if (tc > adapter->dcb_cfg.num_tcs.pg_tcs ||
 	    (hw->mac.type == ixgbe_mac_82598EB &&
-- 
1.7.10.4

^ permalink raw reply related

* VIEW ATTACHED FOR DETAILS AND GET BACK TO ME
From: David Mason @ 2012-07-04 11:34 UTC (permalink / raw)
  To: David Mason

[-- Attachment #1: Mail message body --]
[-- Type: text/plain, Size: 0 bytes --]



[-- Attachment #2: Details.txt --]
[-- Type: text/plain, Size: 934 bytes --]

Hello, this is a management replacement on behalf of an investor whose anonymity is held in strict confidence because obvious reasons.

We got your details from the United Kingdom Chambers of Commerce and Industry while searching for a reliable partner to act as trustee to this funds. The investor is interested in a joint partnership venture with you or your company for a period of 10years,he the investor is willing to re-assign the proceed of his investment Bond to facilitate the term of agreement that we may enter with you.

If you are vast in business and would be capable to handle a capital project,please present your details along with your business plan to
enable us review and set up meeting with you and our brokers here in Europe. Upon the receipt of your information, we shall present the agreement binding this transaction for your perusal and signature. I will await your message.

Regards,
Mr David Mason.

^ permalink raw reply

* Using interface number probing for usbnet drivers before 3.6-rc1? (was: Re: [PATCH net] net: qmi_wwan: fix Gobi device probing)
From: Bjørn Mork @ 2012-07-04 11:19 UTC (permalink / raw)
  To: Greg Kroah-Hartman; +Cc: David Miller, netdev, linux-usb
In-Reply-To: <20120623.023749.1066357959466872561.davem@davemloft.net>

David Miller <davem@davemloft.net> writes:
> From: Bjørn Mork <bjorn@mork.no>
> Date: Sat, 23 Jun 2012 11:26:54 +0200
>
>> Is waiting for 3.6-rc1 the best alternative, or is cherry-picking them
>> an option?
>
> I'm extremely reluctant to have a dependency on another tree.
>
> The USB tree, on the other hand, could pull the net-next tree
> in so you can continue your dependent work there.

Hello Greg,

I know I said I would be more careful about cross-tree dependencies, but
here I am again...

The context is: How should I proceed with interface number based probing
for usbnet drivers, in particular qmi_wwan which already has a few
patches in net-next?

I see two possible remaining options:

 1) you pull the net-next changes into usb-next so that I can do the
    work against usb-next now, or
 2) I wait for 3.6-rc1 and do the work against the net tree after
    3.6-rc1 is merged there

I have decided to go for option #2 unless either of you have other
preferences, as I believe that is going to cause the least work and
merge trouble for you both.

The changes are mostly device IDs, but I am also going to rip out all
the whitelist probing logic becoming redundant. This is a single driver
and pretty obvious low risk though, so I believe it is appropriate for
an -rc2.

But please let me know if I'm on the wrong track here.


Bjørn

^ permalink raw reply

* Kernel Oops
From: RuanZhijie @ 2012-07-04 11:04 UTC (permalink / raw)
  To: davem; +Cc: netdev, skinsbursky

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


Hi, all.

Mr. Stanislav Kinsbursky suggests me send you a report about an oops I encountered in the past few days.

A few days ago, I tested some VMs with NAT enabled under KVM and libvirt, but kernel crashed when I shut down these VMs, though this issue did not occur every time. I did some search and found a webpage (http://www.spinics.net/lists/netdev/msg193846.html) in which Simon reported a similar issue.

The operating system I use is gentoo-amd64 with no-multilib profile, kernel version is 3.4.0, libvirt-0.9.13 with USE flag "qemu virt-network" enabled and qemu-kvm-1.0.1-r1. Here are the steps to reproduce:

1. Let's define that starting a VM with NAT enabled under KVM and libvirt and then shut it down immediately as one operation.
2. Repeat the operation for several times.

I also did 3 tests:

Test 1: 
The host machine is with a regular linux 3.4.0 kernel, and the VM had NAT enabled. Kernel crashed after 2, 7 and 13 operations.

Test 2:
The host machine is with a regular linux 3.4.0 kernel, and the VM had no network access. No crash occured after 100 operations.

Test 3:
The host machine is with a linux 3.4.0 kernel, but drivers/net/tun.c was reverted back to just before commit 1ab5ecb90cb6a3df1476e052f76a6e8f6511cb3d (https://github.com/torvalds/linux/commit/1ab5ecb90cb6a3df1476e052f76a6e8f6511cb3d#drivers/net/tun.c), (or you can use a tun.c from a 3.2.0 kernel, according to Simon's report), and the VM had NAT enabled. No crash occured after 100 operations.

Moreover, I observe that a virtual interface is created to handle network access when a VM with NAT enabled starts, and the virtual interface is removed when the VM is shut down. Crashes usually occur at the time the virtual interface is removed.

Finally, the attachment contains the config file I use to compile the kernel and the kernel crash traces. I am sorry that my laptop does not have a serial port, I could not provide traces from tty console. Hope these could help.

Sincerely,

Zhijie 		 	   		  

[-- Attachment #2: kernel.config --]
[-- Type: application/octet-stream, Size: 61488 bytes --]

#
# Automatically generated file; DO NOT EDIT.
# Linux/x86_64 3.4.0 Kernel Configuration
#
CONFIG_64BIT=y
# CONFIG_X86_32 is not set
CONFIG_X86_64=y
CONFIG_X86=y
CONFIG_INSTRUCTION_DECODER=y
CONFIG_OUTPUT_FORMAT="elf64-x86-64"
CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
CONFIG_GENERIC_CMOS_UPDATE=y
CONFIG_CLOCKSOURCE_WATCHDOG=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_ARCH_CLOCKSOURCE_DATA=y
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_HAVE_LATENCYTOP_SUPPORT=y
CONFIG_MMU=y
CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_NEED_SG_DMA_LENGTH=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_BUG=y
CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_GENERIC_TIME_VSYSCALL=y
CONFIG_ARCH_HAS_CPU_RELAX=y
CONFIG_ARCH_HAS_DEFAULT_IDLE=y
CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
CONFIG_ARCH_HAS_CPU_AUTOPROBE=y
CONFIG_HAVE_SETUP_PER_CPU_AREA=y
CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_ZONE_DMA32=y
CONFIG_AUDIT_ARCH=y
CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
CONFIG_X86_64_SMP=y
CONFIG_X86_HT=y
CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-rdi -fcall-saved-rsi -fcall-saved-rdx -fcall-saved-rcx -fcall-saved-r8 -fcall-saved-r9 -fcall-saved-r10 -fcall-saved-r11"
# CONFIG_KTIME_SCALAR is not set
CONFIG_ARCH_CPU_PROBE_RELEASE=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
CONFIG_HAVE_IRQ_WORK=y
CONFIG_IRQ_WORK=y

#
# General setup
#
# CONFIG_EXPERIMENTAL is not set
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_CROSS_COMPILE=""
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_HAVE_KERNEL_GZIP=y
CONFIG_HAVE_KERNEL_BZIP2=y
CONFIG_HAVE_KERNEL_LZMA=y
CONFIG_HAVE_KERNEL_XZ=y
CONFIG_HAVE_KERNEL_LZO=y
# CONFIG_KERNEL_GZIP is not set
# CONFIG_KERNEL_BZIP2 is not set
# CONFIG_KERNEL_LZMA is not set
CONFIG_KERNEL_XZ=y
# CONFIG_KERNEL_LZO is not set
CONFIG_DEFAULT_HOSTNAME="timemars"
# CONFIG_SWAP is not set
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_FHANDLE is not set
CONFIG_TASKSTATS=y
CONFIG_TASK_DELAY_ACCT=y
# CONFIG_TASK_XACCT is not set
# CONFIG_AUDIT is not set
CONFIG_HAVE_GENERIC_HARDIRQS=y

#
# IRQ subsystem
#
CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_IRQ_SHOW=y
CONFIG_GENERIC_PENDING_IRQ=y
CONFIG_IRQ_FORCED_THREADING=y
CONFIG_SPARSE_IRQ=y

#
# RCU Subsystem
#
CONFIG_TREE_RCU=y
# CONFIG_PREEMPT_RCU is not set
CONFIG_RCU_FANOUT=64
# CONFIG_RCU_FANOUT_EXACT is not set
# CONFIG_RCU_FAST_NO_HZ is not set
# CONFIG_TREE_RCU_TRACE is not set
# CONFIG_IKCONFIG is not set
CONFIG_LOG_BUF_SHIFT=18
CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
CONFIG_CGROUPS=y
# CONFIG_CGROUP_DEBUG is not set
CONFIG_CGROUP_FREEZER=y
CONFIG_CGROUP_DEVICE=y
CONFIG_CPUSETS=y
# CONFIG_PROC_PID_CPUSET is not set
CONFIG_CGROUP_CPUACCT=y
CONFIG_RESOURCE_COUNTERS=y
CONFIG_CGROUP_MEM_RES_CTLR=y
# CONFIG_CGROUP_PERF is not set
CONFIG_CGROUP_SCHED=y
CONFIG_FAIR_GROUP_SCHED=y
CONFIG_BLK_CGROUP=y
# CONFIG_DEBUG_BLK_CGROUP is not set
# CONFIG_CHECKPOINT_RESTORE is not set
CONFIG_NAMESPACES=y
CONFIG_UTS_NS=y
CONFIG_IPC_NS=y
CONFIG_PID_NS=y
CONFIG_NET_NS=y
CONFIG_SCHED_AUTOGROUP=y
CONFIG_MM_OWNER=y
# CONFIG_SYSFS_DEPRECATED is not set
# CONFIG_RELAY is not set
# CONFIG_BLK_DEV_INITRD is not set
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
CONFIG_ANON_INODES=y
# CONFIG_EXPERT is not set
# CONFIG_SYSCTL_SYSCALL is not set
CONFIG_KALLSYMS=y
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_PCSPKR_PLATFORM=y
CONFIG_HAVE_PCSPKR_PLATFORM=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_AIO=y
# CONFIG_EMBEDDED is not set
CONFIG_HAVE_PERF_EVENTS=y

#
# Kernel Performance Events And Counters
#
CONFIG_PERF_EVENTS=y
# CONFIG_PERF_COUNTERS is not set
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_PCI_QUIRKS=y
CONFIG_SLUB_DEBUG=y
# CONFIG_COMPAT_BRK is not set
# CONFIG_SLAB is not set
CONFIG_SLUB=y
# CONFIG_PROFILING is not set
CONFIG_HAVE_OPROFILE=y
CONFIG_OPROFILE_NMI_TIMER=y
# CONFIG_KPROBES is not set
# CONFIG_JUMP_LABEL is not set
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
CONFIG_USER_RETURN_NOTIFIER=y
CONFIG_HAVE_IOREMAP_PROT=y
CONFIG_HAVE_KPROBES=y
CONFIG_HAVE_KRETPROBES=y
CONFIG_HAVE_OPTPROBES=y
CONFIG_HAVE_ARCH_TRACEHOOK=y
CONFIG_HAVE_DMA_ATTRS=y
CONFIG_USE_GENERIC_SMP_HELPERS=y
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
CONFIG_HAVE_DMA_API_DEBUG=y
CONFIG_HAVE_HW_BREAKPOINT=y
CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y
CONFIG_HAVE_USER_RETURN_NOTIFIER=y
CONFIG_HAVE_PERF_EVENTS_NMI=y
CONFIG_HAVE_ARCH_JUMP_LABEL=y
CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y
CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y
CONFIG_HAVE_CMPXCHG_LOCAL=y
CONFIG_HAVE_CMPXCHG_DOUBLE=y

#
# GCOV-based kernel profiling
#
# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
# CONFIG_MODULE_FORCE_LOAD is not set
CONFIG_MODULE_UNLOAD=y
# CONFIG_MODVERSIONS is not set
# CONFIG_MODULE_SRCVERSION_ALL is not set
CONFIG_STOP_MACHINE=y
CONFIG_BLOCK=y
# CONFIG_BLK_DEV_BSG is not set
# CONFIG_BLK_DEV_BSGLIB is not set
# CONFIG_BLK_DEV_INTEGRITY is not set

#
# Partition Types
#
CONFIG_PARTITION_ADVANCED=y
# CONFIG_ACORN_PARTITION is not set
# CONFIG_OSF_PARTITION is not set
# CONFIG_AMIGA_PARTITION is not set
# CONFIG_ATARI_PARTITION is not set
# CONFIG_MAC_PARTITION is not set
CONFIG_MSDOS_PARTITION=y
# CONFIG_BSD_DISKLABEL is not set
# CONFIG_MINIX_SUBPARTITION is not set
# CONFIG_SOLARIS_X86_PARTITION is not set
# CONFIG_UNIXWARE_DISKLABEL is not set
# CONFIG_LDM_PARTITION is not set
# CONFIG_SGI_PARTITION is not set
# CONFIG_ULTRIX_PARTITION is not set
# CONFIG_SUN_PARTITION is not set
# CONFIG_KARMA_PARTITION is not set
# CONFIG_EFI_PARTITION is not set
# CONFIG_SYSV68_PARTITION is not set

#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
# CONFIG_IOSCHED_DEADLINE is not set
CONFIG_IOSCHED_CFQ=y
# CONFIG_CFQ_GROUP_IOSCHED is not set
CONFIG_DEFAULT_CFQ=y
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="cfq"
CONFIG_PREEMPT_NOTIFIERS=y
# CONFIG_INLINE_SPIN_TRYLOCK is not set
# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
# CONFIG_INLINE_SPIN_LOCK is not set
# CONFIG_INLINE_SPIN_LOCK_BH is not set
# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
# CONFIG_INLINE_READ_TRYLOCK is not set
# CONFIG_INLINE_READ_LOCK is not set
# CONFIG_INLINE_READ_LOCK_BH is not set
# CONFIG_INLINE_READ_LOCK_IRQ is not set
# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
CONFIG_INLINE_READ_UNLOCK=y
# CONFIG_INLINE_READ_UNLOCK_BH is not set
CONFIG_INLINE_READ_UNLOCK_IRQ=y
# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
# CONFIG_INLINE_WRITE_TRYLOCK is not set
# CONFIG_INLINE_WRITE_LOCK is not set
# CONFIG_INLINE_WRITE_LOCK_BH is not set
# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
CONFIG_INLINE_WRITE_UNLOCK=y
# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
CONFIG_MUTEX_SPIN_ON_OWNER=y
CONFIG_FREEZER=y

#
# Processor type and features
#
CONFIG_ZONE_DMA=y
CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ=y
# CONFIG_HIGH_RES_TIMERS is not set
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y
CONFIG_SMP=y
# CONFIG_X86_MPPARSE is not set
# CONFIG_X86_EXTENDED_PLATFORM is not set
CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
CONFIG_SCHED_OMIT_FRAME_POINTER=y
# CONFIG_PARAVIRT_GUEST is not set
CONFIG_NO_BOOTMEM=y
# CONFIG_MEMTEST is not set
# CONFIG_MK8 is not set
# CONFIG_MPSC is not set
CONFIG_MCORE2=y
# CONFIG_MATOM is not set
# CONFIG_GENERIC_CPU is not set
CONFIG_X86_INTERNODE_CACHE_SHIFT=6
CONFIG_X86_CMPXCHG=y
CONFIG_X86_L1_CACHE_SHIFT=6
CONFIG_X86_XADD=y
CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_INTEL_USERCOPY=y
CONFIG_X86_USE_PPRO_CHECKSUM=y
CONFIG_X86_P6_NOP=y
CONFIG_X86_TSC=y
CONFIG_X86_CMPXCHG64=y
CONFIG_X86_CMOV=y
CONFIG_X86_MINIMUM_CPU_FAMILY=64
CONFIG_X86_DEBUGCTLMSR=y
CONFIG_CPU_SUP_INTEL=y
CONFIG_CPU_SUP_AMD=y
CONFIG_CPU_SUP_CENTAUR=y
CONFIG_HPET_TIMER=y
CONFIG_HPET_EMULATE_RTC=y
CONFIG_DMI=y
CONFIG_GART_IOMMU=y
CONFIG_SWIOTLB=y
CONFIG_IOMMU_HELPER=y
CONFIG_NR_CPUS=2
# CONFIG_SCHED_SMT is not set
CONFIG_SCHED_MC=y
# CONFIG_IRQ_TIME_ACCOUNTING is not set
# CONFIG_PREEMPT_NONE is not set
CONFIG_PREEMPT_VOLUNTARY=y
# CONFIG_PREEMPT is not set
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y
# CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS is not set
CONFIG_X86_MCE=y
CONFIG_X86_MCE_INTEL=y
# CONFIG_X86_MCE_AMD is not set
CONFIG_X86_MCE_THRESHOLD=y
# CONFIG_X86_MCE_INJECT is not set
CONFIG_X86_THERMAL_VECTOR=y
# CONFIG_I8K is not set
# CONFIG_MICROCODE is not set
# CONFIG_X86_MSR is not set
# CONFIG_X86_CPUID is not set
CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
CONFIG_ARCH_DMA_ADDR_T_64BIT=y
CONFIG_DIRECT_GBPAGES=y
# CONFIG_NUMA is not set
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SPARSEMEM_DEFAULT=y
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_SPARSEMEM_MANUAL=y
CONFIG_SPARSEMEM=y
CONFIG_HAVE_MEMORY_PRESENT=y
CONFIG_SPARSEMEM_EXTREME=y
CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
CONFIG_SPARSEMEM_ALLOC_MEM_MAP_TOGETHER=y
CONFIG_SPARSEMEM_VMEMMAP=y
CONFIG_HAVE_MEMBLOCK=y
CONFIG_HAVE_MEMBLOCK_NODE_MAP=y
CONFIG_ARCH_DISCARD_MEMBLOCK=y
# CONFIG_MEMORY_HOTPLUG is not set
CONFIG_PAGEFLAGS_EXTENDED=y
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_COMPACTION=y
CONFIG_MIGRATION=y
CONFIG_PHYS_ADDR_T_64BIT=y
CONFIG_ZONE_DMA_FLAG=1
CONFIG_BOUNCE=y
CONFIG_VIRT_TO_BUS=y
CONFIG_MMU_NOTIFIER=y
CONFIG_KSM=y
CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y
# CONFIG_MEMORY_FAILURE is not set
CONFIG_TRANSPARENT_HUGEPAGE=y
CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
CONFIG_CLEANCACHE=y
# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set
CONFIG_X86_RESERVE_LOW=64
CONFIG_MTRR=y
# CONFIG_MTRR_SANITIZER is not set
CONFIG_X86_PAT=y
CONFIG_ARCH_USES_PG_UNCACHED=y
CONFIG_ARCH_RANDOM=y
# CONFIG_EFI is not set
# CONFIG_SECCOMP is not set
# CONFIG_CC_STACKPROTECTOR is not set
# CONFIG_HZ_100 is not set
# CONFIG_HZ_250 is not set
# CONFIG_HZ_300 is not set
CONFIG_HZ_1000=y
CONFIG_HZ=1000
# CONFIG_SCHED_HRTICK is not set
# CONFIG_KEXEC is not set
# CONFIG_CRASH_DUMP is not set
CONFIG_PHYSICAL_START=0x1000000
# CONFIG_RELOCATABLE is not set
CONFIG_PHYSICAL_ALIGN=0x1000000
CONFIG_HOTPLUG_CPU=y
# CONFIG_CMDLINE_BOOL is not set
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y

#
# Power management and ACPI options
#
CONFIG_SUSPEND=y
CONFIG_SUSPEND_FREEZER=y
CONFIG_PM_SLEEP=y
CONFIG_PM_SLEEP_SMP=y
# CONFIG_PM_RUNTIME is not set
CONFIG_PM=y
# CONFIG_PM_DEBUG is not set
CONFIG_ACPI=y
CONFIG_ACPI_SLEEP=y
# CONFIG_ACPI_PROCFS is not set
# CONFIG_ACPI_PROCFS_POWER is not set
# CONFIG_ACPI_EC_DEBUGFS is not set
# CONFIG_ACPI_PROC_EVENT is not set
CONFIG_ACPI_AC=y
CONFIG_ACPI_BATTERY=y
CONFIG_ACPI_BUTTON=y
CONFIG_ACPI_VIDEO=y
CONFIG_ACPI_FAN=y
CONFIG_ACPI_PROCESSOR=y
CONFIG_ACPI_HOTPLUG_CPU=y
CONFIG_ACPI_THERMAL=y
# CONFIG_ACPI_CUSTOM_DSDT is not set
CONFIG_ACPI_BLACKLIST_YEAR=0
# CONFIG_ACPI_DEBUG is not set
# CONFIG_ACPI_PCI_SLOT is not set
CONFIG_X86_PM_TIMER=y
CONFIG_ACPI_CONTAINER=y
# CONFIG_ACPI_SBS is not set
# CONFIG_ACPI_HED is not set
# CONFIG_ACPI_BGRT is not set
# CONFIG_ACPI_APEI is not set
# CONFIG_SFI is not set

#
# CPU Frequency scaling
#
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_TABLE=y
# CONFIG_CPU_FREQ_STAT is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE=y
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y

#
# x86 CPU frequency scaling drivers
#
# CONFIG_X86_PCC_CPUFREQ is not set
CONFIG_X86_ACPI_CPUFREQ=y
# CONFIG_X86_POWERNOW_K8 is not set
# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
# CONFIG_X86_P4_CLOCKMOD is not set

#
# shared options
#
# CONFIG_X86_SPEEDSTEP_LIB is not set
CONFIG_CPU_IDLE=y
CONFIG_CPU_IDLE_GOV_LADDER=y
CONFIG_CPU_IDLE_GOV_MENU=y
# CONFIG_INTEL_IDLE is not set

#
# Memory power savings
#

#
# Bus options (PCI etc.)
#
CONFIG_PCI=y
CONFIG_PCI_DIRECT=y
# CONFIG_PCI_MMCONFIG is not set
CONFIG_PCI_DOMAINS=y
CONFIG_PCIEPORTBUS=y
# CONFIG_PCIEAER is not set
CONFIG_PCIEASPM=y
# CONFIG_PCIEASPM_DEBUG is not set
# CONFIG_PCIEASPM_DEFAULT is not set
CONFIG_PCIEASPM_POWERSAVE=y
# CONFIG_PCIEASPM_PERFORMANCE is not set
CONFIG_ARCH_SUPPORTS_MSI=y
# CONFIG_PCI_MSI is not set
# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
# CONFIG_PCI_STUB is not set
# CONFIG_HT_IRQ is not set
# CONFIG_PCI_IOV is not set
# CONFIG_PCI_PRI is not set
# CONFIG_PCI_PASID is not set
# CONFIG_PCI_IOAPIC is not set
CONFIG_PCI_LABEL=y
CONFIG_ISA_DMA_API=y
CONFIG_AMD_NB=y
# CONFIG_PCCARD is not set
# CONFIG_HOTPLUG_PCI is not set
# CONFIG_RAPIDIO is not set

#
# Executable file formats / Emulations
#
CONFIG_BINFMT_ELF=y
CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
# CONFIG_HAVE_AOUT is not set
# CONFIG_BINFMT_MISC is not set
# CONFIG_IA32_EMULATION is not set
# CONFIG_COMPAT_FOR_U64_ALIGNMENT is not set
CONFIG_HAVE_TEXT_POKE_SMP=y
CONFIG_NET=y

#
# Networking options
#
CONFIG_PACKET=y
CONFIG_UNIX=y
# CONFIG_UNIX_DIAG is not set
# CONFIG_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
# CONFIG_IP_PNP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE_DEMUX is not set
# CONFIG_ARPD is not set
# CONFIG_SYN_COOKIES is not set
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_XFRM_TUNNEL is not set
# CONFIG_INET_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_BEET is not set
CONFIG_INET_LRO=y
# CONFIG_INET_DIAG is not set
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
CONFIG_IPV6=y
# CONFIG_IPV6_PRIVACY is not set
# CONFIG_IPV6_ROUTER_PREF is not set
# CONFIG_INET6_AH is not set
# CONFIG_INET6_ESP is not set
# CONFIG_INET6_IPCOMP is not set
# CONFIG_INET6_XFRM_TUNNEL is not set
# CONFIG_INET6_TUNNEL is not set
# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET6_XFRM_MODE_TUNNEL is not set
# CONFIG_INET6_XFRM_MODE_BEET is not set
# CONFIG_IPV6_SIT is not set
# CONFIG_IPV6_TUNNEL is not set
# CONFIG_NETWORK_SECMARK is not set
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set
CONFIG_NETFILTER_ADVANCED=y
# CONFIG_BRIDGE_NETFILTER is not set

#
# Core Netfilter Configuration
#
# CONFIG_NETFILTER_NETLINK_ACCT is not set
# CONFIG_NETFILTER_NETLINK_QUEUE is not set
# CONFIG_NETFILTER_NETLINK_LOG is not set
CONFIG_NF_CONNTRACK=y
# CONFIG_NF_CONNTRACK_MARK is not set
# CONFIG_NF_CONNTRACK_PROCFS is not set
# CONFIG_NF_CONNTRACK_EVENTS is not set
# CONFIG_NF_CONNTRACK_TIMEOUT is not set
# CONFIG_NF_CONNTRACK_TIMESTAMP is not set
# CONFIG_NF_CT_PROTO_UDPLITE is not set
# CONFIG_NF_CONNTRACK_AMANDA is not set
# CONFIG_NF_CONNTRACK_FTP is not set
# CONFIG_NF_CONNTRACK_H323 is not set
# CONFIG_NF_CONNTRACK_IRC is not set
# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
# CONFIG_NF_CONNTRACK_SNMP is not set
# CONFIG_NF_CONNTRACK_PPTP is not set
# CONFIG_NF_CONNTRACK_SIP is not set
# CONFIG_NF_CONNTRACK_TFTP is not set
# CONFIG_NF_CT_NETLINK is not set
# CONFIG_NF_CT_NETLINK_TIMEOUT is not set
CONFIG_NETFILTER_XTABLES=y

#
# Xtables combined modules
#
# CONFIG_NETFILTER_XT_MARK is not set
# CONFIG_NETFILTER_XT_CONNMARK is not set

#
# Xtables targets
#
CONFIG_NETFILTER_XT_TARGET_CHECKSUM=y
# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
# CONFIG_NETFILTER_XT_TARGET_HL is not set
# CONFIG_NETFILTER_XT_TARGET_IDLETIMER is not set
# CONFIG_NETFILTER_XT_TARGET_LOG is not set
# CONFIG_NETFILTER_XT_TARGET_MARK is not set
# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set
# CONFIG_NETFILTER_XT_TARGET_TEE is not set
# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set

#
# Xtables matches
#
# CONFIG_NETFILTER_XT_MATCH_ADDRTYPE is not set
# CONFIG_NETFILTER_XT_MATCH_CLUSTER is not set
# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set
# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set
# CONFIG_NETFILTER_XT_MATCH_CONNMARK is not set
# CONFIG_NETFILTER_XT_MATCH_CONNTRACK is not set
# CONFIG_NETFILTER_XT_MATCH_CPU is not set
# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
# CONFIG_NETFILTER_XT_MATCH_DEVGROUP is not set
# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
# CONFIG_NETFILTER_XT_MATCH_ECN is not set
# CONFIG_NETFILTER_XT_MATCH_ESP is not set
# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
# CONFIG_NETFILTER_XT_MATCH_HELPER is not set
# CONFIG_NETFILTER_XT_MATCH_HL is not set
# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set
# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
# CONFIG_NETFILTER_XT_MATCH_MAC is not set
# CONFIG_NETFILTER_XT_MATCH_MARK is not set
# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
# CONFIG_NETFILTER_XT_MATCH_NFACCT is not set
# CONFIG_NETFILTER_XT_MATCH_OWNER is not set
# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set
# CONFIG_NETFILTER_XT_MATCH_REALM is not set
# CONFIG_NETFILTER_XT_MATCH_RECENT is not set
CONFIG_NETFILTER_XT_MATCH_STATE=y
# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
# CONFIG_NETFILTER_XT_MATCH_STRING is not set
# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
# CONFIG_NETFILTER_XT_MATCH_TIME is not set
# CONFIG_NETFILTER_XT_MATCH_U32 is not set
# CONFIG_IP_VS is not set

#
# IP: Netfilter Configuration
#
CONFIG_NF_DEFRAG_IPV4=y
CONFIG_NF_CONNTRACK_IPV4=y
# CONFIG_IP_NF_QUEUE is not set
CONFIG_IP_NF_IPTABLES=y
# CONFIG_IP_NF_MATCH_AH is not set
# CONFIG_IP_NF_MATCH_ECN is not set
# CONFIG_IP_NF_MATCH_RPFILTER is not set
# CONFIG_IP_NF_MATCH_TTL is not set
CONFIG_IP_NF_FILTER=y
CONFIG_IP_NF_TARGET_REJECT=y
# CONFIG_IP_NF_TARGET_ULOG is not set
CONFIG_NF_NAT=y
CONFIG_NF_NAT_NEEDED=y
CONFIG_IP_NF_TARGET_MASQUERADE=y
# CONFIG_IP_NF_TARGET_NETMAP is not set
# CONFIG_IP_NF_TARGET_REDIRECT is not set
# CONFIG_NF_NAT_FTP is not set
# CONFIG_NF_NAT_IRC is not set
# CONFIG_NF_NAT_TFTP is not set
# CONFIG_NF_NAT_AMANDA is not set
# CONFIG_NF_NAT_PPTP is not set
# CONFIG_NF_NAT_H323 is not set
# CONFIG_NF_NAT_SIP is not set
CONFIG_IP_NF_MANGLE=y
# CONFIG_IP_NF_TARGET_ECN is not set
# CONFIG_IP_NF_TARGET_TTL is not set
# CONFIG_IP_NF_RAW is not set
# CONFIG_IP_NF_ARPTABLES is not set

#
# IPv6: Netfilter Configuration
#
CONFIG_NF_DEFRAG_IPV6=y
CONFIG_NF_CONNTRACK_IPV6=y
# CONFIG_IP6_NF_QUEUE is not set
CONFIG_IP6_NF_IPTABLES=y
# CONFIG_IP6_NF_MATCH_AH is not set
# CONFIG_IP6_NF_MATCH_EUI64 is not set
# CONFIG_IP6_NF_MATCH_FRAG is not set
# CONFIG_IP6_NF_MATCH_OPTS is not set
# CONFIG_IP6_NF_MATCH_HL is not set
# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set
# CONFIG_IP6_NF_MATCH_MH is not set
# CONFIG_IP6_NF_MATCH_RPFILTER is not set
# CONFIG_IP6_NF_MATCH_RT is not set
# CONFIG_IP6_NF_TARGET_HL is not set
CONFIG_IP6_NF_FILTER=y
CONFIG_IP6_NF_TARGET_REJECT=y
CONFIG_IP6_NF_MANGLE=y
# CONFIG_IP6_NF_RAW is not set
CONFIG_BRIDGE_NF_EBTABLES=y
# CONFIG_BRIDGE_EBT_BROUTE is not set
# CONFIG_BRIDGE_EBT_T_FILTER is not set
CONFIG_BRIDGE_EBT_T_NAT=y
# CONFIG_BRIDGE_EBT_802_3 is not set
# CONFIG_BRIDGE_EBT_AMONG is not set
# CONFIG_BRIDGE_EBT_ARP is not set
# CONFIG_BRIDGE_EBT_IP is not set
# CONFIG_BRIDGE_EBT_IP6 is not set
# CONFIG_BRIDGE_EBT_LIMIT is not set
# CONFIG_BRIDGE_EBT_MARK is not set
# CONFIG_BRIDGE_EBT_PKTTYPE is not set
# CONFIG_BRIDGE_EBT_STP is not set
# CONFIG_BRIDGE_EBT_VLAN is not set
# CONFIG_BRIDGE_EBT_ARPREPLY is not set
# CONFIG_BRIDGE_EBT_DNAT is not set
# CONFIG_BRIDGE_EBT_MARK_T is not set
# CONFIG_BRIDGE_EBT_REDIRECT is not set
# CONFIG_BRIDGE_EBT_SNAT is not set
# CONFIG_BRIDGE_EBT_LOG is not set
# CONFIG_BRIDGE_EBT_ULOG is not set
# CONFIG_BRIDGE_EBT_NFLOG is not set
# CONFIG_ATM is not set
# CONFIG_L2TP is not set
CONFIG_STP=y
CONFIG_BRIDGE=y
# CONFIG_BRIDGE_IGMP_SNOOPING is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
CONFIG_LLC=y
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_PHONET is not set
# CONFIG_NET_SCHED is not set
# CONFIG_DCB is not set
# CONFIG_BATMAN_ADV is not set
# CONFIG_OPENVSWITCH is not set
CONFIG_RPS=y
CONFIG_RFS_ACCEL=y
CONFIG_XPS=y
# CONFIG_NETPRIO_CGROUP is not set
CONFIG_BQL=y
CONFIG_HAVE_BPF_JIT=y
# CONFIG_BPF_JIT is not set

#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
# CONFIG_CAN is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
CONFIG_WIRELESS=y
CONFIG_WIRELESS_EXT=y
CONFIG_WEXT_CORE=y
CONFIG_WEXT_PROC=y
CONFIG_WEXT_SPY=y
CONFIG_WEXT_PRIV=y
CONFIG_CFG80211=y
# CONFIG_NL80211_TESTMODE is not set
# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
# CONFIG_CFG80211_REG_DEBUG is not set
# CONFIG_CFG80211_DEFAULT_PS is not set
# CONFIG_CFG80211_INTERNAL_REGDB is not set
# CONFIG_CFG80211_WEXT is not set
# CONFIG_WIRELESS_EXT_SYSFS is not set
CONFIG_LIB80211=y
CONFIG_LIB80211_CRYPT_WEP=y
CONFIG_LIB80211_CRYPT_CCMP=y
CONFIG_LIB80211_CRYPT_TKIP=y
# CONFIG_LIB80211_DEBUG is not set
CONFIG_MAC80211=y
CONFIG_MAC80211_HAS_RC=y
CONFIG_MAC80211_RC_MINSTREL=y
CONFIG_MAC80211_RC_MINSTREL_HT=y
CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
# CONFIG_MAC80211_DEBUG_MENU is not set
# CONFIG_WIMAX is not set
# CONFIG_RFKILL is not set
# CONFIG_NET_9P is not set
# CONFIG_CAIF is not set

#
# Device Drivers
#

#
# Generic Driver Options
#
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
CONFIG_STANDALONE=y
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
CONFIG_FW_LOADER=y
# CONFIG_FIRMWARE_IN_KERNEL is not set
CONFIG_EXTRA_FIRMWARE=""
# CONFIG_SYS_HYPERVISOR is not set
# CONFIG_GENERIC_CPU_DEVICES is not set
CONFIG_DMA_SHARED_BUFFER=y
# CONFIG_CONNECTOR is not set
# CONFIG_MTD is not set
# CONFIG_PARPORT is not set
CONFIG_PNP=y
# CONFIG_PNP_DEBUG_MESSAGES is not set

#
# Protocols
#
CONFIG_PNPACPI=y
CONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_FD is not set
# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_LOOP_MIN_COUNT=0
# CONFIG_BLK_DEV_CRYPTOLOOP is not set

#
# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
#
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_NVME is not set
# CONFIG_BLK_DEV_SX8 is not set
# CONFIG_BLK_DEV_UB is not set
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
# CONFIG_BLK_DEV_HD is not set

#
# Misc devices
#
# CONFIG_SENSORS_LIS3LV02D is not set
# CONFIG_AD525X_DPOT is not set
# CONFIG_PHANTOM is not set
# CONFIG_INTEL_MID_PTI is not set
# CONFIG_SGI_IOC4 is not set
# CONFIG_ENCLOSURE_SERVICES is not set
# CONFIG_HP_ILO is not set
# CONFIG_APDS9802ALS is not set
# CONFIG_ISL29003 is not set
# CONFIG_ISL29020 is not set
# CONFIG_SENSORS_TSL2550 is not set
# CONFIG_SENSORS_BH1780 is not set
# CONFIG_SENSORS_BH1770 is not set
# CONFIG_SENSORS_APDS990X is not set
# CONFIG_HMC6352 is not set
# CONFIG_VMWARE_BALLOON is not set
# CONFIG_BMP085 is not set
# CONFIG_PCH_PHUB is not set
# CONFIG_USB_SWITCH_FSA9480 is not set

#
# EEPROM support
#
# CONFIG_EEPROM_AT24 is not set
# CONFIG_EEPROM_LEGACY is not set
# CONFIG_EEPROM_93CX6 is not set
# CONFIG_CB710_CORE is not set

#
# Texas Instruments shared transport line discipline
#
# CONFIG_SENSORS_LIS3_I2C is not set

#
# Altera FPGA firmware download module
#
# CONFIG_ALTERA_STAPL is not set
CONFIG_HAVE_IDE=y
# CONFIG_IDE is not set

#
# SCSI device support
#
CONFIG_SCSI_MOD=y
# CONFIG_RAID_ATTRS is not set
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
# CONFIG_SCSI_NETLINK is not set
# CONFIG_SCSI_PROC_FS is not set

#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=y
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
# CONFIG_BLK_DEV_SR is not set
# CONFIG_CHR_DEV_SG is not set
# CONFIG_CHR_DEV_SCH is not set
# CONFIG_SCSI_MULTI_LUN is not set
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set
# CONFIG_SCSI_SCAN_ASYNC is not set
CONFIG_SCSI_WAIT_SCAN=m

#
# SCSI Transports
#
# CONFIG_SCSI_SPI_ATTRS is not set
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_ISCSI_ATTRS is not set
# CONFIG_SCSI_SAS_ATTRS is not set
# CONFIG_SCSI_SAS_LIBSAS is not set
# CONFIG_SCSI_SRP_ATTRS is not set
# CONFIG_SCSI_LOWLEVEL is not set
# CONFIG_SCSI_DH is not set
# CONFIG_SCSI_OSD_INITIATOR is not set
CONFIG_ATA=y
# CONFIG_ATA_NONSTANDARD is not set
# CONFIG_ATA_VERBOSE_ERROR is not set
# CONFIG_ATA_ACPI is not set
# CONFIG_SATA_PMP is not set

#
# Controllers with non-SFF native interface
#
CONFIG_SATA_AHCI=y
# CONFIG_SATA_AHCI_PLATFORM is not set
# CONFIG_SATA_INIC162X is not set
# CONFIG_SATA_ACARD_AHCI is not set
# CONFIG_SATA_SIL24 is not set
# CONFIG_ATA_SFF is not set
# CONFIG_MD is not set
# CONFIG_TARGET_CORE is not set
# CONFIG_FUSION is not set

#
# IEEE 1394 (FireWire) support
#
# CONFIG_FIREWIRE is not set
# CONFIG_FIREWIRE_NOSY is not set
# CONFIG_I2O is not set
# CONFIG_MACINTOSH_DRIVERS is not set
CONFIG_NETDEVICES=y
CONFIG_NET_CORE=y
# CONFIG_BONDING is not set
# CONFIG_DUMMY is not set
# CONFIG_EQUALIZER is not set
# CONFIG_NET_FC is not set
CONFIG_MII=y
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
CONFIG_TUN=y
CONFIG_VETH=y
# CONFIG_ARCNET is not set

#
# CAIF transport drivers
#
CONFIG_ETHERNET=y
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_NET_VENDOR_ADAPTEC is not set
# CONFIG_NET_VENDOR_ALTEON is not set
# CONFIG_NET_VENDOR_AMD is not set
# CONFIG_NET_VENDOR_ATHEROS is not set
# CONFIG_NET_VENDOR_BROADCOM is not set
# CONFIG_NET_VENDOR_BROCADE is not set
# CONFIG_NET_CALXEDA_XGMAC is not set
# CONFIG_NET_VENDOR_CHELSIO is not set
# CONFIG_NET_VENDOR_CISCO is not set
# CONFIG_DNET is not set
# CONFIG_NET_VENDOR_DEC is not set
# CONFIG_NET_VENDOR_DLINK is not set
# CONFIG_NET_VENDOR_EMULEX is not set
# CONFIG_NET_VENDOR_EXAR is not set
# CONFIG_NET_VENDOR_HP is not set
# CONFIG_NET_VENDOR_INTEL is not set
# CONFIG_JME is not set
# CONFIG_NET_VENDOR_MARVELL is not set
# CONFIG_NET_VENDOR_MELLANOX is not set
# CONFIG_NET_VENDOR_MICREL is not set
# CONFIG_NET_VENDOR_MYRI is not set
# CONFIG_FEALNX is not set
# CONFIG_NET_VENDOR_NATSEMI is not set
# CONFIG_NET_VENDOR_NVIDIA is not set
# CONFIG_NET_VENDOR_OKI is not set
# CONFIG_ETHOC is not set
# CONFIG_NET_PACKET_ENGINE is not set
# CONFIG_NET_VENDOR_QLOGIC is not set
CONFIG_NET_VENDOR_REALTEK=y
# CONFIG_8139TOO is not set
CONFIG_R8169=y
# CONFIG_NET_VENDOR_RDC is not set
# CONFIG_NET_VENDOR_SIS is not set
# CONFIG_SFC is not set
# CONFIG_NET_VENDOR_SMSC is not set
# CONFIG_NET_VENDOR_STMICRO is not set
# CONFIG_NET_VENDOR_SUN is not set
# CONFIG_NET_VENDOR_TEHUTI is not set
# CONFIG_NET_VENDOR_TI is not set
# CONFIG_NET_VENDOR_VIA is not set
# CONFIG_FDDI is not set
# CONFIG_NET_SB1000 is not set
# CONFIG_PHYLIB is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_TR is not set

#
# USB Network Adapters
#
# CONFIG_USB_KAWETH is not set
# CONFIG_USB_PEGASUS is not set
# CONFIG_USB_USBNET is not set
# CONFIG_USB_IPHETH is not set
CONFIG_WLAN=y
# CONFIG_LIBERTAS_THINFIRM is not set
# CONFIG_AIRO is not set
# CONFIG_ATMEL is not set
# CONFIG_AT76C50X_USB is not set
# CONFIG_USB_ZD1201 is not set
# CONFIG_RTL8187 is not set
# CONFIG_MAC80211_HWSIM is not set
# CONFIG_ATH_COMMON is not set
CONFIG_B43=y
CONFIG_B43_SSB=y
CONFIG_B43_PCI_AUTOSELECT=y
CONFIG_B43_PCICORE_AUTOSELECT=y
CONFIG_B43_PIO=y
CONFIG_B43_PHY_LP=y
# CONFIG_B43_DEBUG is not set
# CONFIG_B43LEGACY is not set
# CONFIG_BRCMFMAC is not set
CONFIG_HOSTAP=y
# CONFIG_HOSTAP_FIRMWARE is not set
# CONFIG_HOSTAP_PLX is not set
# CONFIG_HOSTAP_PCI is not set
# CONFIG_IPW2100 is not set
# CONFIG_IWLWIFI is not set
# CONFIG_IWL4965 is not set
# CONFIG_IWL3945 is not set
# CONFIG_LIBERTAS is not set
# CONFIG_RT2X00 is not set
# CONFIG_MWIFIEX is not set

#
# Enable WiMAX (Networking options) to see the WiMAX drivers
#
# CONFIG_WAN is not set
# CONFIG_VMXNET3 is not set
# CONFIG_ISDN is not set

#
# Input device support
#
CONFIG_INPUT=y
# CONFIG_INPUT_FF_MEMLESS is not set
# CONFIG_INPUT_POLLDEV is not set
# CONFIG_INPUT_SPARSEKMAP is not set

#
# Userland interfaces
#
CONFIG_INPUT_MOUSEDEV=y
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
# CONFIG_INPUT_JOYDEV is not set
CONFIG_INPUT_EVDEV=y
# CONFIG_INPUT_EVBUG is not set

#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
# CONFIG_KEYBOARD_ADP5588 is not set
# CONFIG_KEYBOARD_ADP5589 is not set
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_QT1070 is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_TCA6416 is not set
# CONFIG_KEYBOARD_TCA8418 is not set
# CONFIG_KEYBOARD_MAX7359 is not set
# CONFIG_KEYBOARD_MCS is not set
# CONFIG_KEYBOARD_MPR121 is not set
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_OPENCORES is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_OMAP4 is not set
# CONFIG_KEYBOARD_XTKBD is not set
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
CONFIG_MOUSE_PS2_ALPS=y
CONFIG_MOUSE_PS2_LOGIPS2PP=y
CONFIG_MOUSE_PS2_SYNAPTICS=y
CONFIG_MOUSE_PS2_LIFEBOOK=y
CONFIG_MOUSE_PS2_TRACKPOINT=y
# CONFIG_MOUSE_PS2_ELANTECH is not set
# CONFIG_MOUSE_PS2_SENTELIC is not set
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_APPLETOUCH is not set
# CONFIG_MOUSE_BCM5974 is not set
# CONFIG_MOUSE_VSXXXAA is not set
# CONFIG_MOUSE_SYNAPTICS_I2C is not set
# CONFIG_MOUSE_SYNAPTICS_USB is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_INPUT_MISC is not set

#
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_I8042=y
# CONFIG_SERIO_SERPORT is not set
# CONFIG_SERIO_CT82C710 is not set
# CONFIG_SERIO_PCIPS2 is not set
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_RAW is not set
# CONFIG_SERIO_ALTERA_PS2 is not set
# CONFIG_SERIO_PS2MULT is not set
# CONFIG_GAMEPORT is not set

#
# Character devices
#
CONFIG_VT=y
CONFIG_CONSOLE_TRANSLATIONS=y
CONFIG_VT_CONSOLE=y
CONFIG_VT_CONSOLE_SLEEP=y
CONFIG_HW_CONSOLE=y
# CONFIG_VT_HW_CONSOLE_BINDING is not set
CONFIG_UNIX98_PTYS=y
CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
# CONFIG_LEGACY_PTYS is not set
# CONFIG_SERIAL_NONSTANDARD is not set
# CONFIG_TRACE_SINK is not set
# CONFIG_DEVKMEM is not set

#
# Serial drivers
#
# CONFIG_SERIAL_8250 is not set
CONFIG_FIX_EARLYCON_MEM=y

#
# Non-8250 serial port support
#
# CONFIG_SERIAL_MFD_HSU is not set
# CONFIG_SERIAL_JSM is not set
# CONFIG_SERIAL_TIMBERDALE is not set
# CONFIG_SERIAL_ALTERA_JTAGUART is not set
# CONFIG_SERIAL_ALTERA_UART is not set
# CONFIG_SERIAL_PCH_UART is not set
# CONFIG_SERIAL_XILINX_PS_UART is not set
# CONFIG_IPMI_HANDLER is not set
# CONFIG_HW_RANDOM is not set
# CONFIG_NVRAM is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
# CONFIG_MWAVE is not set
# CONFIG_RAW_DRIVER is not set
# CONFIG_HPET is not set
# CONFIG_HANGCHECK_TIMER is not set
# CONFIG_TCG_TPM is not set
CONFIG_DEVPORT=y
# CONFIG_RAMOOPS is not set
CONFIG_I2C=y
CONFIG_I2C_BOARDINFO=y
# CONFIG_I2C_COMPAT is not set
# CONFIG_I2C_CHARDEV is not set
CONFIG_I2C_HELPER_AUTO=y
CONFIG_I2C_ALGOBIT=y

#
# I2C Hardware Bus support
#

#
# PC SMBus host controller drivers
#
# CONFIG_I2C_ALI1535 is not set
# CONFIG_I2C_ALI15X3 is not set
# CONFIG_I2C_AMD756 is not set
# CONFIG_I2C_AMD8111 is not set
CONFIG_I2C_I801=y
# CONFIG_I2C_ISCH is not set
# CONFIG_I2C_PIIX4 is not set
# CONFIG_I2C_NFORCE2 is not set
# CONFIG_I2C_SIS5595 is not set
# CONFIG_I2C_SIS630 is not set
# CONFIG_I2C_SIS96X is not set
# CONFIG_I2C_VIAPRO is not set

#
# ACPI drivers
#
# CONFIG_I2C_SCMI is not set

#
# I2C system bus drivers (mostly embedded / system-on-chip)
#
# CONFIG_I2C_DESIGNWARE_PCI is not set
# CONFIG_I2C_EG20T is not set
# CONFIG_I2C_INTEL_MID is not set
# CONFIG_I2C_PCA_PLATFORM is not set
# CONFIG_I2C_PXA_PCI is not set
# CONFIG_I2C_SIMTEC is not set

#
# External I2C/SMBus adapter drivers
#
# CONFIG_I2C_DIOLAN_U2C is not set
# CONFIG_I2C_PARPORT_LIGHT is not set
# CONFIG_I2C_TINY_USB is not set

#
# Other I2C/SMBus bus drivers
#
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_SPI is not set
# CONFIG_HSI is not set

#
# PPS support
#

#
# PPS generators support
#

#
# PTP clock support
#

#
# Enable Device Drivers -> PPS to see the PTP clock options.
#
CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
# CONFIG_GPIOLIB is not set
# CONFIG_W1 is not set
CONFIG_POWER_SUPPLY=y
# CONFIG_POWER_SUPPLY_DEBUG is not set
# CONFIG_PDA_POWER is not set
# CONFIG_TEST_POWER is not set
# CONFIG_BATTERY_DS2780 is not set
# CONFIG_BATTERY_DS2781 is not set
# CONFIG_BATTERY_DS2782 is not set
# CONFIG_BATTERY_SBS is not set
# CONFIG_BATTERY_BQ27x00 is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
# CONFIG_CHARGER_MAX8903 is not set
# CONFIG_CHARGER_LP8727 is not set
# CONFIG_CHARGER_SMB347 is not set
# CONFIG_HWMON is not set
CONFIG_THERMAL=y
# CONFIG_WATCHDOG is not set
CONFIG_SSB_POSSIBLE=y

#
# Sonics Silicon Backplane
#
CONFIG_SSB=y
CONFIG_SSB_SPROM=y
CONFIG_SSB_BLOCKIO=y
CONFIG_SSB_PCIHOST_POSSIBLE=y
CONFIG_SSB_PCIHOST=y
CONFIG_SSB_B43_PCI_BRIDGE=y
# CONFIG_SSB_DEBUG is not set
CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
CONFIG_SSB_DRIVER_PCICORE=y
CONFIG_BCMA_POSSIBLE=y

#
# Broadcom specific AMBA
#
# CONFIG_BCMA is not set

#
# Multifunction device drivers
#
# CONFIG_MFD_CORE is not set
# CONFIG_MFD_88PM860X is not set
# CONFIG_MFD_SM501 is not set
# CONFIG_HTC_PASIC3 is not set
# CONFIG_TPS6105X is not set
# CONFIG_TPS6507X is not set
# CONFIG_MFD_TPS65217 is not set
# CONFIG_TWL4030_CORE is not set
# CONFIG_TWL6040_CORE is not set
# CONFIG_MFD_STMPE is not set
# CONFIG_MFD_TC3589X is not set
# CONFIG_MFD_TMIO is not set
# CONFIG_PMIC_DA903X is not set
# CONFIG_MFD_DA9052_I2C is not set
# CONFIG_PMIC_ADP5520 is not set
# CONFIG_MFD_MAX8925 is not set
# CONFIG_MFD_MAX8997 is not set
# CONFIG_MFD_MAX8998 is not set
# CONFIG_MFD_S5M_CORE is not set
# CONFIG_MFD_WM8400 is not set
# CONFIG_MFD_WM831X_I2C is not set
# CONFIG_MFD_WM8350_I2C is not set
# CONFIG_MFD_WM8994 is not set
# CONFIG_MFD_PCF50633 is not set
# CONFIG_ABX500_CORE is not set
# CONFIG_MFD_CS5535 is not set
# CONFIG_LPC_SCH is not set
# CONFIG_MFD_RDC321X is not set
# CONFIG_MFD_JANZ_CMODIO is not set
# CONFIG_MFD_VX855 is not set
# CONFIG_MFD_WL1273_CORE is not set
# CONFIG_MFD_TPS65090 is not set
# CONFIG_MFD_RC5T583 is not set
# CONFIG_REGULATOR is not set
CONFIG_MEDIA_SUPPORT=y

#
# Multimedia core support
#
CONFIG_VIDEO_DEV=y
CONFIG_VIDEO_V4L2_COMMON=y
# CONFIG_DVB_CORE is not set
CONFIG_VIDEO_MEDIA=y

#
# Multimedia drivers
#
# CONFIG_RC_CORE is not set
# CONFIG_MEDIA_ATTACH is not set
CONFIG_MEDIA_TUNER=y
# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
CONFIG_MEDIA_TUNER_SIMPLE=y
CONFIG_MEDIA_TUNER_TDA8290=y
CONFIG_MEDIA_TUNER_TDA827X=y
CONFIG_MEDIA_TUNER_TDA18271=y
CONFIG_MEDIA_TUNER_TDA9887=y
CONFIG_MEDIA_TUNER_TEA5767=y
CONFIG_MEDIA_TUNER_MT20XX=y
CONFIG_MEDIA_TUNER_XC2028=y
CONFIG_MEDIA_TUNER_XC5000=y
CONFIG_MEDIA_TUNER_XC4000=y
CONFIG_MEDIA_TUNER_MC44S803=y
CONFIG_VIDEO_V4L2=y
CONFIG_VIDEOBUF2_CORE=y
CONFIG_VIDEOBUF2_MEMOPS=y
CONFIG_VIDEOBUF2_VMALLOC=y
CONFIG_VIDEO_CAPTURE_DRIVERS=y
# CONFIG_VIDEO_ADV_DEBUG is not set
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
CONFIG_VIDEO_HELPER_CHIPS_AUTO=y

#
# Audio decoders, processors and mixers
#

#
# RDS decoders
#

#
# Video decoders
#

#
# Video and audio decoders
#

#
# MPEG video encoders
#

#
# Video encoders
#

#
# Camera sensor devices
#

#
# Flash devices
#

#
# Video improvement chips
#

#
# Miscelaneous helper chips
#
# CONFIG_VIDEO_VIVI is not set
CONFIG_V4L_USB_DRIVERS=y
CONFIG_USB_VIDEO_CLASS=y
CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
# CONFIG_USB_GSPCA is not set
# CONFIG_VIDEO_PVRUSB2 is not set
# CONFIG_VIDEO_HDPVR is not set
# CONFIG_VIDEO_EM28XX is not set
# CONFIG_VIDEO_USBVISION is not set
# CONFIG_USB_ET61X251 is not set
# CONFIG_USB_SN9C102 is not set
# CONFIG_USB_PWC is not set
# CONFIG_VIDEO_CPIA2 is not set
# CONFIG_USB_ZR364XX is not set
# CONFIG_USB_S2255 is not set
# CONFIG_V4L_PCI_DRIVERS is not set
# CONFIG_V4L_PLATFORM_DRIVERS is not set
# CONFIG_V4L_MEM2MEM_DRIVERS is not set
# CONFIG_RADIO_ADAPTERS is not set

#
# Graphics support
#
CONFIG_AGP=y
# CONFIG_AGP_AMD64 is not set
CONFIG_AGP_INTEL=y
# CONFIG_AGP_SIS is not set
# CONFIG_AGP_VIA is not set
CONFIG_VGA_ARB=y
CONFIG_VGA_ARB_MAX_GPUS=1
# CONFIG_VGA_SWITCHEROO is not set
CONFIG_DRM=y
CONFIG_DRM_KMS_HELPER=y
# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
# CONFIG_DRM_TDFX is not set
# CONFIG_DRM_R128 is not set
# CONFIG_DRM_RADEON is not set
# CONFIG_DRM_NOUVEAU is not set

#
# I2C encoder or helper chips
#
# CONFIG_DRM_I2C_CH7006 is not set
# CONFIG_DRM_I2C_SIL164 is not set
# CONFIG_DRM_I810 is not set
CONFIG_DRM_I915=y
CONFIG_DRM_I915_KMS=y
# CONFIG_DRM_MGA is not set
# CONFIG_DRM_SIS is not set
# CONFIG_DRM_VIA is not set
# CONFIG_DRM_SAVAGE is not set
# CONFIG_DRM_VMWGFX is not set
# CONFIG_STUB_POULSBO is not set
# CONFIG_VGASTATE is not set
CONFIG_VIDEO_OUTPUT_CONTROL=y
CONFIG_FB=y
# CONFIG_FIRMWARE_EDID is not set
# CONFIG_FB_DDC is not set
# CONFIG_FB_BOOT_VESA_SUPPORT is not set
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
# CONFIG_FB_SYS_FILLRECT is not set
# CONFIG_FB_SYS_COPYAREA is not set
# CONFIG_FB_SYS_IMAGEBLIT is not set
# CONFIG_FB_FOREIGN_ENDIAN is not set
# CONFIG_FB_SYS_FOPS is not set
# CONFIG_FB_WMT_GE_ROPS is not set
# CONFIG_FB_SVGALIB is not set
# CONFIG_FB_MACMODES is not set
# CONFIG_FB_BACKLIGHT is not set
# CONFIG_FB_MODE_HELPERS is not set
# CONFIG_FB_TILEBLITTING is not set

#
# Frame buffer hardware drivers
#
# CONFIG_FB_CIRRUS is not set
# CONFIG_FB_PM2 is not set
# CONFIG_FB_CYBER2000 is not set
# CONFIG_FB_ARC is not set
# CONFIG_FB_ASILIANT is not set
# CONFIG_FB_IMSTT is not set
# CONFIG_FB_VGA16 is not set
# CONFIG_FB_VESA is not set
# CONFIG_FB_N411 is not set
# CONFIG_FB_HGA is not set
# CONFIG_FB_S1D13XXX is not set
# CONFIG_FB_NVIDIA is not set
# CONFIG_FB_RIVA is not set
# CONFIG_FB_LE80578 is not set
# CONFIG_FB_MATROX is not set
# CONFIG_FB_RADEON is not set
# CONFIG_FB_ATY128 is not set
# CONFIG_FB_ATY is not set
# CONFIG_FB_S3 is not set
# CONFIG_FB_SIS is not set
# CONFIG_FB_VIA is not set
# CONFIG_FB_NEOMAGIC is not set
# CONFIG_FB_KYRO is not set
# CONFIG_FB_3DFX is not set
# CONFIG_FB_VOODOO1 is not set
# CONFIG_FB_VT8623 is not set
# CONFIG_FB_TRIDENT is not set
# CONFIG_FB_ARK is not set
# CONFIG_FB_CARMINE is not set
# CONFIG_FB_SMSCUFX is not set
# CONFIG_FB_UDL is not set
# CONFIG_FB_VIRTUAL is not set
# CONFIG_FB_METRONOME is not set
# CONFIG_FB_MB862XX is not set
# CONFIG_FB_BROADSHEET is not set
# CONFIG_EXYNOS_VIDEO is not set
CONFIG_BACKLIGHT_LCD_SUPPORT=y
# CONFIG_LCD_CLASS_DEVICE is not set
CONFIG_BACKLIGHT_CLASS_DEVICE=y
# CONFIG_BACKLIGHT_GENERIC is not set
# CONFIG_BACKLIGHT_PROGEAR is not set
# CONFIG_BACKLIGHT_APPLE is not set
# CONFIG_BACKLIGHT_SAHARA is not set
# CONFIG_BACKLIGHT_ADP8860 is not set
# CONFIG_BACKLIGHT_ADP8870 is not set
# CONFIG_BACKLIGHT_LP855X is not set

#
# Console display driver support
#
CONFIG_VGA_CONSOLE=y
# CONFIG_VGACON_SOFT_SCROLLBACK is not set
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
# CONFIG_FONTS is not set
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
CONFIG_LOGO=y
# CONFIG_LOGO_LINUX_MONO is not set
# CONFIG_LOGO_LINUX_VGA16 is not set
CONFIG_LOGO_LINUX_CLUT224=y
CONFIG_SOUND=y
# CONFIG_SOUND_OSS_CORE is not set
CONFIG_SND=y
CONFIG_SND_TIMER=y
CONFIG_SND_PCM=y
# CONFIG_SND_SEQUENCER is not set
# CONFIG_SND_MIXER_OSS is not set
# CONFIG_SND_PCM_OSS is not set
# CONFIG_SND_DYNAMIC_MINORS is not set
# CONFIG_SND_SUPPORT_OLD_API is not set
# CONFIG_SND_VERBOSE_PROCFS is not set
# CONFIG_SND_VERBOSE_PRINTK is not set
# CONFIG_SND_DEBUG is not set
CONFIG_SND_VMASTER=y
CONFIG_SND_KCTL_JACK=y
CONFIG_SND_DMA_SGBUF=y
# CONFIG_SND_RAWMIDI_SEQ is not set
# CONFIG_SND_OPL3_LIB_SEQ is not set
# CONFIG_SND_OPL4_LIB_SEQ is not set
# CONFIG_SND_SBAWE_SEQ is not set
# CONFIG_SND_EMU10K1_SEQ is not set
# CONFIG_SND_DRIVERS is not set
CONFIG_SND_PCI=y
# CONFIG_SND_AD1889 is not set
# CONFIG_SND_ALS300 is not set
# CONFIG_SND_ALS4000 is not set
# CONFIG_SND_ALI5451 is not set
# CONFIG_SND_ASIHPI is not set
# CONFIG_SND_ATIIXP is not set
# CONFIG_SND_ATIIXP_MODEM is not set
# CONFIG_SND_AU8810 is not set
# CONFIG_SND_AU8820 is not set
# CONFIG_SND_AU8830 is not set
# CONFIG_SND_AW2 is not set
# CONFIG_SND_AZT3328 is not set
# CONFIG_SND_BT87X is not set
# CONFIG_SND_CA0106 is not set
# CONFIG_SND_CMIPCI is not set
# CONFIG_SND_OXYGEN is not set
# CONFIG_SND_CS4281 is not set
# CONFIG_SND_CS46XX is not set
# CONFIG_SND_CS5530 is not set
# CONFIG_SND_CS5535AUDIO is not set
# CONFIG_SND_CTXFI is not set
# CONFIG_SND_DARLA20 is not set
# CONFIG_SND_GINA20 is not set
# CONFIG_SND_LAYLA20 is not set
# CONFIG_SND_DARLA24 is not set
# CONFIG_SND_GINA24 is not set
# CONFIG_SND_LAYLA24 is not set
# CONFIG_SND_MONA is not set
# CONFIG_SND_MIA is not set
# CONFIG_SND_ECHO3G is not set
# CONFIG_SND_INDIGO is not set
# CONFIG_SND_INDIGOIO is not set
# CONFIG_SND_INDIGODJ is not set
# CONFIG_SND_INDIGOIOX is not set
# CONFIG_SND_INDIGODJX is not set
# CONFIG_SND_EMU10K1 is not set
# CONFIG_SND_EMU10K1X is not set
# CONFIG_SND_ENS1370 is not set
# CONFIG_SND_ENS1371 is not set
# CONFIG_SND_ES1938 is not set
# CONFIG_SND_ES1968 is not set
# CONFIG_SND_FM801 is not set
CONFIG_SND_HDA_INTEL=y
CONFIG_SND_HDA_PREALLOC_SIZE=64
# CONFIG_SND_HDA_HWDEP is not set
# CONFIG_SND_HDA_INPUT_BEEP is not set
# CONFIG_SND_HDA_INPUT_JACK is not set
# CONFIG_SND_HDA_CODEC_REALTEK is not set
# CONFIG_SND_HDA_CODEC_ANALOG is not set
CONFIG_SND_HDA_CODEC_SIGMATEL=y
# CONFIG_SND_HDA_CODEC_VIA is not set
# CONFIG_SND_HDA_CODEC_HDMI is not set
# CONFIG_SND_HDA_CODEC_CIRRUS is not set
# CONFIG_SND_HDA_CODEC_CONEXANT is not set
# CONFIG_SND_HDA_CODEC_CA0110 is not set
# CONFIG_SND_HDA_CODEC_CA0132 is not set
# CONFIG_SND_HDA_CODEC_CMEDIA is not set
# CONFIG_SND_HDA_CODEC_SI3054 is not set
# CONFIG_SND_HDA_GENERIC is not set
# CONFIG_SND_HDA_POWER_SAVE is not set
# CONFIG_SND_HDSP is not set
# CONFIG_SND_HDSPM is not set
# CONFIG_SND_ICE1712 is not set
# CONFIG_SND_ICE1724 is not set
# CONFIG_SND_INTEL8X0 is not set
# CONFIG_SND_INTEL8X0M is not set
# CONFIG_SND_KORG1212 is not set
# CONFIG_SND_LOLA is not set
# CONFIG_SND_LX6464ES is not set
# CONFIG_SND_MAESTRO3 is not set
# CONFIG_SND_MIXART is not set
# CONFIG_SND_NM256 is not set
# CONFIG_SND_PCXHR is not set
# CONFIG_SND_RIPTIDE is not set
# CONFIG_SND_RME32 is not set
# CONFIG_SND_RME96 is not set
# CONFIG_SND_RME9652 is not set
# CONFIG_SND_SONICVIBES is not set
# CONFIG_SND_TRIDENT is not set
# CONFIG_SND_VIA82XX is not set
# CONFIG_SND_VIA82XX_MODEM is not set
# CONFIG_SND_VIRTUOSO is not set
# CONFIG_SND_VX222 is not set
# CONFIG_SND_YMFPCI is not set
# CONFIG_SND_USB is not set
# CONFIG_SND_SOC is not set
# CONFIG_SOUND_PRIME is not set
CONFIG_HID_SUPPORT=y
CONFIG_HID=y
# CONFIG_HID_BATTERY_STRENGTH is not set
# CONFIG_HIDRAW is not set

#
# USB Input Devices
#
CONFIG_USB_HID=y
# CONFIG_HID_PID is not set
# CONFIG_USB_HIDDEV is not set

#
# Special HID drivers
#
CONFIG_HID_A4TECH=y
# CONFIG_HID_ACRUX is not set
CONFIG_HID_APPLE=y
CONFIG_HID_BELKIN=y
CONFIG_HID_CHERRY=y
CONFIG_HID_CHICONY=y
# CONFIG_HID_PRODIKEYS is not set
CONFIG_HID_CYPRESS=y
# CONFIG_HID_DRAGONRISE is not set
# CONFIG_HID_EMS_FF is not set
CONFIG_HID_EZKEY=y
# CONFIG_HID_HOLTEK is not set
# CONFIG_HID_KEYTOUCH is not set
# CONFIG_HID_KYE is not set
# CONFIG_HID_UCLOGIC is not set
# CONFIG_HID_WALTOP is not set
# CONFIG_HID_GYRATION is not set
# CONFIG_HID_TWINHAN is not set
CONFIG_HID_KENSINGTON=y
# CONFIG_HID_LCPOWER is not set
CONFIG_HID_LOGITECH=y
# CONFIG_HID_LOGITECH_DJ is not set
# CONFIG_LOGITECH_FF is not set
# CONFIG_LOGIRUMBLEPAD2_FF is not set
# CONFIG_LOGIG940_FF is not set
# CONFIG_LOGIWHEELS_FF is not set
CONFIG_HID_MICROSOFT=y
CONFIG_HID_MONTEREY=y
# CONFIG_HID_MULTITOUCH is not set
# CONFIG_HID_NTRIG is not set
# CONFIG_HID_ORTEK is not set
# CONFIG_HID_PANTHERLORD is not set
# CONFIG_HID_PETALYNX is not set
# CONFIG_HID_PICOLCD is not set
# CONFIG_HID_PRIMAX is not set
# CONFIG_HID_ROCCAT is not set
# CONFIG_HID_SAITEK is not set
# CONFIG_HID_SAMSUNG is not set
# CONFIG_HID_SONY is not set
# CONFIG_HID_SPEEDLINK is not set
# CONFIG_HID_SUNPLUS is not set
# CONFIG_HID_GREENASIA is not set
# CONFIG_HID_SMARTJOYPLUS is not set
# CONFIG_HID_TIVO is not set
# CONFIG_HID_TOPSEED is not set
# CONFIG_HID_THRUSTMASTER is not set
# CONFIG_HID_ZEROPLUS is not set
# CONFIG_HID_ZYDACRON is not set
CONFIG_USB_ARCH_HAS_OHCI=y
CONFIG_USB_ARCH_HAS_EHCI=y
CONFIG_USB_ARCH_HAS_XHCI=y
CONFIG_USB_SUPPORT=y
CONFIG_USB_COMMON=y
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB=y
# CONFIG_USB_DEBUG is not set
# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set

#
# Miscellaneous USB options
#
# CONFIG_USB_DEVICEFS is not set
# CONFIG_USB_DEVICE_CLASS is not set
# CONFIG_USB_DYNAMIC_MINORS is not set
# CONFIG_USB_MON is not set
# CONFIG_USB_WUSB_CBAF is not set

#
# USB Host Controller Drivers
#
# CONFIG_USB_C67X00_HCD is not set
CONFIG_USB_EHCI_HCD=y
# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
# CONFIG_USB_EHCI_TT_NEWSCHED is not set
# CONFIG_USB_OXU210HP_HCD is not set
# CONFIG_USB_ISP116X_HCD is not set
# CONFIG_USB_ISP1362_HCD is not set
# CONFIG_USB_OHCI_HCD is not set
CONFIG_USB_UHCI_HCD=y
# CONFIG_USB_SL811_HCD is not set
# CONFIG_USB_R8A66597_HCD is not set

#
# USB Device Class drivers
#
# CONFIG_USB_ACM is not set
CONFIG_USB_PRINTER=y
# CONFIG_USB_WDM is not set
# CONFIG_USB_TMC is not set

#
# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
#

#
# also be needed; see USB_STORAGE Help for more info
#
CONFIG_USB_STORAGE=y
# CONFIG_USB_STORAGE_DEBUG is not set
# CONFIG_USB_STORAGE_REALTEK is not set
# CONFIG_USB_STORAGE_DATAFAB is not set
# CONFIG_USB_STORAGE_FREECOM is not set
# CONFIG_USB_STORAGE_ISD200 is not set
# CONFIG_USB_STORAGE_USBAT is not set
# CONFIG_USB_STORAGE_SDDR09 is not set
# CONFIG_USB_STORAGE_SDDR55 is not set
# CONFIG_USB_STORAGE_JUMPSHOT is not set
# CONFIG_USB_STORAGE_ALAUDA is not set
# CONFIG_USB_STORAGE_ONETOUCH is not set
# CONFIG_USB_STORAGE_KARMA is not set
# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
# CONFIG_USB_STORAGE_ENE_UB6250 is not set
# CONFIG_USB_UAS is not set
# CONFIG_USB_LIBUSUAL is not set

#
# USB Imaging devices
#
# CONFIG_USB_MDC800 is not set
# CONFIG_USB_MICROTEK is not set

#
# USB port drivers
#
CONFIG_USB_SERIAL=y
# CONFIG_USB_SERIAL_CONSOLE is not set
# CONFIG_USB_EZUSB is not set
# CONFIG_USB_SERIAL_GENERIC is not set
# CONFIG_USB_SERIAL_AIRCABLE is not set
# CONFIG_USB_SERIAL_ARK3116 is not set
# CONFIG_USB_SERIAL_BELKIN is not set
# CONFIG_USB_SERIAL_CH341 is not set
# CONFIG_USB_SERIAL_WHITEHEAT is not set
# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
# CONFIG_USB_SERIAL_CP210X is not set
# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
# CONFIG_USB_SERIAL_EMPEG is not set
# CONFIG_USB_SERIAL_FTDI_SIO is not set
# CONFIG_USB_SERIAL_FUNSOFT is not set
# CONFIG_USB_SERIAL_VISOR is not set
# CONFIG_USB_SERIAL_IPAQ is not set
# CONFIG_USB_SERIAL_IR is not set
# CONFIG_USB_SERIAL_EDGEPORT is not set
# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
# CONFIG_USB_SERIAL_F81232 is not set
# CONFIG_USB_SERIAL_GARMIN is not set
# CONFIG_USB_SERIAL_IPW is not set
# CONFIG_USB_SERIAL_IUU is not set
# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
# CONFIG_USB_SERIAL_KEYSPAN is not set
# CONFIG_USB_SERIAL_KLSI is not set
# CONFIG_USB_SERIAL_KOBIL_SCT is not set
# CONFIG_USB_SERIAL_MCT_U232 is not set
# CONFIG_USB_SERIAL_METRO is not set
# CONFIG_USB_SERIAL_MOS7720 is not set
# CONFIG_USB_SERIAL_MOS7840 is not set
# CONFIG_USB_SERIAL_MOTOROLA is not set
# CONFIG_USB_SERIAL_NAVMAN is not set
CONFIG_USB_SERIAL_PL2303=y
# CONFIG_USB_SERIAL_OTI6858 is not set
# CONFIG_USB_SERIAL_QCAUX is not set
# CONFIG_USB_SERIAL_QUALCOMM is not set
# CONFIG_USB_SERIAL_SPCP8X5 is not set
# CONFIG_USB_SERIAL_HP4X is not set
# CONFIG_USB_SERIAL_SAFE is not set
# CONFIG_USB_SERIAL_SIEMENS_MPI is not set
# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
# CONFIG_USB_SERIAL_SYMBOL is not set
# CONFIG_USB_SERIAL_TI is not set
# CONFIG_USB_SERIAL_CYBERJACK is not set
# CONFIG_USB_SERIAL_XIRCOM is not set
# CONFIG_USB_SERIAL_OPTION is not set
# CONFIG_USB_SERIAL_OMNINET is not set
# CONFIG_USB_SERIAL_OPTICON is not set
# CONFIG_USB_SERIAL_VIVOPAY_SERIAL is not set
# CONFIG_USB_SERIAL_ZIO is not set
# CONFIG_USB_SERIAL_SSU100 is not set
# CONFIG_USB_SERIAL_DEBUG is not set

#
# USB Miscellaneous drivers
#
# CONFIG_USB_EMI62 is not set
# CONFIG_USB_EMI26 is not set
# CONFIG_USB_ADUTUX is not set
# CONFIG_USB_SEVSEG is not set
# CONFIG_USB_RIO500 is not set
# CONFIG_USB_LEGOTOWER is not set
# CONFIG_USB_LCD is not set
# CONFIG_USB_LED is not set
# CONFIG_USB_CYPRESS_CY7C63 is not set
# CONFIG_USB_CYTHERM is not set
# CONFIG_USB_IDMOUSE is not set
# CONFIG_USB_FTDI_ELAN is not set
# CONFIG_USB_APPLEDISPLAY is not set
# CONFIG_USB_SISUSBVGA is not set
# CONFIG_USB_LD is not set
# CONFIG_USB_TRANCEVIBRATOR is not set
# CONFIG_USB_IOWARRIOR is not set
# CONFIG_USB_TEST is not set
# CONFIG_USB_ISIGHTFW is not set
# CONFIG_USB_YUREX is not set
# CONFIG_USB_GADGET is not set

#
# OTG and related infrastructure
#
# CONFIG_NOP_USB_XCEIV is not set
# CONFIG_MMC is not set
# CONFIG_MEMSTICK is not set
# CONFIG_NEW_LEDS is not set
# CONFIG_ACCESSIBILITY is not set
# CONFIG_INFINIBAND is not set
# CONFIG_EDAC is not set
CONFIG_RTC_LIB=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_HCTOSYS=y
CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
# CONFIG_RTC_DEBUG is not set

#
# RTC interfaces
#
CONFIG_RTC_INTF_SYSFS=y
CONFIG_RTC_INTF_PROC=y
CONFIG_RTC_INTF_DEV=y
# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
# CONFIG_RTC_DRV_TEST is not set

#
# I2C RTC drivers
#
# CONFIG_RTC_DRV_DS1307 is not set
# CONFIG_RTC_DRV_DS1374 is not set
# CONFIG_RTC_DRV_DS1672 is not set
# CONFIG_RTC_DRV_DS3232 is not set
# CONFIG_RTC_DRV_MAX6900 is not set
# CONFIG_RTC_DRV_RS5C372 is not set
# CONFIG_RTC_DRV_ISL1208 is not set
# CONFIG_RTC_DRV_ISL12022 is not set
# CONFIG_RTC_DRV_X1205 is not set
# CONFIG_RTC_DRV_PCF8563 is not set
# CONFIG_RTC_DRV_PCF8583 is not set
# CONFIG_RTC_DRV_M41T80 is not set
# CONFIG_RTC_DRV_BQ32K is not set
# CONFIG_RTC_DRV_S35390A is not set
# CONFIG_RTC_DRV_FM3130 is not set
# CONFIG_RTC_DRV_RX8581 is not set
# CONFIG_RTC_DRV_RX8025 is not set
# CONFIG_RTC_DRV_EM3027 is not set
# CONFIG_RTC_DRV_RV3029C2 is not set

#
# SPI RTC drivers
#

#
# Platform RTC drivers
#
CONFIG_RTC_DRV_CMOS=y
# CONFIG_RTC_DRV_DS1286 is not set
# CONFIG_RTC_DRV_DS1511 is not set
# CONFIG_RTC_DRV_DS1553 is not set
# CONFIG_RTC_DRV_DS1742 is not set
# CONFIG_RTC_DRV_STK17TA8 is not set
# CONFIG_RTC_DRV_M48T86 is not set
# CONFIG_RTC_DRV_M48T35 is not set
# CONFIG_RTC_DRV_M48T59 is not set
# CONFIG_RTC_DRV_MSM6242 is not set
# CONFIG_RTC_DRV_BQ4802 is not set
# CONFIG_RTC_DRV_RP5C01 is not set
# CONFIG_RTC_DRV_V3020 is not set

#
# on-CPU RTC drivers
#
# CONFIG_DMADEVICES is not set
# CONFIG_AUXDISPLAY is not set
# CONFIG_UIO is not set

#
# Virtio drivers
#
# CONFIG_VIRTIO_BALLOON is not set

#
# Microsoft Hyper-V guest support
#
# CONFIG_HYPERV is not set
# CONFIG_STAGING is not set
# CONFIG_X86_PLATFORM_DEVICES is not set

#
# Hardware Spinlock drivers
#
CONFIG_CLKEVT_I8253=y
CONFIG_I8253_LOCK=y
CONFIG_CLKBLD_I8253=y
# CONFIG_IOMMU_SUPPORT is not set

#
# Remoteproc drivers (EXPERIMENTAL)
#

#
# Rpmsg drivers (EXPERIMENTAL)
#
# CONFIG_VIRT_DRIVERS is not set
# CONFIG_PM_DEVFREQ is not set

#
# Firmware Drivers
#
# CONFIG_EDD is not set
CONFIG_FIRMWARE_MEMMAP=y
# CONFIG_DELL_RBU is not set
# CONFIG_DCDBAS is not set
CONFIG_DMIID=y
# CONFIG_DMI_SYSFS is not set
# CONFIG_ISCSI_IBFT_FIND is not set
# CONFIG_GOOGLE_FIRMWARE is not set

#
# File systems
#
CONFIG_DCACHE_WORD_ACCESS=y
# CONFIG_EXT2_FS is not set
# CONFIG_EXT3_FS is not set
CONFIG_EXT4_FS=y
# CONFIG_EXT4_USE_FOR_EXT23 is not set
# CONFIG_EXT4_FS_XATTR is not set
# CONFIG_EXT4_DEBUG is not set
CONFIG_JBD2=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_XFS_FS is not set
# CONFIG_GFS2_FS is not set
# CONFIG_FS_POSIX_ACL is not set
CONFIG_FILE_LOCKING=y
CONFIG_FSNOTIFY=y
# CONFIG_DNOTIFY is not set
CONFIG_INOTIFY_USER=y
# CONFIG_FANOTIFY is not set
# CONFIG_QUOTA is not set
# CONFIG_QUOTACTL is not set
# CONFIG_AUTOFS4_FS is not set
# CONFIG_FUSE_FS is not set

#
# Caches
#
# CONFIG_FSCACHE is not set

#
# CD-ROM/DVD Filesystems
#
CONFIG_ISO9660_FS=y
CONFIG_JOLIET=y
# CONFIG_ZISOFS is not set
# CONFIG_UDF_FS is not set

#
# DOS/FAT/NT Filesystems
#
CONFIG_FAT_FS=y
# CONFIG_MSDOS_FS is not set
CONFIG_VFAT_FS=y
CONFIG_FAT_DEFAULT_CODEPAGE=936
CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
CONFIG_NTFS_FS=y
# CONFIG_NTFS_DEBUG is not set
# CONFIG_NTFS_RW is not set

#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
# CONFIG_PROC_KCORE is not set
CONFIG_PROC_SYSCTL=y
CONFIG_PROC_PAGE_MONITOR=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_TMPFS_XATTR is not set
# CONFIG_HUGETLBFS is not set
# CONFIG_HUGETLB_PAGE is not set
# CONFIG_CONFIGFS_FS is not set
# CONFIG_MISC_FILESYSTEMS is not set
# CONFIG_NETWORK_FILESYSTEMS is not set
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="utf8"
CONFIG_NLS_CODEPAGE_437=y
# CONFIG_NLS_CODEPAGE_737 is not set
# CONFIG_NLS_CODEPAGE_775 is not set
# CONFIG_NLS_CODEPAGE_850 is not set
# CONFIG_NLS_CODEPAGE_852 is not set
# CONFIG_NLS_CODEPAGE_855 is not set
# CONFIG_NLS_CODEPAGE_857 is not set
# CONFIG_NLS_CODEPAGE_860 is not set
# CONFIG_NLS_CODEPAGE_861 is not set
# CONFIG_NLS_CODEPAGE_862 is not set
# CONFIG_NLS_CODEPAGE_863 is not set
# CONFIG_NLS_CODEPAGE_864 is not set
# CONFIG_NLS_CODEPAGE_865 is not set
# CONFIG_NLS_CODEPAGE_866 is not set
# CONFIG_NLS_CODEPAGE_869 is not set
CONFIG_NLS_CODEPAGE_936=y
CONFIG_NLS_CODEPAGE_950=y
# CONFIG_NLS_CODEPAGE_932 is not set
# CONFIG_NLS_CODEPAGE_949 is not set
# CONFIG_NLS_CODEPAGE_874 is not set
# CONFIG_NLS_ISO8859_8 is not set
# CONFIG_NLS_CODEPAGE_1250 is not set
# CONFIG_NLS_CODEPAGE_1251 is not set
CONFIG_NLS_ASCII=y
# CONFIG_NLS_ISO8859_1 is not set
# CONFIG_NLS_ISO8859_2 is not set
# CONFIG_NLS_ISO8859_3 is not set
# CONFIG_NLS_ISO8859_4 is not set
# CONFIG_NLS_ISO8859_5 is not set
# CONFIG_NLS_ISO8859_6 is not set
# CONFIG_NLS_ISO8859_7 is not set
# CONFIG_NLS_ISO8859_9 is not set
# CONFIG_NLS_ISO8859_13 is not set
# CONFIG_NLS_ISO8859_14 is not set
# CONFIG_NLS_ISO8859_15 is not set
# CONFIG_NLS_KOI8_R is not set
# CONFIG_NLS_KOI8_U is not set
CONFIG_NLS_UTF8=y

#
# Kernel hacking
#
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
# CONFIG_PRINTK_TIME is not set
CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
# CONFIG_ENABLE_WARN_DEPRECATED is not set
# CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_FRAME_WARN=2048
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_STRIP_ASM_SYMS is not set
# CONFIG_UNUSED_SYMBOLS is not set
# CONFIG_DEBUG_FS is not set
# CONFIG_HEADERS_CHECK is not set
# CONFIG_DEBUG_SECTION_MISMATCH is not set
# CONFIG_DEBUG_KERNEL is not set
# CONFIG_HARDLOCKUP_DETECTOR is not set
# CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_SLUB_STATS is not set
# CONFIG_SPARSE_RCU_POINTER is not set
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_MEMORY_INIT=y
CONFIG_ARCH_WANT_FRAME_POINTERS=y
# CONFIG_FRAME_POINTER is not set
CONFIG_RCU_CPU_STALL_TIMEOUT=60
CONFIG_USER_STACKTRACE_SUPPORT=y
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y
CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
CONFIG_HAVE_C_RECORDMCOUNT=y
CONFIG_TRACING_SUPPORT=y
# CONFIG_FTRACE is not set
# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
# CONFIG_DMA_API_DEBUG is not set
# CONFIG_ATOMIC64_SELFTEST is not set
# CONFIG_SAMPLES is not set
CONFIG_HAVE_ARCH_KGDB=y
CONFIG_HAVE_ARCH_KMEMCHECK=y
# CONFIG_TEST_KSTRTOX is not set
# CONFIG_STRICT_DEVMEM is not set
# CONFIG_X86_VERBOSE_BOOTUP is not set
CONFIG_EARLY_PRINTK=y
# CONFIG_EARLY_PRINTK_DBGP is not set
# CONFIG_DEBUG_SET_MODULE_RONX is not set
# CONFIG_IOMMU_STRESS is not set
CONFIG_HAVE_MMIOTRACE_SUPPORT=y
CONFIG_IO_DELAY_TYPE_0X80=0
CONFIG_IO_DELAY_TYPE_0XED=1
CONFIG_IO_DELAY_TYPE_UDELAY=2
CONFIG_IO_DELAY_TYPE_NONE=3
CONFIG_IO_DELAY_0X80=y
# CONFIG_IO_DELAY_0XED is not set
# CONFIG_IO_DELAY_UDELAY is not set
# CONFIG_IO_DELAY_NONE is not set
CONFIG_DEFAULT_IO_DELAY_TYPE=0
CONFIG_OPTIMIZE_INLINING=y

#
# Security options
#
# CONFIG_KEYS is not set
# CONFIG_SECURITY_DMESG_RESTRICT is not set
# CONFIG_SECURITY is not set
# CONFIG_SECURITYFS is not set
CONFIG_DEFAULT_SECURITY_DAC=y
CONFIG_DEFAULT_SECURITY=""
CONFIG_CRYPTO=y

#
# Crypto core or helper
#
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ALGAPI2=y
CONFIG_CRYPTO_AEAD2=y
CONFIG_CRYPTO_BLKCIPHER=y
CONFIG_CRYPTO_BLKCIPHER2=y
CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_HASH2=y
CONFIG_CRYPTO_RNG2=y
CONFIG_CRYPTO_PCOMP2=y
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_MANAGER2=y
# CONFIG_CRYPTO_USER is not set
CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
# CONFIG_CRYPTO_GF128MUL is not set
# CONFIG_CRYPTO_NULL is not set
CONFIG_CRYPTO_WORKQUEUE=y
# CONFIG_CRYPTO_CRYPTD is not set
# CONFIG_CRYPTO_AUTHENC is not set
# CONFIG_CRYPTO_TEST is not set

#
# Authenticated Encryption with Associated Data
#
# CONFIG_CRYPTO_CCM is not set
# CONFIG_CRYPTO_GCM is not set
# CONFIG_CRYPTO_SEQIV is not set

#
# Block modes
#
# CONFIG_CRYPTO_CBC is not set
# CONFIG_CRYPTO_CTR is not set
# CONFIG_CRYPTO_CTS is not set
CONFIG_CRYPTO_ECB=y
# CONFIG_CRYPTO_LRW is not set
# CONFIG_CRYPTO_PCBC is not set
# CONFIG_CRYPTO_XTS is not set

#
# Hash modes
#
# CONFIG_CRYPTO_HMAC is not set

#
# Digest
#
# CONFIG_CRYPTO_CRC32C is not set
# CONFIG_CRYPTO_CRC32C_INTEL is not set
# CONFIG_CRYPTO_GHASH is not set
# CONFIG_CRYPTO_MD4 is not set
# CONFIG_CRYPTO_MD5 is not set
CONFIG_CRYPTO_MICHAEL_MIC=y
# CONFIG_CRYPTO_RMD128 is not set
# CONFIG_CRYPTO_RMD160 is not set
# CONFIG_CRYPTO_RMD256 is not set
# CONFIG_CRYPTO_RMD320 is not set
# CONFIG_CRYPTO_SHA1 is not set
# CONFIG_CRYPTO_SHA1_SSSE3 is not set
# CONFIG_CRYPTO_SHA256 is not set
# CONFIG_CRYPTO_SHA512 is not set
# CONFIG_CRYPTO_TGR192 is not set
# CONFIG_CRYPTO_WP512 is not set
# CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL is not set

#
# Ciphers
#
CONFIG_CRYPTO_AES=y
# CONFIG_CRYPTO_AES_X86_64 is not set
# CONFIG_CRYPTO_AES_NI_INTEL is not set
# CONFIG_CRYPTO_ANUBIS is not set
CONFIG_CRYPTO_ARC4=y
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_BLOWFISH_X86_64 is not set
# CONFIG_CRYPTO_CAMELLIA is not set
# CONFIG_CRYPTO_CAMELLIA_X86_64 is not set
# CONFIG_CRYPTO_CAST5 is not set
# CONFIG_CRYPTO_CAST6 is not set
# CONFIG_CRYPTO_DES is not set
# CONFIG_CRYPTO_FCRYPT is not set
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_SEED is not set
# CONFIG_CRYPTO_SERPENT is not set
# CONFIG_CRYPTO_SERPENT_SSE2_X86_64 is not set
# CONFIG_CRYPTO_TEA is not set
# CONFIG_CRYPTO_TWOFISH is not set
# CONFIG_CRYPTO_TWOFISH_X86_64 is not set
# CONFIG_CRYPTO_TWOFISH_X86_64_3WAY is not set

#
# Compression
#
# CONFIG_CRYPTO_DEFLATE is not set
# CONFIG_CRYPTO_ZLIB is not set
# CONFIG_CRYPTO_LZO is not set

#
# Random Number Generation
#
# CONFIG_CRYPTO_ANSI_CPRNG is not set
# CONFIG_CRYPTO_USER_API_HASH is not set
# CONFIG_CRYPTO_USER_API_SKCIPHER is not set
# CONFIG_CRYPTO_HW is not set
CONFIG_HAVE_KVM=y
CONFIG_HAVE_KVM_IRQCHIP=y
CONFIG_HAVE_KVM_EVENTFD=y
CONFIG_KVM_APIC_ARCHITECTURE=y
CONFIG_KVM_MMIO=y
CONFIG_KVM_ASYNC_PF=y
CONFIG_VIRTUALIZATION=y
CONFIG_KVM=y
CONFIG_KVM_INTEL=y
# CONFIG_KVM_AMD is not set
# CONFIG_BINARY_PRINTF is not set

#
# Library routines
#
CONFIG_BITREVERSE=y
CONFIG_GENERIC_FIND_FIRST_BIT=y
CONFIG_GENERIC_PCI_IOMAP=y
CONFIG_GENERIC_IOMAP=y
CONFIG_GENERIC_IO=y
# CONFIG_CRC_CCITT is not set
CONFIG_CRC16=y
# CONFIG_CRC_T10DIF is not set
# CONFIG_CRC_ITU_T is not set
CONFIG_CRC32=y
# CONFIG_CRC32_SELFTEST is not set
CONFIG_CRC32_SLICEBY8=y
# CONFIG_CRC32_SLICEBY4 is not set
# CONFIG_CRC32_SARWATE is not set
# CONFIG_CRC32_BIT is not set
# CONFIG_CRC7 is not set
# CONFIG_LIBCRC32C is not set
# CONFIG_CRC8 is not set
# CONFIG_XZ_DEC is not set
# CONFIG_XZ_DEC_BCJ is not set
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
CONFIG_HAS_DMA=y
CONFIG_CHECK_SIGNATURE=y
CONFIG_CPU_RMAP=y
CONFIG_DQL=y
CONFIG_NLATTR=y
CONFIG_AVERAGE=y
# CONFIG_CORDIC is not set

[-- Attachment #3: IMG_20120701_214046.jpg --]
[-- Type: image/jpeg, Size: 598974 bytes --]

[-- Attachment #4: IMG_20120704_095542.jpg --]
[-- Type: image/jpeg, Size: 788176 bytes --]

[-- Attachment #5: IMG_20120704_162510.jpg --]
[-- Type: image/jpeg, Size: 798134 bytes --]

^ permalink raw reply

* Re: Bridged networking panics
From: Massimo Cetra @ 2012-07-04 10:42 UTC (permalink / raw)
  To: netdev; +Cc: linux-kernel
In-Reply-To: <4FEC62DD.6000303@navynet.it>

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

On 28/06/2012 15:57, Massimo Cetra wrote:
> Hi all,
>
> i'm attaching 3 panics of a 3.2.X kernel.
> The panics were obtained with a 3.2.20 from debian testing and from a
> vanilla compile of 3.2.21.
>
> Those panics have been already posted some months ago [1] but are not
> fixed.
>
> The problems seems related to bridged networking.
> Whenever there is a bridged aliased interface (like br0:1 br0:2 etcc),
> the server will panic after some time. The more the network load, the
> shortest the uptime.
> Removing (ifconfig br0:1 down) or adding back an interface seems to help
> the panic to appear.

Ok, waiting for an answer (sincerely i don't understand why no ones 
cares for months) i'm attaching 3 more panics happened this morning on a 
vanilla 3.2.21.

The problem is related to heavy network traffic.

I'm not a kernel hacker but I see that net_rx_action() is in the backtrace.
So (probably reaching wrong conclusions) if those panics are triggered 
by incoming network traffic, can an attacker use this to crash a machine ?

Anyone willing to reply or at least tell me what's going on ?

Thanks

MC

[-- Attachment #2: more-panics-1.txt --]
[-- Type: text/plain, Size: 57265 bytes --]


*************************  PANIC 1

Jul  4 09:50:25 172.30.1.2 [  97.644194] BUG: unable to handle kernel 
Jul  4 09:50:25 172.30.1.2 [  97.659980] IP:
Jul  4 09:50:25 172.30.1.2 [  97.674146] PGD 0 
Jul  4 09:50:25 172.30.1.2 
Jul  4 09:50:25 172.30.1.2 [  97.678245] Oops: 0000 [#1] 
Jul  4 09:50:25 172.30.1.2 SMP
Jul  4 09:50:25 172.30.1.2 
Jul  4 09:50:25 172.30.1.2 [  97.684824] CPU 0 
Jul  4 09:50:25 172.30.1.2 
Jul  4 09:50:25 172.30.1.2 [  97.688522] Modules linked in:
Jul  4 09:50:26 172.30.1.2 
Jul  4 09:50:26 172.30.1.2 [  97.830819] 
Jul  4 09:50:26 172.30.1.2 [  97.833823] Pid: 0, comm: swapper/0 Not tainted 3.2.21 #1
Jul  4 09:50:26 172.30.1.2 /0N051F
Jul  4 09:50:26 172.30.1.2 
Jul  4 09:50:26 172.30.1.2 [  97.850339] RIP: 0010:[<ffffffffa01c89d0>] 
Jul  4 09:50:26 172.30.1.2 [  97.869355] RSP: 0018:ffff88042fc03960  EFLAGS: 00010287
Jul  4 09:50:26 172.30.1.2 [  97.880006] RAX: 0000000000000008 RBX: ffff880421ea6980 RCX: ffff88042fc03708
Jul  4 09:50:26 172.30.1.2 [  97.894295] RDX: 0000000000000000 RSI: 00000000ffff7500 RDI: ffff880421ea6980
Jul  4 09:50:26 172.30.1.2 [  97.908586] RBP: ffff880420d88000 R08: 0000000000000000 R09: ffff88042fc03918
Jul  4 09:50:26 172.30.1.2 [  97.922876] R10: ffffffff8180b240 R11: ffff880421ea6980 R12: ffff8804215b0000
Jul  4 09:50:26 172.30.1.2 [  97.937166] R13: ffff8804217a1fc0 R14: ffff8804215b0002 R15: ffff880223a19000
Jul  4 09:50:26 172.30.1.2 [  97.951459] FS:  0000000000000000(0000) GS:ffff88042fc00000(0000) knlGS:0000000000000000
Jul  4 09:50:26 172.30.1.2 [  97.967673] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
Jul  4 09:50:26 172.30.1.2 [  97.979187] CR2: 0000000000000018 CR3: 00000002239eb000 CR4: 00000000000026e0
Jul  4 09:50:26 172.30.1.2 [  97.993479] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
Jul  4 09:50:26 172.30.1.2 [  98.007769] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Jul  4 09:50:26 172.30.1.2 [  98.022061] Process swapper/0 (pid: 0, threadinfo ffffffff81600000, task ffffffff8160d020)
Jul  4 09:50:26 172.30.1.2 [  98.038621] Stack:
Jul  4 09:50:26 172.30.1.2 [  98.042680]  0000000080000000
Jul  4 09:50:26 172.30.1.2 
Jul  4 09:50:26 172.30.1.2 [  98.057721]  ffff880420d88000
Jul  4 09:50:26 172.30.1.2 
Jul  4 09:50:26 172.30.1.2 [  98.072764]  ffff880421ea6980
Jul  4 09:50:26 172.30.1.2 
Jul  4 09:50:26 172.30.1.2 [  98.087804] Call Trace:
Jul  4 09:50:26 172.30.1.2 [  98.092730]  <IRQ> 
Jul  4 09:50:26 172.30.1.2 
Jul  4 09:50:26 172.30.1.2 [  98.097020]  [<ffffffffa01c8c91>] ? br_nf_forward_ip+0x214/0x231 [bridge]
Jul  4 09:50:26 172.30.1.2 [  98.110621]  [<ffffffff812c7de1>] ? nf_iterate+0x41/0x77
Jul  4 09:50:26 172.30.1.2 [  98.121274]  [<ffffffffa01c3a5a>] ? br_deliver+0x2d/0x2d [bridge]
Jul  4 09:50:26 172.30.1.2 [  98.133488]  [<ffffffffa01c3a5a>] ? br_deliver+0x2d/0x2d [bridge]
Jul  4 09:50:26 172.30.1.2 [  98.145699]  [<ffffffff812c7f3a>] ? nf_hook_slow+0x68/0xfd
Jul  4 09:50:26 172.30.1.2 [  98.156696]  [<ffffffffa01c3a5a>] ? br_deliver+0x2d/0x2d [bridge]
Jul  4 09:50:26 172.30.1.2 [  98.168911]  [<ffffffffa01c4476>] ? T.947+0x56/0x56 [bridge]
Jul  4 09:50:26 172.30.1.2 [  98.180258]  [<ffffffffa01c3a5a>] ? br_deliver+0x2d/0x2d [bridge]
Jul  4 09:50:26 172.30.1.2 [  98.192471]  [<ffffffffa01c396e>] ? T.963+0x3c/0x56 [bridge]
Jul  4 09:50:26 172.30.1.2 [  98.203817]  [<ffffffffa01c2753>] ? __br_fdb_get+0x10/0x83 [bridge]
Jul  4 09:50:26 172.30.1.2 [  98.216376]  [<ffffffffa01c461d>] ? br_handle_frame_finish+0x1a7/0x211 [bridge]
Jul  4 09:50:26 172.30.1.2 [  98.231035]  [<ffffffffa01c9598>] ? br_nf_pre_routing_finish+0x222/0x22f [bridge]
Jul  4 09:50:26 172.30.1.2 [  98.246038]  [<ffffffffa01c83b5>] ? NF_HOOK_THRESH+0x3b/0x55 [bridge]
Jul  4 09:50:26 172.30.1.2 [  98.258945]  [<ffffffffa01c935b>] ? br_nf_pre_routing+0x4fc/0x517 [bridge]
Jul  4 09:50:26 172.30.1.2 [  98.272715]  [<ffffffff812c7de1>] ? nf_iterate+0x41/0x77
Jul  4 09:50:26 172.30.1.2 [  98.283365]  [<ffffffff812c7de1>] ? nf_iterate+0x41/0x77
Jul  4 09:50:26 172.30.1.2 [  98.294016]  [<ffffffffa01c4476>] ? T.947+0x56/0x56 [bridge]
Jul  4 09:50:26 172.30.1.2 [  98.305360]  [<ffffffff812c7f3a>] ? nf_hook_slow+0x68/0xfd
Jul  4 09:50:26 172.30.1.2 [  98.316360]  [<ffffffffa01c4476>] ? T.947+0x56/0x56 [bridge]
Jul  4 09:50:26 172.30.1.2 [  98.327706]  [<ffffffffa01c4476>] ? T.947+0x56/0x56 [bridge]
Jul  4 09:50:26 172.30.1.2 [  98.339053]  [<ffffffffa01c445c>] ? T.947+0x3c/0x56 [bridge]
Jul  4 09:50:26 172.30.1.2 [  98.350399]  [<ffffffffa01c484a>] ? br_handle_frame+0x1c3/0x1d9 [bridge]
Jul  4 09:50:26 172.30.1.2 [  98.363828]  [<ffffffffa01c4687>] ? br_handle_frame_finish+0x211/0x211 [bridge]
Jul  4 09:50:26 172.30.1.2 [  98.378483]  [<ffffffff812a74f2>] ? __netif_receive_skb+0x37a/0x490
Jul  4 09:50:26 172.30.1.2 [  98.391043]  [<ffffffff81013a01>] ? read_tsc+0x5/0x16
Jul  4 09:50:26 172.30.1.2 [  98.401171]  [<ffffffff812a799f>] ? netif_receive_skb+0x67/0x6d
Jul  4 09:50:26 172.30.1.2 [  98.413037]  [<ffffffff812a7f0b>] ? napi_gro_receive+0x1f/0x2d
Jul  4 09:50:26 172.30.1.2 [  98.424728]  [<ffffffff812a7a79>] ? napi_skb_finish+0x1c/0x31
Jul  4 09:50:26 172.30.1.2 [  98.436249]  [<ffffffffa0009a21>] ? bnx2_poll_work+0x8db/0x9f4 [bnx2]
Jul  4 09:50:26 172.30.1.2 [  98.449156]  [<ffffffffa00092f4>] ? bnx2_poll_work+0x1ae/0x9f4 [bnx2]
Jul  4 09:50:26 172.30.1.2 [  98.462066]  [<ffffffffa01c445c>] ? T.947+0x3c/0x56 [bridge]
Jul  4 09:50:26 172.30.1.2 [  98.473413]  [<ffffffffa0009cfc>] ? bnx2_poll+0x116/0x1f2 [bnx2]
Jul  4 09:50:26 172.30.1.2 [  98.485451]  [<ffffffff812a74f2>] ? __netif_receive_skb+0x37a/0x490
Jul  4 09:50:26 172.30.1.2 [  98.498007]  [<ffffffff812a8038>] ? net_rx_action+0xa8/0x207
Jul  4 09:50:26 172.30.1.2 [  98.509356]  [<ffffffff8106637e>] ? hrtimer_get_next_event+0x7f/0x9a
Jul  4 09:50:26 172.30.1.2 [  98.522089]  [<ffffffff8104f11e>] ? __do_softirq+0xc4/0x1a0
Jul  4 09:50:26 172.30.1.2 [  98.533260]  [<ffffffff81097905>] ? handle_irq_event_percpu+0x166/0x184
Jul  4 09:50:26 172.30.1.2 [  98.546511]  [<ffffffff81013a01>] ? read_tsc+0x5/0x16
Jul  4 09:50:26 172.30.1.2 [  98.556648]  [<ffffffff8136bd6c>] ? call_softirq+0x1c/0x30
Jul  4 09:50:26 172.30.1.2 [  98.567647]  [<ffffffff8100fa3f>] ? do_softirq+0x3f/0x79
Jul  4 09:50:26 172.30.1.2 [  98.578295]  [<ffffffff8104eeee>] ? irq_exit+0x44/0xb5
Jul  4 09:50:26 172.30.1.2 [  98.588597]  [<ffffffff8100f38a>] ? do_IRQ+0x94/0xaa
Jul  4 09:50:26 172.30.1.2 [  98.598555]  [<ffffffff813647ee>] ? common_interrupt+0x6e/0x6e
Jul  4 09:50:26 172.30.1.2 [  98.610244]  <EOI> 
Jul  4 09:50:26 172.30.1.2 
Jul  4 09:50:26 172.30.1.2 [  98.614533]  [<ffffffff8106f2f0>] ? clockevents_program_event+0x99/0xb8
Jul  4 09:50:26 172.30.1.2 [  98.627789]  [<ffffffff811ffdb3>] ? intel_idle+0xdd/0x117
Jul  4 09:50:26 172.30.1.2 [  98.638611]  [<ffffffff811ffd96>] ? intel_idle+0xc0/0x117
Jul  4 09:50:26 172.30.1.2 [  98.649437]  [<ffffffff8128530e>] ? cpuidle_idle_call+0xf9/0x1af
Jul  4 09:50:26 172.30.1.2 [  98.661474]  [<ffffffff8100dde2>] ? cpu_idle+0xaf/0xef
Jul  4 09:50:26 172.30.1.2 [  98.671777]  [<ffffffff816aac3b>] ? start_kernel+0x3c2/0x3cd
Jul  4 09:50:26 172.30.1.2 [  98.683121]  [<ffffffff816aa3c8>] ? x86_64_start_kernel+0x102/0x10f
Jul  4 09:50:26 172.30.1.2 [  98.695677] Code: 
Jul  4 09:50:26 172.30.1.2 00
Jul  4 09:50:26 172.30.1.2 00
Jul  4 09:50:26 172.30.1.2 00
Jul  4 09:50:26 172.30.1.2 10
Jul  4 09:50:26 172.30.1.2 75
Jul  4 09:50:26 172.30.1.2 25
Jul  4 09:50:26 172.30.1.2 66
Jul  4 09:50:26 172.30.1.2 3d
Jul  4 09:50:26 172.30.1.2 81
Jul  4 09:50:26 172.30.1.2 00
Jul  4 09:50:26 172.30.1.2 75
Jul  4 09:50:26 172.30.1.2 1f
Jul  4 09:50:26 172.30.1.2 8b
Jul  4 09:50:26 172.30.1.2 87
Jul  4 09:50:26 172.30.1.2 c8
Jul  4 09:50:26 172.30.1.2 00
Jul  4 09:50:26 172.30.1.2 00
Jul  4 09:50:26 172.30.1.2 00
Jul  4 09:50:26 172.30.1.2 48
Jul  4 09:50:26 172.30.1.2 8b
Jul  4 09:50:26 172.30.1.2 8f
Jul  4 09:50:26 172.30.1.2 d8
Jul  4 09:50:26 172.30.1.2 00
Jul  4 09:50:26 172.30.1.2 00
Jul  4 09:50:26 172.30.1.2 00
Jul  4 09:50:26 172.30.1.2 66
Jul  4 09:50:26 172.30.1.2 81
Jul  4 09:50:26 172.30.1.2 7c
Jul  4 09:50:26 172.30.1.2 01
Jul  4 09:50:26 172.30.1.2 10
Jul  4 09:50:26 172.30.1.2 08
Jul  4 09:50:26 172.30.1.2 06
Jul  4 09:50:26 172.30.1.2 75
Jul  4 09:50:26 172.30.1.2 09
Jul  4 09:50:26 172.30.1.2 83
Jul  4 09:50:26 172.30.1.2 3d
Jul  4 09:50:26 172.30.1.2 f2
Jul  4 09:50:26 172.30.1.2 63
Jul  4 09:50:26 172.30.1.2 00
Jul  4 09:50:26 172.30.1.2 00
Jul  4 09:50:26 172.30.1.2 00
Jul  4 09:50:26 172.30.1.2 75
Jul  4 09:50:26 172.30.1.2 3c
Jul  4 09:50:26 172.30.1.2 f6>
Jul  4 09:50:26 172.30.1.2 42
Jul  4 09:50:26 172.30.1.2 18
Jul  4 09:50:26 172.30.1.2 01
Jul  4 09:50:26 172.30.1.2 48
Jul  4 09:50:26 172.30.1.2 8b
Jul  4 09:50:26 172.30.1.2 6a
Jul  4 09:50:26 172.30.1.2 08
Jul  4 09:50:26 172.30.1.2 74
Jul  4 09:50:26 172.30.1.2 10
Jul  4 09:50:26 172.30.1.2 8a
Jul  4 09:50:26 172.30.1.2 43
Jul  4 09:50:26 172.30.1.2 7d
Jul  4 09:50:26 172.30.1.2 83
Jul  4 09:50:26 172.30.1.2 e0
Jul  4 09:50:26 172.30.1.2 f8
Jul  4 09:50:26 172.30.1.2 83
Jul  4 09:50:26 172.30.1.2 c8
Jul  4 09:50:26 172.30.1.2 03
Jul  4 09:50:26 172.30.1.2 88
Jul  4 09:50:26 172.30.1.2 43
Jul  4 09:50:26 172.30.1.2 
Jul  4 09:50:26 172.30.1.2 [  98.737065] RIP 
Jul  4 09:50:27 172.30.1.2 [  98.751412]  RSP <ffff88042fc03960>
Jul  4 09:50:27 172.30.1.2 [  98.758419] CR2: 0000000000000018
Jul  4 09:50:27 172.30.1.2 [  98.765491] ---[ end trace 2dcc1511ba6f55d2 ]---
Jul  4 09:50:27 172.30.1.2 [  98.774916] Kernel panic - not syncing: Fatal exception in interrupt
Jul  4 09:50:27 172.30.1.2 [  98.787814] Pid: 0, comm: swapper/0 Tainted: G      D      3.2.21 #1
Jul  4 09:50:27 172.30.1.2 [  98.800748] Call Trace:
Jul  4 09:50:27 172.30.1.2 [  98.805850]  <IRQ> 
Jul  4 09:50:27 172.30.1.2 [  98.817329]  [<ffffffff81049da9>] ? kmsg_dump+0xb2/0xdd
Jul  4 09:50:27 172.30.1.2 [  98.827875]  [<ffffffff813653c1>] ? oops_end+0xa9/0xb6
Jul  4 09:50:27 172.30.1.2 [  98.838246]  [<ffffffff8102fcf9>] ? no_context+0x1ff/0x20c
Jul  4 09:50:27 172.30.1.2 [  98.849321]  [<ffffffff810f53c3>] ? virt_to_slab+0x9/0x3c
Jul  4 09:50:27 172.30.1.2 [  98.860218]  [<ffffffff81367534>] ? do_page_fault+0x1ad/0x34c
Jul  4 09:50:27 172.30.1.2 [  98.871813]  [<ffffffffa03ead93>] ? ip_vs_notrack+0x6e/0xa6 [ip_vs]
Jul  4 09:50:27 172.30.1.2 [  98.884441]  [<ffffffffa03e9dec>] ? ip_vs_conn_put+0x29/0x2f [ip_vs]
Jul  4 09:50:27 172.30.1.2 [  98.897309]  [<ffffffffa03ebe1a>] ? ip_vs_out+0x33c/0x49d [ip_vs]
Jul  4 09:50:27 172.30.1.2 [  98.909584]  [<ffffffff81364ab5>] ? page_fault+0x25/0x30
Jul  4 09:50:27 172.30.1.2 [  98.920311]  [<ffffffffa01c89d0>] ? br_nf_forward_finish+0x48/0xc0 [bridge]
Jul  4 09:50:27 172.30.1.2 [  98.934330]  [<ffffffffa01c8c91>] ? br_nf_forward_ip+0x214/0x231 [bridge]
Jul  4 09:50:27 172.30.1.2 [  98.948181]  [<ffffffff812c7de1>] ? nf_iterate+0x41/0x77
Jul  4 09:50:27 172.30.1.2 [  98.958965]  [<ffffffffa01c3a5a>] ? br_deliver+0x2d/0x2d [bridge]
Jul  4 09:50:27 172.30.1.2 [  98.971248]  [<ffffffffa01c3a5a>] ? br_deliver+0x2d/0x2d [bridge]
Jul  4 09:50:27 172.30.1.2 [  98.983586]  [<ffffffff812c7f3a>] ? nf_hook_slow+0x68/0xfd
Jul  4 09:50:27 172.30.1.2 [  98.994652]  [<ffffffffa01c3a5a>] ? br_deliver+0x2d/0x2d [bridge]
Jul  4 09:50:27 172.30.1.2 [  99.006931]  [<ffffffffa01c4476>] ? T.947+0x56/0x56 [bridge]
Jul  4 09:50:27 172.30.1.2 [  99.018347]  [<ffffffffa01c3a5a>] ? br_deliver+0x2d/0x2d [bridge]
Jul  4 09:50:27 172.30.1.2 [  99.030633]  [<ffffffffa01c396e>] ? T.963+0x3c/0x56 [bridge]
Jul  4 09:50:27 172.30.1.2 [  99.042045]  [<ffffffffa01c2753>] ? __br_fdb_get+0x10/0x83 [bridge]
Jul  4 09:50:27 172.30.1.2 [  99.054673]  [<ffffffffa01c461d>] ? br_handle_frame_finish+0x1a7/0x211 [bridge]
Jul  4 09:50:27 172.30.1.2 [  99.069397]  [<ffffffffa01c9598>] ? br_nf_pre_routing_finish+0x222/0x22f [bridge]
Jul  4 09:50:27 172.30.1.2 [  99.084472]  [<ffffffffa01c83b5>] ? NF_HOOK_THRESH+0x3b/0x55 [bridge]
Jul  4 09:50:27 172.30.1.2 [  99.097508]  [<ffffffffa01c935b>] ? br_nf_pre_routing+0x4fc/0x517 [bridge]
Jul  4 09:50:27 172.30.1.2 [  99.111348]  [<ffffffff812c7de1>] ? nf_iterate+0x41/0x77
Jul  4 09:50:27 172.30.1.2 [  99.122074]  [<ffffffff812c7de1>] ? nf_iterate+0x41/0x77
Jul  4 09:50:27 172.30.1.2 [  99.132792]  [<ffffffffa01c4476>] ? T.947+0x56/0x56 [bridge]
Jul  4 09:50:27 172.30.1.2 [  99.144191]  [<ffffffff812c7f3a>] ? nf_hook_slow+0x68/0xfd
Jul  4 09:50:27 172.30.1.2 [  99.155263]  [<ffffffffa01c4476>] ? T.947+0x56/0x56 [bridge]
Jul  4 09:50:27 172.30.1.2 [  99.166871]  [<ffffffffa01c4476>] ? T.947+0x56/0x56 [bridge]
Jul  4 09:50:27 172.30.1.2 [  99.178287]  [<ffffffffa01c445c>] ? T.947+0x3c/0x56 [bridge]
Jul  4 09:50:27 172.30.1.2 [  99.189827]  [<ffffffffa01c484a>] ? br_handle_frame+0x1c3/0x1d9 [bridge]
Jul  4 09:50:27 172.30.1.2 [  99.203365]  [<ffffffffa01c4687>] ? br_handle_frame_finish+0x211/0x211 [bridge]
Jul  4 09:50:27 172.30.1.2 [  99.218150]  [<ffffffff812a74f2>] ? __netif_receive_skb+0x37a/0x490
Jul  4 09:50:27 172.30.1.2 [  99.230775]  [<ffffffff81013a01>] ? read_tsc+0x5/0x16
Jul  4 09:50:27 172.30.1.2 [  99.240975]  [<ffffffff812a799f>] ? netif_receive_skb+0x67/0x6d
Jul  4 09:50:27 172.30.1.2 [  99.252906]  [<ffffffff812a7f0b>] ? napi_gro_receive+0x1f/0x2d
Jul  4 09:50:27 172.30.1.2 [  99.264639]  [<ffffffff812a7a79>] ? napi_skb_finish+0x1c/0x31
Jul  4 09:50:27 172.30.1.2 [  99.276297]  [<ffffffffa0009a21>] ? bnx2_poll_work+0x8db/0x9f4 [bnx2]
Jul  4 09:50:27 172.30.1.2 [  99.289333]  [<ffffffffa00092f4>] ? bnx2_poll_work+0x1ae/0x9f4 [bnx2]
Jul  4 09:50:27 172.30.1.2 [  99.302373]  [<ffffffffa01c445c>] ? T.947+0x3c/0x56 [bridge]
Jul  4 09:50:27 172.30.1.2 [  99.313851]  [<ffffffffa0009cfc>] ? bnx2_poll+0x116/0x1f2 [bnx2]
Jul  4 09:50:27 172.30.1.2 [  99.326024]  [<ffffffff812a74f2>] ? __netif_receive_skb+0x37a/0x490
Jul  4 09:50:27 172.30.1.2 [  99.338653]  [<ffffffff812a8038>] ? net_rx_action+0xa8/0x207
Jul  4 09:50:27 172.30.1.2 [  99.350072]  [<ffffffff8106637e>] ? hrtimer_get_next_event+0x7f/0x9a
Jul  4 09:50:27 172.30.1.2 [  99.362877]  [<ffffffff8104f11e>] ? __do_softirq+0xc4/0x1a0
Jul  4 09:50:27 172.30.1.2 [  99.374116]  [<ffffffff81097905>] ? handle_irq_event_percpu+0x166/0x184
Jul  4 09:50:27 172.30.1.2 [  99.387434]  [<ffffffff81013a01>] ? read_tsc+0x5/0x16
Jul  4 09:50:27 172.30.1.2 [  99.397635]  [<ffffffff8136bd6c>] ? call_softirq+0x1c/0x30
Jul  4 09:50:27 172.30.1.2 [  99.408705]  [<ffffffff8100fa3f>] ? do_softirq+0x3f/0x79
Jul  4 09:50:27 172.30.1.2 [  99.419425]  [<ffffffff8104eeee>] ? irq_exit+0x44/0xb5
Jul  4 09:50:27 172.30.1.2 [  99.429857]  [<ffffffff8100f38a>] ? do_IRQ+0x94/0xaa
Jul  4 09:50:27 172.30.1.2 [  99.439903]  [<ffffffff813647ee>] ? common_interrupt+0x6e/0x6e
Jul  4 09:50:27 172.30.1.2 [  99.451662]  <EOI> 
Jul  4 09:50:27 172.30.1.2 [  99.466410]  [<ffffffff811ffdb3>] ? intel_idle+0xdd/0x117
Jul  4 09:50:27 172.30.1.2 [  99.477365]  [<ffffffff811ffd96>] ? intel_idle+0xc0/0x117
Jul  4 09:50:27 172.30.1.2 [  99.488261]  [<ffffffff8128530e>] ? cpuidle_idle_call+0xf9/0x1af
Jul  4 09:50:27 172.30.1.2 [  99.500367]  [<ffffffff8100dde2>] ? cpu_idle+0xaf/0xef
Jul  4 09:50:27 172.30.1.2 [  99.510737]  [<ffffffff816aac3b>] ? start_kernel+0x3c2/0x3cd
Jul  4 09:50:27 172.30.1.2 [  99.522158]  [<ffffffff816aa3c8>] ? x86_64_start_kernel+0x102/0x10f









*************************  PANIC 2

Jul  4 10:16:32 172.30.1.2 [ 1229.844850] BUG: unable to handle kernel 
Jul  4 10:16:32 172.30.1.2 [ 1229.860508] IP:
Jul  4 10:16:32 172.30.1.2 [ 1229.874590] PGD 0 
Jul  4 10:16:32 172.30.1.2 
Jul  4 10:16:32 172.30.1.2 [ 1229.878604] Oops: 0000 [#1] 
Jul  4 10:16:32 172.30.1.2 SMP
Jul  4 10:16:32 172.30.1.2 
Jul  4 10:16:32 172.30.1.2 [ 1229.885057] CPU 0 
Jul  4 10:16:32 172.30.1.2 
Jul  4 10:16:32 172.30.1.2 [ 1229.888712] Modules linked in:
Jul  4 10:16:32 172.30.1.2 
Jul  4 10:16:32 172.30.1.2 [ 1230.027585] 
Jul  4 10:16:32 172.30.1.2 [ 1230.030548] Pid: 0, comm: swapper/0 Not tainted 3.2.21 #1
Jul  4 10:16:32 172.30.1.2 /0N051F
Jul  4 10:16:32 172.30.1.2 
Jul  4 10:16:32 172.30.1.2 [ 1230.046900] RIP: 0010:[<ffffffffa01bf9d0>] 
Jul  4 10:16:32 172.30.1.2 [ 1230.065834] RSP: 0018:ffff88042fc03960  EFLAGS: 00010287
Jul  4 10:16:32 172.30.1.2 [ 1230.076441] RAX: 0000000000000008 RBX: ffff8804215fa180 RCX: ffff88042fc03706
Jul  4 10:16:32 172.30.1.2 [ 1230.090691] RDX: 0000000000000000 RSI: 000000010003c740 RDI: ffff8804215fa180
Jul  4 10:16:32 172.30.1.2 [ 1230.104941] RBP: ffff880421d52000 R08: 0000000000000000 R09: ffff88042fc03918
Jul  4 10:16:32 172.30.1.2 [ 1230.119191] R10: ffffffff8180b240 R11: ffff8804215fa180 R12: ffff8804210d8000
Jul  4 10:16:32 172.30.1.2 [ 1230.133441] R13: ffff880406031300 R14: ffff8804210d8002 R15: ffff8804225bb000
Jul  4 10:16:32 172.30.1.2 [ 1230.147692] FS:  0000000000000000(0000) GS:ffff88042fc00000(0000) knlGS:0000000000000000
Jul  4 10:16:32 172.30.1.2 [ 1230.163863] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
Jul  4 10:16:32 172.30.1.2 [ 1230.175338] CR2: 0000000000000018 CR3: 00000001efa5a000 CR4: 00000000000026e0
Jul  4 10:16:32 172.30.1.2 [ 1230.189586] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
Jul  4 10:16:32 172.30.1.2 [ 1230.203835] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Jul  4 10:16:32 172.30.1.2 [ 1230.218084] Process swapper/0 (pid: 0, threadinfo ffffffff81600000, task ffffffff8160d020)
Jul  4 10:16:32 172.30.1.2 [ 1230.234604] Stack:
Jul  4 10:16:32 172.30.1.2 [ 1230.238620]  0000000080000000
Jul  4 10:16:32 172.30.1.2 
Jul  4 10:16:32 172.30.1.2 [ 1230.253452]  ffff880421d52000
Jul  4 10:16:32 172.30.1.2 
Jul  4 10:16:32 172.30.1.2 [ 1230.268289]  ffff8804215fa180
Jul  4 10:16:32 172.30.1.2 
Jul  4 10:16:32 172.30.1.2 [ 1230.283123] Call Trace:
Jul  4 10:16:32 172.30.1.2 [ 1230.288006]  <IRQ> 
Jul  4 10:16:32 172.30.1.2 
Jul  4 10:16:32 172.30.1.2 [ 1230.292217]  [<ffffffffa01bfc91>] ? br_nf_forward_ip+0x214/0x231 [bridge]
Jul  4 10:16:32 172.30.1.2 [ 1230.305777]  [<ffffffff812c7de1>] ? nf_iterate+0x41/0x77
Jul  4 10:16:32 172.30.1.2 [ 1230.316390]  [<ffffffffa01baa5a>] ? br_deliver+0x2d/0x2d [bridge]
Jul  4 10:16:32 172.30.1.2 [ 1230.328560]  [<ffffffffa01baa5a>] ? br_deliver+0x2d/0x2d [bridge]
Jul  4 10:16:32 172.30.1.2 [ 1230.340728]  [<ffffffff812c7f3a>] ? nf_hook_slow+0x68/0xfd
Jul  4 10:16:32 172.30.1.2 [ 1230.351686]  [<ffffffffa01baa5a>] ? br_deliver+0x2d/0x2d [bridge]
Jul  4 10:16:32 172.30.1.2 [ 1230.363857]  [<ffffffffa01bb476>] ? T.947+0x56/0x56 [bridge]
Jul  4 10:16:32 172.30.1.2 [ 1230.375161]  [<ffffffffa01baa5a>] ? br_deliver+0x2d/0x2d [bridge]
Jul  4 10:16:32 172.30.1.2 [ 1230.387332]  [<ffffffffa01ba96e>] ? T.963+0x3c/0x56 [bridge]
Jul  4 10:16:32 172.30.1.2 [ 1230.398638]  [<ffffffffa01b9753>] ? __br_fdb_get+0x10/0x83 [bridge]
Jul  4 10:16:32 172.30.1.2 [ 1230.411155]  [<ffffffffa01bb61d>] ? br_handle_frame_finish+0x1a7/0x211 [bridge]
Jul  4 10:16:32 172.30.1.2 [ 1230.425771]  [<ffffffffa01c0598>] ? br_nf_pre_routing_finish+0x222/0x22f [bridge]
Jul  4 10:16:32 172.30.1.2 [ 1230.440732]  [<ffffffffa01bf3b5>] ? NF_HOOK_THRESH+0x3b/0x55 [bridge]
Jul  4 10:16:32 172.30.1.2 [ 1230.453598]  [<ffffffffa01c035b>] ? br_nf_pre_routing+0x4fc/0x517 [bridge]
Jul  4 10:16:32 172.30.1.2 [ 1230.467328]  [<ffffffff812c7de1>] ? nf_iterate+0x41/0x77
Jul  4 10:16:32 172.30.1.2 [ 1230.477936]  [<ffffffff812c7de1>] ? nf_iterate+0x41/0x77
Jul  4 10:16:32 172.30.1.2 [ 1230.488548]  [<ffffffffa01bb476>] ? T.947+0x56/0x56 [bridge]
Jul  4 10:16:33 172.30.1.2 [ 1230.499850]  [<ffffffff812c7f3a>] ? nf_hook_slow+0x68/0xfd
Jul  4 10:16:33 172.30.1.2 [ 1230.510807]  [<ffffffffa01bb476>] ? T.947+0x56/0x56 [bridge]
Jul  4 10:16:33 172.30.1.2 [ 1230.522111]  [<ffffffffa01bb476>] ? T.947+0x56/0x56 [bridge]
Jul  4 10:16:33 172.30.1.2 [ 1230.533415]  [<ffffffffa01bb45c>] ? T.947+0x3c/0x56 [bridge]
Jul  4 10:16:33 172.30.1.2 [ 1230.544720]  [<ffffffffa01bb84a>] ? br_handle_frame+0x1c3/0x1d9 [bridge]
Jul  4 10:16:33 172.30.1.2 [ 1230.558107]  [<ffffffffa01bb687>] ? br_handle_frame_finish+0x211/0x211 [bridge]
Jul  4 10:16:33 172.30.1.2 [ 1230.572722]  [<ffffffff812a74f2>] ? __netif_receive_skb+0x37a/0x490
Jul  4 10:16:33 172.30.1.2 [ 1230.585240]  [<ffffffff81013a01>] ? read_tsc+0x5/0x16
Jul  4 10:16:33 172.30.1.2 [ 1230.595328]  [<ffffffff812a799f>] ? netif_receive_skb+0x67/0x6d
Jul  4 10:16:33 172.30.1.2 [ 1230.607151]  [<ffffffff812a7f0b>] ? napi_gro_receive+0x1f/0x2d
Jul  4 10:16:33 172.30.1.2 [ 1230.618800]  [<ffffffff812a7a79>] ? napi_skb_finish+0x1c/0x31
Jul  4 10:16:33 172.30.1.2 [ 1230.630280]  [<ffffffffa0046a21>] ? bnx2_poll_work+0x8db/0x9f4 [bnx2]
Jul  4 10:16:33 172.30.1.2 [ 1230.643146]  [<ffffffffa00462f4>] ? bnx2_poll_work+0x1ae/0x9f4 [bnx2]
Jul  4 10:16:33 172.30.1.2 [ 1230.656012]  [<ffffffffa01bb45c>] ? T.947+0x3c/0x56 [bridge]
Jul  4 10:16:33 172.30.1.2 [ 1230.667316]  [<ffffffffa0046cfc>] ? bnx2_poll+0x116/0x1f2 [bnx2]
Jul  4 10:16:33 172.30.1.2 [ 1230.679313]  [<ffffffff812a74f2>] ? __netif_receive_skb+0x37a/0x490
Jul  4 10:16:33 172.30.1.2 [ 1230.691827]  [<ffffffff812a8038>] ? net_rx_action+0xa8/0x207
Jul  4 10:16:33 172.30.1.2 [ 1230.703130]  [<ffffffff812a76f4>] ? process_backlog+0xec/0x1c7
Jul  4 10:16:33 172.30.1.2 [ 1230.714780]  [<ffffffff8104f11e>] ? __do_softirq+0xc4/0x1a0
Jul  4 10:16:33 172.30.1.2 [ 1230.725912]  [<ffffffff81097905>] ? handle_irq_event_percpu+0x166/0x184
Jul  4 10:16:33 172.30.1.2 [ 1230.739127]  [<ffffffff8136bd6c>] ? call_softirq+0x1c/0x30
Jul  4 10:16:33 172.30.1.2 [ 1230.750085]  [<ffffffff8100fa3f>] ? do_softirq+0x3f/0x79
Jul  4 10:16:33 172.30.1.2 [ 1230.760693]  [<ffffffff8104eeee>] ? irq_exit+0x44/0xb5
Jul  4 10:16:33 172.30.1.2 [ 1230.770954]  [<ffffffff8100f38a>] ? do_IRQ+0x94/0xaa
Jul  4 10:16:33 172.30.1.2 [ 1230.780871]  [<ffffffff813647ee>] ? common_interrupt+0x6e/0x6e
Jul  4 10:16:33 172.30.1.2 [ 1230.792517]  <EOI> 
Jul  4 10:16:33 172.30.1.2 
Jul  4 10:16:33 172.30.1.2 [ 1230.796721]  [<ffffffff810665a4>] ? enqueue_hrtimer+0x43/0x6a
Jul  4 10:16:33 172.30.1.2 [ 1230.808200]  [<ffffffff811ffdb3>] ? intel_idle+0xdd/0x117
Jul  4 10:16:33 172.30.1.2 [ 1230.818982]  [<ffffffff811ffd96>] ? intel_idle+0xc0/0x117
Jul  4 10:16:33 172.30.1.2 [ 1230.829765]  [<ffffffff8128530e>] ? cpuidle_idle_call+0xf9/0x1af
Jul  4 10:16:33 172.30.1.2 [ 1230.841761]  [<ffffffff8100dde2>] ? cpu_idle+0xaf/0xef
Jul  4 10:16:33 172.30.1.2 [ 1230.852023]  [<ffffffff816aac3b>] ? start_kernel+0x3c2/0x3cd
Jul  4 10:16:33 172.30.1.2 [ 1230.863324]  [<ffffffff816aa3c8>] ? x86_64_start_kernel+0x102/0x10f
Jul  4 10:16:33 172.30.1.2 [ 1230.875840] Code: 
Jul  4 10:16:33 172.30.1.2 00
Jul  4 10:16:33 172.30.1.2 00
Jul  4 10:16:33 172.30.1.2 00
Jul  4 10:16:33 172.30.1.2 10
Jul  4 10:16:33 172.30.1.2 75
Jul  4 10:16:33 172.30.1.2 25
Jul  4 10:16:33 172.30.1.2 66
Jul  4 10:16:33 172.30.1.2 3d
Jul  4 10:16:33 172.30.1.2 81
Jul  4 10:16:33 172.30.1.2 00
Jul  4 10:16:33 172.30.1.2 75
Jul  4 10:16:33 172.30.1.2 1f
Jul  4 10:16:33 172.30.1.2 8b
Jul  4 10:16:33 172.30.1.2 87
Jul  4 10:16:33 172.30.1.2 c8
Jul  4 10:16:33 172.30.1.2 00
Jul  4 10:16:33 172.30.1.2 00
Jul  4 10:16:33 172.30.1.2 00
Jul  4 10:16:33 172.30.1.2 48
Jul  4 10:16:33 172.30.1.2 8b
Jul  4 10:16:33 172.30.1.2 8f
Jul  4 10:16:33 172.30.1.2 d8
Jul  4 10:16:33 172.30.1.2 00
Jul  4 10:16:33 172.30.1.2 00
Jul  4 10:16:33 172.30.1.2 00
Jul  4 10:16:33 172.30.1.2 66
Jul  4 10:16:33 172.30.1.2 81
Jul  4 10:16:33 172.30.1.2 7c
Jul  4 10:16:33 172.30.1.2 01
Jul  4 10:16:33 172.30.1.2 10
Jul  4 10:16:33 172.30.1.2 08
Jul  4 10:16:33 172.30.1.2 06
Jul  4 10:16:33 172.30.1.2 75
Jul  4 10:16:33 172.30.1.2 09
Jul  4 10:16:33 172.30.1.2 83
Jul  4 10:16:33 172.30.1.2 3d
Jul  4 10:16:33 172.30.1.2 f2
Jul  4 10:16:33 172.30.1.2 63
Jul  4 10:16:33 172.30.1.2 00
Jul  4 10:16:33 172.30.1.2 00
Jul  4 10:16:33 172.30.1.2 00
Jul  4 10:16:33 172.30.1.2 75
Jul  4 10:16:33 172.30.1.2 3c
Jul  4 10:16:33 172.30.1.2 f6>
Jul  4 10:16:33 172.30.1.2 42
Jul  4 10:16:33 172.30.1.2 18
Jul  4 10:16:33 172.30.1.2 01
Jul  4 10:16:33 172.30.1.2 48
Jul  4 10:16:33 172.30.1.2 8b
Jul  4 10:16:33 172.30.1.2 6a
Jul  4 10:16:33 172.30.1.2 08
Jul  4 10:16:33 172.30.1.2 74
Jul  4 10:16:33 172.30.1.2 10
Jul  4 10:16:33 172.30.1.2 8a
Jul  4 10:16:33 172.30.1.2 43
Jul  4 10:16:33 172.30.1.2 
Jul  4 10:16:33 172.30.1.2 [ 1230.909204] ------------[ cut here ]------------
Jul  4 10:16:33 172.30.1.2 [ 1230.909207] WARNING: at kernel/softirq.c:159 _local_bh_enable_ip+0x41/0x8b()
Jul  4 10:16:33 172.30.1.2 [ 1230.909208] Hardware name: PowerEdge R410
Jul  4 10:16:33 172.30.1.2 [ 1230.909209] Modules linked in: ipt_MASQUERADE iptable_nat nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 ip6table_filter ip6_tables iptable_filter ip_tables x_tables ip_vs_rr ip_vs nf_conntrack crc32c libcrc32c drbd lru_cache cn tun virtio_net virtio_blk virtio_rng rng_core virtio_pci virtio_ring virtio kvm_intel kvm ipmi_devintf ipmi_poweroff ipmi_si ipmi_watchdog ipmi_msghandler netconsole configfs loop snd_pcm bridge stp snd_timer i7core_edac edac_core dcdbas snd joydev psmouse iTCO_wdt iTCO_vendor_support soundcore snd_page_alloc pcspkr serio_raw processor evdev button thermal_sys ext3 mbcache jbd dm_mod usbhid hid sr_mod cdrom sd_mod ses crc_t10dif enclosure ata_generic uhci_hcd ata_piix libata ehci_hcd usbcore usb_common megaraid_sas scsi_mod bnx2 [last unloaded: scsi_wait_scan]
Jul  4 10:16:33 172.30.1.2 [ 1230.909244] Pid: 0, comm: swapper/0 Not tainted 3.2.21 #1
Jul  4 10:16:33 172.30.1.2 [ 1230.909245] Call Trace:
Jul  4 10:16:33 172.30.1.2 [ 1230.909246]  <IRQ>  [<ffffffff81049810>] ? warn_slowpath_common+0x78/0x8c
Jul  4 10:16:33 172.30.1.2 [ 1230.909253]  [<ffffffff8104efa0>] ? _local_bh_enable_ip+0x41/0x8b
Jul  4 10:16:33 172.30.1.2 [ 1230.909259]  [<ffffffffa003d648>] ? bnx2_reg_rd_ind+0x31/0x38 [bnx2]
Jul  4 10:16:33 172.30.1.2 [ 1230.909264]  [<ffffffffa0046dc8>] ? bnx2_poll+0x1e2/0x1f2 [bnx2]
Jul  4 10:16:33 172.30.1.2 [ 1230.909270]  [<ffffffff812b6b62>] ? netpoll_poll_dev+0xab/0x4ad
Jul  4 10:16:33 172.30.1.2 [ 1230.909275]  [<ffffffffa0043ba0>] ? bnx2_start_xmit+0x411/0x55d [bnx2]
Jul  4 10:16:33 172.30.1.2 [ 1230.909282]  [<ffffffff810f693e>] ? ____cache_alloc+0xc6/0x20d
Jul  4 10:16:33 172.30.1.2 [ 1230.909286]  [<ffffffff812b7075>] ? netpoll_send_skb_on_dev+0x111/0x215
Jul  4 10:16:33 172.30.1.2 [ 1230.909292]  [<ffffffffa01b96d2>] ? br_dev_xmit+0x136/0x150 [bridge]
Jul  4 10:16:33 172.30.1.2 [ 1230.909295]  [<ffffffff812b7033>] ? netpoll_send_skb_on_dev+0xcf/0x215
Jul  4 10:16:33 172.30.1.2 [ 1230.909301]  [<ffffffff811c3157>] ? delay_tsc+0x2b/0x74
Jul  4 10:16:33 172.30.1.2 [ 1230.909305]  [<ffffffffa01a3272>] ? write_msg+0x9f/0x102 [netconsole]
Jul  4 10:16:33 172.30.1.2 [ 1230.909309]  [<ffffffff810499e6>] ? __call_console_drivers+0x75/0x86
Jul  4 10:16:33 172.30.1.2 [ 1230.909312]  [<ffffffff8104a084>] ? console_unlock+0x13d/0x1e8
Jul  4 10:16:33 172.30.1.2 [ 1230.909315]  [<ffffffff8104a707>] ? vprintk+0x39e/0x3e5
Jul  4 10:16:33 172.30.1.2 [ 1230.909321]  [<ffffffffa01bf9dc>] ? br_nf_forward_finish+0x54/0xc0 [bridge]
Jul  4 10:16:33 172.30.1.2 [ 1230.909326]  [<ffffffffa01bf9a5>] ? br_nf_forward_finish+0x1d/0xc0 [bridge]
Jul  4 10:16:33 172.30.1.2 [ 1230.909330]  [<ffffffff81362842>] ? printk+0x40/0x46
Jul  4 10:16:33 172.30.1.2 [ 1230.909333]  [<ffffffff8100fff9>] ? show_registers+0x1e2/0x211
Jul  4 10:16:33 172.30.1.2 [ 1230.909336]  [<ffffffff813652dd>] ? __die+0x8e/0xc9
Jul  4 10:16:33 172.30.1.2 [ 1230.909339]  [<ffffffff8102fcd0>] ? no_context+0x1d6/0x20c
Jul  4 10:16:33 172.30.1.2 [ 1230.909342]  [<ffffffff810f53c3>] ? virt_to_slab+0x9/0x3c
Jul  4 10:16:33 172.30.1.2 [ 1230.909345]  [<ffffffff81367534>] ? do_page_fault+0x1ad/0x34c
Jul  4 10:16:33 172.30.1.2 [ 1230.909351]  [<ffffffffa03f4d93>] ? ip_vs_notrack+0x6e/0xa6 [ip_vs]
Jul  4 10:16:33 172.30.1.2 [ 1230.909355]  [<ffffffffa03f3dec>] ? ip_vs_conn_put+0x29/0x2f [ip_vs]
Jul  4 10:16:33 172.30.1.2 [ 1230.909360]  [<ffffffffa03f5e1a>] ? ip_vs_out+0x33c/0x49d [ip_vs]
Jul  4 10:16:33 172.30.1.2 [ 1230.909364]  [<ffffffff81364ab5>] ? page_fault+0x25/0x30
Jul  4 10:16:33 172.30.1.2 [ 1230.909369]  [<ffffffffa01bf9d0>] ? br_nf_forward_finish+0x48/0xc0 [bridge]
Jul  4 10:16:33 172.30.1.2 [ 1230.909375]  [<ffffffffa01bfc91>] ? br_nf_forward_ip+0x214/0x231 [bridge]
Jul  4 10:16:33 172.30.1.2 [ 1230.909378]  [<ffffffff812c7de1>] ? nf_iterate+0x41/0x77
Jul  4 10:16:33 172.30.1.2 [ 1230.909383]  [<ffffffffa01baa5a>] ? br_deliver+0x2d/0x2d [bridge]
Jul  4 10:16:33 172.30.1.2 [ 1230.909388]  [<ffffffffa01baa5a>] ? br_deliver+0x2d/0x2d [bridge]
Jul  4 10:16:33 172.30.1.2 [ 1230.909391]  [<ffffffff812c7f3a>] ? nf_hook_slow+0x68/0xfd
Jul  4 10:16:33 172.30.1.2 [ 1230.909395]  [<ffffffffa01baa5a>] ? br_deliver+0x2d/0x2d [bridge]
Jul  4 10:16:34 172.30.1.2 [ 1230.909401]  [<ffffffffa01bb476>] ? T.947+0x56/0x56 [bridge]
Jul  4 10:16:34 172.30.1.2 [ 1230.909405]  [<ffffffffa01baa5a>] ? br_deliver+0x2d/0x2d [bridge]
Jul  4 10:16:34 172.30.1.2 [ 1230.909410]  [<ffffffffa01ba96e>] ? T.963+0x3c/0x56 [bridge]
Jul  4 10:16:34 172.30.1.2 [ 1230.909415]  [<ffffffffa01b9753>] ? __br_fdb_get+0x10/0x83 [bridge]
Jul  4 10:16:34 172.30.1.2 [ 1230.909420]  [<ffffffffa01bb61d>] ? br_handle_frame_finish+0x1a7/0x211 [bridge]
Jul  4 10:16:34 172.30.1.2 [ 1230.909425]  [<ffffffffa01c0598>] ? br_nf_pre_routing_finish+0x222/0x22f [bridge]
Jul  4 10:16:34 172.30.1.2 [ 1230.909431]  [<ffffffffa01bf3b5>] ? NF_HOOK_THRESH+0x3b/0x55 [bridge]
Jul  4 10:16:34 172.30.1.2 [ 1230.909436]  [<ffffffffa01c035b>] ? br_nf_pre_routing+0x4fc/0x517 [bridge]
Jul  4 10:16:34 172.30.1.2 [ 1230.909439]  [<ffffffff812c7de1>] ? nf_iterate+0x41/0x77
Jul  4 10:16:34 172.30.1.2 [ 1230.909442]  [<ffffffff812c7de1>] ? nf_iterate+0x41/0x77
Jul  4 10:16:34 172.30.1.2 [ 1230.909448]  [<ffffffffa01bb476>] ? T.947+0x56/0x56 [bridge]
Jul  4 10:16:34 172.30.1.2 [ 1230.909450]  [<ffffffff812c7f3a>] ? nf_hook_slow+0x68/0xfd
Jul  4 10:16:34 172.30.1.2 [ 1230.909455]  [<ffffffffa01bb476>] ? T.947+0x56/0x56 [bridge]
Jul  4 10:16:34 172.30.1.2 [ 1230.909461]  [<ffffffffa01bb476>] ? T.947+0x56/0x56 [bridge]
Jul  4 10:16:34 172.30.1.2 [ 1230.909466]  [<ffffffffa01bb45c>] ? T.947+0x3c/0x56 [bridge]
Jul  4 10:16:34 172.30.1.2 [ 1230.909471]  [<ffffffffa01bb84a>] ? br_handle_frame+0x1c3/0x1d9 [bridge]
Jul  4 10:16:34 172.30.1.2 [ 1230.909476]  [<ffffffffa01bb687>] ? br_handle_frame_finish+0x211/0x211 [bridge]
Jul  4 10:16:34 172.30.1.2 [ 1230.909479]  [<ffffffff812a74f2>] ? __netif_receive_skb+0x37a/0x490
Jul  4 10:16:34 172.30.1.2 [ 1230.909482]  [<ffffffff81013a01>] ? read_tsc+0x5/0x16
Jul  4 10:16:34 172.30.1.2 [ 1230.909485]  [<ffffffff812a799f>] ? netif_receive_skb+0x67/0x6d
Jul  4 10:16:34 172.30.1.2 [ 1230.909487]  [<ffffffff812a7f0b>] ? napi_gro_receive+0x1f/0x2d
Jul  4 10:16:34 172.30.1.2 [ 1230.909490]  [<ffffffff812a7a79>] ? napi_skb_finish+0x1c/0x31
Jul  4 10:16:34 172.30.1.2 [ 1230.909495]  [<ffffffffa0046a21>] ? bnx2_poll_work+0x8db/0x9f4 [bnx2]
Jul  4 10:16:34 172.30.1.2 [ 1230.909500]  [<ffffffffa00462f4>] ? bnx2_poll_work+0x1ae/0x9f4 [bnx2]
Jul  4 10:16:34 172.30.1.2 [ 1230.909506]  [<ffffffffa01bb45c>] ? T.947+0x3c/0x56 [bridge]
Jul  4 10:16:34 172.30.1.2 [ 1230.909511]  [<ffffffffa0046cfc>] ? bnx2_poll+0x116/0x1f2 [bnx2]
Jul  4 10:16:34 172.30.1.2 [ 1230.909514]  [<ffffffff812a74f2>] ? __netif_receive_skb+0x37a/0x490
Jul  4 10:16:34 172.30.1.2 [ 1230.909517]  [<ffffffff812a8038>] ? net_rx_action+0xa8/0x207
Jul  4 10:16:34 172.30.1.2 [ 1230.909519]  [<ffffffff812a76f4>] ? process_backlog+0xec/0x1c7
Jul  4 10:16:34 172.30.1.2 [ 1230.909522]  [<ffffffff8104f11e>] ? __do_softirq+0xc4/0x1a0
Jul  4 10:16:34 172.30.1.2 [ 1230.909525]  [<ffffffff81097905>] ? handle_irq_event_percpu+0x166/0x184
Jul  4 10:16:34 172.30.1.2 [ 1230.909528]  [<ffffffff8136bd6c>] ? call_softirq+0x1c/0x30
Jul  4 10:16:34 172.30.1.2 [ 1230.909531]  [<ffffffff8100fa3f>] ? do_softirq+0x3f/0x79
Jul  4 10:16:34 172.30.1.2 [ 1230.909533]  [<ffffffff8104eeee>] ? irq_exit+0x44/0xb5
Jul  4 10:16:34 172.30.1.2 [ 1230.909535]  [<ffffffff8100f38a>] ? do_IRQ+0x94/0xaa
Jul  4 10:16:34 172.30.1.2 [ 1230.909538]  [<ffffffff813647ee>] ? common_interrupt+0x6e/0x6e
Jul  4 10:16:34 172.30.1.2 [ 1230.909540]  <EOI>  [<ffffffff810665a4>] ? enqueue_hrtimer+0x43/0x6a
Jul  4 10:16:34 172.30.1.2 [ 1230.909545]  [<ffffffff811ffdb3>] ? intel_idle+0xdd/0x117
Jul  4 10:16:34 172.30.1.2 [ 1230.909547]  [<ffffffff811ffd96>] ? intel_idle+0xc0/0x117
Jul  4 10:16:34 172.30.1.2 [ 1230.909550]  [<ffffffff8128530e>] ? cpuidle_idle_call+0xf9/0x1af
Jul  4 10:16:34 172.30.1.2 [ 1230.909552]  [<ffffffff8100dde2>] ? cpu_idle+0xaf/0xef
Jul  4 10:16:34 172.30.1.2 [ 1230.909555]  [<ffffffff816aac3b>] ? start_kernel+0x3c2/0x3cd
Jul  4 10:16:34 172.30.1.2 [ 1230.909557]  [<ffffffff816aa3c8>] ? x86_64_start_kernel+0x102/0x10f
Jul  4 10:16:34 172.30.1.2 [ 1230.909559] ---[ end trace fc194823a33da07a ]---
Jul  4 10:16:34 172.30.1.2 [ 1232.022328] 7d 
Jul  4 10:16:34 172.30.1.2 83
Jul  4 10:16:34 172.30.1.2 e0
Jul  4 10:16:34 172.30.1.2 f8
Jul  4 10:16:34 172.30.1.2 83
Jul  4 10:16:34 172.30.1.2 c8
Jul  4 10:16:34 172.30.1.2 03
Jul  4 10:16:34 172.30.1.2 88
Jul  4 10:16:34 172.30.1.2 43
Jul  4 10:16:34 172.30.1.2 
Jul  4 10:16:34 172.30.1.2 [ 1232.030096] RIP 
Jul  4 10:16:34 172.30.1.2 [ 1232.044362]  RSP <ffff88042fc03960>
Jul  4 10:16:34 172.30.1.2 [ 1232.051328] CR2: 0000000000000018
Jul  4 10:16:34 172.30.1.2 [ 1232.058766] ---[ end trace fc194823a33da07b ]---
Jul  4 10:16:34 172.30.1.2 [ 1232.073596] Kernel panic - not syncing: Fatal exception in interrupt
Jul  4 10:16:34 172.30.1.2 [ 1232.086687] Pid: 0, comm: swapper/0 Tainted: G      D W    3.2.21 #1
Jul  4 10:16:34 172.30.1.2 [ 1232.099762] Call Trace:
Jul  4 10:16:34 172.30.1.2 [ 1232.104997]  <IRQ> 
Jul  4 10:16:34 172.30.1.2 [ 1232.116921]  [<ffffffff81049da9>] ? kmsg_dump+0xb2/0xdd
Jul  4 10:16:34 172.30.1.2 [ 1232.127737]  [<ffffffff813653c1>] ? oops_end+0xa9/0xb6
Jul  4 10:16:34 172.30.1.2 [ 1232.138297]  [<ffffffff8102fcf9>] ? no_context+0x1ff/0x20c
Jul  4 10:16:34 172.30.1.2 [ 1232.149634]  [<ffffffff810f53c3>] ? virt_to_slab+0x9/0x3c
Jul  4 10:16:34 172.30.1.2 [ 1232.160799]  [<ffffffff81367534>] ? do_page_fault+0x1ad/0x34c
Jul  4 10:16:34 172.30.1.2 [ 1232.172660]  [<ffffffffa03f4d93>] ? ip_vs_notrack+0x6e/0xa6 [ip_vs]
Jul  4 10:16:34 172.30.1.2 [ 1232.185561]  [<ffffffffa03f3dec>] ? ip_vs_conn_put+0x29/0x2f [ip_vs]
Jul  4 10:16:34 172.30.1.2 [ 1232.198619]  [<ffffffffa03f5e1a>] ? ip_vs_out+0x33c/0x49d [ip_vs]
Jul  4 10:16:34 172.30.1.2 [ 1232.211157]  [<ffffffff81364ab5>] ? page_fault+0x25/0x30
Jul  4 10:16:34 172.30.1.2 [ 1232.222227]  [<ffffffffa01bf9d0>] ? br_nf_forward_finish+0x48/0xc0 [bridge]
Jul  4 10:16:34 172.30.1.2 [ 1232.236573]  [<ffffffffa01bfc91>] ? br_nf_forward_ip+0x214/0x231 [bridge]
Jul  4 10:16:34 172.30.1.2 [ 1232.250640]  [<ffffffff812c7de1>] ? nf_iterate+0x41/0x77
Jul  4 10:16:34 172.30.1.2 [ 1232.261680]  [<ffffffffa01baa5a>] ? br_deliver+0x2d/0x2d [bridge]
Jul  4 10:16:34 172.30.1.2 [ 1232.274300]  [<ffffffffa01baa5a>] ? br_deliver+0x2d/0x2d [bridge]
Jul  4 10:16:34 172.30.1.2 [ 1232.286840]  [<ffffffff812c7f3a>] ? nf_hook_slow+0x68/0xfd
Jul  4 10:16:34 172.30.1.2 [ 1232.298164]  [<ffffffffa01baa5a>] ? br_deliver+0x2d/0x2d [bridge]
Jul  4 10:16:34 172.30.1.2 [ 1232.310775]  [<ffffffffa01bb476>] ? T.947+0x56/0x56 [bridge]
Jul  4 10:16:34 172.30.1.2 [ 1232.322461]  [<ffffffffa01baa5a>] ? br_deliver+0x2d/0x2d [bridge]
Jul  4 10:16:34 172.30.1.2 [ 1232.335018]  [<ffffffffa01ba96e>] ? T.963+0x3c/0x56 [bridge]
Jul  4 10:16:34 172.30.1.2 [ 1232.346693]  [<ffffffffa01b9753>] ? __br_fdb_get+0x10/0x83 [bridge]
Jul  4 10:16:34 172.30.1.2 [ 1232.359583]  [<ffffffffa01bb61d>] ? br_handle_frame_finish+0x1a7/0x211 [bridge]
Jul  4 10:16:34 172.30.1.2 [ 1232.374567]  [<ffffffffa01c0598>] ? br_nf_pre_routing_finish+0x222/0x22f [bridge]
Jul  4 10:16:34 172.30.1.2 [ 1232.389895]  [<ffffffffa01bf3b5>] ? NF_HOOK_THRESH+0x3b/0x55 [bridge]
Jul  4 10:16:34 172.30.1.2 [ 1232.403127]  [<ffffffffa01c035b>] ? br_nf_pre_routing+0x4fc/0x517 [bridge]
Jul  4 10:16:34 172.30.1.2 [ 1232.417307]  [<ffffffff812c7de1>] ? nf_iterate+0x41/0x77
Jul  4 10:16:34 172.30.1.2 [ 1232.428288]  [<ffffffff812c7de1>] ? nf_iterate+0x41/0x77
Jul  4 10:16:34 172.30.1.2 [ 1232.439232]  [<ffffffffa01bb476>] ? T.947+0x56/0x56 [bridge]
Jul  4 10:16:34 172.30.1.2 [ 1232.450848]  [<ffffffff812c7f3a>] ? nf_hook_slow+0x68/0xfd
Jul  4 10:16:34 172.30.1.2 [ 1232.462237]  [<ffffffffa01bb476>] ? T.947+0x56/0x56 [bridge]
Jul  4 10:16:34 172.30.1.2 [ 1232.473984]  [<ffffffffa01bb476>] ? T.947+0x56/0x56 [bridge]
Jul  4 10:16:34 172.30.1.2 [ 1232.485708]  [<ffffffffa01bb45c>] ? T.947+0x3c/0x56 [bridge]
Jul  4 10:16:35 172.30.1.2 [ 1232.497434]  [<ffffffffa01bb84a>] ? br_handle_frame+0x1c3/0x1d9 [bridge]
Jul  4 10:16:35 172.30.1.2 [ 1232.511205]  [<ffffffffa01bb687>] ? br_handle_frame_finish+0x211/0x211 [bridge]
Jul  4 10:16:35 172.30.1.2 [ 1232.526211]  [<ffffffff812a74f2>] ? __netif_receive_skb+0x37a/0x490
Jul  4 10:16:35 172.30.1.2 [ 1232.539100]  [<ffffffff81013a01>] ? read_tsc+0x5/0x16
Jul  4 10:16:35 172.30.1.2 [ 1232.549564]  [<ffffffff812a799f>] ? netif_receive_skb+0x67/0x6d
Jul  4 10:16:35 172.30.1.2 [ 1232.561885]  [<ffffffff812a7f0b>] ? napi_gro_receive+0x1f/0x2d
Jul  4 10:16:35 172.30.1.2 [ 1232.573955]  [<ffffffff812a7a79>] ? napi_skb_finish+0x1c/0x31
Jul  4 10:16:35 172.30.1.2 [ 1232.585819]  [<ffffffffa0046a21>] ? bnx2_poll_work+0x8db/0x9f4 [bnx2]
Jul  4 10:16:35 172.30.1.2 [ 1232.599057]  [<ffffffffa00462f4>] ? bnx2_poll_work+0x1ae/0x9f4 [bnx2]
Jul  4 10:16:35 172.30.1.2 [ 1232.612295]  [<ffffffffa01bb45c>] ? T.947+0x3c/0x56 [bridge]
Jul  4 10:16:35 172.30.1.2 [ 1232.624033]  [<ffffffffa0046cfc>] ? bnx2_poll+0x116/0x1f2 [bnx2]
Jul  4 10:16:35 172.30.1.2 [ 1232.636400]  [<ffffffff812a74f2>] ? __netif_receive_skb+0x37a/0x490
Jul  4 10:16:35 172.30.1.2 [ 1232.649290]  [<ffffffff812a8038>] ? net_rx_action+0xa8/0x207
Jul  4 10:16:35 172.30.1.2 [ 1232.660969]  [<ffffffff812a76f4>] ? process_backlog+0xec/0x1c7
Jul  4 10:16:35 172.30.1.2 [ 1232.673051]  [<ffffffff8104f11e>] ? __do_softirq+0xc4/0x1a0
Jul  4 10:16:35 172.30.1.2 [ 1232.684544]  [<ffffffff81097905>] ? handle_irq_event_percpu+0x166/0x184
Jul  4 10:16:35 172.30.1.2 [ 1232.698181]  [<ffffffff8136bd6c>] ? call_softirq+0x1c/0x30
Jul  4 10:16:35 172.30.1.2 [ 1232.709517]  [<ffffffff8100fa3f>] ? do_softirq+0x3f/0x79
Jul  4 10:16:35 172.30.1.2 [ 1232.720570]  [<ffffffff8104eeee>] ? irq_exit+0x44/0xb5
Jul  4 10:16:35 172.30.1.2 [ 1232.731213]  [<ffffffff8100f38a>] ? do_IRQ+0x94/0xaa
Jul  4 10:16:35 172.30.1.2 [ 1232.741520]  [<ffffffff813647ee>] ? common_interrupt+0x6e/0x6e
Jul  4 10:16:35 172.30.1.2 [ 1232.753540]  <EOI> 
Jul  4 10:16:35 172.30.1.2 [ 1232.766995]  [<ffffffff811ffdb3>] ? intel_idle+0xdd/0x117
Jul  4 10:16:35 172.30.1.2 [ 1232.778212]  [<ffffffff811ffd96>] ? intel_idle+0xc0/0x117
Jul  4 10:16:35 172.30.1.2 [ 1232.789365]  [<ffffffff8128530e>] ? cpuidle_idle_call+0xf9/0x1af
Jul  4 10:16:35 172.30.1.2 [ 1232.801743]  [<ffffffff8100dde2>] ? cpu_idle+0xaf/0xef
Jul  4 10:16:35 172.30.1.2 [ 1232.812429]  [<ffffffff816aac3b>] ? start_kernel+0x3c2/0x3cd
Jul  4 10:16:35 172.30.1.2 [ 1232.824103]  [<ffffffff816aa3c8>] ? x86_64_start_kernel+0x102/0x10f
Jul  4 10:16:35 172.30.1.2 [ 1232.837153] ------------[ cut here ]------------
Jul  4 10:16:35 172.30.1.2 [ 1232.846424] WARNING: at arch/x86/kernel/smp.c:119 try_to_wake_up+0x152/0x190()
Jul  4 10:16:35 172.30.1.2 [ 1232.860904] Hardware name: PowerEdge R410
Jul  4 10:16:35 172.30.1.2 [ 1232.868951] Modules linked in:
Jul  4 10:16:35 172.30.1.2 
Jul  4 10:16:35 172.30.1.2 [ 1233.011185] Pid: 5081, comm: kvm Tainted: G      D W    3.2.21 #1
Jul  4 10:16:35 172.30.1.2 [ 1233.023394] Call Trace:
Jul  4 10:16:35 172.30.1.2 [ 1233.028322]  [<ffffffff81049810>] ? warn_slowpath_common+0x78/0x8c
Jul  4 10:16:35 172.30.1.2 [ 1233.040707]  [<ffffffff81045ed8>] ? try_to_wake_up+0x152/0x190
Jul  4 10:16:35 172.30.1.2 [ 1233.052400]  [<ffffffff81063786>] ? autoremove_wake_function+0x9/0x2a
Jul  4 10:16:35 172.30.1.2 [ 1233.065304]  [<ffffffff8103878a>] ? __wake_up_common+0x41/0x78
Jul  4 10:16:35 172.30.1.2 [ 1233.076998]  [<ffffffff8103dbbb>] ? __wake_up+0x35/0x46
Jul  4 10:16:35 172.30.1.2 [ 1233.087485]  [<ffffffffa024866c>] ? kvm_vcpu_kick+0x31/0x82 [kvm]
Jul  4 10:16:35 172.30.1.2 [ 1233.099699]  [<ffffffff81113d58>] ? __pollwait+0xd0/0xd0
Jul  4 10:16:35 172.30.1.2 [ 1233.110355]  [<ffffffffa0261978>] ? __apic_accept_irq+0x1c1/0x1e4 [kvm]
Jul  4 10:16:35 172.30.1.2 [ 1233.123613]  [<ffffffffa023f4ee>] ? ioapic_service+0x9a/0xb8 [kvm]
Jul  4 10:16:35 172.30.1.2 [ 1233.136002]  [<ffffffffa023f87c>] ? kvm_ioapic_set_irq+0x7d/0xd1 [kvm]
Jul  4 10:16:35 172.30.1.2 [ 1233.149084]  [<ffffffffa02401f5>] ? kvm_set_irq+0xae/0xd7 [kvm]
Jul  4 10:16:35 172.30.1.2 [ 1233.160953]  [<ffffffffa023fce7>] ? kvm_free_irq_routing+0x11/0x11 [kvm]
Jul  4 10:16:35 172.30.1.2 [ 1233.174384]  [<ffffffffa023fd28>] ? kvm_set_ioapic_irq+0x41/0x41 [kvm]
Jul  4 10:16:35 172.30.1.2 [ 1233.187464]  [<ffffffff812a83c3>] ? netif_rx_ni+0x1e/0x27
Jul  4 10:16:35 172.30.1.2 [ 1233.198292]  [<ffffffffa024c566>] ? kvm_arch_vm_ioctl+0x391/0x8b5 [kvm]
Jul  4 10:16:35 172.30.1.2 [ 1233.211545]  [<ffffffffa02b7e40>] ? tun_sendmsg+0x23/0x23 [tun]
Jul  4 10:16:35 172.30.1.2 [ 1233.223409]  [<ffffffffa02b7eac>] ? tun_chr_aio_write+0x6c/0x7f [tun]
Jul  4 10:16:35 172.30.1.2 [ 1233.236315]  [<ffffffff81105818>] ? do_sync_readv_writev+0x9a/0xd5
Jul  4 10:16:35 172.30.1.2 [ 1233.248701]  [<ffffffff81132c72>] ? fsnotify+0x24b/0x278
Jul  4 10:16:35 172.30.1.2 [ 1233.259357]  [<ffffffffa023e2e4>] ? kvm_vm_ioctl+0x358/0x39a [kvm]
Jul  4 10:16:35 172.30.1.2 [ 1233.271742]  [<ffffffff81105ec3>] ? do_readv_writev+0x110/0x125
Jul  4 10:16:35 172.30.1.2 [ 1233.283608]  [<ffffffff81013a01>] ? read_tsc+0x5/0x16
Jul  4 10:16:35 172.30.1.2 [ 1233.293739]  [<ffffffff811134f7>] ? do_vfs_ioctl+0x464/0x4b1
Jul  4 10:16:35 172.30.1.2 [ 1233.305082]  [<ffffffff8111358f>] ? sys_ioctl+0x4b/0x70
Jul  4 10:16:35 172.30.1.2 [ 1233.315558]  [<ffffffff8110601d>] ? sys_writev+0x62/0x93
Jul  4 10:16:35 172.30.1.2 [ 1233.326208]  [<ffffffff81369b12>] ? system_call_fastpath+0x16/0x1b
Jul  4 10:16:35 172.30.1.2 [ 1233.338592] ---[ end trace fc194823a33da07c ]---



*************************  PANIC 3

Jul  4 12:02:44 172.30.1.2 [ 4919.504700] BUG: unable to handle kernel 
Jul  4 12:02:44 172.30.1.2 [ 4919.520358] IP:
Jul  4 12:02:44 172.30.1.2 [ 4919.534442] PGD 0 
Jul  4 12:02:44 172.30.1.2 
Jul  4 12:02:44 172.30.1.2 [ 4919.538456] Oops: 0000 [#1] 
Jul  4 12:02:44 172.30.1.2 SMP
Jul  4 12:02:44 172.30.1.2 
Jul  4 12:02:44 172.30.1.2 [ 4919.544912] CPU 0 
Jul  4 12:02:44 172.30.1.2 
Jul  4 12:02:44 172.30.1.2 [ 4919.548565] Modules linked in:
Jul  4 12:02:44 172.30.1.2 
Jul  4 12:02:44 172.30.1.2 [ 4919.687452] 
Jul  4 12:02:44 172.30.1.2 [ 4919.690415] Pid: 0, comm: swapper/0 Not tainted 3.2.21 #1
Jul  4 12:02:44 172.30.1.2 /0N051F
Jul  4 12:02:44 172.30.1.2 
Jul  4 12:02:44 172.30.1.2 [ 4919.706766] RIP: 0010:[<ffffffffa018d9d0>] 
Jul  4 12:02:44 172.30.1.2 [ 4919.725700] RSP: 0018:ffff88042fc03960  EFLAGS: 00010287
Jul  4 12:02:44 172.30.1.2 [ 4919.736310] RAX: 0000000000000008 RBX: ffff88040cf5a7c0 RCX: ffff88042fc03707
Jul  4 12:02:44 172.30.1.2 [ 4919.750561] RDX: 0000000000000000 RSI: 000000010011dc80 RDI: ffff88040cf5a7c0
Jul  4 12:02:44 172.30.1.2 [ 4919.764809] RBP: ffff88042164a000 R08: 0000000000000000 R09: ffff88042fc03918
Jul  4 12:02:44 172.30.1.2 [ 4919.779057] R10: ffffffff8180b240 R11: ffff88040cf5a7c0 R12: ffff880221038000
Jul  4 12:02:44 172.30.1.2 [ 4919.793305] R13: ffff8803f58eb1c0 R14: ffff880221038002 R15: ffff880223a61000
Jul  4 12:02:44 172.30.1.2 [ 4919.807555] FS:  0000000000000000(0000) GS:ffff88042fc00000(0000) knlGS:0000000000000000
Jul  4 12:02:44 172.30.1.2 [ 4919.823728] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
Jul  4 12:02:44 172.30.1.2 [ 4919.835204] CR2: 0000000000000018 CR3: 0000000001605000 CR4: 00000000000026e0
Jul  4 12:02:44 172.30.1.2 [ 4919.849453] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
Jul  4 12:02:44 172.30.1.2 [ 4919.863703] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Jul  4 12:02:44 172.30.1.2 [ 4919.877952] Process swapper/0 (pid: 0, threadinfo ffffffff81600000, task ffffffff8160d020)
Jul  4 12:02:44 172.30.1.2 [ 4919.894470] Stack:
Jul  4 12:02:44 172.30.1.2 [ 4919.898488]  0000000080000000
Jul  4 12:02:44 172.30.1.2 
Jul  4 12:02:44 172.30.1.2 [ 4919.913320]  ffff88042164a000
Jul  4 12:02:44 172.30.1.2 
Jul  4 12:02:44 172.30.1.2 [ 4919.928150]  ffff88040cf5a7c0
Jul  4 12:02:44 172.30.1.2 
Jul  4 12:02:44 172.30.1.2 [ 4919.942983] Call Trace:
Jul  4 12:02:44 172.30.1.2 [ 4919.947869]  <IRQ> 
Jul  4 12:02:44 172.30.1.2 
Jul  4 12:02:44 172.30.1.2 [ 4919.952076]  [<ffffffffa018dc91>] ? br_nf_forward_ip+0x214/0x231 [bridge]
Jul  4 12:02:44 172.30.1.2 [ 4919.965638]  [<ffffffff812c7de1>] ? nf_iterate+0x41/0x77
Jul  4 12:02:44 172.30.1.2 [ 4919.976250]  [<ffffffffa0188a5a>] ? br_deliver+0x2d/0x2d [bridge]
Jul  4 12:02:44 172.30.1.2 [ 4919.988421]  [<ffffffffa0188a5a>] ? br_deliver+0x2d/0x2d [bridge]
Jul  4 12:02:44 172.30.1.2 [ 4920.000591]  [<ffffffff812c7f3a>] ? nf_hook_slow+0x68/0xfd
Jul  4 12:02:44 172.30.1.2 [ 4920.011549]  [<ffffffffa0188a5a>] ? br_deliver+0x2d/0x2d [bridge]
Jul  4 12:02:44 172.30.1.2 [ 4920.023721]  [<ffffffffa0189476>] ? T.947+0x56/0x56 [bridge]
Jul  4 12:02:44 172.30.1.2 [ 4920.035025]  [<ffffffffa0188a5a>] ? br_deliver+0x2d/0x2d [bridge]
Jul  4 12:02:44 172.30.1.2 [ 4920.047197]  [<ffffffffa018896e>] ? T.963+0x3c/0x56 [bridge]
Jul  4 12:02:44 172.30.1.2 [ 4920.058501]  [<ffffffffa0187753>] ? __br_fdb_get+0x10/0x83 [bridge]
Jul  4 12:02:44 172.30.1.2 [ 4920.071019]  [<ffffffffa018961d>] ? br_handle_frame_finish+0x1a7/0x211 [bridge]
Jul  4 12:02:44 172.30.1.2 [ 4920.085635]  [<ffffffffa018e598>] ? br_nf_pre_routing_finish+0x222/0x22f [bridge]
Jul  4 12:02:44 172.30.1.2 [ 4920.100597]  [<ffffffffa018d3b5>] ? NF_HOOK_THRESH+0x3b/0x55 [bridge]
Jul  4 12:02:44 172.30.1.2 [ 4920.113463]  [<ffffffffa018e35b>] ? br_nf_pre_routing+0x4fc/0x517 [bridge]
Jul  4 12:02:44 172.30.1.2 [ 4920.127192]  [<ffffffff812c7de1>] ? nf_iterate+0x41/0x77
Jul  4 12:02:44 172.30.1.2 [ 4920.137804]  [<ffffffffa0189476>] ? T.947+0x56/0x56 [bridge]
Jul  4 12:02:44 172.30.1.2 [ 4920.149107]  [<ffffffff812c7f3a>] ? nf_hook_slow+0x68/0xfd
Jul  4 12:02:44 172.30.1.2 [ 4920.160065]  [<ffffffffa0189476>] ? T.947+0x56/0x56 [bridge]
Jul  4 12:02:44 172.30.1.2 [ 4920.171370]  [<ffffffffa0189476>] ? T.947+0x56/0x56 [bridge]
Jul  4 12:02:44 172.30.1.2 [ 4920.182674]  [<ffffffffa018945c>] ? T.947+0x3c/0x56 [bridge]
Jul  4 12:02:44 172.30.1.2 [ 4920.193979]  [<ffffffffa018984a>] ? br_handle_frame+0x1c3/0x1d9 [bridge]
Jul  4 12:02:44 172.30.1.2 [ 4920.207365]  [<ffffffffa0189687>] ? br_handle_frame_finish+0x211/0x211 [bridge]
Jul  4 12:02:44 172.30.1.2 [ 4920.221979]  [<ffffffff812a74f2>] ? __netif_receive_skb+0x37a/0x490
Jul  4 12:02:44 172.30.1.2 [ 4920.234498]  [<ffffffff81013a01>] ? read_tsc+0x5/0x16
Jul  4 12:02:44 172.30.1.2 [ 4920.244587]  [<ffffffff812a799f>] ? netif_receive_skb+0x67/0x6d
Jul  4 12:02:44 172.30.1.2 [ 4920.256409]  [<ffffffff812a7f0b>] ? napi_gro_receive+0x1f/0x2d
Jul  4 12:02:44 172.30.1.2 [ 4920.268056]  [<ffffffff812a7a79>] ? napi_skb_finish+0x1c/0x31
Jul  4 12:02:44 172.30.1.2 [ 4920.279537]  [<ffffffffa0009a21>] ? bnx2_poll_work+0x8db/0x9f4 [bnx2]
Jul  4 12:02:44 172.30.1.2 [ 4920.292403]  [<ffffffffa00092f4>] ? bnx2_poll_work+0x1ae/0x9f4 [bnx2]
Jul  4 12:02:44 172.30.1.2 [ 4920.305268]  [<ffffffffa018945c>] ? T.947+0x3c/0x56 [bridge]
Jul  4 12:02:44 172.30.1.2 [ 4920.316576]  [<ffffffffa0009cfc>] ? bnx2_poll+0x116/0x1f2 [bnx2]
Jul  4 12:02:44 172.30.1.2 [ 4920.328573]  [<ffffffff812a74f2>] ? __netif_receive_skb+0x37a/0x490
Jul  4 12:02:44 172.30.1.2 [ 4920.341089]  [<ffffffff812a8038>] ? net_rx_action+0xa8/0x207
Jul  4 12:02:44 172.30.1.2 [ 4920.352394]  [<ffffffff8106637e>] ? hrtimer_get_next_event+0x7f/0x9a
Jul  4 12:02:44 172.30.1.2 [ 4920.365085]  [<ffffffff8104f11e>] ? __do_softirq+0xc4/0x1a0
Jul  4 12:02:44 172.30.1.2 [ 4920.376214]  [<ffffffff81097905>] ? handle_irq_event_percpu+0x166/0x184
Jul  4 12:02:44 172.30.1.2 [ 4920.389425]  [<ffffffff81013a01>] ? read_tsc+0x5/0x16
Jul  4 12:02:44 172.30.1.2 [ 4920.399518]  [<ffffffff8136bd6c>] ? call_softirq+0x1c/0x30
Jul  4 12:02:44 172.30.1.2 [ 4920.410477]  [<ffffffff8100fa3f>] ? do_softirq+0x3f/0x79
Jul  4 12:02:44 172.30.1.2 [ 4920.421086]  [<ffffffff8104eeee>] ? irq_exit+0x44/0xb5
Jul  4 12:02:45 172.30.1.2 [ 4920.431348]  [<ffffffff8100f38a>] ? do_IRQ+0x94/0xaa
Jul  4 12:02:45 172.30.1.2 [ 4920.441265]  [<ffffffff813647ee>] ? common_interrupt+0x6e/0x6e
Jul  4 12:02:45 172.30.1.2 [ 4920.452913]  <EOI> 
Jul  4 12:02:45 172.30.1.2 
Jul  4 12:02:45 172.30.1.2 [ 4920.457120]  [<ffffffff811ffdb3>] ? intel_idle+0xdd/0x117
Jul  4 12:02:45 172.30.1.2 [ 4920.467900]  [<ffffffff811ffd96>] ? intel_idle+0xc0/0x117
Jul  4 12:02:45 172.30.1.2 [ 4920.478683]  [<ffffffff8128530e>] ? cpuidle_idle_call+0xf9/0x1af
Jul  4 12:02:45 172.30.1.2 [ 4920.490679]  [<ffffffff8100dde2>] ? cpu_idle+0xaf/0xef
Jul  4 12:02:45 172.30.1.2 [ 4920.500941]  [<ffffffff816aac3b>] ? start_kernel+0x3c2/0x3cd
Jul  4 12:02:45 172.30.1.2 [ 4920.512242]  [<ffffffff816aa3c8>] ? x86_64_start_kernel+0x102/0x10f
Jul  4 12:02:45 172.30.1.2 [ 4920.524758] Code: 
Jul  4 12:02:45 172.30.1.2 00
Jul  4 12:02:45 172.30.1.2 00
Jul  4 12:02:45 172.30.1.2 00
Jul  4 12:02:45 172.30.1.2 10
Jul  4 12:02:45 172.30.1.2 75
Jul  4 12:02:45 172.30.1.2 25
Jul  4 12:02:45 172.30.1.2 66
Jul  4 12:02:45 172.30.1.2 3d
Jul  4 12:02:45 172.30.1.2 81
Jul  4 12:02:45 172.30.1.2 00
Jul  4 12:02:45 172.30.1.2 75
Jul  4 12:02:45 172.30.1.2 1f
Jul  4 12:02:45 172.30.1.2 8b
Jul  4 12:02:45 172.30.1.2 87
Jul  4 12:02:45 172.30.1.2 c8
Jul  4 12:02:45 172.30.1.2 00
Jul  4 12:02:45 172.30.1.2 00
Jul  4 12:02:45 172.30.1.2 00
Jul  4 12:02:45 172.30.1.2 48
Jul  4 12:02:45 172.30.1.2 8b
Jul  4 12:02:45 172.30.1.2 8f
Jul  4 12:02:45 172.30.1.2 d8
Jul  4 12:02:45 172.30.1.2 00
Jul  4 12:02:45 172.30.1.2 00
Jul  4 12:02:45 172.30.1.2 00
Jul  4 12:02:45 172.30.1.2 66
Jul  4 12:02:45 172.30.1.2 81
Jul  4 12:02:45 172.30.1.2 7c
Jul  4 12:02:45 172.30.1.2 01
Jul  4 12:02:45 172.30.1.2 10
Jul  4 12:02:45 172.30.1.2 08
Jul  4 12:02:45 172.30.1.2 06
Jul  4 12:02:45 172.30.1.2 75
Jul  4 12:02:45 172.30.1.2 09
Jul  4 12:02:45 172.30.1.2 83
Jul  4 12:02:45 172.30.1.2 3d
Jul  4 12:02:45 172.30.1.2 f2
Jul  4 12:02:45 172.30.1.2 63
Jul  4 12:02:45 172.30.1.2 00
Jul  4 12:02:45 172.30.1.2 00
Jul  4 12:02:45 172.30.1.2 00
Jul  4 12:02:45 172.30.1.2 75
Jul  4 12:02:45 172.30.1.2 3c
Jul  4 12:02:45 172.30.1.2 f6>
Jul  4 12:02:45 172.30.1.2 42
Jul  4 12:02:45 172.30.1.2 18
Jul  4 12:02:45 172.30.1.2 01
Jul  4 12:02:45 172.30.1.2 48
Jul  4 12:02:45 172.30.1.2 8b
Jul  4 12:02:45 172.30.1.2 6a
Jul  4 12:02:45 172.30.1.2 08
Jul  4 12:02:45 172.30.1.2 74
Jul  4 12:02:45 172.30.1.2 10
Jul  4 12:02:45 172.30.1.2 8a
Jul  4 12:02:45 172.30.1.2 43
Jul  4 12:02:45 172.30.1.2 7d
Jul  4 12:02:45 172.30.1.2 83
Jul  4 12:02:45 172.30.1.2 e0
Jul  4 12:02:45 172.30.1.2 f8
Jul  4 12:02:45 172.30.1.2 83
Jul  4 12:02:45 172.30.1.2 c8
Jul  4 12:02:45 172.30.1.2 03
Jul  4 12:02:45 172.30.1.2 88
Jul  4 12:02:45 172.30.1.2 43
Jul  4 12:02:45 172.30.1.2 
Jul  4 12:02:45 172.30.1.2 [ 4920.563389] RIP 
Jul  4 12:02:45 172.30.1.2 [ 4920.577654]  RSP <ffff88042fc03960>
Jul  4 12:02:45 172.30.1.2 [ 4920.584619] CR2: 0000000000000018
Jul  4 12:02:45 172.30.1.2 [ 4920.592042] ---[ end trace 805a74073bda97f9 ]---
Jul  4 12:02:45 172.30.1.2 [ 4920.601505] Kernel panic - not syncing: Fatal exception in interrupt
Jul  4 12:02:45 172.30.1.2 [ 4920.614475] Pid: 0, comm: swapper/0 Tainted: G      D      3.2.21 #1
Jul  4 12:02:45 172.30.1.2 [ 4920.627702] Call Trace:
Jul  4 12:02:45 172.30.1.2 [ 4920.633035]  <IRQ> 
Jul  4 12:02:45 172.30.1.2 [ 4920.644916]  [<ffffffff81049da9>] ? kmsg_dump+0xb2/0xdd
Jul  4 12:02:45 172.30.1.2 [ 4920.655929]  [<ffffffff813653c1>] ? oops_end+0xa9/0xb6
Jul  4 12:02:45 172.30.1.2 [ 4920.666668]  [<ffffffff8102fcf9>] ? no_context+0x1ff/0x20c
Jul  4 12:02:45 172.30.1.2 [ 4920.678144]  [<ffffffff810f53c3>] ? virt_to_slab+0x9/0x3c
Jul  4 12:02:45 172.30.1.2 [ 4920.689436]  [<ffffffff81367534>] ? do_page_fault+0x1ad/0x34c
Jul  4 12:02:45 172.30.1.2 [ 4920.701419]  [<ffffffffa037fd93>] ? ip_vs_notrack+0x6e/0xa6 [ip_vs]
Jul  4 12:02:45 172.30.1.2 [ 4920.714461]  [<ffffffffa037edec>] ? ip_vs_conn_put+0x29/0x2f [ip_vs]
Jul  4 12:02:45 172.30.1.2 [ 4920.727675]  [<ffffffffa0380e1a>] ? ip_vs_out+0x33c/0x49d [ip_vs]
Jul  4 12:02:45 172.30.1.2 [ 4920.740372]  [<ffffffff81364ab5>] ? page_fault+0x25/0x30
Jul  4 12:02:45 172.30.1.2 [ 4920.751466]  [<ffffffffa018d9d0>] ? br_nf_forward_finish+0x48/0xc0 [bridge]
Jul  4 12:02:45 172.30.1.2 [ 4920.765898]  [<ffffffffa018dc91>] ? br_nf_forward_ip+0x214/0x231 [bridge]
Jul  4 12:02:45 172.30.1.2 [ 4920.779982]  [<ffffffff812c7de1>] ? nf_iterate+0x41/0x77
Jul  4 12:02:45 172.30.1.2 [ 4920.791169]  [<ffffffffa0188a5a>] ? br_deliver+0x2d/0x2d [bridge]
Jul  4 12:02:45 172.30.1.2 [ 4920.803865]  [<ffffffffa0188a5a>] ? br_deliver+0x2d/0x2d [bridge]
Jul  4 12:02:45 172.30.1.2 [ 4920.816556]  [<ffffffff812c7f3a>] ? nf_hook_slow+0x68/0xfd
Jul  4 12:02:45 172.30.1.2 [ 4920.828013]  [<ffffffffa0188a5a>] ? br_deliver+0x2d/0x2d [bridge]
Jul  4 12:02:45 172.30.1.2 [ 4920.840706]  [<ffffffffa0189476>] ? T.947+0x56/0x56 [bridge]
Jul  4 12:02:45 172.30.1.2 [ 4920.852517]  [<ffffffffa0188a5a>] ? br_deliver+0x2d/0x2d [bridge]
Jul  4 12:02:45 172.30.1.2 [ 4920.865188]  [<ffffffffa018896e>] ? T.963+0x3c/0x56 [bridge]
Jul  4 12:02:45 172.30.1.2 [ 4920.877086]  [<ffffffffa0187753>] ? __br_fdb_get+0x10/0x83 [bridge]
Jul  4 12:02:45 172.30.1.2 [ 4920.890132]  [<ffffffffa018961d>] ? br_handle_frame_finish+0x1a7/0x211 [bridge]
Jul  4 12:02:45 172.30.1.2 [ 4920.905258]  [<ffffffffa018e598>] ? br_nf_pre_routing_finish+0x222/0x22f [bridge]
Jul  4 12:02:45 172.30.1.2 [ 4920.920749]  [<ffffffffa018d3b5>] ? NF_HOOK_THRESH+0x3b/0x55 [bridge]
Jul  4 12:02:45 172.30.1.2 [ 4920.934195]  [<ffffffffa018e35b>] ? br_nf_pre_routing+0x4fc/0x517 [bridge]
Jul  4 12:02:45 172.30.1.2 [ 4920.948452]  [<ffffffff812c7de1>] ? nf_iterate+0x41/0x77
Jul  4 12:02:45 172.30.1.2 [ 4920.959567]  [<ffffffffa0189476>] ? T.947+0x56/0x56 [bridge]
Jul  4 12:02:45 172.30.1.2 [ 4920.971398]  [<ffffffff812c7f3a>] ? nf_hook_slow+0x68/0xfd
Jul  4 12:02:45 172.30.1.2 [ 4920.982865]  [<ffffffffa0189476>] ? T.947+0x56/0x56 [bridge]
Jul  4 12:02:45 172.30.1.2 [ 4920.994697]  [<ffffffffa0189476>] ? T.947+0x56/0x56 [bridge]
Jul  4 12:02:45 172.30.1.2 [ 4921.006530]  [<ffffffffa018945c>] ? T.947+0x3c/0x56 [bridge]
Jul  4 12:02:45 172.30.1.2 [ 4921.018419]  [<ffffffffa018984a>] ? br_handle_frame+0x1c3/0x1d9 [bridge]
Jul  4 12:02:45 172.30.1.2 [ 4921.032318]  [<ffffffffa0189687>] ? br_handle_frame_finish+0x211/0x211 [bridge]
Jul  4 12:02:45 172.30.1.2 [ 4921.047475]  [<ffffffff812a74f2>] ? __netif_receive_skb+0x37a/0x490
Jul  4 12:02:45 172.30.1.2 [ 4921.060525]  [<ffffffff81013a01>] ? read_tsc+0x5/0x16
Jul  4 12:02:45 172.30.1.2 [ 4921.071137]  [<ffffffff812a799f>] ? netif_receive_skb+0x67/0x6d
Jul  4 12:02:45 172.30.1.2 [ 4921.083469]  [<ffffffff812a7f0b>] ? napi_gro_receive+0x1f/0x2d
Jul  4 12:02:45 172.30.1.2 [ 4921.095625]  [<ffffffff812a7a79>] ? napi_skb_finish+0x1c/0x31
Jul  4 12:02:45 172.30.1.2 [ 4921.107617]  [<ffffffffa0009a21>] ? bnx2_poll_work+0x8db/0x9f4 [bnx2]
Jul  4 12:02:45 172.30.1.2 [ 4921.120997]  [<ffffffffa00092f4>] ? bnx2_poll_work+0x1ae/0x9f4 [bnx2]
Jul  4 12:02:45 172.30.1.2 [ 4921.134376]  [<ffffffffa018945c>] ? T.947+0x3c/0x56 [bridge]
Jul  4 12:02:45 172.30.1.2 [ 4921.146099]  [<ffffffffa0009cfc>] ? bnx2_poll+0x116/0x1f2 [bnx2]
Jul  4 12:02:45 172.30.1.2 [ 4921.158667]  [<ffffffff812a74f2>] ? __netif_receive_skb+0x37a/0x490
Jul  4 12:02:45 172.30.1.2 [ 4921.171708]  [<ffffffff812a8038>] ? net_rx_action+0xa8/0x207
Jul  4 12:02:45 172.30.1.2 [ 4921.183521]  [<ffffffff8106637e>] ? hrtimer_get_next_event+0x7f/0x9a
Jul  4 12:02:45 172.30.1.2 [ 4921.196735]  [<ffffffff8104f11e>] ? __do_softirq+0xc4/0x1a0
Jul  4 12:02:45 172.30.1.2 [ 4921.208397]  [<ffffffff81097905>] ? handle_irq_event_percpu+0x166/0x184
Jul  4 12:02:45 172.30.1.2 [ 4921.222112]  [<ffffffff81013a01>] ? read_tsc+0x5/0x16
Jul  4 12:02:45 172.30.1.2 [ 4921.232737]  [<ffffffff8136bd6c>] ? call_softirq+0x1c/0x30
Jul  4 12:02:45 172.30.1.2 [ 4921.244138]  [<ffffffff8100fa3f>] ? do_softirq+0x3f/0x79
Jul  4 12:02:45 172.30.1.2 [ 4921.255184]  [<ffffffff8104eeee>] ? irq_exit+0x44/0xb5
Jul  4 12:02:45 172.30.1.2 [ 4921.265887]  [<ffffffff8100f38a>] ? do_IRQ+0x94/0xaa
Jul  4 12:02:45 172.30.1.2 [ 4921.276237]  [<ffffffff813647ee>] ? common_interrupt+0x6e/0x6e
Jul  4 12:02:45 172.30.1.2 [ 4921.288328]  <EOI> 
Jul  4 12:02:45 172.30.1.2 [ 4921.301304]  [<ffffffff811ffd96>] ? intel_idle+0xc0/0x117
Jul  4 12:02:45 172.30.1.2 [ 4921.312527]  [<ffffffff8128530e>] ? cpuidle_idle_call+0xf9/0x1af
Jul  4 12:02:45 172.30.1.2 [ 4921.324969]  [<ffffffff8100dde2>] ? cpu_idle+0xaf/0xef
Jul  4 12:02:45 172.30.1.2 [ 4921.335671]  [<ffffffff816aac3b>] ? start_kernel+0x3c2/0x3cd
Jul  4 12:02:45 172.30.1.2 [ 4921.347411]  [<ffffffff816aa3c8>] ? x86_64_start_kernel+0x102/0x10f

^ permalink raw reply

* [PATCH] bcm87xx: disable autonegotiation by default
From: Peter Korsgaard @ 2012-07-04 10:33 UTC (permalink / raw)
  To: netdev, david.daney, davem; +Cc: Peter Korsgaard

The bcm87xx phys don't support autonegotiation, so don't use it by
default, as otherwise phy_state_machine() will try to enable it (using
c22 requests, which also don't make any sense for the bcm78xx).

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
---
Tested on a bcm8707, which uses the same id as 8727

 drivers/net/phy/bcm87xx.c |    1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/phy/bcm87xx.c b/drivers/net/phy/bcm87xx.c
index f5f0562..9a90dcf 100644
--- a/drivers/net/phy/bcm87xx.c
+++ b/drivers/net/phy/bcm87xx.c
@@ -89,6 +89,7 @@ static int bcm87xx_config_init(struct phy_device *phydev)
 	phydev->supported = SUPPORTED_10000baseR_FEC;
 	phydev->advertising = ADVERTISED_10000baseR_FEC;
 	phydev->state = PHY_NOLINK;
+	phydev->autoneg = AUTONEG_DISABLE;
 
 	bcm87xx_of_reg_init(phydev);
 
-- 
1.7.10

^ permalink raw reply related

* [RFC PATCH] tcp: limit data skbs in qdisc layer
From: Eric Dumazet @ 2012-07-04 10:11 UTC (permalink / raw)
  To: David Miller
  Cc: Nandita Dukkipati, netdev, Yuchung Cheng, codel, Matt Mathis,
	Neal Cardwell
In-Reply-To: <1340945457.29822.7.camel@edumazet-glaptop>

On Fri, 2012-06-29 at 06:51 +0200, Eric Dumazet wrote:

> My long term plan is to reduce number of skbs queued in Qdisc for TCP
> stack, to reduce RTT (removing the artificial RTT bias because of local
> queues)

preliminar patch to give the rough idea :

sk->sk_wmem_alloc not allowed to grow above a given limit,
allowing no more than ~4 segments [1] per tcp socket in qdisc layer at a
given time. (if TSO is enabled, then a single TSO packet hits the limit)

This means we divert sock_wfree() to a tcp_wfree() handler, to
queue/send following frames when skb_orphan() is called for the already
queued skbs.

Note : While this lowers artificial cwnd and rtt, this means more work
has to be done by tx completion handler (softirq instead of preemptable
process context)

To reduce this possible source of latency, we can skb_try_orphan(skb) in
NIC drivers ndo_start_xmit() instead of waiting TX completion, but do
this orphaning only on BQL enabled drivers, or in drivers known to
possibly delay TX completion (NIU is an example, as David had to revert
BQL because of this delaying)

results on my dev machine (tg3 nic) are really impressive, using
standard pfifo_fast, and with or without TSO/GSO

I no longer have 3MBytes backlogged in qdisc by a single netperf
session, and both side socket autotuning no longer use 4 Mbytes.

tcp_write_xmit() call is probably very naive and lacks proper tests.

Note :

[1] because sk_wmem_alloc accounts skb truesize, mss*4 test allow less
then 4 frames, but it seems ok.

 drivers/net/ethernet/broadcom/tg3.c |    1 
 include/linux/skbuff.h              |    6 +++
 include/net/sock.h                  |    1 
 net/ipv4/tcp_output.c               |   44 +++++++++++++++++++++++++-
 4 files changed, 51 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
index e47ff8b..ce0ca96 100644
--- a/drivers/net/ethernet/broadcom/tg3.c
+++ b/drivers/net/ethernet/broadcom/tg3.c
@@ -7020,6 +7020,7 @@ static netdev_tx_t tg3_start_xmit(struct sk_buff *skb, struct net_device *dev)
 
 	skb_tx_timestamp(skb);
 	netdev_tx_sent_queue(txq, skb->len);
+	skb_try_orphan(skb);
 
 	/* Sync BD data before updating mailbox */
 	wmb();
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 885c9bd..c4d4d15 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -1667,6 +1667,12 @@ static inline void skb_orphan(struct sk_buff *skb)
 	skb->sk		= NULL;
 }
 
+static inline void skb_try_orphan(struct sk_buff *skb)
+{
+	if (!skb_shinfo(skb)->tx_flags)
+		skb_orphan(skb);
+}
+
 /**
  *	__skb_queue_purge - empty a list
  *	@list: list to empty
diff --git a/include/net/sock.h b/include/net/sock.h
index 640432a..2ce17b1 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -1389,6 +1389,7 @@ extern void release_sock(struct sock *sk);
 
 /* BH context may only use the following locking interface. */
 #define bh_lock_sock(__sk)	spin_lock(&((__sk)->sk_lock.slock))
+#define bh_trylock_sock(__sk)	spin_trylock(&((__sk)->sk_lock.slock))
 #define bh_lock_sock_nested(__sk) \
 				spin_lock_nested(&((__sk)->sk_lock.slock), \
 				SINGLE_DEPTH_NESTING)
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index c465d3e..4e6ef82 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -65,6 +65,8 @@ int sysctl_tcp_slow_start_after_idle __read_mostly = 1;
 int sysctl_tcp_cookie_size __read_mostly = 0; /* TCP_COOKIE_MAX */
 EXPORT_SYMBOL_GPL(sysctl_tcp_cookie_size);
 
+static bool tcp_write_xmit(struct sock *sk, unsigned int mss_now, int nonagle,
+			   int push_one, gfp_t gfp);
 
 /* Account for new data that has been sent to the network. */
 static void tcp_event_new_data_sent(struct sock *sk, const struct sk_buff *skb)
@@ -783,6 +785,34 @@ static unsigned int tcp_established_options(struct sock *sk, struct sk_buff *skb
 	return size;
 }
 
+/*
+ * Write buffer destructor automatically called from kfree_skb.
+ */
+void tcp_wfree(struct sk_buff *skb)
+{
+	struct sock *sk = skb->sk;
+	unsigned int len = skb->truesize;
+
+	atomic_sub(len - 1, &sk->sk_wmem_alloc);
+	if (bh_trylock_sock(sk)) {
+		if (!sock_owned_by_user(sk)) {
+			if ((1 << sk->sk_state) &
+			    (TCPF_CLOSE_WAIT | TCPF_ESTABLISHED))
+				tcp_write_xmit(sk,
+					       tcp_current_mss(sk),
+					       0, 0,
+					       GFP_ATOMIC);
+		} else {
+			/* TODO : might signal something here
+			 * so that user thread can call tcp_write_xmit()
+			 */
+		}
+		bh_unlock_sock(sk);
+	}
+
+	sk_free(sk);	
+}
+
 /* This routine actually transmits TCP packets queued in by
  * tcp_do_sendmsg().  This is used by both the initial
  * transmission and possible later retransmissions.
@@ -844,7 +874,11 @@ static int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it,
 
 	skb_push(skb, tcp_header_size);
 	skb_reset_transport_header(skb);
-	skb_set_owner_w(skb, sk);
+
+	skb_orphan(skb);
+	skb->sk = sk;
+	skb->destructor = tcp_wfree;
+	atomic_add(skb->truesize, &sk->sk_wmem_alloc);
 
 	/* Build TCP header and checksum it. */
 	th = tcp_hdr(skb);
@@ -1780,6 +1814,14 @@ static bool tcp_write_xmit(struct sock *sk, unsigned int mss_now, int nonagle,
 	while ((skb = tcp_send_head(sk))) {
 		unsigned int limit;
 
+		/* yes, sk_wmem_alloc accounts skb truesize, so mss_now * 4
+		 * is a lazy approximation of our needs, but it seems ok
+		 */
+		if (atomic_read(&sk->sk_wmem_alloc) >= mss_now * 4) {
+			pr_debug("here we stop sending frame because sk_wmem_alloc %d\n",
+				atomic_read(&sk->sk_wmem_alloc));
+			break;
+		}
 		tso_segs = tcp_init_tso_segs(sk, skb, mss_now);
 		BUG_ON(!tso_segs);

^ permalink raw reply related


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