* Re: kernel panic with time-stamping in phy devices (monitor mode)
From: Eric Dumazet @ 2010-12-06 4:50 UTC (permalink / raw)
To: Changli Gao; +Cc: netdev, Richard Cochran, Andrew Watts, David Miller, stable
In-Reply-To: <AANLkTinFEUd5vuBu98COXMRGMFcpwtu_dsw=_=cN6oZJ@mail.gmail.com>
Le lundi 06 décembre 2010 à 08:01 +0800, Changli Gao a écrit :
> How about using skb_headroom(skb) < ETH_HLEN ?
>
Yes, good idea, thanks !
[PATCH net-2.6] net: fix skb_defer_rx_timestamp()
After commit c1f19b51d1d8 (net: support time stamping in phy devices.),
kernel might crash if CONFIG_NETWORK_PHY_TIMESTAMPING=y and
skb_defer_rx_timestamp() handles a packet without an ethernet header.
Fixes kernel bugzilla #24102
Reference: https://bugzilla.kernel.org/show_bug.cgi?id=24102
Reported-and-tested-by: Andrew Watts <akwatts@ymail.com>
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Cc: Richard Cochran <richardcochran@gmail.com>
Cc: Changli Gao <xiaosuo@gmail.com>
Cc: stable@kernel.org
---
net/core/timestamping.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/net/core/timestamping.c b/net/core/timestamping.c
index 0ae6c22..c19bb4e 100644
--- a/net/core/timestamping.c
+++ b/net/core/timestamping.c
@@ -96,11 +96,13 @@ bool skb_defer_rx_timestamp(struct sk_buff *skb)
struct phy_device *phydev;
unsigned int type;
- skb_push(skb, ETH_HLEN);
+ if (skb_headroom(skb) < ETH_HLEN)
+ return false;
+ __skb_push(skb, ETH_HLEN);
type = classify(skb);
- skb_pull(skb, ETH_HLEN);
+ __skb_pull(skb, ETH_HLEN);
switch (type) {
case PTP_CLASS_V1_IPV4:
_______________________________________________
stable mailing list
stable@linux.kernel.org
http://linux.kernel.org/mailman/listinfo/stable
^ permalink raw reply related
* Re: echo > 0 .../disable_ipv6 broken in 2.6.37-rc4
From: Eric W. Biederman @ 2010-12-06 5:51 UTC (permalink / raw)
To: Lorenzo Colitti; +Cc: netdev, Brian Haley, Mahesh Kelkar
In-Reply-To: <m1zksjka4x.fsf@fess.ebiederm.org>
ebiederm@xmission.com (Eric W. Biederman) writes:
> Lorenzo Colitti <lorenzo@google.com> writes:
>
>> On Sun, Dec 5, 2010 at 4:24 PM, Eric W. Biederman <ebiederm@xmission.com> wrote:
>>> In 2.6.37-rc4 ipv6 can be disabled not enabled.
>>> The last kernel I have tested and know this works on is 2.6.33.
>>
>> I'm pretty sure I could successfully re-enable IPv6 on non-loopback
>> interfaces (wlan0, eth0) on net-2.6 pulled a little after 2.6.37-rc1.
>> I didn't try lo though. Does re-enabling IPv6 on a "real" interface
>> still work?
>
> Interesting that case seems to work.
It isn't the address state remove on ifdown either.
Lorenzo reverting your patch 2de795707294972f6c34bae9de713e502c431296
has no affect so you are cleared.
Darn those were the easy possibilities, now I have to stop and actually
pay attention to what the code is doing to debug this.
Eric
^ permalink raw reply
* [PATCH net-next-2.6] pktgen: adding prefetchw() call
From: Junchang Wang @ 2010-12-06 6:33 UTC (permalink / raw)
To: davem, eric.dumazet, robert.olsson, john.r.fastabend,
andy.shevchenko
Cc: netdev
We know for sure pktgen is going to write skb->data right after
*_alloc_skb, causing unnecessary cache misses.
Idea is to add a prefetchw() call to prefetch the first cache line
indicated by skb->data. On systems with Adjacent Cache Line Prefetch,
it's probably two cache lines are prefetched.
With this prefetch, pktgen on Intel SR1625 server with two E5530
quad-core processors and a single ixgbe-based NIC went from 8.63Mpps
to 9.03Mpps, with 4.6% improvement.
Signed-off-by: Junchang Wang <junchangwang@gmail.com>
---
net/core/pktgen.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/net/core/pktgen.c b/net/core/pktgen.c
index 2953b2a..18fe20d 100644
--- a/net/core/pktgen.c
+++ b/net/core/pktgen.c
@@ -2660,6 +2660,7 @@ static struct sk_buff *fill_packet_ipv4(struct net_device *odev,
sprintf(pkt_dev->result, "No memory");
return NULL;
}
+ prefetchw(skb->data);
skb_reserve(skb, datalen);
@@ -3007,6 +3008,7 @@ static struct sk_buff *fill_packet_ipv6(struct net_device *odev,
sprintf(pkt_dev->result, "No memory");
return NULL;
}
+ prefetchw(skb->data);
skb_reserve(skb, 16);
--
--Junchang
^ permalink raw reply related
* [PATCH v2] net/r8169: Remove the firmware of RTL8111D
From: Hayes Wang @ 2010-12-06 7:11 UTC (permalink / raw)
To: romieu; +Cc: netdev, linux-kernel, Hayes Wang
Remove the firmware of RTL8111D from the kernel.
The binary file of firmware would be moved to linux-firmware repository.
The firmwares are rtl_nic/rtl8168d-1.fw and rtl_nic/rtl8168d-2.fw.
The driver would load the firmware through request_firmware. The driver
would just go along if the firmware couldn't be found. However, it is
suggested to be done with the suitable firmware.
Signed-off-by: Hayes Wang <hayeswang@realtek.com>
---
drivers/net/r8169.c | 796 ++++++++-------------------------------------------
1 files changed, 117 insertions(+), 679 deletions(-)
mode change 100644 => 100755 drivers/net/r8169.c
diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c
old mode 100644
new mode 100755
index 7d33ef4..e0df607
--- a/drivers/net/r8169.c
+++ b/drivers/net/r8169.c
@@ -24,6 +24,7 @@
#include <linux/init.h>
#include <linux/dma-mapping.h>
#include <linux/pm_runtime.h>
+#include <linux/firmware.h>
#include <asm/system.h>
#include <asm/io.h>
@@ -1383,6 +1384,50 @@ static void rtl_phy_write(void __iomem *ioaddr, const struct phy_reg *regs, int
}
}
+#define PHY_READ 0x00000000
+#define PHY_DATA_OR 0x10000000
+#define PHY_DATA_AND 0x20000000
+#define PHY_BJMPN 0x30000000
+#define PHY_READ_EFUSE 0x40000000
+#define PHY_READ_MAC_BYTE 0x50000000
+#define PHY_WRITE_MAC_BYTE 0x60000000
+#define PHY_CLEAR_READCOUNT 0x70000000
+#define PHY_WRITE 0x80000000
+#define PHY_READCOUNT_EQ_SKIP 0x90000000
+#define PHY_COMP_EQ_SKIPN 0xA0000000
+#define PHY_COMP_NEQ_SKIPN 0xB0000000
+#define PHY_WRITE_PREVIOUS 0xC0000000
+#define PHY_SKIPN 0xD0000000
+#define PHY_DELAY_MS 0xE0000000
+#define PHY_WRITE_ERI_WORD 0xF0000000
+
+static void
+rtl_phy_write_fw(struct rtl8169_private *tp, const struct firmware *fw)
+{
+ void __iomem *ioaddr = tp->mmio_addr;
+ u32 *phytable = (u32 *)fw->data;
+ u32 action;
+ size_t len = fw->size / sizeof(*phytable);
+ u32 regno, data;
+
+ while (len-- > 0 && *phytable != 0) {
+ action = le32_to_cpu(*phytable);
+ regno = (action & 0x0FFF0000) >> 16;
+ data = action & 0x0000FFFF;
+
+ switch(action & 0xF0000000) {
+ case PHY_WRITE:
+ mdio_write(ioaddr, regno, data);
+ phytable++;
+ break;
+ default:
+ netif_err(tp, probe, tp->dev,
+ "Unknown action 0x%08x\n", action);
+ return;
+ }
+ }
+}
+
static void rtl8169s_hw_phy_config(void __iomem *ioaddr)
{
static const struct phy_reg phy_reg_init[] = {
@@ -1715,9 +1760,10 @@ static void rtl8168c_4_hw_phy_config(void __iomem *ioaddr)
rtl8168c_3_hw_phy_config(ioaddr);
}
-static void rtl8168d_1_hw_phy_config(void __iomem *ioaddr)
+static void rtl8168d_1_hw_phy_config(struct rtl8169_private *tp)
{
static const struct phy_reg phy_reg_init_0[] = {
+ /* Channel Estimation */
{ 0x1f, 0x0001 },
{ 0x06, 0x4064 },
{ 0x07, 0x2863 },
@@ -1734,379 +1780,41 @@ static void rtl8168d_1_hw_phy_config(void __iomem *ioaddr)
{ 0x12, 0xf49f },
{ 0x13, 0x070b },
{ 0x1a, 0x05ad },
- { 0x14, 0x94c0 }
- };
- static const struct phy_reg phy_reg_init_1[] = {
+ { 0x14, 0x94c0 },
+
+ /*
+ * Tx Error Issue
+ * enhance line driver power
+ */
{ 0x1f, 0x0002 },
{ 0x06, 0x5561 },
{ 0x1f, 0x0005 },
{ 0x05, 0x8332 },
- { 0x06, 0x5561 }
- };
- static const struct phy_reg phy_reg_init_2[] = {
- { 0x1f, 0x0005 },
- { 0x05, 0xffc2 },
- { 0x1f, 0x0005 },
- { 0x05, 0x8000 },
- { 0x06, 0xf8f9 },
- { 0x06, 0xfaef },
- { 0x06, 0x59ee },
- { 0x06, 0xf8ea },
- { 0x06, 0x00ee },
- { 0x06, 0xf8eb },
- { 0x06, 0x00e0 },
- { 0x06, 0xf87c },
- { 0x06, 0xe1f8 },
- { 0x06, 0x7d59 },
- { 0x06, 0x0fef },
- { 0x06, 0x0139 },
- { 0x06, 0x029e },
- { 0x06, 0x06ef },
- { 0x06, 0x1039 },
- { 0x06, 0x089f },
- { 0x06, 0x2aee },
- { 0x06, 0xf8ea },
- { 0x06, 0x00ee },
- { 0x06, 0xf8eb },
- { 0x06, 0x01e0 },
- { 0x06, 0xf87c },
- { 0x06, 0xe1f8 },
- { 0x06, 0x7d58 },
- { 0x06, 0x409e },
- { 0x06, 0x0f39 },
- { 0x06, 0x46aa },
- { 0x06, 0x0bbf },
- { 0x06, 0x8290 },
- { 0x06, 0xd682 },
- { 0x06, 0x9802 },
- { 0x06, 0x014f },
- { 0x06, 0xae09 },
- { 0x06, 0xbf82 },
- { 0x06, 0x98d6 },
- { 0x06, 0x82a0 },
- { 0x06, 0x0201 },
- { 0x06, 0x4fef },
- { 0x06, 0x95fe },
- { 0x06, 0xfdfc },
- { 0x06, 0x05f8 },
- { 0x06, 0xf9fa },
- { 0x06, 0xeef8 },
- { 0x06, 0xea00 },
- { 0x06, 0xeef8 },
- { 0x06, 0xeb00 },
- { 0x06, 0xe2f8 },
- { 0x06, 0x7ce3 },
- { 0x06, 0xf87d },
- { 0x06, 0xa511 },
- { 0x06, 0x1112 },
- { 0x06, 0xd240 },
- { 0x06, 0xd644 },
- { 0x06, 0x4402 },
- { 0x06, 0x8217 },
- { 0x06, 0xd2a0 },
- { 0x06, 0xd6aa },
- { 0x06, 0xaa02 },
- { 0x06, 0x8217 },
- { 0x06, 0xae0f },
- { 0x06, 0xa544 },
- { 0x06, 0x4402 },
- { 0x06, 0xae4d },
- { 0x06, 0xa5aa },
- { 0x06, 0xaa02 },
- { 0x06, 0xae47 },
- { 0x06, 0xaf82 },
- { 0x06, 0x13ee },
- { 0x06, 0x834e },
- { 0x06, 0x00ee },
- { 0x06, 0x834d },
- { 0x06, 0x0fee },
- { 0x06, 0x834c },
- { 0x06, 0x0fee },
- { 0x06, 0x834f },
- { 0x06, 0x00ee },
- { 0x06, 0x8351 },
- { 0x06, 0x00ee },
- { 0x06, 0x834a },
- { 0x06, 0xffee },
- { 0x06, 0x834b },
- { 0x06, 0xffe0 },
- { 0x06, 0x8330 },
- { 0x06, 0xe183 },
- { 0x06, 0x3158 },
- { 0x06, 0xfee4 },
- { 0x06, 0xf88a },
- { 0x06, 0xe5f8 },
- { 0x06, 0x8be0 },
- { 0x06, 0x8332 },
- { 0x06, 0xe183 },
- { 0x06, 0x3359 },
- { 0x06, 0x0fe2 },
- { 0x06, 0x834d },
- { 0x06, 0x0c24 },
- { 0x06, 0x5af0 },
- { 0x06, 0x1e12 },
- { 0x06, 0xe4f8 },
- { 0x06, 0x8ce5 },
- { 0x06, 0xf88d },
- { 0x06, 0xaf82 },
- { 0x06, 0x13e0 },
- { 0x06, 0x834f },
- { 0x06, 0x10e4 },
- { 0x06, 0x834f },
- { 0x06, 0xe083 },
- { 0x06, 0x4e78 },
- { 0x06, 0x009f },
- { 0x06, 0x0ae0 },
- { 0x06, 0x834f },
- { 0x06, 0xa010 },
- { 0x06, 0xa5ee },
- { 0x06, 0x834e },
- { 0x06, 0x01e0 },
- { 0x06, 0x834e },
- { 0x06, 0x7805 },
- { 0x06, 0x9e9a },
- { 0x06, 0xe083 },
- { 0x06, 0x4e78 },
- { 0x06, 0x049e },
- { 0x06, 0x10e0 },
- { 0x06, 0x834e },
- { 0x06, 0x7803 },
- { 0x06, 0x9e0f },
- { 0x06, 0xe083 },
- { 0x06, 0x4e78 },
- { 0x06, 0x019e },
- { 0x06, 0x05ae },
- { 0x06, 0x0caf },
- { 0x06, 0x81f8 },
- { 0x06, 0xaf81 },
- { 0x06, 0xa3af },
- { 0x06, 0x81dc },
- { 0x06, 0xaf82 },
- { 0x06, 0x13ee },
- { 0x06, 0x8348 },
- { 0x06, 0x00ee },
- { 0x06, 0x8349 },
- { 0x06, 0x00e0 },
- { 0x06, 0x8351 },
- { 0x06, 0x10e4 },
- { 0x06, 0x8351 },
- { 0x06, 0x5801 },
- { 0x06, 0x9fea },
- { 0x06, 0xd000 },
- { 0x06, 0xd180 },
- { 0x06, 0x1f66 },
- { 0x06, 0xe2f8 },
- { 0x06, 0xeae3 },
- { 0x06, 0xf8eb },
- { 0x06, 0x5af8 },
- { 0x06, 0x1e20 },
- { 0x06, 0xe6f8 },
- { 0x06, 0xeae5 },
- { 0x06, 0xf8eb },
- { 0x06, 0xd302 },
- { 0x06, 0xb3fe },
- { 0x06, 0xe2f8 },
- { 0x06, 0x7cef },
- { 0x06, 0x325b },
- { 0x06, 0x80e3 },
- { 0x06, 0xf87d },
- { 0x06, 0x9e03 },
- { 0x06, 0x7dff },
- { 0x06, 0xff0d },
- { 0x06, 0x581c },
- { 0x06, 0x551a },
- { 0x06, 0x6511 },
- { 0x06, 0xa190 },
- { 0x06, 0xd3e2 },
- { 0x06, 0x8348 },
- { 0x06, 0xe383 },
- { 0x06, 0x491b },
- { 0x06, 0x56ab },
- { 0x06, 0x08ef },
- { 0x06, 0x56e6 },
- { 0x06, 0x8348 },
- { 0x06, 0xe783 },
- { 0x06, 0x4910 },
- { 0x06, 0xd180 },
- { 0x06, 0x1f66 },
- { 0x06, 0xa004 },
- { 0x06, 0xb9e2 },
- { 0x06, 0x8348 },
- { 0x06, 0xe383 },
- { 0x06, 0x49ef },
- { 0x06, 0x65e2 },
- { 0x06, 0x834a },
- { 0x06, 0xe383 },
- { 0x06, 0x4b1b },
- { 0x06, 0x56aa },
- { 0x06, 0x0eef },
- { 0x06, 0x56e6 },
- { 0x06, 0x834a },
- { 0x06, 0xe783 },
- { 0x06, 0x4be2 },
- { 0x06, 0x834d },
- { 0x06, 0xe683 },
- { 0x06, 0x4ce0 },
- { 0x06, 0x834d },
- { 0x06, 0xa000 },
- { 0x06, 0x0caf },
- { 0x06, 0x81dc },
- { 0x06, 0xe083 },
- { 0x06, 0x4d10 },
- { 0x06, 0xe483 },
- { 0x06, 0x4dae },
- { 0x06, 0x0480 },
- { 0x06, 0xe483 },
- { 0x06, 0x4de0 },
- { 0x06, 0x834e },
- { 0x06, 0x7803 },
- { 0x06, 0x9e0b },
- { 0x06, 0xe083 },
- { 0x06, 0x4e78 },
- { 0x06, 0x049e },
- { 0x06, 0x04ee },
- { 0x06, 0x834e },
- { 0x06, 0x02e0 },
- { 0x06, 0x8332 },
- { 0x06, 0xe183 },
- { 0x06, 0x3359 },
- { 0x06, 0x0fe2 },
- { 0x06, 0x834d },
- { 0x06, 0x0c24 },
- { 0x06, 0x5af0 },
- { 0x06, 0x1e12 },
- { 0x06, 0xe4f8 },
- { 0x06, 0x8ce5 },
- { 0x06, 0xf88d },
- { 0x06, 0xe083 },
- { 0x06, 0x30e1 },
- { 0x06, 0x8331 },
- { 0x06, 0x6801 },
- { 0x06, 0xe4f8 },
- { 0x06, 0x8ae5 },
- { 0x06, 0xf88b },
- { 0x06, 0xae37 },
- { 0x06, 0xee83 },
- { 0x06, 0x4e03 },
- { 0x06, 0xe083 },
- { 0x06, 0x4ce1 },
- { 0x06, 0x834d },
- { 0x06, 0x1b01 },
- { 0x06, 0x9e04 },
- { 0x06, 0xaaa1 },
- { 0x06, 0xaea8 },
- { 0x06, 0xee83 },
- { 0x06, 0x4e04 },
- { 0x06, 0xee83 },
- { 0x06, 0x4f00 },
- { 0x06, 0xaeab },
- { 0x06, 0xe083 },
- { 0x06, 0x4f78 },
- { 0x06, 0x039f },
- { 0x06, 0x14ee },
- { 0x06, 0x834e },
- { 0x06, 0x05d2 },
- { 0x06, 0x40d6 },
- { 0x06, 0x5554 },
- { 0x06, 0x0282 },
- { 0x06, 0x17d2 },
- { 0x06, 0xa0d6 },
- { 0x06, 0xba00 },
- { 0x06, 0x0282 },
- { 0x06, 0x17fe },
- { 0x06, 0xfdfc },
- { 0x06, 0x05f8 },
- { 0x06, 0xe0f8 },
- { 0x06, 0x60e1 },
- { 0x06, 0xf861 },
- { 0x06, 0x6802 },
- { 0x06, 0xe4f8 },
- { 0x06, 0x60e5 },
- { 0x06, 0xf861 },
- { 0x06, 0xe0f8 },
- { 0x06, 0x48e1 },
- { 0x06, 0xf849 },
- { 0x06, 0x580f },
- { 0x06, 0x1e02 },
- { 0x06, 0xe4f8 },
- { 0x06, 0x48e5 },
- { 0x06, 0xf849 },
- { 0x06, 0xd000 },
- { 0x06, 0x0282 },
- { 0x06, 0x5bbf },
- { 0x06, 0x8350 },
- { 0x06, 0xef46 },
- { 0x06, 0xdc19 },
- { 0x06, 0xddd0 },
- { 0x06, 0x0102 },
- { 0x06, 0x825b },
- { 0x06, 0x0282 },
- { 0x06, 0x77e0 },
- { 0x06, 0xf860 },
- { 0x06, 0xe1f8 },
- { 0x06, 0x6158 },
- { 0x06, 0xfde4 },
- { 0x06, 0xf860 },
- { 0x06, 0xe5f8 },
- { 0x06, 0x61fc },
- { 0x06, 0x04f9 },
- { 0x06, 0xfafb },
- { 0x06, 0xc6bf },
- { 0x06, 0xf840 },
- { 0x06, 0xbe83 },
- { 0x06, 0x50a0 },
- { 0x06, 0x0101 },
- { 0x06, 0x071b },
- { 0x06, 0x89cf },
- { 0x06, 0xd208 },
- { 0x06, 0xebdb },
- { 0x06, 0x19b2 },
- { 0x06, 0xfbff },
- { 0x06, 0xfefd },
- { 0x06, 0x04f8 },
- { 0x06, 0xe0f8 },
- { 0x06, 0x48e1 },
- { 0x06, 0xf849 },
- { 0x06, 0x6808 },
- { 0x06, 0xe4f8 },
- { 0x06, 0x48e5 },
- { 0x06, 0xf849 },
- { 0x06, 0x58f7 },
- { 0x06, 0xe4f8 },
- { 0x06, 0x48e5 },
- { 0x06, 0xf849 },
- { 0x06, 0xfc04 },
- { 0x06, 0x4d20 },
- { 0x06, 0x0002 },
- { 0x06, 0x4e22 },
- { 0x06, 0x0002 },
- { 0x06, 0x4ddf },
- { 0x06, 0xff01 },
- { 0x06, 0x4edd },
- { 0x06, 0xff01 },
- { 0x05, 0x83d4 },
- { 0x06, 0x8000 },
- { 0x05, 0x83d8 },
- { 0x06, 0x8051 },
- { 0x02, 0x6010 },
- { 0x03, 0xdc00 },
- { 0x05, 0xfff6 },
- { 0x06, 0x00fc },
- { 0x1f, 0x0000 },
+ { 0x06, 0x5561 },
+
+ /*
+ * Can not link to 1Gbps with bad cable
+ * Decrease SNR threshold form 21.07dB to 19.04dB
+ */
+ { 0x1f, 0x0001 },
+ { 0x17, 0x0cc0 },
{ 0x1f, 0x0000 },
- { 0x0d, 0xf880 },
- { 0x1f, 0x0000 }
+ { 0x0d, 0xf880 }
};
+ void __iomem *ioaddr = tp->mmio_addr;
+ const struct firmware *fw;
rtl_phy_write(ioaddr, phy_reg_init_0, ARRAY_SIZE(phy_reg_init_0));
+ /*
+ * Rx Error Issue
+ * Fine Tune Switching regulator parameter
+ */
mdio_write(ioaddr, 0x1f, 0x0002);
mdio_plus_minus(ioaddr, 0x0b, 0x0010, 0x00ef);
mdio_plus_minus(ioaddr, 0x0c, 0xa200, 0x5d00);
- rtl_phy_write(ioaddr, phy_reg_init_1, ARRAY_SIZE(phy_reg_init_1));
-
if (rtl8168d_efuse_read(ioaddr, 0x01) == 0xb1) {
static const struct phy_reg phy_reg_init[] = {
{ 0x1f, 0x0002 },
@@ -2147,20 +1855,35 @@ static void rtl8168d_1_hw_phy_config(void __iomem *ioaddr)
rtl_phy_write(ioaddr, phy_reg_init, ARRAY_SIZE(phy_reg_init));
}
+ /* RSET couple improve */
mdio_write(ioaddr, 0x1f, 0x0002);
mdio_patch(ioaddr, 0x0d, 0x0300);
mdio_patch(ioaddr, 0x0f, 0x0010);
+ /* Fine tune PLL performance */
mdio_write(ioaddr, 0x1f, 0x0002);
mdio_plus_minus(ioaddr, 0x02, 0x0100, 0x0600);
mdio_plus_minus(ioaddr, 0x03, 0x0000, 0xe000);
- rtl_phy_write(ioaddr, phy_reg_init_2, ARRAY_SIZE(phy_reg_init_2));
+ mdio_write(ioaddr, 0x1F, 0x0005);
+ mdio_write(ioaddr, 0x05, 0x001B);
+ if (mdio_read(ioaddr, 0x06) == 0xBF00 &&
+ request_firmware(&fw, "rtl_nic/rtl8168d-1.fw", &tp->pci_dev->dev) == 0) {
+ rtl_phy_write_fw(tp, fw);
+ release_firmware(fw);
+ } else {
+ netif_warn(tp, probe, tp->dev, "unable to apply firmware patch\n");
+ }
+
+ mdio_write(ioaddr, 0x1f, 0x0000);
}
-static void rtl8168d_2_hw_phy_config(void __iomem *ioaddr)
+MODULE_FIRMWARE("rtl_nic/rtl8168d-1.fw");
+
+static void rtl8168d_2_hw_phy_config(struct rtl8169_private *tp)
{
static const struct phy_reg phy_reg_init_0[] = {
+ /* Channel Estimation */
{ 0x1f, 0x0001 },
{ 0x06, 0x4064 },
{ 0x07, 0x2863 },
@@ -2179,324 +1902,28 @@ static void rtl8168d_2_hw_phy_config(void __iomem *ioaddr)
{ 0x1a, 0x05ad },
{ 0x14, 0x94c0 },
+ /*
+ * Tx Error Issue
+ * enhance line driver power
+ */
{ 0x1f, 0x0002 },
{ 0x06, 0x5561 },
{ 0x1f, 0x0005 },
{ 0x05, 0x8332 },
- { 0x06, 0x5561 }
- };
- static const struct phy_reg phy_reg_init_1[] = {
- { 0x1f, 0x0005 },
- { 0x05, 0xffc2 },
- { 0x1f, 0x0005 },
- { 0x05, 0x8000 },
- { 0x06, 0xf8f9 },
- { 0x06, 0xfaee },
- { 0x06, 0xf8ea },
- { 0x06, 0x00ee },
- { 0x06, 0xf8eb },
- { 0x06, 0x00e2 },
- { 0x06, 0xf87c },
- { 0x06, 0xe3f8 },
- { 0x06, 0x7da5 },
- { 0x06, 0x1111 },
- { 0x06, 0x12d2 },
- { 0x06, 0x40d6 },
- { 0x06, 0x4444 },
- { 0x06, 0x0281 },
- { 0x06, 0xc6d2 },
- { 0x06, 0xa0d6 },
- { 0x06, 0xaaaa },
- { 0x06, 0x0281 },
- { 0x06, 0xc6ae },
- { 0x06, 0x0fa5 },
- { 0x06, 0x4444 },
- { 0x06, 0x02ae },
- { 0x06, 0x4da5 },
- { 0x06, 0xaaaa },
- { 0x06, 0x02ae },
- { 0x06, 0x47af },
- { 0x06, 0x81c2 },
- { 0x06, 0xee83 },
- { 0x06, 0x4e00 },
- { 0x06, 0xee83 },
- { 0x06, 0x4d0f },
- { 0x06, 0xee83 },
- { 0x06, 0x4c0f },
- { 0x06, 0xee83 },
- { 0x06, 0x4f00 },
- { 0x06, 0xee83 },
- { 0x06, 0x5100 },
- { 0x06, 0xee83 },
- { 0x06, 0x4aff },
- { 0x06, 0xee83 },
- { 0x06, 0x4bff },
- { 0x06, 0xe083 },
- { 0x06, 0x30e1 },
- { 0x06, 0x8331 },
- { 0x06, 0x58fe },
- { 0x06, 0xe4f8 },
- { 0x06, 0x8ae5 },
- { 0x06, 0xf88b },
- { 0x06, 0xe083 },
- { 0x06, 0x32e1 },
- { 0x06, 0x8333 },
- { 0x06, 0x590f },
- { 0x06, 0xe283 },
- { 0x06, 0x4d0c },
- { 0x06, 0x245a },
- { 0x06, 0xf01e },
- { 0x06, 0x12e4 },
- { 0x06, 0xf88c },
- { 0x06, 0xe5f8 },
- { 0x06, 0x8daf },
- { 0x06, 0x81c2 },
- { 0x06, 0xe083 },
- { 0x06, 0x4f10 },
- { 0x06, 0xe483 },
- { 0x06, 0x4fe0 },
- { 0x06, 0x834e },
- { 0x06, 0x7800 },
- { 0x06, 0x9f0a },
- { 0x06, 0xe083 },
- { 0x06, 0x4fa0 },
- { 0x06, 0x10a5 },
- { 0x06, 0xee83 },
- { 0x06, 0x4e01 },
- { 0x06, 0xe083 },
- { 0x06, 0x4e78 },
- { 0x06, 0x059e },
- { 0x06, 0x9ae0 },
- { 0x06, 0x834e },
- { 0x06, 0x7804 },
- { 0x06, 0x9e10 },
- { 0x06, 0xe083 },
- { 0x06, 0x4e78 },
- { 0x06, 0x039e },
- { 0x06, 0x0fe0 },
- { 0x06, 0x834e },
- { 0x06, 0x7801 },
- { 0x06, 0x9e05 },
- { 0x06, 0xae0c },
- { 0x06, 0xaf81 },
- { 0x06, 0xa7af },
- { 0x06, 0x8152 },
- { 0x06, 0xaf81 },
- { 0x06, 0x8baf },
- { 0x06, 0x81c2 },
- { 0x06, 0xee83 },
- { 0x06, 0x4800 },
- { 0x06, 0xee83 },
- { 0x06, 0x4900 },
- { 0x06, 0xe083 },
- { 0x06, 0x5110 },
- { 0x06, 0xe483 },
- { 0x06, 0x5158 },
- { 0x06, 0x019f },
- { 0x06, 0xead0 },
- { 0x06, 0x00d1 },
- { 0x06, 0x801f },
- { 0x06, 0x66e2 },
- { 0x06, 0xf8ea },
- { 0x06, 0xe3f8 },
- { 0x06, 0xeb5a },
- { 0x06, 0xf81e },
- { 0x06, 0x20e6 },
- { 0x06, 0xf8ea },
- { 0x06, 0xe5f8 },
- { 0x06, 0xebd3 },
- { 0x06, 0x02b3 },
- { 0x06, 0xfee2 },
- { 0x06, 0xf87c },
- { 0x06, 0xef32 },
- { 0x06, 0x5b80 },
- { 0x06, 0xe3f8 },
- { 0x06, 0x7d9e },
- { 0x06, 0x037d },
- { 0x06, 0xffff },
- { 0x06, 0x0d58 },
- { 0x06, 0x1c55 },
- { 0x06, 0x1a65 },
- { 0x06, 0x11a1 },
- { 0x06, 0x90d3 },
- { 0x06, 0xe283 },
- { 0x06, 0x48e3 },
- { 0x06, 0x8349 },
- { 0x06, 0x1b56 },
- { 0x06, 0xab08 },
- { 0x06, 0xef56 },
- { 0x06, 0xe683 },
- { 0x06, 0x48e7 },
- { 0x06, 0x8349 },
- { 0x06, 0x10d1 },
- { 0x06, 0x801f },
- { 0x06, 0x66a0 },
- { 0x06, 0x04b9 },
- { 0x06, 0xe283 },
- { 0x06, 0x48e3 },
- { 0x06, 0x8349 },
- { 0x06, 0xef65 },
- { 0x06, 0xe283 },
- { 0x06, 0x4ae3 },
- { 0x06, 0x834b },
- { 0x06, 0x1b56 },
- { 0x06, 0xaa0e },
- { 0x06, 0xef56 },
- { 0x06, 0xe683 },
- { 0x06, 0x4ae7 },
- { 0x06, 0x834b },
- { 0x06, 0xe283 },
- { 0x06, 0x4de6 },
- { 0x06, 0x834c },
- { 0x06, 0xe083 },
- { 0x06, 0x4da0 },
- { 0x06, 0x000c },
- { 0x06, 0xaf81 },
- { 0x06, 0x8be0 },
- { 0x06, 0x834d },
- { 0x06, 0x10e4 },
- { 0x06, 0x834d },
- { 0x06, 0xae04 },
- { 0x06, 0x80e4 },
- { 0x06, 0x834d },
- { 0x06, 0xe083 },
- { 0x06, 0x4e78 },
- { 0x06, 0x039e },
- { 0x06, 0x0be0 },
- { 0x06, 0x834e },
- { 0x06, 0x7804 },
- { 0x06, 0x9e04 },
- { 0x06, 0xee83 },
- { 0x06, 0x4e02 },
- { 0x06, 0xe083 },
- { 0x06, 0x32e1 },
- { 0x06, 0x8333 },
- { 0x06, 0x590f },
- { 0x06, 0xe283 },
- { 0x06, 0x4d0c },
- { 0x06, 0x245a },
- { 0x06, 0xf01e },
- { 0x06, 0x12e4 },
- { 0x06, 0xf88c },
- { 0x06, 0xe5f8 },
- { 0x06, 0x8de0 },
- { 0x06, 0x8330 },
- { 0x06, 0xe183 },
- { 0x06, 0x3168 },
- { 0x06, 0x01e4 },
- { 0x06, 0xf88a },
- { 0x06, 0xe5f8 },
- { 0x06, 0x8bae },
- { 0x06, 0x37ee },
- { 0x06, 0x834e },
- { 0x06, 0x03e0 },
- { 0x06, 0x834c },
- { 0x06, 0xe183 },
- { 0x06, 0x4d1b },
- { 0x06, 0x019e },
- { 0x06, 0x04aa },
- { 0x06, 0xa1ae },
- { 0x06, 0xa8ee },
- { 0x06, 0x834e },
- { 0x06, 0x04ee },
- { 0x06, 0x834f },
- { 0x06, 0x00ae },
- { 0x06, 0xabe0 },
- { 0x06, 0x834f },
- { 0x06, 0x7803 },
- { 0x06, 0x9f14 },
- { 0x06, 0xee83 },
- { 0x06, 0x4e05 },
- { 0x06, 0xd240 },
- { 0x06, 0xd655 },
- { 0x06, 0x5402 },
- { 0x06, 0x81c6 },
- { 0x06, 0xd2a0 },
- { 0x06, 0xd6ba },
- { 0x06, 0x0002 },
- { 0x06, 0x81c6 },
- { 0x06, 0xfefd },
- { 0x06, 0xfc05 },
- { 0x06, 0xf8e0 },
- { 0x06, 0xf860 },
- { 0x06, 0xe1f8 },
- { 0x06, 0x6168 },
- { 0x06, 0x02e4 },
- { 0x06, 0xf860 },
- { 0x06, 0xe5f8 },
- { 0x06, 0x61e0 },
- { 0x06, 0xf848 },
- { 0x06, 0xe1f8 },
- { 0x06, 0x4958 },
- { 0x06, 0x0f1e },
- { 0x06, 0x02e4 },
- { 0x06, 0xf848 },
- { 0x06, 0xe5f8 },
- { 0x06, 0x49d0 },
- { 0x06, 0x0002 },
- { 0x06, 0x820a },
- { 0x06, 0xbf83 },
- { 0x06, 0x50ef },
- { 0x06, 0x46dc },
- { 0x06, 0x19dd },
- { 0x06, 0xd001 },
- { 0x06, 0x0282 },
- { 0x06, 0x0a02 },
- { 0x06, 0x8226 },
- { 0x06, 0xe0f8 },
- { 0x06, 0x60e1 },
- { 0x06, 0xf861 },
- { 0x06, 0x58fd },
- { 0x06, 0xe4f8 },
- { 0x06, 0x60e5 },
- { 0x06, 0xf861 },
- { 0x06, 0xfc04 },
- { 0x06, 0xf9fa },
- { 0x06, 0xfbc6 },
- { 0x06, 0xbff8 },
- { 0x06, 0x40be },
- { 0x06, 0x8350 },
- { 0x06, 0xa001 },
- { 0x06, 0x0107 },
- { 0x06, 0x1b89 },
- { 0x06, 0xcfd2 },
- { 0x06, 0x08eb },
- { 0x06, 0xdb19 },
- { 0x06, 0xb2fb },
- { 0x06, 0xfffe },
- { 0x06, 0xfd04 },
- { 0x06, 0xf8e0 },
- { 0x06, 0xf848 },
- { 0x06, 0xe1f8 },
- { 0x06, 0x4968 },
- { 0x06, 0x08e4 },
- { 0x06, 0xf848 },
- { 0x06, 0xe5f8 },
- { 0x06, 0x4958 },
- { 0x06, 0xf7e4 },
- { 0x06, 0xf848 },
- { 0x06, 0xe5f8 },
- { 0x06, 0x49fc },
- { 0x06, 0x044d },
- { 0x06, 0x2000 },
- { 0x06, 0x024e },
- { 0x06, 0x2200 },
- { 0x06, 0x024d },
- { 0x06, 0xdfff },
- { 0x06, 0x014e },
- { 0x06, 0xddff },
- { 0x06, 0x0100 },
- { 0x05, 0x83d8 },
- { 0x06, 0x8000 },
- { 0x03, 0xdc00 },
- { 0x05, 0xfff6 },
- { 0x06, 0x00fc },
- { 0x1f, 0x0000 },
+ { 0x06, 0x5561 },
+
+ /*
+ * Can not link to 1Gbps with bad cable
+ * Decrease SNR threshold form 21.07dB to 19.04dB
+ */
+ { 0x1f, 0x0001 },
+ { 0x17, 0x0cc0 },
{ 0x1f, 0x0000 },
- { 0x0d, 0xf880 },
- { 0x1f, 0x0000 }
+ { 0x0d, 0xf880 }
};
+ void __iomem *ioaddr = tp->mmio_addr;
+ const struct firmware *fw;
rtl_phy_write(ioaddr, phy_reg_init_0, ARRAY_SIZE(phy_reg_init_0));
@@ -2540,19 +1967,30 @@ static void rtl8168d_2_hw_phy_config(void __iomem *ioaddr)
rtl_phy_write(ioaddr, phy_reg_init, ARRAY_SIZE(phy_reg_init));
}
+ /* Fine tune PLL performance */
mdio_write(ioaddr, 0x1f, 0x0002);
mdio_plus_minus(ioaddr, 0x02, 0x0100, 0x0600);
mdio_plus_minus(ioaddr, 0x03, 0x0000, 0xe000);
- mdio_write(ioaddr, 0x1f, 0x0001);
- mdio_write(ioaddr, 0x17, 0x0cc0);
-
+ /* Switching regulator Slew rate */
mdio_write(ioaddr, 0x1f, 0x0002);
mdio_patch(ioaddr, 0x0f, 0x0017);
- rtl_phy_write(ioaddr, phy_reg_init_1, ARRAY_SIZE(phy_reg_init_1));
+ mdio_write(ioaddr, 0x1F, 0x0005);
+ mdio_write(ioaddr, 0x05, 0x001B);
+ if (mdio_read(ioaddr, 0x06) == 0xB300 &&
+ request_firmware(&fw, "rtl_nic/rtl8168d-2.fw", &tp->pci_dev->dev) == 0) {
+ rtl_phy_write_fw(tp, fw);
+ release_firmware(fw);
+ } else {
+ netif_warn(tp, probe, tp->dev, "unable to apply firmware patch\n");
+ }
+
+ mdio_write(ioaddr, 0x1f, 0x0000);
}
+MODULE_FIRMWARE("rtl_nic/rtl8168d-2.fw");
+
static void rtl8168d_3_hw_phy_config(void __iomem *ioaddr)
{
static const struct phy_reg phy_reg_init[] = {
@@ -2688,10 +2126,10 @@ static void rtl_hw_phy_config(struct net_device *dev)
rtl8168cp_2_hw_phy_config(ioaddr);
break;
case RTL_GIGA_MAC_VER_25:
- rtl8168d_1_hw_phy_config(ioaddr);
+ rtl8168d_1_hw_phy_config(tp);
break;
case RTL_GIGA_MAC_VER_26:
- rtl8168d_2_hw_phy_config(ioaddr);
+ rtl8168d_2_hw_phy_config(tp);
break;
case RTL_GIGA_MAC_VER_27:
rtl8168d_3_hw_phy_config(ioaddr);
--
1.7.3.2
^ permalink raw reply related
* Re: [PATCH net-next-2.6] pktgen: adding prefetchw() call
From: Eric Dumazet @ 2010-12-06 7:26 UTC (permalink / raw)
To: Junchang Wang
Cc: davem, robert.olsson, john.r.fastabend, andy.shevchenko, netdev
In-Reply-To: <20101206063349.GA6147@Desktop-Junchang>
Le lundi 06 décembre 2010 à 14:33 +0800, Junchang Wang a écrit :
> We know for sure pktgen is going to write skb->data right after
> *_alloc_skb, causing unnecessary cache misses.
>
> Idea is to add a prefetchw() call to prefetch the first cache line
> indicated by skb->data. On systems with Adjacent Cache Line Prefetch,
> it's probably two cache lines are prefetched.
> With this prefetch, pktgen on Intel SR1625 server with two E5530
> quad-core processors and a single ixgbe-based NIC went from 8.63Mpps
> to 9.03Mpps, with 4.6% improvement.
>
>
> Signed-off-by: Junchang Wang <junchangwang@gmail.com>
> ---
Acked-by: Eric Dumazet <eric.dumazet@gmail.com>
^ permalink raw reply
* net-next-2.6 [PATCH 0/2] dccp: Policy-based packet dequeueing interface
From: Gerrit Renker @ 2010-12-06 7:44 UTC (permalink / raw)
To: davem; +Cc: dccp, netdev
In-Reply-To: <dccp_net_next_2_6__packet_dequeueing_interface>
Hi Dave,
please find attached a self-contained 2-patch set by Tomasz which adds an API
to influence DCCP packet dequeueing. It evolved from discussions in 2008,
adding and adds basic building blocks for sending congestion controlled
multimedia packets that have a priority or a deadline attached to them.
Occasionally people still make new suggestions for such an API, apparently
overlooking the excellent work Tomasz has done and which has been in the
test tree for two years.
Patch #1: introduces the new policy-based packet dequeueing infrastructure.
Patch #2: adds parameter (sanity) checking of cmsg qpolicy parameters.
I have also placed this in into a fresh (today's) copy of net-next-2.6, on
git://eden-feed.erg.abdn.ac.uk/net-next-2.6 [subtree 'dccp']
The set is fully bisectable.
---
Documentation/networking/dccp.txt | 20 ++++++
include/linux/dccp.h | 21 ++++++
net/dccp/Makefile | 4 +-
net/dccp/dccp.h | 13 ++++
net/dccp/output.c | 7 +-
net/dccp/proto.c | 71 ++++++++++++++++++-
net/dccp/qpolicy.c | 137 +++++++++++++++++++++++++++++++++++++
7 files changed, 264 insertions(+), 9 deletions(-)
^ permalink raw reply
* [PATCH 1/2] dccp: Policy-based packet dequeueing infrastructure
From: Gerrit Renker @ 2010-12-06 7:44 UTC (permalink / raw)
To: davem; +Cc: dccp, netdev, Tomasz Grobelny
In-Reply-To: <1291621444-5927-1-git-send-email-gerrit@erg.abdn.ac.uk>
From: Tomasz Grobelny <tomasz@grobelny.oswiecenia.net>
This patch adds a generic infrastructure for policy-based dequeueing of
TX packets and provides two policies:
* a simple FIFO policy (which is the default) and
* a priority based policy (set via socket options).
Both policies honour the tx_qlen sysctl for the maximum size of the write
queue (can be overridden via socket options).
The priority policy uses skb->priority internally to assign an u32 priority
identifier, using the same ranking as SO_PRIORITY. The skb->priority field
is set to 0 when the packet leaves DCCP. The priority is supplied as ancillary
data using cmsg(3), the patch also provides the requisite parsing routines.
Signed-off-by: Tomasz Grobelny <tomasz@grobelny.oswiecenia.net>
Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
---
Documentation/networking/dccp.txt | 20 ++++++
include/linux/dccp.h | 21 ++++++
net/dccp/Makefile | 4 +-
net/dccp/dccp.h | 12 ++++
net/dccp/output.c | 7 +-
net/dccp/proto.c | 67 +++++++++++++++++++-
net/dccp/qpolicy.c | 126 +++++++++++++++++++++++++++++++++++++
7 files changed, 248 insertions(+), 9 deletions(-)
create mode 100644 net/dccp/qpolicy.c
--- a/Documentation/networking/dccp.txt
+++ b/Documentation/networking/dccp.txt
@@ -47,6 +47,26 @@ http://linux-net.osdl.org/index.php/DCCP_Testing#Experimental_DCCP_source_tree
Socket options
==============
+DCCP_SOCKOPT_QPOLICY_ID sets the dequeuing policy for outgoing packets. It takes
+a policy ID as argument and can only be set before the connection (i.e. changes
+during an established connection are not supported). Currently, two policies are
+defined: the "simple" policy (DCCPQ_POLICY_SIMPLE), which does nothing special,
+and a priority-based variant (DCCPQ_POLICY_PRIO). The latter allows to pass an
+u32 priority value as ancillary data to sendmsg(), where higher numbers indicate
+a higher packet priority (similar to SO_PRIORITY). This ancillary data needs to
+be formatted using a cmsg(3) message header filled in as follows:
+ cmsg->cmsg_level = SOL_DCCP;
+ cmsg->cmsg_type = DCCP_SCM_PRIORITY;
+ cmsg->cmsg_len = CMSG_LEN(sizeof(uint32_t)); /* or CMSG_LEN(4) */
+
+DCCP_SOCKOPT_QPOLICY_TXQLEN sets the maximum length of the output queue. A zero
+value is always interpreted as unbounded queue length. If different from zero,
+the interpretation of this parameter depends on the current dequeuing policy
+(see above): the "simple" policy will enforce a fixed queue size by returning
+EAGAIN, whereas the "prio" policy enforces a fixed queue length by dropping the
+lowest-priority packet first. The default value for this parameter is
+initialised from /proc/sys/net/dccp/default/tx_qlen.
+
DCCP_SOCKOPT_SERVICE sets the service. The specification mandates use of
service codes (RFC 4340, sec. 8.1.2); if this socket option is not set,
the socket will fall back to 0 (which means that no meaningful service code
--- a/net/dccp/dccp.h
+++ b/net/dccp/dccp.h
@@ -243,6 +243,18 @@ extern void dccp_reqsk_send_ack(struct sock *sk, struct sk_buff *skb,
extern void dccp_send_sync(struct sock *sk, const u64 seq,
const enum dccp_pkt_type pkt_type);
+/*
+ * TX Packet Dequeueing Interface
+ */
+extern void dccp_qpolicy_push(struct sock *sk, struct sk_buff *skb);
+extern bool dccp_qpolicy_full(struct sock *sk);
+extern void dccp_qpolicy_drop(struct sock *sk, struct sk_buff *skb);
+extern struct sk_buff *dccp_qpolicy_top(struct sock *sk);
+extern struct sk_buff *dccp_qpolicy_pop(struct sock *sk);
+
+/*
+ * TX Packet Output and TX Timers
+ */
extern void dccp_write_xmit(struct sock *sk);
extern void dccp_write_space(struct sock *sk);
extern void dccp_flush_write_queue(struct sock *sk, long *time_budget);
--- a/include/linux/dccp.h
+++ b/include/linux/dccp.h
@@ -197,6 +197,21 @@ enum dccp_feature_numbers {
DCCPF_MAX_CCID_SPECIFIC = 255,
};
+/* DCCP socket control message types for cmsg */
+enum dccp_cmsg_type {
+ DCCP_SCM_PRIORITY = 1,
+ DCCP_SCM_QPOLICY_MAX = 0xFFFF,
+ /* ^-- Up to here reserved exclusively for qpolicy parameters */
+ DCCP_SCM_MAX
+};
+
+/* DCCP priorities for outgoing/queued packets */
+enum dccp_packet_dequeueing_policy {
+ DCCPQ_POLICY_SIMPLE,
+ DCCPQ_POLICY_PRIO,
+ DCCPQ_POLICY_MAX
+};
+
/* DCCP socket options */
#define DCCP_SOCKOPT_PACKET_SIZE 1 /* XXX deprecated, without effect */
#define DCCP_SOCKOPT_SERVICE 2
@@ -210,6 +225,8 @@ enum dccp_feature_numbers {
#define DCCP_SOCKOPT_CCID 13
#define DCCP_SOCKOPT_TX_CCID 14
#define DCCP_SOCKOPT_RX_CCID 15
+#define DCCP_SOCKOPT_QPOLICY_ID 16
+#define DCCP_SOCKOPT_QPOLICY_TXQLEN 17
#define DCCP_SOCKOPT_CCID_RX_INFO 128
#define DCCP_SOCKOPT_CCID_TX_INFO 192
@@ -458,6 +475,8 @@ struct dccp_ackvec;
* @dccps_hc_rx_ccid - CCID used for the receiver (or receiving half-connection)
* @dccps_hc_tx_ccid - CCID used for the sender (or sending half-connection)
* @dccps_options_received - parsed set of retrieved options
+ * @dccps_qpolicy - TX dequeueing policy, one of %dccp_packet_dequeueing_policy
+ * @dccps_tx_qlen - maximum length of the TX queue
* @dccps_role - role of this sock, one of %dccp_role
* @dccps_hc_rx_insert_options - receiver wants to add options when acking
* @dccps_hc_tx_insert_options - sender wants to add options when sending
@@ -500,6 +519,8 @@ struct dccp_sock {
struct ccid *dccps_hc_rx_ccid;
struct ccid *dccps_hc_tx_ccid;
struct dccp_options_received dccps_options_received;
+ __u8 dccps_qpolicy;
+ __u32 dccps_tx_qlen;
enum dccp_role dccps_role:2;
__u8 dccps_hc_rx_insert_options:1;
__u8 dccps_hc_tx_insert_options:1;
--- a/net/dccp/output.c
+++ b/net/dccp/output.c
@@ -242,7 +242,7 @@ static void dccp_xmit_packet(struct sock *sk)
{
int err, len;
struct dccp_sock *dp = dccp_sk(sk);
- struct sk_buff *skb = skb_dequeue(&sk->sk_write_queue);
+ struct sk_buff *skb = dccp_qpolicy_pop(sk);
if (unlikely(skb == NULL))
return;
@@ -345,7 +345,7 @@ void dccp_write_xmit(struct sock *sk)
struct dccp_sock *dp = dccp_sk(sk);
struct sk_buff *skb;
- while ((skb = skb_peek(&sk->sk_write_queue))) {
+ while ((skb = dccp_qpolicy_top(sk))) {
int rc = ccid_hc_tx_send_packet(dp->dccps_hc_tx_ccid, sk, skb);
switch (ccid_packet_dequeue_eval(rc)) {
@@ -359,8 +359,7 @@ void dccp_write_xmit(struct sock *sk)
dccp_xmit_packet(sk);
break;
case CCID_PACKET_ERR:
- skb_dequeue(&sk->sk_write_queue);
- kfree_skb(skb);
+ dccp_qpolicy_drop(sk, skb);
dccp_pr_debug("packet discarded due to err=%d\n", rc);
}
}
--- a/net/dccp/proto.c
+++ b/net/dccp/proto.c
@@ -185,6 +185,7 @@ int dccp_init_sock(struct sock *sk, const __u8 ctl_sock_initialized)
dp->dccps_role = DCCP_ROLE_UNDEFINED;
dp->dccps_service = DCCP_SERVICE_CODE_IS_ABSENT;
dp->dccps_l_ack_ratio = dp->dccps_r_ack_ratio = 1;
+ dp->dccps_tx_qlen = sysctl_dccp_tx_qlen;
dccp_init_xmit_timers(sk);
@@ -532,6 +533,20 @@ static int do_dccp_setsockopt(struct sock *sk, int level, int optname,
case DCCP_SOCKOPT_RECV_CSCOV:
err = dccp_setsockopt_cscov(sk, val, true);
break;
+ case DCCP_SOCKOPT_QPOLICY_ID:
+ if (sk->sk_state != DCCP_CLOSED)
+ err = -EISCONN;
+ else if (val < 0 || val >= DCCPQ_POLICY_MAX)
+ err = -EINVAL;
+ else
+ dp->dccps_qpolicy = val;
+ break;
+ case DCCP_SOCKOPT_QPOLICY_TXQLEN:
+ if (val < 0)
+ err = -EINVAL;
+ else
+ dp->dccps_tx_qlen = val;
+ break;
default:
err = -ENOPROTOOPT;
break;
@@ -639,6 +654,12 @@ static int do_dccp_getsockopt(struct sock *sk, int level, int optname,
case DCCP_SOCKOPT_RECV_CSCOV:
val = dp->dccps_pcrlen;
break;
+ case DCCP_SOCKOPT_QPOLICY_ID:
+ val = dp->dccps_qpolicy;
+ break;
+ case DCCP_SOCKOPT_QPOLICY_TXQLEN:
+ val = dp->dccps_tx_qlen;
+ break;
case 128 ... 191:
return ccid_hc_rx_getsockopt(dp->dccps_hc_rx_ccid, sk, optname,
len, (u32 __user *)optval, optlen);
@@ -681,6 +702,43 @@ int compat_dccp_getsockopt(struct sock *sk, int level, int optname,
EXPORT_SYMBOL_GPL(compat_dccp_getsockopt);
#endif
+static int dccp_msghdr_parse(struct msghdr *msg, struct sk_buff *skb)
+{
+ struct cmsghdr *cmsg = CMSG_FIRSTHDR(msg);
+
+ /*
+ * Assign an (opaque) qpolicy priority value to skb->priority.
+ *
+ * We are overloading this skb field for use with the qpolicy subystem.
+ * The skb->priority is normally used for the SO_PRIORITY option, which
+ * is initialised from sk_priority. Since the assignment of sk_priority
+ * to skb->priority happens later (on layer 3), we overload this field
+ * for use with queueing priorities as long as the skb is on layer 4.
+ * The default priority value (if nothing is set) is 0.
+ */
+ skb->priority = 0;
+
+ for (; cmsg != NULL; cmsg = CMSG_NXTHDR(msg, cmsg)) {
+
+ if (!CMSG_OK(msg, cmsg))
+ return -EINVAL;
+
+ if (cmsg->cmsg_level != SOL_DCCP)
+ continue;
+
+ switch (cmsg->cmsg_type) {
+ case DCCP_SCM_PRIORITY:
+ if (cmsg->cmsg_len != CMSG_LEN(sizeof(__u32)))
+ return -EINVAL;
+ skb->priority = *(__u32 *)CMSG_DATA(cmsg);
+ break;
+ default:
+ return -EINVAL;
+ }
+ }
+ return 0;
+}
+
int dccp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
size_t len)
{
@@ -696,8 +754,7 @@ int dccp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
lock_sock(sk);
- if (sysctl_dccp_tx_qlen &&
- (sk->sk_write_queue.qlen >= sysctl_dccp_tx_qlen)) {
+ if (dccp_qpolicy_full(sk)) {
rc = -EAGAIN;
goto out_release;
}
@@ -725,7 +782,11 @@ int dccp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
if (rc != 0)
goto out_discard;
- skb_queue_tail(&sk->sk_write_queue, skb);
+ rc = dccp_msghdr_parse(msg, skb);
+ if (rc != 0)
+ goto out_discard;
+
+ dccp_qpolicy_push(sk, skb);
/*
* The xmit_timer is set if the TX CCID is rate-based and will expire
* when congestion control permits to release further packets into the
new file mode 100644
--- /dev/null
+++ b/net/dccp/qpolicy.c
@@ -0,0 +1,126 @@
+/*
+ * net/dccp/qpolicy.c
+ *
+ * Policy-based packet dequeueing interface for DCCP.
+ *
+ * Copyright (c) 2008 Tomasz Grobelny <tomasz@grobelny.oswiecenia.net>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License v2
+ * as published by the Free Software Foundation.
+ */
+#include "dccp.h"
+
+/*
+ * Simple Dequeueing Policy:
+ * If tx_qlen is different from 0, enqueue up to tx_qlen elements.
+ */
+static void qpolicy_simple_push(struct sock *sk, struct sk_buff *skb)
+{
+ skb_queue_tail(&sk->sk_write_queue, skb);
+}
+
+static bool qpolicy_simple_full(struct sock *sk)
+{
+ return dccp_sk(sk)->dccps_tx_qlen &&
+ sk->sk_write_queue.qlen >= dccp_sk(sk)->dccps_tx_qlen;
+}
+
+static struct sk_buff *qpolicy_simple_top(struct sock *sk)
+{
+ return skb_peek(&sk->sk_write_queue);
+}
+
+/*
+ * Priority-based Dequeueing Policy:
+ * If tx_qlen is different from 0 and the queue has reached its upper bound
+ * of tx_qlen elements, replace older packets lowest-priority-first.
+ */
+static struct sk_buff *qpolicy_prio_best_skb(struct sock *sk)
+{
+ struct sk_buff *skb, *best = NULL;
+
+ skb_queue_walk(&sk->sk_write_queue, skb)
+ if (best == NULL || skb->priority > best->priority)
+ best = skb;
+ return best;
+}
+
+static struct sk_buff *qpolicy_prio_worst_skb(struct sock *sk)
+{
+ struct sk_buff *skb, *worst = NULL;
+
+ skb_queue_walk(&sk->sk_write_queue, skb)
+ if (worst == NULL || skb->priority < worst->priority)
+ worst = skb;
+ return worst;
+}
+
+static bool qpolicy_prio_full(struct sock *sk)
+{
+ if (qpolicy_simple_full(sk))
+ dccp_qpolicy_drop(sk, qpolicy_prio_worst_skb(sk));
+ return false;
+}
+
+/**
+ * struct dccp_qpolicy_operations - TX Packet Dequeueing Interface
+ * @push: add a new @skb to the write queue
+ * @full: indicates that no more packets will be admitted
+ * @top: peeks at whatever the queueing policy defines as its `top'
+ */
+static struct dccp_qpolicy_operations {
+ void (*push) (struct sock *sk, struct sk_buff *skb);
+ bool (*full) (struct sock *sk);
+ struct sk_buff* (*top) (struct sock *sk);
+
+} qpol_table[DCCPQ_POLICY_MAX] = {
+ [DCCPQ_POLICY_SIMPLE] = {
+ .push = qpolicy_simple_push,
+ .full = qpolicy_simple_full,
+ .top = qpolicy_simple_top,
+ },
+ [DCCPQ_POLICY_PRIO] = {
+ .push = qpolicy_simple_push,
+ .full = qpolicy_prio_full,
+ .top = qpolicy_prio_best_skb,
+ },
+};
+
+/*
+ * Externally visible interface
+ */
+void dccp_qpolicy_push(struct sock *sk, struct sk_buff *skb)
+{
+ qpol_table[dccp_sk(sk)->dccps_qpolicy].push(sk, skb);
+}
+
+bool dccp_qpolicy_full(struct sock *sk)
+{
+ return qpol_table[dccp_sk(sk)->dccps_qpolicy].full(sk);
+}
+
+void dccp_qpolicy_drop(struct sock *sk, struct sk_buff *skb)
+{
+ if (skb != NULL) {
+ skb_unlink(skb, &sk->sk_write_queue);
+ kfree_skb(skb);
+ }
+}
+
+struct sk_buff *dccp_qpolicy_top(struct sock *sk)
+{
+ return qpol_table[dccp_sk(sk)->dccps_qpolicy].top(sk);
+}
+
+struct sk_buff *dccp_qpolicy_pop(struct sock *sk)
+{
+ struct sk_buff *skb = dccp_qpolicy_top(sk);
+
+ if (skb != NULL) {
+ /* Clear any skb fields that we used internally */
+ skb->priority = 0;
+ skb_unlink(skb, &sk->sk_write_queue);
+ }
+ return skb;
+}
--- a/net/dccp/Makefile
+++ b/net/dccp/Makefile
@@ -1,7 +1,7 @@
obj-$(CONFIG_IP_DCCP) += dccp.o dccp_ipv4.o
-dccp-y := ccid.o feat.o input.o minisocks.o options.o output.o proto.o timer.o
-
+dccp-y := ccid.o feat.o input.o minisocks.o options.o output.o proto.o timer.o \
+ qpolicy.o
#
# CCID algorithms to be used by dccp.ko
#
^ permalink raw reply
* [PATCH] Insert interrupt URB after resume, so that status transfers can flow.
From: Indrek Peri @ 2010-12-06 10:23 UTC (permalink / raw)
To: dbrownell; +Cc: netdev, Indrek Peri
Signed-off-by: Indrek Peri <Indrek.Peri@Ericsson.com>
---
drivers/net/usb/usbnet.c | 12 ++++++++++++
1 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
index c04d49e..eaa83f9 100644
--- a/drivers/net/usb/usbnet.c
+++ b/drivers/net/usb/usbnet.c
@@ -719,6 +719,7 @@ int usbnet_open (struct net_device *net)
/* start any status interrupt transfer */
if (dev->interrupt) {
+ usb_kill_urb(dev->interrupt); /* resume may add int urb */
retval = usb_submit_urb (dev->interrupt, GFP_KERNEL);
if (retval < 0) {
netif_err(dev, ifup, dev->net,
@@ -1495,6 +1496,17 @@ int usbnet_resume (struct usb_interface *intf)
spin_unlock_irq(&dev->txq.lock);
if (!(dev->txq.qlen >= TX_QLEN(dev)))
netif_start_queue(dev->net);
+
+ /* start any status interrupt transfer */
+ if (dev->interrupt) {
+ retval = usb_submit_urb(dev->interrupt, GFP_KERNEL);
+ if (retval < 0) {
+ netif_err(dev, ifup, dev->net,
+ "intr submit %d\n", retval);
+ return retval;
+ }
+ }
+
tasklet_schedule (&dev->bh);
}
return 0;
--
1.7.0.3
^ permalink raw reply related
* [PATCH] Dot not insert RX urbs if EVENT_DEV_ASLEEP flag is set.
From: Indrek Peri @ 2010-12-06 10:24 UTC (permalink / raw)
To: dbrownell; +Cc: netdev, Indrek Peri
Signed-off-by: Indrek Peri <Indrek.Peri@Ericsson.com>
---
drivers/net/usb/usbnet.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
index c04d49e..d83adcc 100644
--- a/drivers/net/usb/usbnet.c
+++ b/drivers/net/usb/usbnet.c
@@ -1172,7 +1172,8 @@ static void usbnet_bh (unsigned long param)
} else if (netif_running (dev->net) &&
netif_device_present (dev->net) &&
!timer_pending (&dev->delay) &&
- !test_bit (EVENT_RX_HALT, &dev->flags)) {
+ !test_bit (EVENT_RX_HALT, &dev->flags) &&
+ !test_bit (EVENT_DEV_ASLEEP, &dev->flags)) {
int temp = dev->rxq.qlen;
int qlen = RX_QLEN (dev);
--
1.7.0.3
^ permalink raw reply related
* [PATCH v2] via-rhine: hardware VLAN support
From: Roger Luethi @ 2010-12-06 10:59 UTC (permalink / raw)
To: netdev; +Cc: David S. Miller, Jesse Gross
This patch adds VLAN hardware support for Rhine chips.
The driver uses up to 3 additional bytes of buffer space when extracting
802.1Q headers; PKT_BUF_SZ should still be sufficient.
The initial code was provided by David Lv. I reworked it to use standard
kernel facilities. Coding style clean up mostly follows via-velocity.
Adapted to new interface for VLAN acceleration (per request of Jesse Gross).
Signed-off-by: David Lv <DavidLv@viatech.com.cn>
Signed-off-by: Roger Luethi <rl@hellgate.ch>
drivers/net/via-rhine.c | 326 +++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 312 insertions(+), 14 deletions(-)
diff --git a/drivers/net/via-rhine.c b/drivers/net/via-rhine.c
index 4930f9d..5e7f069 100644
--- a/drivers/net/via-rhine.c
+++ b/drivers/net/via-rhine.c
@@ -30,8 +30,8 @@
*/
#define DRV_NAME "via-rhine"
-#define DRV_VERSION "1.4.3"
-#define DRV_RELDATE "2007-03-06"
+#define DRV_VERSION "1.5.0"
+#define DRV_RELDATE "2010-10-09"
/* A few user-configurable values.
@@ -100,6 +100,7 @@ static const int multicast_filter_limit = 32;
#include <linux/mii.h>
#include <linux/ethtool.h>
#include <linux/crc32.h>
+#include <linux/if_vlan.h>
#include <linux/bitops.h>
#include <linux/workqueue.h>
#include <asm/processor.h> /* Processor type for cache alignment. */
@@ -133,6 +134,9 @@ MODULE_PARM_DESC(debug, "VIA Rhine debug level (0-7)");
MODULE_PARM_DESC(rx_copybreak, "VIA Rhine copy breakpoint for copy-only-tiny-frames");
MODULE_PARM_DESC(avoid_D3, "Avoid power state D3 (work-around for broken BIOSes)");
+#define MCAM_SIZE 32
+#define VCAM_SIZE 32
+
/*
Theory of Operation
@@ -279,15 +283,16 @@ MODULE_DEVICE_TABLE(pci, rhine_pci_tbl);
/* Offsets to the device registers. */
enum register_offsets {
StationAddr=0x00, RxConfig=0x06, TxConfig=0x07, ChipCmd=0x08,
- ChipCmd1=0x09,
+ ChipCmd1=0x09, TQWake=0x0A,
IntrStatus=0x0C, IntrEnable=0x0E,
MulticastFilter0=0x10, MulticastFilter1=0x14,
RxRingPtr=0x18, TxRingPtr=0x1C, GFIFOTest=0x54,
- MIIPhyAddr=0x6C, MIIStatus=0x6D, PCIBusConfig=0x6E,
+ MIIPhyAddr=0x6C, MIIStatus=0x6D, PCIBusConfig=0x6E, PCIBusConfig1=0x6F,
MIICmd=0x70, MIIRegAddr=0x71, MIIData=0x72, MACRegEEcsr=0x74,
ConfigA=0x78, ConfigB=0x79, ConfigC=0x7A, ConfigD=0x7B,
RxMissed=0x7C, RxCRCErrs=0x7E, MiscCmd=0x81,
StickyHW=0x83, IntrStatus2=0x84,
+ CamMask=0x88, CamCon=0x92, CamAddr=0x93,
WOLcrSet=0xA0, PwcfgSet=0xA1, WOLcgSet=0xA3, WOLcrClr=0xA4,
WOLcrClr1=0xA6, WOLcgClr=0xA7,
PwrcsrSet=0xA8, PwrcsrSet1=0xA9, PwrcsrClr=0xAC, PwrcsrClr1=0xAD,
@@ -299,6 +304,40 @@ enum backoff_bits {
BackCaptureEffect=0x04, BackRandom=0x08
};
+/* Bits in the TxConfig (TCR) register */
+enum tcr_bits {
+ TCR_PQEN=0x01,
+ TCR_LB0=0x02, /* loopback[0] */
+ TCR_LB1=0x04, /* loopback[1] */
+ TCR_OFSET=0x08,
+ TCR_RTGOPT=0x10,
+ TCR_RTFT0=0x20,
+ TCR_RTFT1=0x40,
+ TCR_RTSF=0x80,
+};
+
+/* Bits in the CamCon (CAMC) register */
+enum camcon_bits {
+ CAMC_CAMEN=0x01,
+ CAMC_VCAMSL=0x02,
+ CAMC_CAMWR=0x04,
+ CAMC_CAMRD=0x08,
+};
+
+/* Bits in the PCIBusConfig1 (BCR1) register */
+enum bcr1_bits {
+ BCR1_POT0=0x01,
+ BCR1_POT1=0x02,
+ BCR1_POT2=0x04,
+ BCR1_CTFT0=0x08,
+ BCR1_CTFT1=0x10,
+ BCR1_CTSF=0x20,
+ BCR1_TXQNOBK=0x40, /* for VT6105 */
+ BCR1_VIDFR=0x80, /* for VT6105 */
+ BCR1_MED0=0x40, /* for VT6102 */
+ BCR1_MED1=0x80, /* for VT6102 */
+};
+
#ifdef USE_MMIO
/* Registers we check that mmio and reg are the same. */
static const int mmio_verify_registers[] = {
@@ -356,6 +395,11 @@ enum desc_status_bits {
DescOwn=0x80000000
};
+/* Bits in *_desc.*_length */
+enum desc_length_bits {
+ DescTag=0x00010000
+};
+
/* Bits in ChipCmd. */
enum chip_cmd_bits {
CmdInit=0x01, CmdStart=0x02, CmdStop=0x04, CmdRxOn=0x08,
@@ -365,6 +409,9 @@ enum chip_cmd_bits {
};
struct rhine_private {
+ /* Bit mask for configured VLAN ids */
+ unsigned long active_vlans[BITS_TO_LONGS(VLAN_N_VID)];
+
/* Descriptor rings */
struct rx_desc *rx_ring;
struct tx_desc *tx_ring;
@@ -405,6 +452,23 @@ struct rhine_private {
void __iomem *base;
};
+#define BYTE_REG_BITS_ON(x, p) do { iowrite8((ioread8((p))|(x)), (p)); } while (0)
+#define WORD_REG_BITS_ON(x, p) do { iowrite16((ioread16((p))|(x)), (p)); } while (0)
+#define DWORD_REG_BITS_ON(x, p) do { iowrite32((ioread32((p))|(x)), (p)); } while (0)
+
+#define BYTE_REG_BITS_IS_ON(x, p) (ioread8((p)) & (x))
+#define WORD_REG_BITS_IS_ON(x, p) (ioread16((p)) & (x))
+#define DWORD_REG_BITS_IS_ON(x, p) (ioread32((p)) & (x))
+
+#define BYTE_REG_BITS_OFF(x, p) do { iowrite8(ioread8((p)) & (~(x)), (p)); } while (0)
+#define WORD_REG_BITS_OFF(x, p) do { iowrite16(ioread16((p)) & (~(x)), (p)); } while (0)
+#define DWORD_REG_BITS_OFF(x, p) do { iowrite32(ioread32((p)) & (~(x)), (p)); } while (0)
+
+#define BYTE_REG_BITS_SET(x, m, p) do { iowrite8((ioread8((p)) & (~(m)))|(x), (p)); } while (0)
+#define WORD_REG_BITS_SET(x, m, p) do { iowrite16((ioread16((p)) & (~(m)))|(x), (p)); } while (0)
+#define DWORD_REG_BITS_SET(x, m, p) do { iowrite32((ioread32((p)) & (~(m)))|(x), (p)); } while (0)
+
+
static int mdio_read(struct net_device *dev, int phy_id, int location);
static void mdio_write(struct net_device *dev, int phy_id, int location, int value);
static int rhine_open(struct net_device *dev);
@@ -422,6 +486,14 @@ static int netdev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
static const struct ethtool_ops netdev_ethtool_ops;
static int rhine_close(struct net_device *dev);
static void rhine_shutdown (struct pci_dev *pdev);
+static void rhine_vlan_rx_add_vid(struct net_device *dev, unsigned short vid);
+static void rhine_vlan_rx_kill_vid(struct net_device *dev, unsigned short vid);
+static void rhine_set_cam(void __iomem *ioaddr, int idx, u8 *addr);
+static void rhine_set_vlan_cam(void __iomem *ioaddr, int idx, u8 *addr);
+static void rhine_set_cam_mask(void __iomem *ioaddr, u32 mask);
+static void rhine_set_vlan_cam_mask(void __iomem *ioaddr, u32 mask);
+static void rhine_init_cam_filter(struct net_device *dev);
+static void rhine_update_vcam(struct net_device *dev);
#define RHINE_WAIT_FOR(condition) do { \
int i=1024; \
@@ -629,6 +701,8 @@ static const struct net_device_ops rhine_netdev_ops = {
.ndo_set_mac_address = eth_mac_addr,
.ndo_do_ioctl = netdev_ioctl,
.ndo_tx_timeout = rhine_tx_timeout,
+ .ndo_vlan_rx_add_vid = rhine_vlan_rx_add_vid,
+ .ndo_vlan_rx_kill_vid = rhine_vlan_rx_kill_vid,
#ifdef CONFIG_NET_POLL_CONTROLLER
.ndo_poll_controller = rhine_poll,
#endif
@@ -795,6 +869,10 @@ static int __devinit rhine_init_one(struct pci_dev *pdev,
if (rp->quirks & rqRhineI)
dev->features |= NETIF_F_SG|NETIF_F_HW_CSUM;
+ if (pdev->revision >= VT6105M)
+ dev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX |
+ NETIF_F_HW_VLAN_FILTER;
+
/* dev->name not defined before register_netdev()! */
rc = register_netdev(dev);
if (rc)
@@ -1040,6 +1118,167 @@ static void rhine_set_carrier(struct mii_if_info *mii)
netif_carrier_ok(mii->dev));
}
+/**
+ * rhine_set_cam - set CAM multicast filters
+ * @ioaddr: register block of this Rhine
+ * @idx: multicast CAM index [0..MCAM_SIZE-1]
+ * @addr: multicast address (6 bytes)
+ *
+ * Load addresses into multicast filters.
+ */
+static void rhine_set_cam(void __iomem *ioaddr, int idx, u8 *addr)
+{
+ int i;
+
+ iowrite8(CAMC_CAMEN, ioaddr + CamCon);
+ wmb();
+
+ /* Paranoid -- idx out of range should never happen */
+ idx &= (MCAM_SIZE - 1);
+
+ iowrite8((u8) idx, ioaddr + CamAddr);
+
+ for (i = 0; i < 6; i++, addr++)
+ iowrite8(*addr, ioaddr + MulticastFilter0 + i);
+ udelay(10);
+ wmb();
+
+ iowrite8(CAMC_CAMWR | CAMC_CAMEN, ioaddr + CamCon);
+ udelay(10);
+
+ iowrite8(0, ioaddr + CamCon);
+}
+
+/**
+ * rhine_set_vlan_cam - set CAM VLAN filters
+ * @ioaddr: register block of this Rhine
+ * @idx: VLAN CAM index [0..VCAM_SIZE-1]
+ * @addr: VLAN ID (2 bytes)
+ *
+ * Load addresses into VLAN filters.
+ */
+static void rhine_set_vlan_cam(void __iomem *ioaddr, int idx, u8 *addr)
+{
+ iowrite8(CAMC_CAMEN | CAMC_VCAMSL, ioaddr + CamCon);
+ wmb();
+
+ /* Paranoid -- idx out of range should never happen */
+ idx &= (VCAM_SIZE - 1);
+
+ iowrite8((u8) idx, ioaddr + CamAddr);
+
+ iowrite16(*((u16 *) addr), ioaddr + MulticastFilter0 + 6);
+ udelay(10);
+ wmb();
+
+ iowrite8(CAMC_CAMWR | CAMC_CAMEN, ioaddr + CamCon);
+ udelay(10);
+
+ iowrite8(0, ioaddr + CamCon);
+}
+
+/**
+ * rhine_set_cam_mask - set multicast CAM mask
+ * @ioaddr: register block of this Rhine
+ * @mask: multicast CAM mask
+ *
+ * Mask sets multicast filters active/inactive.
+ */
+static void rhine_set_cam_mask(void __iomem *ioaddr, u32 mask)
+{
+ iowrite8(CAMC_CAMEN, ioaddr + CamCon);
+ wmb();
+
+ /* write mask */
+ iowrite32(mask, ioaddr + CamMask);
+
+ /* disable CAMEN */
+ iowrite8(0, ioaddr + CamCon);
+}
+
+/**
+ * rhine_set_vlan_cam_mask - set VLAN CAM mask
+ * @ioaddr: register block of this Rhine
+ * @mask: VLAN CAM mask
+ *
+ * Mask sets VLAN filters active/inactive.
+ */
+static void rhine_set_vlan_cam_mask(void __iomem *ioaddr, u32 mask)
+{
+ iowrite8(CAMC_CAMEN | CAMC_VCAMSL, ioaddr + CamCon);
+ wmb();
+
+ /* write mask */
+ iowrite32(mask, ioaddr + CamMask);
+
+ /* disable CAMEN */
+ iowrite8(0, ioaddr + CamCon);
+}
+
+/**
+ * rhine_init_cam_filter - initialize CAM filters
+ * @dev: network device
+ *
+ * Initialize (disable) hardware VLAN and multicast support on this
+ * Rhine.
+ */
+static void rhine_init_cam_filter(struct net_device *dev)
+{
+ struct rhine_private *rp = netdev_priv(dev);
+ void __iomem *ioaddr = rp->base;
+
+ /* Disable all CAMs */
+ rhine_set_vlan_cam_mask(ioaddr, 0);
+ rhine_set_cam_mask(ioaddr, 0);
+
+ /* disable hardware VLAN support */
+ BYTE_REG_BITS_ON(TCR_PQEN, ioaddr + TxConfig);
+ BYTE_REG_BITS_OFF(BCR1_VIDFR, ioaddr + PCIBusConfig1);
+}
+
+/**
+ * rhine_update_vcam - update VLAN CAM filters
+ * @rp: rhine_private data of this Rhine
+ *
+ * Update VLAN CAM filters to match configuration change.
+ */
+static void rhine_update_vcam(struct net_device *dev)
+{
+ struct rhine_private *rp = netdev_priv(dev);
+ void __iomem *ioaddr = rp->base;
+ u16 vid;
+ u32 vCAMmask = 0; /* 32 vCAMs (6105M and better) */
+ unsigned int i = 0;
+
+ for_each_set_bit(vid, rp->active_vlans, VLAN_N_VID) {
+ rhine_set_vlan_cam(ioaddr, i, (u8 *)&vid);
+ vCAMmask |= 1 << i;
+ if (++i >= VCAM_SIZE)
+ break;
+ }
+ rhine_set_vlan_cam_mask(ioaddr, vCAMmask);
+}
+
+static void rhine_vlan_rx_add_vid(struct net_device *dev, unsigned short vid)
+{
+ struct rhine_private *rp = netdev_priv(dev);
+
+ spin_lock_irq(&rp->lock);
+ set_bit(vid, rp->active_vlans);
+ rhine_update_vcam(dev);
+ spin_unlock_irq(&rp->lock);
+}
+
+static void rhine_vlan_rx_kill_vid(struct net_device *dev, unsigned short vid)
+{
+ struct rhine_private *rp = netdev_priv(dev);
+
+ spin_lock_irq(&rp->lock);
+ clear_bit(vid, rp->active_vlans);
+ rhine_update_vcam(dev);
+ spin_unlock_irq(&rp->lock);
+}
+
static void init_registers(struct net_device *dev)
{
struct rhine_private *rp = netdev_priv(dev);
@@ -1061,6 +1300,9 @@ static void init_registers(struct net_device *dev)
rhine_set_rx_mode(dev);
+ if (rp->pdev->revision >= VT6105M)
+ rhine_init_cam_filter(dev);
+
napi_enable(&rp->napi);
/* Enable interrupts by setting the interrupt mask. */
@@ -1276,16 +1518,28 @@ static netdev_tx_t rhine_start_tx(struct sk_buff *skb,
rp->tx_ring[entry].desc_length =
cpu_to_le32(TXDESC | (skb->len >= ETH_ZLEN ? skb->len : ETH_ZLEN));
+ if (unlikely(vlan_tx_tag_present(skb))) {
+ rp->tx_ring[entry].tx_status = cpu_to_le32((vlan_tx_tag_get(skb)) << 16);
+ /* request tagging */
+ rp->tx_ring[entry].desc_length |= cpu_to_le32(0x020000);
+ }
+ else
+ rp->tx_ring[entry].tx_status = 0;
+
/* lock eth irq */
spin_lock_irqsave(&rp->lock, flags);
wmb();
- rp->tx_ring[entry].tx_status = cpu_to_le32(DescOwn);
+ rp->tx_ring[entry].tx_status |= cpu_to_le32(DescOwn);
wmb();
rp->cur_tx++;
/* Non-x86 Todo: explicitly flush cache lines here. */
+ if (vlan_tx_tag_present(skb))
+ /* Tx queues are bits 7-0 (first Tx queue: bit 7) */
+ BYTE_REG_BITS_ON(1 << 7, ioaddr + TQWake);
+
/* Wake the potentially-idle transmit channel */
iowrite8(ioread8(ioaddr + ChipCmd1) | Cmd1TxDemand,
ioaddr + ChipCmd1);
@@ -1437,6 +1691,21 @@ static void rhine_tx(struct net_device *dev)
spin_unlock(&rp->lock);
}
+/**
+ * rhine_get_vlan_tci - extract TCI from Rx data buffer
+ * @skb: pointer to sk_buff
+ * @data_size: used data area of the buffer including CRC
+ *
+ * If hardware VLAN tag extraction is enabled and the chip indicates a 802.1Q
+ * packet, the extracted 802.1Q header (2 bytes TPID + 2 bytes TCI) is 4-byte
+ * aligned following the CRC.
+ */
+static inline u16 rhine_get_vlan_tci(struct sk_buff *skb, int data_size)
+{
+ u8 *trailer = (u8 *)skb->data + ((data_size + 3) & ~3) + 2;
+ return ntohs(*(u16 *)trailer);
+}
+
/* Process up to limit frames from receive ring */
static int rhine_rx(struct net_device *dev, int limit)
{
@@ -1454,6 +1723,7 @@ static int rhine_rx(struct net_device *dev, int limit)
for (count = 0; count < limit; ++count) {
struct rx_desc *desc = rp->rx_head_desc;
u32 desc_status = le32_to_cpu(desc->rx_status);
+ u32 desc_length = le32_to_cpu(desc->desc_length);
int data_size = desc_status >> 16;
if (desc_status & DescOwn)
@@ -1498,6 +1768,7 @@ static int rhine_rx(struct net_device *dev, int limit)
struct sk_buff *skb = NULL;
/* Length should omit the CRC */
int pkt_len = data_size - 4;
+ u16 vlan_tci = 0;
/* Check if the packet is long enough to accept without
copying to a minimally-sized skbuff. */
@@ -1532,7 +1803,14 @@ static int rhine_rx(struct net_device *dev, int limit)
rp->rx_buf_sz,
PCI_DMA_FROMDEVICE);
}
+
+ if (unlikely(desc_length & DescTag))
+ vlan_tci = rhine_get_vlan_tci(skb, data_size);
+
skb->protocol = eth_type_trans(skb, dev);
+
+ if (unlikely(desc_length & DescTag))
+ __vlan_hwaccel_put_tag(skb, vlan_tci);
netif_receive_skb(skb);
dev->stats.rx_bytes += pkt_len;
dev->stats.rx_packets++;
@@ -1596,6 +1874,11 @@ static void rhine_restart_tx(struct net_device *dev) {
iowrite8(ioread8(ioaddr + ChipCmd) | CmdTxOn,
ioaddr + ChipCmd);
+
+ if (rp->tx_ring[entry].desc_length & cpu_to_le32(0x020000))
+ /* Tx queues are bits 7-0 (first Tx queue: bit 7) */
+ BYTE_REG_BITS_ON(1 << 7, ioaddr + TQWake);
+
iowrite8(ioread8(ioaddr + ChipCmd1) | Cmd1TxDemand,
ioaddr + ChipCmd1);
IOSYNC;
@@ -1631,7 +1914,7 @@ static void rhine_error(struct net_device *dev, int intr_status)
}
if (intr_status & IntrTxUnderrun) {
if (rp->tx_thresh < 0xE0)
- iowrite8(rp->tx_thresh += 0x20, ioaddr + TxConfig);
+ BYTE_REG_BITS_SET((rp->tx_thresh += 0x20), 0x80, ioaddr + TxConfig);
if (debug > 1)
printk(KERN_INFO "%s: Transmitter underrun, Tx "
"threshold now %2.2x.\n",
@@ -1646,7 +1929,7 @@ static void rhine_error(struct net_device *dev, int intr_status)
(intr_status & (IntrTxAborted |
IntrTxUnderrun | IntrTxDescRace)) == 0) {
if (rp->tx_thresh < 0xE0) {
- iowrite8(rp->tx_thresh += 0x20, ioaddr + TxConfig);
+ BYTE_REG_BITS_SET((rp->tx_thresh += 0x20), 0x80, ioaddr + TxConfig);
}
if (debug > 1)
printk(KERN_INFO "%s: Unspecified error. Tx "
@@ -1688,7 +1971,8 @@ static void rhine_set_rx_mode(struct net_device *dev)
struct rhine_private *rp = netdev_priv(dev);
void __iomem *ioaddr = rp->base;
u32 mc_filter[2]; /* Multicast hash filter */
- u8 rx_mode; /* Note: 0x02=accept runt, 0x01=accept errs */
+ u8 rx_mode = 0x0C; /* Note: 0x02=accept runt, 0x01=accept errs */
+ struct netdev_hw_addr *ha;
if (dev->flags & IFF_PROMISC) { /* Set promiscuous. */
rx_mode = 0x1C;
@@ -1699,10 +1983,18 @@ static void rhine_set_rx_mode(struct net_device *dev)
/* Too many to match, or accept all multicasts. */
iowrite32(0xffffffff, ioaddr + MulticastFilter0);
iowrite32(0xffffffff, ioaddr + MulticastFilter1);
- rx_mode = 0x0C;
+ } else if (rp->pdev->revision >= VT6105M) {
+ int i = 0;
+ u32 mCAMmask = 0; /* 32 mCAMs (6105M and better) */
+ netdev_for_each_mc_addr(ha, dev) {
+ if (i == MCAM_SIZE)
+ break;
+ rhine_set_cam(ioaddr, i, ha->addr);
+ mCAMmask |= 1 << i;
+ i++;
+ }
+ rhine_set_cam_mask(ioaddr, mCAMmask);
} else {
- struct netdev_hw_addr *ha;
-
memset(mc_filter, 0, sizeof(mc_filter));
netdev_for_each_mc_addr(ha, dev) {
int bit_nr = ether_crc(ETH_ALEN, ha->addr) >> 26;
@@ -1711,9 +2003,15 @@ static void rhine_set_rx_mode(struct net_device *dev)
}
iowrite32(mc_filter[0], ioaddr + MulticastFilter0);
iowrite32(mc_filter[1], ioaddr + MulticastFilter1);
- rx_mode = 0x0C;
}
- iowrite8(rp->rx_thresh | rx_mode, ioaddr + RxConfig);
+ /* enable/disable VLAN receive filtering */
+ if (rp->pdev->revision >= VT6105M) {
+ if (dev->flags & IFF_PROMISC)
+ BYTE_REG_BITS_OFF(BCR1_VIDFR, ioaddr + PCIBusConfig1);
+ else
+ BYTE_REG_BITS_ON(BCR1_VIDFR, ioaddr + PCIBusConfig1);
+ }
+ BYTE_REG_BITS_ON(rx_mode, ioaddr + RxConfig);
}
static void netdev_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info)
@@ -1966,7 +2264,7 @@ static int rhine_resume(struct pci_dev *pdev)
if (!netif_running(dev))
return 0;
- if (request_irq(dev->irq, rhine_interrupt, IRQF_SHARED, dev->name, dev))
+ if (request_irq(dev->irq, rhine_interrupt, IRQF_SHARED, dev->name, dev))
printk(KERN_ERR "via-rhine %s: request_irq failed\n", dev->name);
ret = pci_set_power_state(pdev, PCI_D0);
^ permalink raw reply related
* 2.6.32 bnx2: unable to handle kernel NULL pointer dereference at (null) on OOM
From: Frederik Himpe @ 2010-12-06 11:06 UTC (permalink / raw)
To: netdev
With kernel 2.6.32.15 I can reproducibly kill networking on a system
using the bnx2 driver by starting up memory hogs triggering the OOM
killer.
I could not find any indication in the 2.6.32 stable changelogs that
this is fixed in a later 2.6.32 update.
Here is the log including the OOM killer traces and the bnx2 null
pointer deference captured with netconsole:
Dec 5 19:26:19 node001.cvos.cluster [4445292.253420] IN invoked oom-killer: gfp_mask=0x280da, order=0, oom_adj=0
Dec 5 19:26:19 node001.cvos.cluster [4445292.253498] Pid: 30009, comm: IN Not tainted 2.6.32.15 #1
Dec 5 19:26:19 node001.cvos.cluster [4445292.253559] Call Trace:
Dec 5 19:26:19 node001.cvos.cluster [4445292.253624] [<ffffffff8106bd0c>] ? cpuset_print_task_mems_allowed+0x8c/0x97
Dec 5 19:26:19 node001.cvos.cluster [4445292.253690] [<ffffffff81080439>] oom_kill_process+0x84/0x291
Dec 5 19:26:19 node001.cvos.cluster [4445292.253753] [<ffffffff81080955>] ? select_bad_process+0xab/0xf0
Dec 5 19:26:19 node001.cvos.cluster [4445292.253816] [<ffffffff81080a1f>] __out_of_memory+0x85/0x94
Dec 5 19:26:19 node001.cvos.cluster [4445292.253878] [<ffffffff81080b76>] out_of_memory+0x148/0x17a
Dec 5 19:26:19 node001.cvos.cluster [4445292.253942] [<ffffffff81089bc0>] ? try_to_free_pages+0x69/0x6b
Dec 5 19:26:19 node001.cvos.cluster [4445292.254005] [<ffffffff81084017>] __alloc_pages_nodemask+0x4a4/0x593
Dec 5 19:26:19 node001.cvos.cluster [4445292.254071] [<ffffffff810a5793>] alloc_page_vma+0xc9/0xcb
Dec 5 19:26:19 node001.cvos.cluster [4445292.254134] [<ffffffff81086423>] ? lru_cache_add_lru+0x22/0x24
Dec 5 19:26:19 node001.cvos.cluster [4445292.254211] [<ffffffff8109420a>] handle_mm_fault+0x1cf/0x771
Dec 5 19:26:19 node001.cvos.cluster [4445292.254289] [<ffffffff81026078>] do_page_fault+0x233/0x24b
Dec 5 19:26:19 node001.cvos.cluster [4445292.254367] [<ffffffff8134573f>] page_fault+0x1f/0x30
Dec 5 19:26:19 node001.cvos.cluster [4445292.254444] Node 0
Dec 5 19:26:19 node001.cvos.cluster DMA per-cpu:
Dec 5 19:26:19 node001.cvos.cluster [4445292.254563] CPU 0: hi: 0, btch: 1 usd: 0
Dec 5 19:26:19 node001.cvos.cluster [4445292.254636] CPU 1: hi: 0, btch: 1 usd: 0
Dec 5 19:26:19 node001.cvos.cluster [4445292.254709] CPU 2: hi: 0, btch: 1 usd: 0
Dec 5 19:26:19 node001.cvos.cluster [4445292.254782] CPU 3: hi: 0, btch: 1 usd: 0
Dec 5 19:26:19 node001.cvos.cluster [4445292.254856] CPU 4: hi: 0, btch: 1 usd: 0
Dec 5 19:26:19 node001.cvos.cluster [4445292.254929] CPU 5: hi: 0, btch: 1 usd: 0
Dec 5 19:26:19 node001.cvos.cluster [4445292.255002] CPU 6: hi: 0, btch: 1 usd: 0
Dec 5 19:26:19 node001.cvos.cluster [4445292.255075] CPU 7: hi: 0, btch: 1 usd: 0
Dec 5 19:26:19 node001.cvos.cluster [4445292.255147] Node 0
Dec 5 19:26:19 node001.cvos.cluster DMA32 per-cpu:
Dec 5 19:26:19 node001.cvos.cluster [4445292.255266] CPU 0: hi: 186, btch: 31 usd: 28
Dec 5 19:26:19 node001.cvos.cluster [4445292.255339] CPU 1: hi: 186, btch: 31 usd: 47
Dec 5 19:26:19 node001.cvos.cluster [4445292.255413] CPU 2: hi: 186, btch: 31 usd: 119
Dec 5 19:26:19 node001.cvos.cluster [4445292.255485] CPU 3: hi: 186, btch: 31 usd: 171
Dec 5 19:26:19 node001.cvos.cluster [4445292.255558] CPU 4: hi: 186, btch: 31 usd: 111
Dec 5 19:26:19 node001.cvos.cluster [4445292.255631] CPU 5: hi: 186, btch: 31 usd: 128
Dec 5 19:26:19 node001.cvos.cluster [4445292.255704] CPU 6: hi: 186, btch: 31 usd: 76
Dec 5 19:26:19 node001.cvos.cluster [4445292.255777] CPU 7: hi: 186, btch: 31 usd: 128
Dec 5 19:26:19 node001.cvos.cluster [4445292.255849] Node 0
Dec 5 19:26:19 node001.cvos.cluster Normal per-cpu:
Dec 5 19:26:19 node001.cvos.cluster [4445292.255967] CPU 0: hi: 186, btch: 31 usd: 91
Dec 5 19:26:19 node001.cvos.cluster [4445292.256057] CPU 1: hi: 186, btch: 31 usd: 68
Dec 5 19:26:19 node001.cvos.cluster [4445292.256130] CPU 2: hi: 186, btch: 31 usd: 176
Dec 5 19:26:19 node001.cvos.cluster [4445292.256204] CPU 3: hi: 186, btch: 31 usd: 23
Dec 5 19:26:19 node001.cvos.cluster [4445292.256277] CPU 4: hi: 186, btch: 31 usd: 104
Dec 5 19:26:19 node001.cvos.cluster [4445292.256349] CPU 5: hi: 186, btch: 31 usd: 34
Dec 5 19:26:19 node001.cvos.cluster [4445292.256423] CPU 6: hi: 186, btch: 31 usd: 25
Dec 5 19:26:19 node001.cvos.cluster [4445292.256496] CPU 7: hi: 186, btch: 31 usd: 116
Dec 5 19:26:19 node001.cvos.cluster [4445292.256573] active_anon:1650726 inactive_anon:323194 isolated_anon:160
Dec 5 19:26:19 node001.cvos.cluster [4445292.256575] active_file:278 inactive_file:187 isolated_file:0
Dec 5 19:26:19 node001.cvos.cluster [4445292.256576] unevictable:3447 dirty:8 writeback:661 unstable:3
Dec 5 19:26:19 node001.cvos.cluster [4445292.256578] free:11853 slab_reclaimable:1635 slab_unreclaimable:3043
Dec 5 19:26:19 node001.cvos.cluster [4445292.256579] mapped:1332 shmem:0 pagetables:12323 bounce:0
Dec 5 19:26:19 node001.cvos.cluster [4445292.256949] Node 0
Dec 5 19:26:19 node001.cvos.cluster DMA free:15896kB min:20kB low:24kB high:28kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15304kB mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB slab_reclaimable:0kB slab_unreclaimable:0kB kernel_stack:0kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? yes
Dec 5 19:26:19 node001.cvos.cluster [4445292.257214] lowmem_reserve[]:
Dec 5 19:26:19 node001.cvos.cluster 0
Dec 5 19:26:19 node001.cvos.cluster 2999
Dec 5 19:26:19 node001.cvos.cluster 8049
Dec 5 19:26:19 node001.cvos.cluster 8049
Dec 5 19:26:19 node001.cvos.cluster
Dec 5 19:26:19 node001.cvos.cluster [4445292.257532] Node 0
Dec 5 19:26:19 node001.cvos.cluster DMA32 free:24400kB min:4272kB low:5340kB high:6408kB active_anon:2316300kB inactive_anon:578492kB active_file:428kB inactive_file:20kB unevictable:0kB isolated(anon):256kB isolated(file):0kB present:3071996kB mlocked:0kB dirty:8kB writeback:348kB mapped:156kB shmem:0kB slab_reclaimable:492kB slab_unreclaimable:564kB kernel_stack:16kB pagetables:16756kB unstable:4kB bounce:0kB writeback_tmp:0kB pages_scanned:217 all_unreclaimable? no
Dec 5 19:26:19 node001.cvos.cluster [4445292.257879] lowmem_reserve[]:
Dec 5 19:26:19 node001.cvos.cluster 0
Dec 5 19:26:19 node001.cvos.cluster 0
Dec 5 19:26:19 node001.cvos.cluster 5050
Dec 5 19:26:19 node001.cvos.cluster 5050
Dec 5 19:26:19 node001.cvos.cluster
Dec 5 19:26:19 node001.cvos.cluster [4445292.258210] Node 0
Dec 5 19:26:19 node001.cvos.cluster Normal free:7116kB min:7192kB low:8988kB high:10788kB active_anon:4286896kB inactive_anon:714540kB active_file:684kB inactive_file:496kB unevictable:13788kB isolated(anon):384kB isolated(file):0kB present:5171200kB mlocked:5528kB dirty:24kB writeback:1956kB mapped:5172kB shmem:0kB slab_reclaimable:6048kB slab_unreclaimable:11608kB kernel_stack:1624kB pagetables:32536kB unstable:8kB bounce:0kB writeback_tmp:0kB pages_scanned:2263 all_unreclaimable? no
Dec 5 19:26:19 node001.cvos.cluster [4445292.258477] lowmem_reserve[]:
Dec 5 19:26:19 node001.cvos.cluster 0
Dec 5 19:26:19 node001.cvos.cluster last message repeated 3 times
Dec 5 19:26:19 node001.cvos.cluster
Dec 5 19:26:19 node001.cvos.cluster [4445292.258795] Node 0
Dec 5 19:26:19 node001.cvos.cluster DMA:
Dec 5 19:26:19 node001.cvos.cluster 0*4kB
Dec 5 19:26:19 node001.cvos.cluster 1*8kB
Dec 5 19:26:19 node001.cvos.cluster 1*16kB
Dec 5 19:26:19 node001.cvos.cluster 2*32kB
Dec 5 19:26:19 node001.cvos.cluster 3*64kB
Dec 5 19:26:19 node001.cvos.cluster 2*128kB
Dec 5 19:26:19 node001.cvos.cluster 0*256kB
Dec 5 19:26:19 node001.cvos.cluster 0*512kB
Dec 5 19:26:19 node001.cvos.cluster 1*1024kB
Dec 5 19:26:19 node001.cvos.cluster 1*2048kB
Dec 5 19:26:19 node001.cvos.cluster 3*4096kB
Dec 5 19:26:19 node001.cvos.cluster = 15896kB
Dec 5 19:26:19 node001.cvos.cluster [4445292.265993] Node 0
Dec 5 19:26:19 node001.cvos.cluster DMA32:
Dec 5 19:26:19 node001.cvos.cluster 2*4kB
Dec 5 19:26:19 node001.cvos.cluster 3*8kB
Dec 5 19:26:19 node001.cvos.cluster 9*16kB
Dec 5 19:26:19 node001.cvos.cluster 7*32kB
Dec 5 19:26:19 node001.cvos.cluster 2*64kB
Dec 5 19:26:19 node001.cvos.cluster 3*128kB
Dec 5 19:26:19 node001.cvos.cluster 14*256kB
Dec 5 19:26:19 node001.cvos.cluster 10*512kB
Dec 5 19:26:19 node001.cvos.cluster 6*1024kB
Dec 5 19:26:19 node001.cvos.cluster 2*2048kB
Dec 5 19:26:19 node001.cvos.cluster 1*4096kB
Dec 5 19:26:19 node001.cvos.cluster = 23952kB
Dec 5 19:26:19 node001.cvos.cluster [4445292.266722] Node 0
Dec 5 19:26:19 node001.cvos.cluster Normal:
Dec 5 19:26:19 node001.cvos.cluster 31*4kB
Dec 5 19:26:19 node001.cvos.cluster 32*8kB
Dec 5 19:26:19 node001.cvos.cluster 46*16kB
Dec 5 19:26:19 node001.cvos.cluster 15*32kB
Dec 5 19:26:19 node001.cvos.cluster 6*64kB
Dec 5 19:26:19 node001.cvos.cluster 5*128kB
Dec 5 19:26:19 node001.cvos.cluster 2*256kB
Dec 5 19:26:19 node001.cvos.cluster 0*512kB
Dec 5 19:26:19 node001.cvos.cluster 0*1024kB
Dec 5 19:26:19 node001.cvos.cluster 0*2048kB
Dec 5 19:26:19 node001.cvos.cluster 1*4096kB
Dec 5 19:26:19 node001.cvos.cluster = 7228kB
Dec 5 19:26:19 node001.cvos.cluster [4445292.267449] 5337 total pagecache pages
Dec 5 19:26:19 node001.cvos.cluster [4445292.267520] 2009 pages in swap cache
Dec 5 19:26:19 node001.cvos.cluster [4445292.267591] Swap cache stats: add 15770704, delete 15768695, find 334248/348086
Dec 5 19:26:19 node001.cvos.cluster [4445292.267683] Free swap = 0kB
Dec 5 19:26:19 node001.cvos.cluster [4445292.267751] Total swap = 15639700kB
Dec 5 19:26:19 node001.cvos.cluster [4445292.309854] Out of memory: kill process 29969 (IN) score 1493120 or a child
Dec 5 19:26:19 node001.cvos.cluster [4445292.309942] Killed process 29969 (IN)
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.253420] IN invoked oom-killer: gfp_mask=0x280da, order=0, oom_adj=0
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.253494] IN cpuset=/ mems_allowed=0
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.253498] Pid: 30009, comm: IN Not tainted 2.6.32.15 #1
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.253559] Call Trace:
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.253624] [<ffffffff8106bd0c>] ? cpuset_print_task_mems_allowed+0x8c/0x97
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.253690] [<ffffffff81080439>] oom_kill_process+0x84/0x291
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.253753] [<ffffffff81080955>] ? select_bad_process+0xab/0xf0
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.253816] [<ffffffff81080a1f>] __out_of_memory+0x85/0x94
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.253878] [<ffffffff81080b76>] out_of_memory+0x148/0x17a
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.253942] [<ffffffff81089bc0>] ? try_to_free_pages+0x69/0x6b
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.254005] [<ffffffff81084017>] __alloc_pages_nodemask+0x4a4/0x593
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.254071] [<ffffffff810a5793>] alloc_page_vma+0xc9/0xcb
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.254134] [<ffffffff81086423>] ? lru_cache_add_lru+0x22/0x24
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.254211] [<ffffffff8109420a>] handle_mm_fault+0x1cf/0x771
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.254289] [<ffffffff81026078>] do_page_fault+0x233/0x24b
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.254367] [<ffffffff8134573f>] page_fault+0x1f/0x30
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.254442] Mem-Info:
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.254444] Node 0 DMA per-cpu:
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.254563] CPU 0: hi: 0, btch: 1 usd: 0
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.254636] CPU 1: hi: 0, btch: 1 usd: 0
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.254709] CPU 2: hi: 0, btch: 1 usd: 0
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.254782] CPU 3: hi: 0, btch: 1 usd: 0
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.254856] CPU 4: hi: 0, btch: 1 usd: 0
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.254929] CPU 5: hi: 0, btch: 1 usd: 0
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.255002] CPU 6: hi: 0, btch: 1 usd: 0
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.255075] CPU 7: hi: 0, btch: 1 usd: 0
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.255147] Node 0 DMA32 per-cpu:
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.255266] CPU 0: hi: 186, btch: 31 usd: 28
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.255339] CPU 1: hi: 186, btch: 31 usd: 47
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.255413] CPU 2: hi: 186, btch: 31 usd: 119
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.255485] CPU 3: hi: 186, btch: 31 usd: 171
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.255558] CPU 4: hi: 186, btch: 31 usd: 111
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.255631] CPU 5: hi: 186, btch: 31 usd: 128
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.255704] CPU 6: hi: 186, btch: 31 usd: 76
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.255777] CPU 7: hi: 186, btch: 31 usd: 128
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.255849] Node 0 Normal per-cpu:
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.255967] CPU 0: hi: 186, btch: 31 usd: 91
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.256057] CPU 1: hi: 186, btch: 31 usd: 68
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.256130] CPU 2: hi: 186, btch: 31 usd: 176
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.256204] CPU 3: hi: 186, btch: 31 usd: 23
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.256277] CPU 4: hi: 186, btch: 31 usd: 104
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.256349] CPU 5: hi: 186, btch: 31 usd: 34
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.256423] CPU 6: hi: 186, btch: 31 usd: 25
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.256496] CPU 7: hi: 186, btch: 31 usd: 116
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.256573] active_anon:1650726 inactive_anon:323194 isolated_anon:160
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.256575] active_file:278 inactive_file:187 isolated_file:0
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.256576] unevictable:3447 dirty:8 writeback:661 unstable:3
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.256578] free:11853 slab_reclaimable:1635 slab_unreclaimable:3043
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.256579] mapped:1332 shmem:0 pagetables:12323 bounce:0
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.256949] Node 0 DMA free:15896kB min:20kB low:24kB high:28kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15304kB mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB slab_reclaimable:0kB slab_unreclaimable:0kB kernel_stack:0kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? yes
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.257214] lowmem_reserve[]: 0 2999 8049 8049
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.257532] Node 0 DMA32 free:24400kB min:4272kB low:5340kB high:6408kB active_anon:2316300kB inactive_anon:578492kB active_file:428kB inactive_file:20kB unevictable:0kB isolated(anon):256kB isolated(file):0kB present:3071996kB mlocked:0kB dirty:8kB writeback:348kB mapped:156kB shmem:0kB slab_reclaimable:492kB slab_unreclaimable:564kB kernel_stack:16kB pagetables:16756kB unstable:4kB bounce:0kB writeback_tmp:0kB pages_scanned:217 all_unreclaimable? no
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.257879] lowmem_reserve[]: 0 0 5050 5050
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.258210] Node 0 Normal free:7116kB min:7192kB low:8988kB high:10788kB active_anon:4286896kB inactive_anon:714540kB active_file:684kB inactive_file:496kB unevictable:13788kB isolated(anon):384kB isolated(file):0kB present:5171200kB mlocked:5528kB dirty:24kB writeback:1956kB mapped:5172kB shmem:0kB slab_reclaimable:6048kB slab_unreclaimable:11608kB kernel_stack:1624kB pagetables:32536kB unstable:8kB bounce:0kB writeback_tmp:0kB pages_scanned:2263 all_unreclaimable? no
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.258477] lowmem_reserve[]: 0 0 0 0
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.258795] Node 0 DMA: 0*4kB 1*8kB 1*16kB 2*32kB 3*64kB 2*128kB 0*256kB 0*512kB 1*1024kB 1*2048kB 3*4096kB = 15896kB
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.265993] Node 0 DMA32: 2*4kB 3*8kB 9*16kB 7*32kB 2*64kB 3*128kB 14*256kB 10*512kB 6*1024kB 2*2048kB 1*4096kB = 23952kB
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.266722] Node 0 Normal: 31*4kB 32*8kB 46*16kB 15*32kB 6*64kB 5*128kB 2*256kB 0*512kB 0*1024kB 0*2048kB 1*4096kB = 7228kB
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.267449] 5337 total pagecache pages
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.267520] 2009 pages in swap cache
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.267591] Swap cache stats: add 15770704, delete 15768695, find 334248/348086
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.267683] Free swap = 0kB
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.267751] Total swap = 15639700kB
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.309843] 2097152 pages RAM
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.309846] 47211 pages reserved
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.309848] 5736 pages shared
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.309850] 2034961 pages non-shared
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.309854] Out of memory: kill process 29969 (IN) score 1493120 or a child
Dec 5 19:26:20 node001.cvos.cluster kernel: [4445292.309942] Killed process 29969 (IN)
Dec 5 19:27:37 node001.cvos.cluster nscd: nss_ldap: reconnected to LDAP server ldap://master/ after 1 attempt
Dec 5 19:29:38 node001.cvos.cluster [4445490.905133] IN invoked oom-killer: gfp_mask=0x280da, order=0, oom_adj=0
Dec 5 19:29:38 node001.cvos.cluster [4445490.905212] Pid: 30009, comm: IN Not tainted 2.6.32.15 #1
Dec 5 19:29:38 node001.cvos.cluster [4445490.905275] Call Trace:
Dec 5 19:29:38 node001.cvos.cluster [4445490.905341] [<ffffffff8106bd0c>] ? cpuset_print_task_mems_allowed+0x8c/0x97
Dec 5 19:29:38 node001.cvos.cluster [4445490.905409] [<ffffffff81080439>] oom_kill_process+0x84/0x291
Dec 5 19:29:38 node001.cvos.cluster [4445490.905472] [<ffffffff81080955>] ? select_bad_process+0xab/0xf0
Dec 5 19:29:38 node001.cvos.cluster [4445490.905548] [<ffffffff81080a1f>] __out_of_memory+0x85/0x94
Dec 5 19:29:38 node001.cvos.cluster [4445490.905614] [<ffffffff81080b76>] out_of_memory+0x148/0x17a
Dec 5 19:29:38 node001.cvos.cluster [4445490.905682] [<ffffffff81089bc0>] ? try_to_free_pages+0x69/0x6b
Dec 5 19:29:38 node001.cvos.cluster [4445490.905747] [<ffffffff81084017>] __alloc_pages_nodemask+0x4a4/0x593
Dec 5 19:29:38 node001.cvos.cluster [4445490.905815] [<ffffffff810a5793>] alloc_page_vma+0xc9/0xcb
Dec 5 19:29:38 node001.cvos.cluster [4445490.905881] [<ffffffff8109420a>] handle_mm_fault+0x1cf/0x771
Dec 5 19:29:38 node001.cvos.cluster [4445490.905959] [<ffffffff8100b9ae>] ? invalidate_interrupt0+0xe/0x20
Dec 5 19:29:38 node001.cvos.cluster [4445490.906038] [<ffffffff81026078>] do_page_fault+0x233/0x24b
Dec 5 19:29:38 node001.cvos.cluster [4445490.906116] [<ffffffff8134573f>] page_fault+0x1f/0x30
Dec 5 19:29:38 node001.cvos.cluster [4445490.906193] Node 0
Dec 5 19:29:38 node001.cvos.cluster DMA per-cpu:
Dec 5 19:29:38 node001.cvos.cluster [4445490.906311] CPU 0: hi: 0, btch: 1 usd: 0
Dec 5 19:29:38 node001.cvos.cluster [4445490.906384] CPU 1: hi: 0, btch: 1 usd: 0
Dec 5 19:29:38 node001.cvos.cluster [4445490.906457] CPU 2: hi: 0, btch: 1 usd: 0
Dec 5 19:29:38 node001.cvos.cluster [4445490.906530] CPU 3: hi: 0, btch: 1 usd: 0
Dec 5 19:29:38 node001.cvos.cluster [4445490.906603] CPU 4: hi: 0, btch: 1 usd: 0
Dec 5 19:29:38 node001.cvos.cluster [4445490.906676] CPU 5: hi: 0, btch: 1 usd: 0
Dec 5 19:29:38 node001.cvos.cluster [4445490.906749] CPU 6: hi: 0, btch: 1 usd: 0
Dec 5 19:29:38 node001.cvos.cluster [4445490.906821] CPU 7: hi: 0, btch: 1 usd: 0
Dec 5 19:29:38 node001.cvos.cluster [4445490.906894] Node 0
Dec 5 19:29:38 node001.cvos.cluster DMA32 per-cpu:
Dec 5 19:29:38 node001.cvos.cluster [4445490.907013] CPU 0: hi: 186, btch: 31 usd: 130
Dec 5 19:29:38 node001.cvos.cluster [4445490.907087] CPU 1: hi: 186, btch: 31 usd: 88
Dec 5 19:29:38 node001.cvos.cluster [4445490.907160] CPU 2: hi: 186, btch: 31 usd: 178
Dec 5 19:29:38 node001.cvos.cluster [4445490.907233] CPU 3: hi: 186, btch: 31 usd: 52
Dec 5 19:29:38 node001.cvos.cluster [4445490.907306] CPU 4: hi: 186, btch: 31 usd: 95
Dec 5 19:29:38 node001.cvos.cluster [4445490.907379] CPU 5: hi: 186, btch: 31 usd: 117
Dec 5 19:29:38 node001.cvos.cluster [4445490.907452] CPU 6: hi: 186, btch: 31 usd: 79
Dec 5 19:29:38 node001.cvos.cluster [4445490.907525] CPU 7: hi: 186, btch: 31 usd: 158
Dec 5 19:29:38 node001.cvos.cluster [4445490.907597] Node 0
Dec 5 19:29:38 node001.cvos.cluster Normal per-cpu:
Dec 5 19:29:38 node001.cvos.cluster [4445490.907716] CPU 0: hi: 186, btch: 31 usd: 65
Dec 5 19:29:38 node001.cvos.cluster [4445490.907789] CPU 1: hi: 186, btch: 31 usd: 132
Dec 5 19:29:38 node001.cvos.cluster [4445490.907862] CPU 2: hi: 186, btch: 31 usd: 98
Dec 5 19:29:38 node001.cvos.cluster [4445490.907935] CPU 3: hi: 186, btch: 31 usd: 86
Dec 5 19:29:38 node001.cvos.cluster [4445490.908009] CPU 4: hi: 186, btch: 31 usd: 99
Dec 5 19:29:38 node001.cvos.cluster [4445490.908082] CPU 5: hi: 186, btch: 31 usd: 70
Dec 5 19:29:38 node001.cvos.cluster [4445490.908155] CPU 6: hi: 186, btch: 31 usd: 163
Dec 5 19:29:38 node001.cvos.cluster [4445490.908228] CPU 7: hi: 186, btch: 31 usd: 153
Dec 5 19:29:38 node001.cvos.cluster [4445490.908305] active_anon:1649919 inactive_anon:323308 isolated_anon:0
Dec 5 19:29:38 node001.cvos.cluster [4445490.908306] active_file:146 inactive_file:147 isolated_file:0
Dec 5 19:29:38 node001.cvos.cluster [4445490.908308] unevictable:3447 dirty:1 writeback:6 unstable:0
Dec 5 19:29:38 node001.cvos.cluster [4445490.908309] free:11723 slab_reclaimable:1961 slab_unreclaimable:3022
Dec 5 19:29:38 node001.cvos.cluster [4445490.908311] mapped:1231 shmem:0 pagetables:12289 bounce:0
Dec 5 19:29:38 node001.cvos.cluster [4445490.908676] Node 0
Dec 5 19:29:38 node001.cvos.cluster DMA free:15896kB min:20kB low:24kB high:28kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15304kB mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB slab_reclaimable:0kB slab_unreclaimable:0kB kernel_stack:0kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? yes
Dec 5 19:29:38 node001.cvos.cluster [4445490.908933] lowmem_reserve[]:
Dec 5 19:29:38 node001.cvos.cluster 0
Dec 5 19:29:38 node001.cvos.cluster 2999
Dec 5 19:29:38 node001.cvos.cluster 8049
Dec 5 19:29:38 node001.cvos.cluster 8049
Dec 5 19:29:38 node001.cvos.cluster
Dec 5 19:29:38 node001.cvos.cluster [4445490.909248] Node 0
Dec 5 19:29:38 node001.cvos.cluster DMA32 free:24040kB min:4272kB low:5340kB high:6408kB active_anon:2315284kB inactive_anon:579132kB active_file:140kB inactive_file:128kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:3071996kB mlocked:0kB dirty:0kB writeback:20kB mapped:192kB shmem:0kB slab_reclaimable:364kB slab_unreclaimable:524kB kernel_stack:16kB pagetables:16688kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:225 all_unreclaimable? no
Dec 5 19:29:38 node001.cvos.cluster [4445490.909527] lowmem_reserve[]:
Dec 5 19:29:38 node001.cvos.cluster 0
Dec 5 19:29:38 node001.cvos.cluster 0
Dec 5 19:29:38 node001.cvos.cluster 5050
Dec 5 19:29:38 node001.cvos.cluster 5050
Dec 5 19:29:38 node001.cvos.cluster
Dec 5 19:29:38 node001.cvos.cluster [4445490.909840] Node 0
Dec 5 19:29:38 node001.cvos.cluster Normal free:6956kB min:7192kB low:8988kB high:10788kB active_anon:4284392kB inactive_anon:714100kB active_file:444kB inactive_file:460kB unevictable:13788kB isolated(anon):0kB isolated(file):0kB present:5171200kB mlocked:5528kB dirty:4kB writeback:4kB mapped:4732kB shmem:0kB slab_reclaimable:7480kB slab_unreclaimable:11564kB kernel_stack:1632kB pagetables:32468kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:2272 all_unreclaimable? no
Dec 5 19:29:38 node001.cvos.cluster [4445490.910106] lowmem_reserve[]:
Dec 5 19:29:38 node001.cvos.cluster 0
Dec 5 19:29:38 node001.cvos.cluster last message repeated 3 times
Dec 5 19:29:38 node001.cvos.cluster
Dec 5 19:29:38 node001.cvos.cluster [4445490.910418] Node 0
Dec 5 19:29:38 node001.cvos.cluster DMA:
Dec 5 19:29:38 node001.cvos.cluster 0*4kB
Dec 5 19:29:38 node001.cvos.cluster 1*8kB
Dec 5 19:29:38 node001.cvos.cluster 1*16kB
Dec 5 19:29:38 node001.cvos.cluster 2*32kB
Dec 5 19:29:38 node001.cvos.cluster 3*64kB
Dec 5 19:29:38 node001.cvos.cluster 2*128kB
Dec 5 19:29:38 node001.cvos.cluster 0*256kB
Dec 5 19:29:38 node001.cvos.cluster 0*512kB
Dec 5 19:29:38 node001.cvos.cluster 1*1024kB
Dec 5 19:29:38 node001.cvos.cluster 1*2048kB
Dec 5 19:29:38 node001.cvos.cluster 3*4096kB
Dec 5 19:29:38 node001.cvos.cluster = 15896kB
Dec 5 19:29:38 node001.cvos.cluster [4445490.911147] Node 0
Dec 5 19:29:38 node001.cvos.cluster DMA32:
Dec 5 19:29:38 node001.cvos.cluster 19*4kB
Dec 5 19:29:38 node001.cvos.cluster 3*8kB
Dec 5 19:29:38 node001.cvos.cluster 6*16kB
Dec 5 19:29:38 node001.cvos.cluster 45*32kB
Dec 5 19:29:38 node001.cvos.cluster 6*64kB
Dec 5 19:29:38 node001.cvos.cluster 3*128kB
Dec 5 19:29:38 node001.cvos.cluster 9*256kB
Dec 5 19:29:38 node001.cvos.cluster 10*512kB
Dec 5 19:29:38 node001.cvos.cluster 6*1024kB
Dec 5 19:29:38 node001.cvos.cluster 2*2048kB
Dec 5 19:29:38 node001.cvos.cluster 1*4096kB
Dec 5 19:29:38 node001.cvos.cluster = 24164kB
Dec 5 19:29:38 node001.cvos.cluster [4445490.911877] Node 0
Dec 5 19:29:38 node001.cvos.cluster Normal:
Dec 5 19:29:38 node001.cvos.cluster 100*4kB
Dec 5 19:29:38 node001.cvos.cluster 19*8kB
Dec 5 19:29:38 node001.cvos.cluster 15*16kB
Dec 5 19:29:38 node001.cvos.cluster 63*32kB
Dec 5 19:29:38 node001.cvos.cluster 1*64kB
Dec 5 19:29:38 node001.cvos.cluster 1*128kB
Dec 5 19:29:38 node001.cvos.cluster 1*256kB
Dec 5 19:29:38 node001.cvos.cluster 1*512kB
Dec 5 19:29:38 node001.cvos.cluster 1*1024kB
Dec 5 19:29:38 node001.cvos.cluster 1*2048kB
Dec 5 19:29:38 node001.cvos.cluster 0*4096kB
Dec 5 19:29:38 node001.cvos.cluster = 6840kB
Dec 5 19:29:38 node001.cvos.cluster [4445490.912610] 28387 total pagecache pages
Dec 5 19:29:38 node001.cvos.cluster [4445490.912681] 24865 pages in swap cache
Dec 5 19:29:38 node001.cvos.cluster [4445490.912752] Swap cache stats: add 16262569, delete 16237704, find 334415/348361
Dec 5 19:29:38 node001.cvos.cluster [4445490.912844] Free swap = 0kB
Dec 5 19:29:38 node001.cvos.cluster [4445490.912914] Total swap = 15639700kB
Dec 5 19:29:38 node001.cvos.cluster [4445490.953112] Out of memory: kill process 29986 (2986853) score 870776 or a child
Dec 5 19:29:38 node001.cvos.cluster [4445490.953213] Killed process 30011 (IN)
Dec 5 19:29:38 node001.cvos.cluster [4445491.020475] IN invoked oom-killer: gfp_mask=0x280da, order=0, oom_adj=0
Dec 5 19:29:38 node001.cvos.cluster [4445491.020584] Pid: 29979, comm: IN Not tainted 2.6.32.15 #1
Dec 5 19:29:38 node001.cvos.cluster [4445491.020662] Call Trace:
Dec 5 19:29:38 node001.cvos.cluster [4445491.020745] [<ffffffff8106bd0c>] ? cpuset_print_task_mems_allowed+0x8c/0x97
Dec 5 19:29:38 node001.cvos.cluster [4445491.020866] [<ffffffff81080439>] oom_kill_process+0x84/0x291
Dec 5 19:29:38 node001.cvos.cluster [4445491.020945] [<ffffffff81080955>] ? select_bad_process+0xab/0xf0
Dec 5 19:29:38 node001.cvos.cluster [4445491.021027] [<ffffffff81080a1f>] __out_of_memory+0x85/0x94
Dec 5 19:29:38 node001.cvos.cluster [4445491.021107] [<ffffffff81080b76>] out_of_memory+0x148/0x17a
Dec 5 19:29:38 node001.cvos.cluster [4445491.021187] [<ffffffff81089bc0>] ? try_to_free_pages+0x69/0x6b
Dec 5 19:29:38 node001.cvos.cluster [4445491.021268] [<ffffffff81084017>] __alloc_pages_nodemask+0x4a4/0x593
Dec 5 19:29:38 node001.cvos.cluster [4445491.021352] [<ffffffff810a5793>] alloc_page_vma+0xc9/0xcb
Dec 5 19:29:38 node001.cvos.cluster [4445491.021431] [<ffffffff81086423>] ? lru_cache_add_lru+0x22/0x24
Dec 5 19:29:38 node001.cvos.cluster [4445491.021512] [<ffffffff8109420a>] handle_mm_fault+0x1cf/0x771
Dec 5 19:29:38 node001.cvos.cluster [4445491.021593] [<ffffffff81026078>] do_page_fault+0x233/0x24b
Dec 5 19:29:38 node001.cvos.cluster [4445491.021676] [<ffffffff8134573f>] page_fault+0x1f/0x30
Dec 5 19:29:38 node001.cvos.cluster [4445491.021758] Node 0
Dec 5 19:29:38 node001.cvos.cluster DMA per-cpu:
Dec 5 19:29:38 node001.cvos.cluster [4445491.021890] CPU 0: hi: 0, btch: 1 usd: 0
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.905133] IN invoked oom-killer: gfp_mask=0x280da, order=0, oom_adj=0
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.905208] IN cpuset=/ mems_allowed=0
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.905212] Pid: 30009, comm: IN Not tainted 2.6.32.15 #1
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.905275] Call Trace:
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.905341] [<ffffffff8106bd0c>] ? cpuset_print_task_mems_allowed+0x8c/0x97
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.905409] [<ffffffff81080439>] oom_kill_process+0x84/0x291
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.905472] [<ffffffff81080955>] ? select_bad_process+0xab/0xf0
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.905548] [<ffffffff81080a1f>] __out_of_memory+0x85/0x94
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.905614] [<ffffffff81080b76>] out_of_memory+0x148/0x17a
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.905682] [<ffffffff81089bc0>] ? try_to_free_pages+0x69/0x6b
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.905747] [<ffffffff81084017>] __alloc_pages_nodemask+0x4a4/0x593
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.905815] [<ffffffff810a5793>] alloc_page_vma+0xc9/0xcb
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.905881] [<ffffffff8109420a>] handle_mm_fault+0x1cf/0x771
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.905959] [<ffffffff8100b9ae>] ? invalidate_interrupt0+0xe/0x20
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.906038] [<ffffffff81026078>] do_page_fault+0x233/0x24b
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.906116] [<ffffffff8134573f>] page_fault+0x1f/0x30
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.906190] Mem-Info:
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.906193] Node 0 DMA per-cpu:
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.906311] CPU 0: hi: 0, btch: 1 usd: 0
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.906384] CPU 1: hi: 0, btch: 1 usd: 0
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.906457] CPU 2: hi: 0, btch: 1 usd: 0
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.906530] CPU 3: hi: 0, btch: 1 usd: 0
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.906603] CPU 4: hi: 0, btch: 1 usd: 0
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.906676] CPU 5: hi: 0, btch: 1 usd: 0
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.906749] CPU 6: hi: 0, btch: 1 usd: 0
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.906821] CPU 7: hi: 0, btch: 1 usd: 0
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.906894] Node 0 DMA32 per-cpu:
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.907013] CPU 0: hi: 186, btch: 31 usd: 130
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.907087] CPU 1: hi: 186, btch: 31 usd: 88
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.907160] CPU 2: hi: 186, btch: 31 usd: 178
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.907233] CPU 3: hi: 186, btch: 31 usd: 52
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.907306] CPU 4: hi: 186, btch: 31 usd: 95
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.907379] CPU 5: hi: 186, btch: 31 usd: 117
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.907452] CPU 6: hi: 186, btch: 31 usd: 79
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.907525] CPU 7: hi: 186, btch: 31 usd: 158
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.907597] Node 0 Normal per-cpu:
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.907716] CPU 0: hi: 186, btch: 31 usd: 65
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.907789] CPU 1: hi: 186, btch: 31 usd: 132
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.907862] CPU 2: hi: 186, btch: 31 usd: 98
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.907935] CPU 3: hi: 186, btch: 31 usd: 86
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.908009] CPU 4: hi: 186, btch: 31 usd: 99
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.908082] CPU 5: hi: 186, btch: 31 usd: 70
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.908155] CPU 6: hi: 186, btch: 31 usd: 163
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.908228] CPU 7: hi: 186, btch: 31 usd: 153
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.908305] active_anon:1649919 inactive_anon:323308 isolated_anon:0
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.908306] active_file:146 inactive_file:147 isolated_file:0
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.908308] unevictable:3447 dirty:1 writeback:6 unstable:0
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.908309] free:11723 slab_reclaimable:1961 slab_unreclaimable:3022
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.908311] mapped:1231 shmem:0 pagetables:12289 bounce:0
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.908676] Node 0 DMA free:15896kB min:20kB low:24kB high:28kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15304kB mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB slab_reclaimable:0kB slab_unreclaimable:0kB kernel_stack:0kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? yes
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.908933] lowmem_reserve[]: 0 2999 8049 8049
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.909248] Node 0 DMA32 free:24040kB min:4272kB low:5340kB high:6408kB active_anon:2315284kB inactive_anon:579132kB active_file:140kB inactive_file:128kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:3071996kB mlocked:0kB dirty:0kB writeback:20kB mapped:192kB shmem:0kB slab_reclaimable:364kB slab_unreclaimable:524kB kernel_stack:16kB pagetables:16688kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:225 all_unreclaimable? no
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.909527] lowmem_reserve[]: 0 0 5050 5050
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.909840] Node 0 Normal free:6956kB min:7192kB low:8988kB high:10788kB active_anon:4284392kB inactive_anon:714100kB active_file:444kB inactive_file:460kB unevictable:13788kB isolated(anon):0kB isolated(file):0kB present:5171200kB mlocked:5528kB dirty:4kB writeback:4kB mapped:4732kB shmem:0kB slab_reclaimable:7480kB slab_unreclaimable:11564kB kernel_stack:1632kB pagetables:32468kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:2272 all_unreclaimable? no
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.910106] lowmem_reserve[]: 0 0 0 0
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.910418] Node 0 DMA: 0*4kB 1*8kB 1*16kB 2*32kB 3*64kB 2*128kB 0*256kB 0*512kB 1*1024kB 1*2048kB 3*4096kB = 15896kB
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.911147] Node 0 DMA32: 19*4kB 3*8kB 6*16kB 45*32kB 6*64kB 3*128kB 9*256kB 10*512kB 6*1024kB 2*2048kB 1*4096kB = 24164kB
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.911877] Node 0 Normal: 100*4kB 19*8kB 15*16kB 63*32kB 1*64kB 1*128kB 1*256kB 1*512kB 1*1024kB 1*2048kB 0*4096kB = 6840kB
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.912610] 28387 total pagecache pages
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.912681] 24865 pages in swap cache
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.912752] Swap cache stats: add 16262569, delete 16237704, find 334415/348361
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.912844] Free swap = 0kB
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.912914] Total swap = 15639700kB
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.953100] 2097152 pages RAM
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.953104] 47211 pages reserved
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.953106] 5570 pages shared
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.953107] 2034676 pages non-shared
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.953112] Out of memory: kill process 29986 (2986853) score 870776 or a child
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445490.953213] Killed process 30011 (IN)
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445491.020475] IN invoked oom-killer: gfp_mask=0x280da, order=0, oom_adj=0
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445491.020578] IN cpuset=/ mems_allowed=0
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445491.020584] Pid: 29979, comm: IN Not tainted 2.6.32.15 #1
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445491.020662] Call Trace:
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445491.020745] [<ffffffff8106bd0c>] ? cpuset_print_task_mems_allowed+0x8c/0x97
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445491.020866] [<ffffffff81080439>] oom_kill_process+0x84/0x291
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445491.020945] [<ffffffff81080955>] ? select_bad_process+0xab/0xf0
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445491.021027] [<ffffffff81080a1f>] __out_of_memory+0x85/0x94
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445491.021107] [<ffffffff81080b76>] out_of_memory+0x148/0x17a
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445491.021187] [<ffffffff81089bc0>] ? try_to_free_pages+0x69/0x6b
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445491.021268] [<ffffffff81084017>] __alloc_pages_nodemask+0x4a4/0x593
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445491.021352] [<ffffffff810a5793>] alloc_page_vma+0xc9/0xcb
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445491.021431] [<ffffffff81086423>] ? lru_cache_add_lru+0x22/0x24
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445491.021512] [<ffffffff8109420a>] handle_mm_fault+0x1cf/0x771
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445491.021593] [<ffffffff81026078>] do_page_fault+0x233/0x24b
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445491.021676] [<ffffffff8134573f>] page_fault+0x1f/0x30
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445491.021756] Mem-Info:
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445491.021758] Node 0 DMA per-cpu:
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445491.021890] CPU 0: hi: 0, btch: 1 usd: 0
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445491.021968] CPU 1: hi: 0, btch: 1 usd: 0
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445491.022070] BUG: unable to handle kernel NULL pointer dereference at (null)
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445491.022073] IP: [<ffffffff812527c8>] bnx2_poll_work+0x2a/0x989
Dec 5 19:29:38 node001.cvos.cluster kernel: [4445491.022081] PGD 234ca4067 PUD 224558067 PMD 0
--
Frederik Himpe
^ permalink raw reply
* Re: [PATCH] ipv6: add special mode forwarding=2 to send RS while configured as router
From: Thomas Graf @ 2010-12-06 11:26 UTC (permalink / raw)
To: netdev, davem, yoshfuji
In-Reply-To: <20101124180306.GA20862@srv03.cluenet.de>
On Wed, Nov 24, 2010 at 07:03:06PM +0100, Daniel Roesen wrote:
> On Fri, Sep 03, 2010 at 09:04:20AM -0400, Thomas Graf wrote:
> > Similar to accepting router advertisement, the IPv6 stack does not send router
> > solicitations if forwarding is enabled.
> >
> > This patch enables this behavior to be overruled by setting forwarding to the
> > special value 2.
>
> Wouldn't it be more elegant to use accept_ra=2 as trigger instead of a new special
> value for the forwarding option?
Two reasons: I didn't want to change the behaviour of an existing
configuration option on which someone may rely on and I wanted to
allow sending of RS while still allowing to disable accepting RAs.
^ permalink raw reply
* [PATCH] l2tp: Fix modalias of l2tp_ip
From: Michal Marek @ 2010-12-06 12:39 UTC (permalink / raw)
To: James Chapman; +Cc: David S. Miller, netdev, linux-kernel
Using the SOCK_DGRAM enum results in
"net-pf-2-proto-SOCK_DGRAM-type-115", so use the numeric value like it
is done in net/dccp.
Signed-off-by: Michal Marek <mmarek@suse.cz>
---
net/l2tp/l2tp_ip.c | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/net/l2tp/l2tp_ip.c b/net/l2tp/l2tp_ip.c
index 0bf6a59..522e219 100644
--- a/net/l2tp/l2tp_ip.c
+++ b/net/l2tp/l2tp_ip.c
@@ -674,4 +674,8 @@ MODULE_LICENSE("GPL");
MODULE_AUTHOR("James Chapman <jchapman@katalix.com>");
MODULE_DESCRIPTION("L2TP over IP");
MODULE_VERSION("1.0");
-MODULE_ALIAS_NET_PF_PROTO_TYPE(PF_INET, SOCK_DGRAM, IPPROTO_L2TP);
+
+/* Use the value of SOCK_DGRAM (2) directory, because __stringify does't like
+ * enums
+ */
+MODULE_ALIAS_NET_PF_PROTO_TYPE(PF_INET, 2, IPPROTO_L2TP);
--
1.7.3.1
^ permalink raw reply related
* [patch 1/1] driver/net/benet: fix be_cmd_multicast_set() memcpy bug
From: Joe Jin @ 2010-12-06 13:00 UTC (permalink / raw)
To: sathyap, subbus, sarveshwarb, ajitk
Cc: netdev, linux-kernel, greg.marsden, guru.anbalagane, joe.jin
Hi,
Regarding benet be_cmd_multicast_set() function, now using
netdev_for_each_mc_addr() helper for mac address copy, but
when copying to req->mac[] did not increase of the index.
Cc: Sathya Perla <sathyap@serverengines.com>
Cc: Subbu Seetharaman <subbus@serverengines.com>
Cc: Sarveshwar Bandi <sarveshwarb@serverengines.com>
Cc: Ajit Khaparde <ajitk@serverengines.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
---
be_cmds.c | 2 +-
diff --git a/drivers/net/benet/be_cmds.c b/drivers/net/benet/be_cmds.c
index 36eca1c..e4465d2 100644
--- a/drivers/net/benet/be_cmds.c
+++ b/drivers/net/benet/be_cmds.c
@@ -1235,7 +1235,7 @@ int be_cmd_multicast_set(struct be_adapter *adapter, u32 if_id,
i = 0;
netdev_for_each_mc_addr(ha, netdev)
- memcpy(req->mac[i].byte, ha->addr, ETH_ALEN);
+ memcpy(req->mac[i++].byte, ha->addr, ETH_ALEN);
} else {
req->promiscuous = 1;
}
--
Oracle <http://www.oracle.com>
Joe Jin | Team Leader, Software Development | +8610.8278.6295
ORACLE | Linux and Virtualization
Incubator Building 2-A ZPark | Beijing China, 100094
^ permalink raw reply related
* biosdevname v0.3.2
From: Matt Domsch @ 2010-12-06 14:06 UTC (permalink / raw)
To: linux-hotplug, netdev, K, Narendra, Hargrave, Jordan,
Rose, Charles, Co
Bugfix update to biosdevname, now version 0.3.2.
The legacy code for reading the PCI IRQ Routing Table ($PIR) and the
PCMCIA information has been removed. This means biosdevname will only
report BIOS-provided names if your system has SMBIOS 2.6 or higher and
has the information in Type 9 or Type 41. This is in preparation for
widespread use, and will keep biosdevname from suggesting names on
systems that are well into or beyond their useful lifetime and
introducing an unexpected change of behavior on them. Dell PowerEdge
10G and newer, HP ProLiant G6 and newer are known to have SMBIOS 2.6,
as do a number of desktop, laptop, and netbook-class systems as
reported on the fedora-devel mailing list.
This release also provides correct names for Intel and Broadcom
quad-port GigE cards that I've tried. Format is pci<slot>#<port>.
Grab it here:
http://linux.dell.com/files/biosdevname/permalink/biosdevname-0.3.2.tar.gz
http://linux.dell.com/files/biosdevname/permalink/biosdevname-0.3.2.tar.gz.sign
git://linux.dell.com/biosdevname.git
This is already built in Fedora rawhide (will be 15), and I encourage
other distributions to pick it up as well.
On a related note, I've submitted a patch to dracut upstream to
include calls to biosdevname via udev. This will let us use
BIOS-suggested names for network functionality during initramfs time,
such as finding your root file system on NFS or iSCSI.
Shortlog:
Matt Domsch (7):
only match on smbios_type Ethernet, ignore sysfs index file for now
PIRQ-ectomy, add pci_access pointer to state, pci_dev pointer instead of struct in pci_device
PCMCIA-ectomy
copy SMBIOS slot info to all matching domain/bus/device/functions
skip bridges when setting index_in_slot
fix RPM spec URL
bump version
Thanks,
Matt
--
Matt Domsch
Technology Strategist
Dell | Office of the CTO
^ permalink raw reply
* Re: [PATCH 3/5] xfrm: Traffic Flow Confidentiality for IPv4 ESP
From: Martin Willi @ 2010-12-06 15:10 UTC (permalink / raw)
To: Herbert Xu; +Cc: linux-crypto, netdev
In-Reply-To: <20101203083908.GA2940@gondor.apana.org.au>
Hi Herbert,
> I know why you want to do this, what I'm asking is do you have any
> research behind this with regards to security
>
> Has this scheme been discussed on a public forum somewhere?
No, sorry, I haven't found much valuable discussion about TFC padding.
Nothing at all how to overcome the ESPv2 padding limit.
> using an insecure RNG to generate a value that is then used as the
> basis for concealment
Using get_random_bytes() adds another ~10% processing overhead due to
the underlying sha_transform. But this is probably negligible, we add
much more with the additional padding to encrypt/MAC.
I'll re-spin the patchset with get_random_bytes(). Even if the ESPv2
padding fallback makes TFC in this case less efficient, it shouldn't
harm. Or do you see this differently?
Regards
Martin
^ permalink raw reply
* Re: [PATCH 3/5] xfrm: Traffic Flow Confidentiality for IPv4 ESP
From: Herbert Xu @ 2010-12-06 15:22 UTC (permalink / raw)
To: Martin Willi; +Cc: linux-crypto, netdev
In-Reply-To: <1291648225.1954.179.camel@martin>
On Mon, Dec 06, 2010 at 04:10:25PM +0100, Martin Willi wrote:
> >
> > Has this scheme been discussed on a public forum somewhere?
>
> No, sorry, I haven't found much valuable discussion about TFC padding.
> Nothing at all how to overcome the ESPv2 padding limit.
OK.
> I'll re-spin the patchset with get_random_bytes(). Even if the ESPv2
> padding fallback makes TFC in this case less efficient, it shouldn't
> harm. Or do you see this differently?
Indeed I don't think we should do anything for the ESPv2 case
at all without having this discussed in an appropriate forum
first.
So please remove that part completely from your submission for
now.
Thanks,
--
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
^ permalink raw reply
* Re: NET_NS: unregister_netdevice: waiting for lo to become free (adding ipv6 address to interface)
From: Menil Jean-Philippe @ 2010-12-06 16:08 UTC (permalink / raw)
To: netdev
Cc: Michael Leun, David Lamparter, Eric W. Biederman, Greg KH, davem,
linux-kernel, Alexey Dobriyan, Patrick McHardy
In-Reply-To: <20101024151541.161bf46c@xenia.leun.net>
[-- Attachment #1: Type: text/plain, Size: 11175 bytes --]
Le 24/10/2010 15:15, Michael Leun a écrit :
> On Fri, 22 Oct 2010 19:05:32 +0200
> Michael Leun<lkml20100708@newton.leun.net> wrote:
>
>> On Fri, 22 Oct 2010 14:48:58 +0200
>> David Lamparter<equinox@diac24.net> wrote:
>>
>>> On Thu, Oct 21, 2010 at 05:15:32PM +0200, Michael Leun wrote:
>>>> unfortunately the bug described below originally reported in
>>>> 2.6.35-rcX is still there in 2.6.36.
>>>
>>> can you post your full kernel .config?
>>
>> Please find below.
>>
>>> I'm using network namespaces quite extensively - OpenVPN and IPv6
>>> included - and i haven't hit this bug. That makes it rather likely
>>> it depends on some option difference.
>>
>> I take candidates for options to change for test... ;-)
>>
>> Maybe I will try to strip it down for test towards a minimal config.
>
> Now I have tried a kernel config with almost everything disabled -
> please find below.
>
> If I have overlooked anything I should disable (or if you suggest I
> should not disable, but enable any option) - please tell me.
>
> I've created an ~2.5MB bootable ISO image based on buildroot/busybox
> with this kernel, which also shows this bug (e.g. when run in
> VirtualBox).
>
> If anybody is interested I could send this image as mail attachment or
> provide a download link.
>
> ml@xenia:~> grep -v "^#" .config |grep -v "^ *$"
> CONFIG_X86_32=y
> CONFIG_X86=y
> CONFIG_INSTRUCTION_DECODER=y
> CONFIG_OUTPUT_FORMAT="elf32-i386"
> CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
> CONFIG_GENERIC_CMOS_UPDATE=y
> CONFIG_CLOCKSOURCE_WATCHDOG=y
> CONFIG_GENERIC_CLOCKEVENTS=y
> CONFIG_LOCKDEP_SUPPORT=y
> CONFIG_STACKTRACE_SUPPORT=y
> CONFIG_HAVE_LATENCYTOP_SUPPORT=y
> CONFIG_MMU=y
> CONFIG_ZONE_DMA=y
> CONFIG_NEED_SG_DMA_LENGTH=y
> CONFIG_GENERIC_ISA_DMA=y
> CONFIG_GENERIC_IOMAP=y
> CONFIG_GENERIC_BUG=y
> CONFIG_GENERIC_HWEIGHT=y
> CONFIG_ARCH_MAY_HAVE_PC_FDC=y
> CONFIG_RWSEM_XCHGADD_ALGORITHM=y
> CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
> CONFIG_GENERIC_CALIBRATE_DELAY=y
> CONFIG_ARCH_HAS_CPU_RELAX=y
> CONFIG_ARCH_HAS_DEFAULT_IDLE=y
> CONFIG_ARCH_HAS_CACHE_LINE_SIZE=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_ARCH_POPULATES_NODE_MAP=y
> CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
> CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
> CONFIG_HAVE_EARLY_RES=y
> CONFIG_GENERIC_HARDIRQS=y
> CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
> CONFIG_GENERIC_IRQ_PROBE=y
> CONFIG_X86_32_LAZY_GS=y
> CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-ecx -fcall-saved-edx"
> CONFIG_KTIME_SCALAR=y
> CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
> CONFIG_CONSTRUCTORS=y
> CONFIG_EXPERIMENTAL=y
> CONFIG_BROKEN_ON_SMP=y
> CONFIG_INIT_ENV_ARG_LIMIT=32
> CONFIG_CROSS_COMPILE=""
> CONFIG_LOCALVERSION=""
> CONFIG_HAVE_KERNEL_GZIP=y
> CONFIG_HAVE_KERNEL_BZIP2=y
> CONFIG_HAVE_KERNEL_LZMA=y
> CONFIG_HAVE_KERNEL_LZO=y
> CONFIG_KERNEL_LZMA=y
> CONFIG_TREE_RCU=y
> CONFIG_RCU_FANOUT=32
> CONFIG_IKCONFIG=y
> CONFIG_IKCONFIG_PROC=y
> CONFIG_LOG_BUF_SHIFT=18
> CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
> CONFIG_NAMESPACES=y
> CONFIG_NET_NS=y
> CONFIG_BLK_DEV_INITRD=y
> CONFIG_INITRAMFS_SOURCE=""
> CONFIG_RD_GZIP=y
> CONFIG_RD_BZIP2=y
> CONFIG_RD_LZMA=y
> CONFIG_RD_LZO=y
> CONFIG_SYSCTL=y
> CONFIG_ANON_INODES=y
> CONFIG_UID16=y
> CONFIG_SYSCTL_SYSCALL=y
> CONFIG_KALLSYMS=y
> CONFIG_HOTPLUG=y
> CONFIG_PRINTK=y
> CONFIG_BUG=y
> CONFIG_ELF_CORE=y
> CONFIG_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_HAVE_PERF_EVENTS=y
> CONFIG_PERF_EVENTS=y
> CONFIG_VM_EVENT_COUNTERS=y
> CONFIG_PCI_QUIRKS=y
> CONFIG_SLUB_DEBUG=y
> CONFIG_SLUB=y
> CONFIG_HAVE_OPROFILE=y
> CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=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_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_GENERIC_DMA_COHERENT=y
> CONFIG_SLABINFO=y
> CONFIG_RT_MUTEXES=y
> CONFIG_BASE_SMALL=0
> CONFIG_BLOCK=y
> CONFIG_LBDAF=y
> CONFIG_IOSCHED_NOOP=y
> CONFIG_DEFAULT_NOOP=y
> CONFIG_DEFAULT_IOSCHED="noop"
> CONFIG_INLINE_SPIN_UNLOCK=y
> CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
> CONFIG_INLINE_READ_UNLOCK=y
> CONFIG_INLINE_READ_UNLOCK_IRQ=y
> CONFIG_INLINE_WRITE_UNLOCK=y
> CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
> CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
> CONFIG_M586=y
> CONFIG_X86_CPU=y
> CONFIG_X86_INTERNODE_CACHE_SHIFT=5
> CONFIG_X86_CMPXCHG=y
> CONFIG_X86_L1_CACHE_SHIFT=5
> CONFIG_X86_XADD=y
> CONFIG_X86_F00F_BUG=y
> CONFIG_X86_WP_WORKS_OK=y
> CONFIG_X86_INVLPG=y
> CONFIG_X86_BSWAP=y
> CONFIG_X86_POPAD_OK=y
> CONFIG_X86_ALIGNMENT_16=y
> CONFIG_X86_MINIMUM_CPU_FAMILY=4
> CONFIG_CPU_SUP_INTEL=y
> CONFIG_CPU_SUP_CYRIX_32=y
> CONFIG_CPU_SUP_AMD=y
> CONFIG_CPU_SUP_CENTAUR=y
> CONFIG_CPU_SUP_TRANSMETA_32=y
> CONFIG_CPU_SUP_UMC_32=y
> CONFIG_DMI=y
> CONFIG_NR_CPUS=1
> CONFIG_PREEMPT_NONE=y
> CONFIG_VM86=y
> CONFIG_HIGHMEM4G=y
> CONFIG_PAGE_OFFSET=0xC0000000
> CONFIG_HIGHMEM=y
> CONFIG_NEED_NODE_MEMMAP_SIZE=y
> CONFIG_ARCH_FLATMEM_ENABLE=y
> CONFIG_ARCH_SPARSEMEM_ENABLE=y
> CONFIG_ARCH_SELECT_MEMORY_MODEL=y
> CONFIG_ILLEGAL_POINTER_VALUE=0
> CONFIG_SELECT_MEMORY_MODEL=y
> CONFIG_SPARSEMEM_MANUAL=y
> CONFIG_SPARSEMEM=y
> CONFIG_HAVE_MEMORY_PRESENT=y
> CONFIG_SPARSEMEM_STATIC=y
> CONFIG_SPLIT_PTLOCK_CPUS=4
> CONFIG_ZONE_DMA_FLAG=1
> CONFIG_BOUNCE=y
> CONFIG_VIRT_TO_BUS=y
> CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
> CONFIG_MTRR=y
> CONFIG_X86_PAT=y
> CONFIG_ARCH_USES_PG_UNCACHED=y
> CONFIG_HZ_1000=y
> CONFIG_HZ=1000
> CONFIG_PHYSICAL_START=0x1000000
> CONFIG_PHYSICAL_ALIGN=0x1000000
> CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
> CONFIG_PCI=y
> CONFIG_PCI_GOANY=y
> CONFIG_PCI_BIOS=y
> CONFIG_PCI_DIRECT=y
> CONFIG_PCI_DOMAINS=y
> CONFIG_ISA_DMA_API=y
> CONFIG_K8_NB=y
> CONFIG_BINFMT_ELF=y
> CONFIG_HAVE_AOUT=y
> CONFIG_HAVE_ATOMIC_IOMAP=y
> CONFIG_NET=y
> CONFIG_UNIX=y
> CONFIG_INET=y
> CONFIG_IP_FIB_HASH=y
> CONFIG_TCP_CONG_CUBIC=y
> CONFIG_DEFAULT_TCP_CONG="cubic"
> CONFIG_IPV6=y
> CONFIG_UEVENT_HELPER_PATH=""
> CONFIG_DEVTMPFS=y
> CONFIG_DEVTMPFS_MOUNT=y
> CONFIG_PREVENT_FIRMWARE_BUILD=y
> CONFIG_FW_LOADER=y
> CONFIG_EXTRA_FIRMWARE=""
> CONFIG_HAVE_IDE=y
> CONFIG_SCSI_MOD=y
> CONFIG_NETDEVICES=y
> CONFIG_VETH=y
> CONFIG_INPUT=y
> CONFIG_INPUT_MOUSEDEV=y
> CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
> CONFIG_INPUT_MOUSEDEV_SCREEN_Y=576
> CONFIG_INPUT_KEYBOARD=y
> CONFIG_KEYBOARD_ATKBD=y
> CONFIG_SERIO=y
> CONFIG_SERIO_I8042=y
> CONFIG_SERIO_LIBPS2=y
> CONFIG_VT=y
> CONFIG_CONSOLE_TRANSLATIONS=y
> CONFIG_VT_CONSOLE=y
> CONFIG_HW_CONSOLE=y
> CONFIG_FIX_EARLYCON_MEM=y
> CONFIG_UNIX98_PTYS=y
> CONFIG_DEVPORT=y
> CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
> CONFIG_SSB_POSSIBLE=y
> CONFIG_VGA_ARB=y
> CONFIG_VGA_ARB_MAX_GPUS=16
> CONFIG_VGA_CONSOLE=y
> CONFIG_VGACON_SOFT_SCROLLBACK=y
> CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64
> CONFIG_DUMMY_CONSOLE=y
> CONFIG_FIRMWARE_MEMMAP=y
> CONFIG_FILE_LOCKING=y
> CONFIG_PROC_FS=y
> CONFIG_PROC_SYSCTL=y
> CONFIG_PROC_PAGE_MONITOR=y
> CONFIG_SYSFS=y
> CONFIG_MSDOS_PARTITION=y
> CONFIG_TRACE_IRQFLAGS_SUPPORT=y
> CONFIG_FRAME_WARN=2048
> CONFIG_DEBUG_BUGVERBOSE=y
> CONFIG_DEBUG_MEMORY_INIT=y
> CONFIG_ARCH_WANT_FRAME_POINTERS=y
> 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_TRACING_SUPPORT=y
> CONFIG_HAVE_ARCH_KGDB=y
> CONFIG_HAVE_ARCH_KMEMCHECK=y
> CONFIG_EARLY_PRINTK=y
> CONFIG_DOUBLEFAULT=y
> 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_DEFAULT_IO_DELAY_TYPE=0
> CONFIG_DEFAULT_SECURITY_DAC=y
> CONFIG_DEFAULT_SECURITY=""
> CONFIG_HAVE_KVM=y
> CONFIG_GENERIC_FIND_FIRST_BIT=y
> CONFIG_GENERIC_FIND_NEXT_BIT=y
> CONFIG_GENERIC_FIND_LAST_BIT=y
> CONFIG_ZLIB_INFLATE=y
> CONFIG_LZO_DECOMPRESS=y
> CONFIG_DECOMPRESS_GZIP=y
> CONFIG_DECOMPRESS_BZIP2=y
> CONFIG_DECOMPRESS_LZMA=y
> CONFIG_DECOMPRESS_LZO=y
> CONFIG_HAS_IOMEM=y
> CONFIG_HAS_IOPORT=y
> CONFIG_HAS_DMA=y
> CONFIG_NLATTR=y
>
Hi,
curiously, i'm facing a similar problem in 2.6.36.1
in my container, when i configure ipv6 adress on the interfaces,
everything seems good on the first boot of the host. If i shutdown my
container (lxc), then boot it, i observe the following logs:
Dec 6 17:04:12 suntory.u06.univ-nantes.prive kernel: [ 368.192019]
unregister_netdevice: waiting for lo to become free. Usage count = 4
Dec 6 17:04:22 suntory.u06.univ-nantes.prive kernel: [ 378.432018]
unregister_netdevice: waiting for lo to become free. Usage count = 4
Dec 6 17:04:32 suntory.u06.univ-nantes.prive kernel: [ 388.672015]
unregister_netdevice: waiting for lo to become free. Usage count = 4
Dec 6 17:04:42 suntory.u06.univ-nantes.prive kernel: [ 398.912016]
unregister_netdevice: waiting for lo to become free. Usage count = 4
Dec 6 17:04:53 suntory.u06.univ-nantes.prive kernel: [ 409.152016]
unregister_netdevice: waiting for lo to become free. Usage count = 4
Dec 6 17:05:03 suntory.u06.univ-nantes.prive kernel: [ 419.392018]
unregister_netdevice: waiting for lo to become free. Usage count = 4
Dec 6 17:05:13 suntory.u06.univ-nantes.prive kernel: [ 429.632018]
unregister_netdevice: waiting for lo to become free. Usage count = 4
Dec 6 17:05:23 suntory.u06.univ-nantes.prive kernel: [ 439.876016]
unregister_netdevice: waiting for lo to become free. Usage count = 4
Dec 6 17:05:34 suntory.u06.univ-nantes.prive kernel: [ 450.116015]
unregister_netdevice: waiting for lo to become free. Usage count = 4
Dec 6 17:05:44 suntory.u06.univ-nantes.prive kernel: [ 460.356019]
unregister_netdevice: waiting for lo to become free. Usage count = 4
Dec 6 17:05:54 suntory.u06.univ-nantes.prive kernel: [ 470.596020]
unregister_netdevice: waiting for lo to become free. Usage count = 4
Dec 6 17:06:04 suntory.u06.univ-nantes.prive kernel: [ 480.836019]
unregister_netdevice: waiting for lo to become free. Usage count = 4
Dec 6 17:06:05 suntory.u06.univ-nantes.prive kernel: [ 481.468021]
INFO: task lxc-start:3805 blocked for more than 120 seconds.
Then i must reboot the host.
The same on kernel 2.6.34, but everything is good on a 2.6.32
Some relvant informations about the kernel:
root@suntory:~# cat /boot/config-2.6.36.1-dsiun-1d | grep -i sysfs
# CONFIG_SYSFS_DEPRECATED_V2 is not set
CONFIG_ACPI_SYSFS_POWER=y
# CONFIG_WIRELESS_EXT_SYSFS is not set
CONFIG_ISCSI_BOOT_SYSFS=m
CONFIG_RTC_INTF_SYSFS=y
CONFIG_SYSFS=y
root@suntory:~# cat /boot/config-2.6.36.1-dsiun-1d | grep -i net_ns
CONFIG_NET_NS=y
Is there anything in my configuration, i must check in order to get ipv6
working fully in the container?
Regards.
[-- Attachment #2: jean-philippe_menil.vcf --]
[-- Type: text/x-vcard, Size: 377 bytes --]
begin:vcard
fn:Jean-Philippe Menil
n:Menil;Jean-Philippe
org;quoted-printable:Universit=C3=A9 de Nantes;IRTS
adr;quoted-printable:;;2 rue de la Houssini=C3=A8re;Nantes;;44322;France
email;internet:jean-philippe.menil@univ-nantes.fr
title:Reseau
tel;work:02 53 48 49 27
tel;fax:(33)2 51 12 58 60
tel;cell:06 45 38 87 75
url:http://www.cri.univ-nantes.fr
version:2.1
end:vcard
^ permalink raw reply
* Re: echo > 0 .../disable_ipv6 broken in 2.6.37-rc4
From: Brian Haley @ 2010-12-06 16:10 UTC (permalink / raw)
To: Eric W. Biederman; +Cc: netdev, Mahesh Kelkar, Lorenzo Colitti
In-Reply-To: <m17hfnlpe1.fsf@fess.ebiederm.org>
On 12/05/2010 07:24 PM, Eric W. Biederman wrote:
>
> In 2.6.37-rc4 ipv6 can be disabled not enabled.
> The last kernel I have tested and know this works on is 2.6.33.
>
> To reproduce:
> ~ # ip link set lo up
> ~ # ping6 ::1
> PING ::1(::1) 56 data bytes
> 64 bytes from ::1: icmp_seq=1 ttl=64 time=0.026 ms
> ^C
> --- ::1 ping statistics ---
> 1 packets transmitted, 1 received, 0% packet loss, time 782ms
> rtt min/avg/max/mdev = 0.026/0.026/0.026/0.000 ms
> ~ # echo 1 > /proc/sys/net/ipv6/conf/lo/disable_ipv6
> ~ # ping6 ::1
> connect: Network is unreachable
> ~ # echo 0 > /proc/sys/net/ipv6/conf/lo/disable_ipv6
> ~ # ping6 ::1
> connect: Network is unreachable
>
>
> I intend to poke at this a little more but at the moment
> I am drawing a blank at what is going on.
It should just be calling addrconf_notify() with either NETDEV_UP
or NETDEV_DOWN. Does the address not come back? Or the route?
> I intend to keep poking at this but if anyone can figure this out
> before I do I would be greatly appreciative.
I'm pulling the latest tree now, my 2.6.32.24 system is running fine, so
it's something after that.
-Brian
^ permalink raw reply
* [PATCH] ehea: add the correct LRO status at dev->features
From: leitao @ 2010-12-06 16:39 UTC (permalink / raw)
To: davem; +Cc: netdev, Breno Leitao
Currently ehea is not setting NETIF_F_LRO, and it is not providing
a callback for get_flags on ethtool. This patch fixes it.
Signed-off-by: Breno Leitao <leitao@linux.vnet.ibm.com>
---
drivers/net/ehea/ehea_ethtool.c | 1 +
drivers/net/ehea/ehea_main.c | 3 +++
2 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/drivers/net/ehea/ehea_ethtool.c b/drivers/net/ehea/ehea_ethtool.c
index 75b099c..b0892b0 100644
--- a/drivers/net/ehea/ehea_ethtool.c
+++ b/drivers/net/ehea/ehea_ethtool.c
@@ -273,6 +273,7 @@ const struct ethtool_ops ehea_ethtool_ops = {
.get_ethtool_stats = ehea_get_ethtool_stats,
.get_rx_csum = ehea_get_rx_csum,
.set_settings = ehea_set_settings,
+ .get_flags = ethtool_op_get_flags,
.nway_reset = ehea_nway_reset, /* Restart autonegotiation */
};
diff --git a/drivers/net/ehea/ehea_main.c b/drivers/net/ehea/ehea_main.c
index a84c389..da75846 100644
--- a/drivers/net/ehea/ehea_main.c
+++ b/drivers/net/ehea/ehea_main.c
@@ -3266,6 +3266,9 @@ struct ehea_port *ehea_setup_single_port(struct ehea_adapter *adapter,
| NETIF_F_LLTX;
dev->watchdog_timeo = EHEA_WATCH_DOG_TIMEOUT;
+ if (use_lro)
+ dev->features |= NETIF_F_LRO;
+
INIT_WORK(&port->reset_task, ehea_reset_port);
ret = register_netdev(dev);
--
1.7.3.2
^ permalink raw reply related
* [PATCH] use total_highpages when calculating lowmem-only allocation sizes (dccp)
From: Jan Beulich @ 2010-12-06 16:42 UTC (permalink / raw)
To: netdev; +Cc: akpm
For those (large) table allocations that come only from lowmem, the
total amount of memory shouldn't really matter.
Signed-off-by: Jan Beulich <jbeulich@novell.com>
---
net/dccp/proto.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
--- linux-2.6.37-rc4/net/dccp/proto.c
+++ 2.6.37-rc4-use-totalhigh_pages/net/dccp/proto.c
@@ -14,6 +14,7 @@
#include <linux/types.h>
#include <linux/sched.h>
#include <linux/kernel.h>
+#include <linux/highmem.h>
#include <linux/skbuff.h>
#include <linux/netdevice.h>
#include <linux/in.h>
@@ -1068,10 +1069,11 @@ static int __init dccp_init(void)
*
* The methodology is similar to that of the buffer cache.
*/
- if (totalram_pages >= (128 * 1024))
- goal = totalram_pages >> (21 - PAGE_SHIFT);
+ goal = totalram_pages - totalhigh_pages;
+ if (goal >= (128 * 1024))
+ goal >>= 21 - PAGE_SHIFT;
else
- goal = totalram_pages >> (23 - PAGE_SHIFT);
+ goal >>= 23 - PAGE_SHIFT;
if (thash_entries)
goal = (thash_entries *
^ permalink raw reply
* [PATCH] use total_highpages when calculating lowmem-only allocation sizes (decnet)
From: Jan Beulich @ 2010-12-06 16:43 UTC (permalink / raw)
To: netdev; +Cc: akpm
For those (large) table allocations that come only from lowmem, the
total amount of memory shouldn't really matter.
Signed-off-by: Jan Beulich <jbeulich@novell.com>
---
net/decnet/dn_route.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- linux-2.6.37-rc4/net/decnet/dn_route.c
+++ 2.6.37-rc4-use-totalhigh_pages/net/decnet/dn_route.c
@@ -69,6 +69,7 @@
#include <linux/slab.h>
#include <net/sock.h>
#include <linux/mm.h>
+#include <linux/highmem.h>
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <linux/init.h>
@@ -1762,7 +1763,7 @@ void __init dn_route_init(void)
dn_route_timer.expires = jiffies + decnet_dst_gc_interval * HZ;
add_timer(&dn_route_timer);
- goal = totalram_pages >> (26 - PAGE_SHIFT);
+ goal = (totalram_pages - totalhigh_pages) >> (26 - PAGE_SHIFT);
for(order = 0; (1UL << order) < goal; order++)
/* NOTHING */;
^ permalink raw reply
* [PATCH] use total_highpages when calculating lowmem-only allocation sizes (netfilter)
From: Jan Beulich @ 2010-12-06 16:43 UTC (permalink / raw)
To: netdev; +Cc: akpm
For those (large) table allocations that come only from lowmem, the
total amount of memory shouldn't really matter.
Signed-off-by: Jan Beulich <jbeulich@novell.com>
---
net/netfilter/nf_conntrack_core.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
--- linux-2.6.37-rc4/net/netfilter/nf_conntrack_core.c
+++ 2.6.37-rc4-use-totalhigh_pages/net/netfilter/nf_conntrack_core.c
@@ -17,6 +17,7 @@
#include <linux/sched.h>
#include <linux/skbuff.h>
#include <linux/proc_fs.h>
+#include <linux/highmem.h>
#include <linux/vmalloc.h>
#include <linux/stddef.h>
#include <linux/slab.h>
@@ -1398,10 +1399,12 @@ static int nf_conntrack_init_init_net(vo
/* Idea from tcp.c: use 1/16384 of memory. On i386: 32MB
* machine has 512 buckets. >= 1GB machines have 16384 buckets. */
if (!nf_conntrack_htable_size) {
+ unsigned long nr_pages = totalram_pages - totalhigh_pages;
+
nf_conntrack_htable_size
- = (((totalram_pages << PAGE_SHIFT) / 16384)
+ = (((nr_pages << PAGE_SHIFT) / 16384)
/ sizeof(struct hlist_head));
- if (totalram_pages > (1024 * 1024 * 1024 / PAGE_SIZE))
+ if (nr_pages > (1024 * 1024 * 1024 / PAGE_SIZE))
nf_conntrack_htable_size = 16384;
if (nf_conntrack_htable_size < 32)
nf_conntrack_htable_size = 32;
^ permalink raw reply
* [PATCH] use total_highpages when calculating lowmem-only allocation sizes (netlink)
From: Jan Beulich @ 2010-12-06 16:43 UTC (permalink / raw)
To: netdev; +Cc: akpm
For those (large) table allocations that come only from lowmem, the
total amount of memory shouldn't really matter.
Signed-off-by: Jan Beulich <jbeulich@novell.com>
---
net/netlink/af_netlink.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
--- linux-2.6.37-rc4/net/netlink/af_netlink.c
+++ 2.6.37-rc4-use-totalhigh_pages/net/netlink/af_netlink.c
@@ -30,6 +30,7 @@
#include <linux/sched.h>
#include <linux/errno.h>
#include <linux/string.h>
+#include <linux/highmem.h>
#include <linux/stat.h>
#include <linux/socket.h>
#include <linux/un.h>
@@ -2127,10 +2128,11 @@ static int __init netlink_proto_init(voi
if (!nl_table)
goto panic;
- if (totalram_pages >= (128 * 1024))
- limit = totalram_pages >> (21 - PAGE_SHIFT);
+ limit = totalram_pages - totalhigh_pages;
+ if (limit >= (128 * 1024))
+ limit >>= 21 - PAGE_SHIFT;
else
- limit = totalram_pages >> (23 - PAGE_SHIFT);
+ limit >>= 23 - PAGE_SHIFT;
order = get_bitmask_order(limit) - 1 + PAGE_SHIFT;
limit = (1UL << order) / sizeof(struct hlist_head);
^ permalink raw reply
* [PATCH] use total_highpages when calculating lowmem-only allocation sizes (sctp)
From: Jan Beulich @ 2010-12-06 16:43 UTC (permalink / raw)
To: netdev; +Cc: akpm
For those (large) table allocations that come only from lowmem, the
total amount of memory shouldn't really matter.
Signed-off-by: Jan Beulich <jbeulich@novell.com>
---
net/sctp/protocol.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
--- linux-2.6.37-rc4/net/sctp/protocol.c
+++ 2.6.37-rc4-use-totalhigh_pages/net/sctp/protocol.c
@@ -1190,10 +1190,10 @@ SCTP_STATIC __init int sctp_init(void)
/* Size and allocate the association hash table.
* The methodology is similar to that of the tcp hash tables.
*/
- if (totalram_pages >= (128 * 1024))
- goal = totalram_pages >> (22 - PAGE_SHIFT);
+ if (nr_pages >= (128 * 1024))
+ goal = nr_pages >> (22 - PAGE_SHIFT);
else
- goal = totalram_pages >> (24 - PAGE_SHIFT);
+ goal = nr_pages >> (24 - PAGE_SHIFT);
for (order = 0; (1UL << order) < goal; order++)
;
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox