* [PATCH 04/14] mlx4_en: performing CLOSE_PORT at the end of tear-down process
From: Yevgeny Petrilin @ 2010-08-24 13:45 UTC (permalink / raw)
To: davem; +Cc: netdev, yevgenyp, eugenia
All port's resources should be closed before we give the
CLOSE_PORT command to the firmware.
Signed-off-by: Yevgeny Petrilin <yevgenyp@mellanox.co.il>
---
drivers/net/mlx4/en_netdev.c | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/net/mlx4/en_netdev.c b/drivers/net/mlx4/en_netdev.c
index c4ab0fc..068e572 100644
--- a/drivers/net/mlx4/en_netdev.c
+++ b/drivers/net/mlx4/en_netdev.c
@@ -704,9 +704,8 @@ void mlx4_en_stop_port(struct net_device *dev)
netif_tx_stop_all_queues(dev);
netif_tx_unlock_bh(dev);
- /* close port*/
+ /* Set port as not active */
priv->port_up = false;
- mlx4_CLOSE_PORT(mdev->dev, priv->port);
/* Unregister Mac address for the port */
mlx4_unregister_mac(mdev->dev, priv->port, priv->mac_index);
@@ -731,6 +730,9 @@ void mlx4_en_stop_port(struct net_device *dev)
msleep(1);
mlx4_en_deactivate_cq(priv, &priv->rx_cq[i]);
}
+
+ /* close port*/
+ mlx4_CLOSE_PORT(mdev->dev, priv->port);
}
static void mlx4_en_restart(struct work_struct *work)
--
1.6.1.3
^ permalink raw reply related
* [PATCH 03/14] mlx4_en: Settign dev->perm_addr field
From: Yevgeny Petrilin @ 2010-08-24 13:45 UTC (permalink / raw)
To: davem; +Cc: netdev, yevgenyp, eugenia
Signed-off-by: Yevgeny Petrilin <yevgenyp@mellanox.co.il>
---
drivers/net/mlx4/en_netdev.c | 7 ++++---
1 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/net/mlx4/en_netdev.c b/drivers/net/mlx4/en_netdev.c
index a0d8a26..c4ab0fc 100644
--- a/drivers/net/mlx4/en_netdev.c
+++ b/drivers/net/mlx4/en_netdev.c
@@ -1023,9 +1023,10 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port,
/* Set defualt MAC */
dev->addr_len = ETH_ALEN;
- for (i = 0; i < ETH_ALEN; i++)
- dev->dev_addr[ETH_ALEN - 1 - i] =
- (u8) (priv->mac >> (8 * i));
+ for (i = 0; i < ETH_ALEN; i++) {
+ dev->dev_addr[ETH_ALEN - 1 - i] = (u8) (priv->mac >> (8 * i));
+ dev->perm_addr[ETH_ALEN - 1 - i] = (u8) (priv->mac >> (8 * i));
+ }
/*
* Set driver features
--
1.6.1.3
^ permalink raw reply related
* [PATCH 02/14] mlx4_en: Setting actual RX ring size
From: Yevgeny Petrilin @ 2010-08-24 13:45 UTC (permalink / raw)
To: davem; +Cc: netdev, yevgenyp, eugenia
When configuring HW resources, the RX ring size that is passed should be the actual
size that depends on number of buffers that we succeeded to allocate.
The mask for ring size should also be configured accordingly
Signed-off-by: Yevgeny Petrilin <yevgenyp@mellanox.co.il>
---
drivers/net/mlx4/en_rx.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/mlx4/en_rx.c b/drivers/net/mlx4/en_rx.c
index 1ee4fd5..394da29 100644
--- a/drivers/net/mlx4/en_rx.c
+++ b/drivers/net/mlx4/en_rx.c
@@ -251,7 +251,6 @@ reduce_rings:
ring->prod--;
mlx4_en_free_rx_desc(priv, ring, ring->actual_size);
}
- ring->size_mask = ring->actual_size - 1;
}
return 0;
@@ -389,6 +388,7 @@ int mlx4_en_activate_rx_rings(struct mlx4_en_priv *priv)
for (ring_ind = 0; ring_ind < priv->rx_ring_num; ring_ind++) {
ring = &priv->rx_ring[ring_ind];
+ ring->size_mask = ring->actual_size - 1;
mlx4_en_update_rx_prod_db(ring);
}
@@ -816,7 +816,7 @@ static int mlx4_en_config_rss_qp(struct mlx4_en_priv *priv, int qpn,
qp->event = mlx4_en_sqp_event;
memset(context, 0, sizeof *context);
- mlx4_en_fill_qp_context(priv, ring->size, ring->stride, 0, 0,
+ mlx4_en_fill_qp_context(priv, ring->actual_size, ring->stride, 0, 0,
qpn, ring->cqn, context);
context->db_rec_addr = cpu_to_be64(ring->wqres.db.dma);
--
1.6.1.3
^ permalink raw reply related
* [PATCH 01/14] mlx4_en: Fixed incorrect unmapping on RX flow.
From: Yevgeny Petrilin @ 2010-08-24 13:45 UTC (permalink / raw)
To: davem; +Cc: netdev, yevgenyp, eugenia
When allocating new fragments to replace the ones that would be passed to the stack,
The fragments that should be replaced, are the ones that were already used.
Signed-off-by: Yevgeny Petrilin <yevgenyp@mellanox.co.il>
---
drivers/net/mlx4/en_rx.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/net/mlx4/en_rx.c b/drivers/net/mlx4/en_rx.c
index 8e2fcb7..1ee4fd5 100644
--- a/drivers/net/mlx4/en_rx.c
+++ b/drivers/net/mlx4/en_rx.c
@@ -459,7 +459,7 @@ static int mlx4_en_complete_rx_desc(struct mlx4_en_priv *priv,
goto fail;
/* Unmap buffer */
- pci_unmap_single(mdev->pdev, dma, skb_frags[nr].size,
+ pci_unmap_single(mdev->pdev, dma, skb_frags_rx[nr].size,
PCI_DMA_FROMDEVICE);
}
/* Adjust size of last fragment to match actual length */
--
1.6.1.3
^ permalink raw reply related
* [PATCH 3/3] stmmac: make ioaddr 'void __iomem *' rather than unsigned long
From: Giuseppe CAVALLARO @ 2010-08-24 6:40 UTC (permalink / raw)
To: netdev; +Cc: Giuseppe Cavallaro
In-Reply-To: <1282632042-752-2-git-send-email-peppe.cavallaro@st.com>
This avoids unnecessary casting and adds the ioaddr in the
private structure.
This patch also removes many warning when compile the driver.
Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>
---
drivers/net/stmmac/common.h | 50 +++++++-------
drivers/net/stmmac/dwmac1000_core.c | 18 +++---
drivers/net/stmmac/dwmac1000_dma.c | 8 +-
drivers/net/stmmac/dwmac100_core.c | 20 +++---
drivers/net/stmmac/dwmac100_dma.c | 8 +-
drivers/net/stmmac/dwmac_dma.h | 16 ++--
drivers/net/stmmac/dwmac_lib.c | 22 +++---
drivers/net/stmmac/enh_desc.c | 2 +-
drivers/net/stmmac/norm_desc.c | 2 +-
drivers/net/stmmac/stmmac.h | 3 +-
drivers/net/stmmac/stmmac_ethtool.c | 21 +++----
drivers/net/stmmac/stmmac_main.c | 124 +++++++++++++++++------------------
drivers/net/stmmac/stmmac_mdio.c | 21 +++----
include/linux/stmmac.h | 2 +-
14 files changed, 153 insertions(+), 164 deletions(-)
diff --git a/drivers/net/stmmac/common.h b/drivers/net/stmmac/common.h
index 66b9da0..e8cbcb5 100644
--- a/drivers/net/stmmac/common.h
+++ b/drivers/net/stmmac/common.h
@@ -167,7 +167,7 @@ struct stmmac_desc_ops {
int (*get_tx_ls) (struct dma_desc *p);
/* Return the transmit status looking at the TDES1 */
int (*tx_status) (void *data, struct stmmac_extra_stats *x,
- struct dma_desc *p, unsigned long ioaddr);
+ struct dma_desc *p, void __iomem *ioaddr);
/* Get the buffer size from the descriptor */
int (*get_tx_len) (struct dma_desc *p);
/* Handle extra events on specific interrupts hw dependent */
@@ -182,44 +182,44 @@ struct stmmac_desc_ops {
struct stmmac_dma_ops {
/* DMA core initialization */
- int (*init) (unsigned long ioaddr, int pbl, u32 dma_tx, u32 dma_rx);
+ int (*init) (void __iomem *ioaddr, int pbl, u32 dma_tx, u32 dma_rx);
/* Dump DMA registers */
- void (*dump_regs) (unsigned long ioaddr);
+ void (*dump_regs) (void __iomem *ioaddr);
/* Set tx/rx threshold in the csr6 register
* An invalid value enables the store-and-forward mode */
- void (*dma_mode) (unsigned long ioaddr, int txmode, int rxmode);
+ void (*dma_mode) (void __iomem *ioaddr, int txmode, int rxmode);
/* To track extra statistic (if supported) */
void (*dma_diagnostic_fr) (void *data, struct stmmac_extra_stats *x,
- unsigned long ioaddr);
- void (*enable_dma_transmission) (unsigned long ioaddr);
- void (*enable_dma_irq) (unsigned long ioaddr);
- void (*disable_dma_irq) (unsigned long ioaddr);
- void (*start_tx) (unsigned long ioaddr);
- void (*stop_tx) (unsigned long ioaddr);
- void (*start_rx) (unsigned long ioaddr);
- void (*stop_rx) (unsigned long ioaddr);
- int (*dma_interrupt) (unsigned long ioaddr,
+ void __iomem *ioaddr);
+ void (*enable_dma_transmission) (void __iomem *ioaddr);
+ void (*enable_dma_irq) (void __iomem *ioaddr);
+ void (*disable_dma_irq) (void __iomem *ioaddr);
+ void (*start_tx) (void __iomem *ioaddr);
+ void (*stop_tx) (void __iomem *ioaddr);
+ void (*start_rx) (void __iomem *ioaddr);
+ void (*stop_rx) (void __iomem *ioaddr);
+ int (*dma_interrupt) (void __iomem *ioaddr,
struct stmmac_extra_stats *x);
};
struct stmmac_ops {
/* MAC core initialization */
- void (*core_init) (unsigned long ioaddr) ____cacheline_aligned;
+ void (*core_init) (void __iomem *ioaddr) ____cacheline_aligned;
/* Dump MAC registers */
- void (*dump_regs) (unsigned long ioaddr);
+ void (*dump_regs) (void __iomem *ioaddr);
/* Handle extra events on specific interrupts hw dependent */
- void (*host_irq_status) (unsigned long ioaddr);
+ void (*host_irq_status) (void __iomem *ioaddr);
/* Multicast filter setting */
void (*set_filter) (struct net_device *dev);
/* Flow control setting */
- void (*flow_ctrl) (unsigned long ioaddr, unsigned int duplex,
+ void (*flow_ctrl) (void __iomem *ioaddr, unsigned int duplex,
unsigned int fc, unsigned int pause_time);
/* Set power management mode (e.g. magic frame) */
- void (*pmt) (unsigned long ioaddr, unsigned long mode);
+ void (*pmt) (void __iomem *ioaddr, unsigned long mode);
/* Set/Get Unicast MAC addresses */
- void (*set_umac_addr) (unsigned long ioaddr, unsigned char *addr,
+ void (*set_umac_addr) (void __iomem *ioaddr, unsigned char *addr,
unsigned int reg_n);
- void (*get_umac_addr) (unsigned long ioaddr, unsigned char *addr,
+ void (*get_umac_addr) (void __iomem *ioaddr, unsigned char *addr,
unsigned int reg_n);
};
@@ -243,11 +243,11 @@ struct mac_device_info {
struct mac_link link;
};
-struct mac_device_info *dwmac1000_setup(unsigned long addr);
-struct mac_device_info *dwmac100_setup(unsigned long addr);
+struct mac_device_info *dwmac1000_setup(void __iomem *ioaddr);
+struct mac_device_info *dwmac100_setup(void __iomem *ioaddr);
-extern void stmmac_set_mac_addr(unsigned long ioaddr, u8 addr[6],
+extern void stmmac_set_mac_addr(void __iomem *ioaddr, u8 addr[6],
unsigned int high, unsigned int low);
-extern void stmmac_get_mac_addr(unsigned long ioaddr, unsigned char *addr,
+extern void stmmac_get_mac_addr(void __iomem *ioaddr, unsigned char *addr,
unsigned int high, unsigned int low);
-extern void dwmac_dma_flush_tx_fifo(unsigned long ioaddr);
+extern void dwmac_dma_flush_tx_fifo(void __iomem *ioaddr);
diff --git a/drivers/net/stmmac/dwmac1000_core.c b/drivers/net/stmmac/dwmac1000_core.c
index 2b2f5c8..8bbfc0f 100644
--- a/drivers/net/stmmac/dwmac1000_core.c
+++ b/drivers/net/stmmac/dwmac1000_core.c
@@ -30,7 +30,7 @@
#include <linux/slab.h>
#include "dwmac1000.h"
-static void dwmac1000_core_init(unsigned long ioaddr)
+static void dwmac1000_core_init(void __iomem *ioaddr)
{
u32 value = readl(ioaddr + GMAC_CONTROL);
value |= GMAC_CORE_INIT;
@@ -50,7 +50,7 @@ static void dwmac1000_core_init(unsigned long ioaddr)
#endif
}
-static void dwmac1000_dump_regs(unsigned long ioaddr)
+static void dwmac1000_dump_regs(void __iomem *ioaddr)
{
int i;
pr_info("\tDWMAC1000 regs (base addr = 0x%8x)\n", (unsigned int)ioaddr);
@@ -62,14 +62,14 @@ static void dwmac1000_dump_regs(unsigned long ioaddr)
}
}
-static void dwmac1000_set_umac_addr(unsigned long ioaddr, unsigned char *addr,
+static void dwmac1000_set_umac_addr(void __iomem *ioaddr, unsigned char *addr,
unsigned int reg_n)
{
stmmac_set_mac_addr(ioaddr, addr, GMAC_ADDR_HIGH(reg_n),
GMAC_ADDR_LOW(reg_n));
}
-static void dwmac1000_get_umac_addr(unsigned long ioaddr, unsigned char *addr,
+static void dwmac1000_get_umac_addr(void __iomem *ioaddr, unsigned char *addr,
unsigned int reg_n)
{
stmmac_get_mac_addr(ioaddr, addr, GMAC_ADDR_HIGH(reg_n),
@@ -78,7 +78,7 @@ static void dwmac1000_get_umac_addr(unsigned long ioaddr, unsigned char *addr,
static void dwmac1000_set_filter(struct net_device *dev)
{
- unsigned long ioaddr = dev->base_addr;
+ void __iomem *ioaddr = (void __iomem *) dev->base_addr;
unsigned int value = 0;
CHIP_DBG(KERN_INFO "%s: # mcasts %d, # unicast %d\n",
@@ -139,7 +139,7 @@ static void dwmac1000_set_filter(struct net_device *dev)
readl(ioaddr + GMAC_HASH_HIGH), readl(ioaddr + GMAC_HASH_LOW));
}
-static void dwmac1000_flow_ctrl(unsigned long ioaddr, unsigned int duplex,
+static void dwmac1000_flow_ctrl(void __iomem *ioaddr, unsigned int duplex,
unsigned int fc, unsigned int pause_time)
{
unsigned int flow = 0;
@@ -162,7 +162,7 @@ static void dwmac1000_flow_ctrl(unsigned long ioaddr, unsigned int duplex,
writel(flow, ioaddr + GMAC_FLOW_CTRL);
}
-static void dwmac1000_pmt(unsigned long ioaddr, unsigned long mode)
+static void dwmac1000_pmt(void __iomem *ioaddr, unsigned long mode)
{
unsigned int pmt = 0;
@@ -178,7 +178,7 @@ static void dwmac1000_pmt(unsigned long ioaddr, unsigned long mode)
}
-static void dwmac1000_irq_status(unsigned long ioaddr)
+static void dwmac1000_irq_status(void __iomem *ioaddr)
{
u32 intr_status = readl(ioaddr + GMAC_INT_STATUS);
@@ -211,7 +211,7 @@ struct stmmac_ops dwmac1000_ops = {
.get_umac_addr = dwmac1000_get_umac_addr,
};
-struct mac_device_info *dwmac1000_setup(unsigned long ioaddr)
+struct mac_device_info *dwmac1000_setup(void __iomem *ioaddr)
{
struct mac_device_info *mac;
u32 uid = readl(ioaddr + GMAC_VERSION);
diff --git a/drivers/net/stmmac/dwmac1000_dma.c b/drivers/net/stmmac/dwmac1000_dma.c
index 4158050..2ef5a56 100644
--- a/drivers/net/stmmac/dwmac1000_dma.c
+++ b/drivers/net/stmmac/dwmac1000_dma.c
@@ -29,7 +29,7 @@
#include "dwmac1000.h"
#include "dwmac_dma.h"
-static int dwmac1000_dma_init(unsigned long ioaddr, int pbl, u32 dma_tx,
+static int dwmac1000_dma_init(void __iomem *ioaddr, int pbl, u32 dma_tx,
u32 dma_rx)
{
u32 value = readl(ioaddr + DMA_BUS_MODE);
@@ -58,7 +58,7 @@ static int dwmac1000_dma_init(unsigned long ioaddr, int pbl, u32 dma_tx,
return 0;
}
-static void dwmac1000_dma_operation_mode(unsigned long ioaddr, int txmode,
+static void dwmac1000_dma_operation_mode(void __iomem *ioaddr, int txmode,
int rxmode)
{
u32 csr6 = readl(ioaddr + DMA_CONTROL);
@@ -111,12 +111,12 @@ static void dwmac1000_dma_operation_mode(unsigned long ioaddr, int txmode,
/* Not yet implemented --- no RMON module */
static void dwmac1000_dma_diagnostic_fr(void *data,
- struct stmmac_extra_stats *x, unsigned long ioaddr)
+ struct stmmac_extra_stats *x, void __iomem *ioaddr)
{
return;
}
-static void dwmac1000_dump_dma_regs(unsigned long ioaddr)
+static void dwmac1000_dump_dma_regs(void __iomem *ioaddr)
{
int i;
pr_info(" DMA registers\n");
diff --git a/drivers/net/stmmac/dwmac100_core.c b/drivers/net/stmmac/dwmac100_core.c
index 2fb165f..135a808 100644
--- a/drivers/net/stmmac/dwmac100_core.c
+++ b/drivers/net/stmmac/dwmac100_core.c
@@ -31,7 +31,7 @@
#include <linux/crc32.h>
#include "dwmac100.h"
-static void dwmac100_core_init(unsigned long ioaddr)
+static void dwmac100_core_init(void __iomem *ioaddr)
{
u32 value = readl(ioaddr + MAC_CONTROL);
@@ -42,12 +42,12 @@ static void dwmac100_core_init(unsigned long ioaddr)
#endif
}
-static void dwmac100_dump_mac_regs(unsigned long ioaddr)
+static void dwmac100_dump_mac_regs(void __iomem *ioaddr)
{
pr_info("\t----------------------------------------------\n"
"\t DWMAC 100 CSR (base addr = 0x%8x)\n"
"\t----------------------------------------------\n",
- (unsigned int)ioaddr);
+ (unsigned int) ioaddr);
pr_info("\tcontrol reg (offset 0x%x): 0x%08x\n", MAC_CONTROL,
readl(ioaddr + MAC_CONTROL));
pr_info("\taddr HI (offset 0x%x): 0x%08x\n ", MAC_ADDR_HIGH,
@@ -77,18 +77,18 @@ static void dwmac100_dump_mac_regs(unsigned long ioaddr)
MMC_LOW_INTR_MASK, readl(ioaddr + MMC_LOW_INTR_MASK));
}
-static void dwmac100_irq_status(unsigned long ioaddr)
+static void dwmac100_irq_status(void __iomem *ioaddr)
{
return;
}
-static void dwmac100_set_umac_addr(unsigned long ioaddr, unsigned char *addr,
+static void dwmac100_set_umac_addr(void __iomem *ioaddr, unsigned char *addr,
unsigned int reg_n)
{
stmmac_set_mac_addr(ioaddr, addr, MAC_ADDR_HIGH, MAC_ADDR_LOW);
}
-static void dwmac100_get_umac_addr(unsigned long ioaddr, unsigned char *addr,
+static void dwmac100_get_umac_addr(void __iomem *ioaddr, unsigned char *addr,
unsigned int reg_n)
{
stmmac_get_mac_addr(ioaddr, addr, MAC_ADDR_HIGH, MAC_ADDR_LOW);
@@ -96,7 +96,7 @@ static void dwmac100_get_umac_addr(unsigned long ioaddr, unsigned char *addr,
static void dwmac100_set_filter(struct net_device *dev)
{
- unsigned long ioaddr = dev->base_addr;
+ void __iomem *ioaddr = (void __iomem *) dev->base_addr;
u32 value = readl(ioaddr + MAC_CONTROL);
if (dev->flags & IFF_PROMISC) {
@@ -145,7 +145,7 @@ static void dwmac100_set_filter(struct net_device *dev)
readl(ioaddr + MAC_HASH_HIGH), readl(ioaddr + MAC_HASH_LOW));
}
-static void dwmac100_flow_ctrl(unsigned long ioaddr, unsigned int duplex,
+static void dwmac100_flow_ctrl(void __iomem *ioaddr, unsigned int duplex,
unsigned int fc, unsigned int pause_time)
{
unsigned int flow = MAC_FLOW_CTRL_ENABLE;
@@ -158,7 +158,7 @@ static void dwmac100_flow_ctrl(unsigned long ioaddr, unsigned int duplex,
/* No PMT module supported for this Ethernet Controller.
* Tested on ST platforms only.
*/
-static void dwmac100_pmt(unsigned long ioaddr, unsigned long mode)
+static void dwmac100_pmt(void __iomem *ioaddr, unsigned long mode)
{
return;
}
@@ -174,7 +174,7 @@ struct stmmac_ops dwmac100_ops = {
.get_umac_addr = dwmac100_get_umac_addr,
};
-struct mac_device_info *dwmac100_setup(unsigned long ioaddr)
+struct mac_device_info *dwmac100_setup(void __iomem *ioaddr)
{
struct mac_device_info *mac;
diff --git a/drivers/net/stmmac/dwmac100_dma.c b/drivers/net/stmmac/dwmac100_dma.c
index 2fece7b..c7279d2 100644
--- a/drivers/net/stmmac/dwmac100_dma.c
+++ b/drivers/net/stmmac/dwmac100_dma.c
@@ -31,7 +31,7 @@
#include "dwmac100.h"
#include "dwmac_dma.h"
-static int dwmac100_dma_init(unsigned long ioaddr, int pbl, u32 dma_tx,
+static int dwmac100_dma_init(void __iomem *ioaddr, int pbl, u32 dma_tx,
u32 dma_rx)
{
u32 value = readl(ioaddr + DMA_BUS_MODE);
@@ -58,7 +58,7 @@ static int dwmac100_dma_init(unsigned long ioaddr, int pbl, u32 dma_tx,
/* Store and Forward capability is not used at all..
* The transmit threshold can be programmed by
* setting the TTC bits in the DMA control register.*/
-static void dwmac100_dma_operation_mode(unsigned long ioaddr, int txmode,
+static void dwmac100_dma_operation_mode(void __iomem *ioaddr, int txmode,
int rxmode)
{
u32 csr6 = readl(ioaddr + DMA_CONTROL);
@@ -73,7 +73,7 @@ static void dwmac100_dma_operation_mode(unsigned long ioaddr, int txmode,
writel(csr6, ioaddr + DMA_CONTROL);
}
-static void dwmac100_dump_dma_regs(unsigned long ioaddr)
+static void dwmac100_dump_dma_regs(void __iomem *ioaddr)
{
int i;
@@ -91,7 +91,7 @@ static void dwmac100_dump_dma_regs(unsigned long ioaddr)
/* DMA controller has two counters to track the number of
* the receive missed frames. */
static void dwmac100_dma_diagnostic_fr(void *data, struct stmmac_extra_stats *x,
- unsigned long ioaddr)
+ void __iomem *ioaddr)
{
struct net_device_stats *stats = (struct net_device_stats *)data;
u32 csr8 = readl(ioaddr + DMA_MISSED_FRAME_CTR);
diff --git a/drivers/net/stmmac/dwmac_dma.h b/drivers/net/stmmac/dwmac_dma.h
index 7b815a1..da3f5cc 100644
--- a/drivers/net/stmmac/dwmac_dma.h
+++ b/drivers/net/stmmac/dwmac_dma.h
@@ -97,12 +97,12 @@
#define DMA_STATUS_TI 0x00000001 /* Transmit Interrupt */
#define DMA_CONTROL_FTF 0x00100000 /* Flush transmit FIFO */
-extern void dwmac_enable_dma_transmission(unsigned long ioaddr);
-extern void dwmac_enable_dma_irq(unsigned long ioaddr);
-extern void dwmac_disable_dma_irq(unsigned long ioaddr);
-extern void dwmac_dma_start_tx(unsigned long ioaddr);
-extern void dwmac_dma_stop_tx(unsigned long ioaddr);
-extern void dwmac_dma_start_rx(unsigned long ioaddr);
-extern void dwmac_dma_stop_rx(unsigned long ioaddr);
-extern int dwmac_dma_interrupt(unsigned long ioaddr,
+extern void dwmac_enable_dma_transmission(void __iomem *ioaddr);
+extern void dwmac_enable_dma_irq(void __iomem *ioaddr);
+extern void dwmac_disable_dma_irq(void __iomem *ioaddr);
+extern void dwmac_dma_start_tx(void __iomem *ioaddr);
+extern void dwmac_dma_stop_tx(void __iomem *ioaddr);
+extern void dwmac_dma_start_rx(void __iomem *ioaddr);
+extern void dwmac_dma_stop_rx(void __iomem *ioaddr);
+extern int dwmac_dma_interrupt(void __iomem *ioaddr,
struct stmmac_extra_stats *x);
diff --git a/drivers/net/stmmac/dwmac_lib.c b/drivers/net/stmmac/dwmac_lib.c
index a854152..d65fab1 100644
--- a/drivers/net/stmmac/dwmac_lib.c
+++ b/drivers/net/stmmac/dwmac_lib.c
@@ -32,43 +32,43 @@
#endif
/* CSR1 enables the transmit DMA to check for new descriptor */
-void dwmac_enable_dma_transmission(unsigned long ioaddr)
+void dwmac_enable_dma_transmission(void __iomem *ioaddr)
{
writel(1, ioaddr + DMA_XMT_POLL_DEMAND);
}
-void dwmac_enable_dma_irq(unsigned long ioaddr)
+void dwmac_enable_dma_irq(void __iomem *ioaddr)
{
writel(DMA_INTR_DEFAULT_MASK, ioaddr + DMA_INTR_ENA);
}
-void dwmac_disable_dma_irq(unsigned long ioaddr)
+void dwmac_disable_dma_irq(void __iomem *ioaddr)
{
writel(0, ioaddr + DMA_INTR_ENA);
}
-void dwmac_dma_start_tx(unsigned long ioaddr)
+void dwmac_dma_start_tx(void __iomem *ioaddr)
{
u32 value = readl(ioaddr + DMA_CONTROL);
value |= DMA_CONTROL_ST;
writel(value, ioaddr + DMA_CONTROL);
}
-void dwmac_dma_stop_tx(unsigned long ioaddr)
+void dwmac_dma_stop_tx(void __iomem *ioaddr)
{
u32 value = readl(ioaddr + DMA_CONTROL);
value &= ~DMA_CONTROL_ST;
writel(value, ioaddr + DMA_CONTROL);
}
-void dwmac_dma_start_rx(unsigned long ioaddr)
+void dwmac_dma_start_rx(void __iomem *ioaddr)
{
u32 value = readl(ioaddr + DMA_CONTROL);
value |= DMA_CONTROL_SR;
writel(value, ioaddr + DMA_CONTROL);
}
-void dwmac_dma_stop_rx(unsigned long ioaddr)
+void dwmac_dma_stop_rx(void __iomem *ioaddr)
{
u32 value = readl(ioaddr + DMA_CONTROL);
value &= ~DMA_CONTROL_SR;
@@ -145,7 +145,7 @@ static void show_rx_process_state(unsigned int status)
}
#endif
-int dwmac_dma_interrupt(unsigned long ioaddr,
+int dwmac_dma_interrupt(void __iomem *ioaddr,
struct stmmac_extra_stats *x)
{
int ret = 0;
@@ -219,7 +219,7 @@ int dwmac_dma_interrupt(unsigned long ioaddr,
return ret;
}
-void dwmac_dma_flush_tx_fifo(unsigned long ioaddr)
+void dwmac_dma_flush_tx_fifo(void __iomem *ioaddr)
{
u32 csr6 = readl(ioaddr + DMA_CONTROL);
writel((csr6 | DMA_CONTROL_FTF), ioaddr + DMA_CONTROL);
@@ -227,7 +227,7 @@ void dwmac_dma_flush_tx_fifo(unsigned long ioaddr)
do {} while ((readl(ioaddr + DMA_CONTROL) & DMA_CONTROL_FTF));
}
-void stmmac_set_mac_addr(unsigned long ioaddr, u8 addr[6],
+void stmmac_set_mac_addr(void __iomem *ioaddr, u8 addr[6],
unsigned int high, unsigned int low)
{
unsigned long data;
@@ -238,7 +238,7 @@ void stmmac_set_mac_addr(unsigned long ioaddr, u8 addr[6],
writel(data, ioaddr + low);
}
-void stmmac_get_mac_addr(unsigned long ioaddr, unsigned char *addr,
+void stmmac_get_mac_addr(void __iomem *ioaddr, unsigned char *addr,
unsigned int high, unsigned int low)
{
unsigned int hi_addr, lo_addr;
diff --git a/drivers/net/stmmac/enh_desc.c b/drivers/net/stmmac/enh_desc.c
index f612f98..77ff88c 100644
--- a/drivers/net/stmmac/enh_desc.c
+++ b/drivers/net/stmmac/enh_desc.c
@@ -25,7 +25,7 @@
#include "common.h"
static int enh_desc_get_tx_status(void *data, struct stmmac_extra_stats *x,
- struct dma_desc *p, unsigned long ioaddr)
+ struct dma_desc *p, void __iomem *ioaddr)
{
int ret = 0;
struct net_device_stats *stats = (struct net_device_stats *)data;
diff --git a/drivers/net/stmmac/norm_desc.c b/drivers/net/stmmac/norm_desc.c
index 31ad536..51f4440 100644
--- a/drivers/net/stmmac/norm_desc.c
+++ b/drivers/net/stmmac/norm_desc.c
@@ -25,7 +25,7 @@
#include "common.h"
static int ndesc_get_tx_status(void *data, struct stmmac_extra_stats *x,
- struct dma_desc *p, unsigned long ioaddr)
+ struct dma_desc *p, void __iomem *ioaddr)
{
int ret = 0;
struct net_device_stats *stats = (struct net_device_stats *)data;
diff --git a/drivers/net/stmmac/stmmac.h b/drivers/net/stmmac/stmmac.h
index ebebc64..cca53db 100644
--- a/drivers/net/stmmac/stmmac.h
+++ b/drivers/net/stmmac/stmmac.h
@@ -54,6 +54,7 @@ struct stmmac_priv {
unsigned int dma_buf_sz;
struct device *device;
struct mac_device_info *hw;
+ void __iomem *ioaddr;
struct stmmac_extra_stats xstats;
struct napi_struct napi;
@@ -65,7 +66,7 @@ struct stmmac_priv {
int phy_mask;
int (*phy_reset) (void *priv);
void (*fix_mac_speed) (void *priv, unsigned int speed);
- void (*bus_setup)(unsigned long ioaddr);
+ void (*bus_setup)(void __iomem *ioaddr);
void *bsp_priv;
int phy_irq;
diff --git a/drivers/net/stmmac/stmmac_ethtool.c b/drivers/net/stmmac/stmmac_ethtool.c
index f080509..63b68e6 100644
--- a/drivers/net/stmmac/stmmac_ethtool.c
+++ b/drivers/net/stmmac/stmmac_ethtool.c
@@ -177,21 +177,21 @@ void stmmac_ethtool_gregs(struct net_device *dev,
if (!priv->is_gmac) {
/* MAC registers */
for (i = 0; i < 12; i++)
- reg_space[i] = readl(dev->base_addr + (i * 4));
+ reg_space[i] = readl(priv->ioaddr + (i * 4));
/* DMA registers */
for (i = 0; i < 9; i++)
reg_space[i + 12] =
- readl(dev->base_addr + (DMA_BUS_MODE + (i * 4)));
- reg_space[22] = readl(dev->base_addr + DMA_CUR_TX_BUF_ADDR);
- reg_space[23] = readl(dev->base_addr + DMA_CUR_RX_BUF_ADDR);
+ readl(priv->ioaddr + (DMA_BUS_MODE + (i * 4)));
+ reg_space[22] = readl(priv->ioaddr + DMA_CUR_TX_BUF_ADDR);
+ reg_space[23] = readl(priv->ioaddr + DMA_CUR_RX_BUF_ADDR);
} else {
/* MAC registers */
for (i = 0; i < 55; i++)
- reg_space[i] = readl(dev->base_addr + (i * 4));
+ reg_space[i] = readl(priv->ioaddr + (i * 4));
/* DMA registers */
for (i = 0; i < 22; i++)
reg_space[i + 55] =
- readl(dev->base_addr + (DMA_BUS_MODE + (i * 4)));
+ readl(priv->ioaddr + (DMA_BUS_MODE + (i * 4)));
}
}
@@ -263,11 +263,9 @@ stmmac_set_pauseparam(struct net_device *netdev,
cmd.phy_address = phy->addr;
ret = phy_ethtool_sset(phy, &cmd);
}
- } else {
- unsigned long ioaddr = netdev->base_addr;
- priv->hw->mac->flow_ctrl(ioaddr, phy->duplex,
+ } else
+ priv->hw->mac->flow_ctrl(priv->ioaddr, phy->duplex,
priv->flow_ctrl, priv->pause);
- }
spin_unlock(&priv->lock);
return ret;
}
@@ -276,12 +274,11 @@ static void stmmac_get_ethtool_stats(struct net_device *dev,
struct ethtool_stats *dummy, u64 *data)
{
struct stmmac_priv *priv = netdev_priv(dev);
- unsigned long ioaddr = dev->base_addr;
int i;
/* Update HW stats if supported */
priv->hw->dma->dma_diagnostic_fr(&dev->stats, (void *) &priv->xstats,
- ioaddr);
+ priv->ioaddr);
for (i = 0; i < STMMAC_STATS_LEN; i++) {
char *p = (char *)priv + stmmac_gstrings_stats[i].stat_offset;
diff --git a/drivers/net/stmmac/stmmac_main.c b/drivers/net/stmmac/stmmac_main.c
index 86b6c69..c59c106 100644
--- a/drivers/net/stmmac/stmmac_main.c
+++ b/drivers/net/stmmac/stmmac_main.c
@@ -202,7 +202,6 @@ static void stmmac_adjust_link(struct net_device *dev)
{
struct stmmac_priv *priv = netdev_priv(dev);
struct phy_device *phydev = priv->phydev;
- unsigned long ioaddr = dev->base_addr;
unsigned long flags;
int new_state = 0;
unsigned int fc = priv->flow_ctrl, pause_time = priv->pause;
@@ -215,7 +214,7 @@ static void stmmac_adjust_link(struct net_device *dev)
spin_lock_irqsave(&priv->lock, flags);
if (phydev->link) {
- u32 ctrl = readl(ioaddr + MAC_CTRL_REG);
+ u32 ctrl = readl(priv->ioaddr + MAC_CTRL_REG);
/* Now we make sure that we can be in full duplex mode.
* If not, we operate in half-duplex mode. */
@@ -229,7 +228,7 @@ static void stmmac_adjust_link(struct net_device *dev)
}
/* Flow Control operation */
if (phydev->pause)
- priv->hw->mac->flow_ctrl(ioaddr, phydev->duplex,
+ priv->hw->mac->flow_ctrl(priv->ioaddr, phydev->duplex,
fc, pause_time);
if (phydev->speed != priv->speed) {
@@ -268,7 +267,7 @@ static void stmmac_adjust_link(struct net_device *dev)
priv->speed = phydev->speed;
}
- writel(ctrl, ioaddr + MAC_CTRL_REG);
+ writel(ctrl, priv->ioaddr + MAC_CTRL_REG);
if (!priv->oldlink) {
new_state = 1;
@@ -345,7 +344,7 @@ static int stmmac_init_phy(struct net_device *dev)
return 0;
}
-static inline void stmmac_mac_enable_rx(unsigned long ioaddr)
+static inline void stmmac_mac_enable_rx(void __iomem *ioaddr)
{
u32 value = readl(ioaddr + MAC_CTRL_REG);
value |= MAC_RNABLE_RX;
@@ -353,7 +352,7 @@ static inline void stmmac_mac_enable_rx(unsigned long ioaddr)
writel(value, ioaddr + MAC_CTRL_REG);
}
-static inline void stmmac_mac_enable_tx(unsigned long ioaddr)
+static inline void stmmac_mac_enable_tx(void __iomem *ioaddr)
{
u32 value = readl(ioaddr + MAC_CTRL_REG);
value |= MAC_ENABLE_TX;
@@ -361,14 +360,14 @@ static inline void stmmac_mac_enable_tx(unsigned long ioaddr)
writel(value, ioaddr + MAC_CTRL_REG);
}
-static inline void stmmac_mac_disable_rx(unsigned long ioaddr)
+static inline void stmmac_mac_disable_rx(void __iomem *ioaddr)
{
u32 value = readl(ioaddr + MAC_CTRL_REG);
value &= ~MAC_RNABLE_RX;
writel(value, ioaddr + MAC_CTRL_REG);
}
-static inline void stmmac_mac_disable_tx(unsigned long ioaddr)
+static inline void stmmac_mac_disable_tx(void __iomem *ioaddr)
{
u32 value = readl(ioaddr + MAC_CTRL_REG);
value &= ~MAC_ENABLE_TX;
@@ -577,17 +576,17 @@ static void stmmac_dma_operation_mode(struct stmmac_priv *priv)
{
if (!priv->is_gmac) {
/* MAC 10/100 */
- priv->hw->dma->dma_mode(priv->dev->base_addr, tc, 0);
+ priv->hw->dma->dma_mode(priv->ioaddr, tc, 0);
priv->tx_coe = NO_HW_CSUM;
} else {
if ((priv->dev->mtu <= ETH_DATA_LEN) && (tx_coe)) {
- priv->hw->dma->dma_mode(priv->dev->base_addr,
+ priv->hw->dma->dma_mode(priv->ioaddr,
SF_DMA_MODE, SF_DMA_MODE);
tc = SF_DMA_MODE;
priv->tx_coe = HW_CSUM;
} else {
/* Checksum computation is performed in software. */
- priv->hw->dma->dma_mode(priv->dev->base_addr, tc,
+ priv->hw->dma->dma_mode(priv->ioaddr, tc,
SF_DMA_MODE);
priv->tx_coe = NO_HW_CSUM;
}
@@ -603,7 +602,6 @@ static void stmmac_dma_operation_mode(struct stmmac_priv *priv)
static void stmmac_tx(struct stmmac_priv *priv)
{
unsigned int txsize = priv->dma_tx_size;
- unsigned long ioaddr = priv->dev->base_addr;
while (priv->dirty_tx != priv->cur_tx) {
int last;
@@ -621,7 +619,7 @@ static void stmmac_tx(struct stmmac_priv *priv)
int tx_error =
priv->hw->desc->tx_status(&priv->dev->stats,
&priv->xstats, p,
- ioaddr);
+ priv->ioaddr);
if (likely(tx_error == 0)) {
priv->dev->stats.tx_packets++;
priv->xstats.tx_pkt_n++;
@@ -677,7 +675,7 @@ static inline void stmmac_enable_irq(struct stmmac_priv *priv)
priv->tm->timer_start(tmrate);
else
#endif
- priv->hw->dma->enable_dma_irq(priv->dev->base_addr);
+ priv->hw->dma->enable_dma_irq(priv->ioaddr);
}
static inline void stmmac_disable_irq(struct stmmac_priv *priv)
@@ -687,7 +685,7 @@ static inline void stmmac_disable_irq(struct stmmac_priv *priv)
priv->tm->timer_stop();
else
#endif
- priv->hw->dma->disable_dma_irq(priv->dev->base_addr);
+ priv->hw->dma->disable_dma_irq(priv->ioaddr);
}
static int stmmac_has_work(struct stmmac_priv *priv)
@@ -742,14 +740,15 @@ static void stmmac_no_timer_stopped(void)
*/
static void stmmac_tx_err(struct stmmac_priv *priv)
{
+
netif_stop_queue(priv->dev);
- priv->hw->dma->stop_tx(priv->dev->base_addr);
+ priv->hw->dma->stop_tx(priv->ioaddr);
dma_free_tx_skbufs(priv);
priv->hw->desc->init_tx_desc(priv->dma_tx, priv->dma_tx_size);
priv->dirty_tx = 0;
priv->cur_tx = 0;
- priv->hw->dma->start_tx(priv->dev->base_addr);
+ priv->hw->dma->start_tx(priv->ioaddr);
priv->dev->stats.tx_errors++;
netif_wake_queue(priv->dev);
@@ -758,11 +757,9 @@ static void stmmac_tx_err(struct stmmac_priv *priv)
static void stmmac_dma_interrupt(struct stmmac_priv *priv)
{
- unsigned long ioaddr = priv->dev->base_addr;
int status;
- status = priv->hw->dma->dma_interrupt(priv->dev->base_addr,
- &priv->xstats);
+ status = priv->hw->dma->dma_interrupt(priv->ioaddr, &priv->xstats);
if (likely(status == handle_tx_rx))
_stmmac_schedule(priv);
@@ -770,7 +767,7 @@ static void stmmac_dma_interrupt(struct stmmac_priv *priv)
/* Try to bump up the dma threshold on this failure */
if (unlikely(tc != SF_DMA_MODE) && (tc <= 256)) {
tc += 64;
- priv->hw->dma->dma_mode(ioaddr, tc, SF_DMA_MODE);
+ priv->hw->dma->dma_mode(priv->ioaddr, tc, SF_DMA_MODE);
priv->xstats.threshold = tc;
}
stmmac_tx_err(priv);
@@ -790,7 +787,6 @@ static void stmmac_dma_interrupt(struct stmmac_priv *priv)
static int stmmac_open(struct net_device *dev)
{
struct stmmac_priv *priv = netdev_priv(dev);
- unsigned long ioaddr = dev->base_addr;
int ret;
/* Check that the MAC address is valid. If its not, refuse
@@ -846,7 +842,8 @@ static int stmmac_open(struct net_device *dev)
init_dma_desc_rings(dev);
/* DMA initialization and SW reset */
- if (unlikely(priv->hw->dma->init(ioaddr, priv->pbl, priv->dma_tx_phy,
+ if (unlikely(priv->hw->dma->init(priv->ioaddr, priv->pbl,
+ priv->dma_tx_phy,
priv->dma_rx_phy) < 0)) {
pr_err("%s: DMA initialization failed\n", __func__);
@@ -854,22 +851,22 @@ static int stmmac_open(struct net_device *dev)
}
/* Copy the MAC addr into the HW */
- priv->hw->mac->set_umac_addr(ioaddr, dev->dev_addr, 0);
+ priv->hw->mac->set_umac_addr(priv->ioaddr, dev->dev_addr, 0);
/* If required, perform hw setup of the bus. */
if (priv->bus_setup)
- priv->bus_setup(ioaddr);
+ priv->bus_setup(priv->ioaddr);
/* Initialize the MAC Core */
- priv->hw->mac->core_init(ioaddr);
+ priv->hw->mac->core_init(priv->ioaddr);
priv->shutdown = 0;
/* Initialise the MMC (if present) to disable all interrupts. */
- writel(0xffffffff, ioaddr + MMC_HIGH_INTR_MASK);
- writel(0xffffffff, ioaddr + MMC_LOW_INTR_MASK);
+ writel(0xffffffff, priv->ioaddr + MMC_HIGH_INTR_MASK);
+ writel(0xffffffff, priv->ioaddr + MMC_LOW_INTR_MASK);
/* Enable the MAC Rx/Tx */
- stmmac_mac_enable_rx(ioaddr);
- stmmac_mac_enable_tx(ioaddr);
+ stmmac_mac_enable_rx(priv->ioaddr);
+ stmmac_mac_enable_tx(priv->ioaddr);
/* Set the HW DMA mode and the COE */
stmmac_dma_operation_mode(priv);
@@ -880,16 +877,16 @@ static int stmmac_open(struct net_device *dev)
/* Start the ball rolling... */
DBG(probe, DEBUG, "%s: DMA RX/TX processes started...\n", dev->name);
- priv->hw->dma->start_tx(ioaddr);
- priv->hw->dma->start_rx(ioaddr);
+ priv->hw->dma->start_tx(priv->ioaddr);
+ priv->hw->dma->start_rx(priv->ioaddr);
#ifdef CONFIG_STMMAC_TIMER
priv->tm->timer_start(tmrate);
#endif
/* Dump DMA/MAC registers */
if (netif_msg_hw(priv)) {
- priv->hw->mac->dump_regs(ioaddr);
- priv->hw->dma->dump_regs(ioaddr);
+ priv->hw->mac->dump_regs(priv->ioaddr);
+ priv->hw->dma->dump_regs(priv->ioaddr);
}
if (priv->phydev)
@@ -933,15 +930,15 @@ static int stmmac_release(struct net_device *dev)
free_irq(dev->irq, dev);
/* Stop TX/RX DMA and clear the descriptors */
- priv->hw->dma->stop_tx(dev->base_addr);
- priv->hw->dma->stop_rx(dev->base_addr);
+ priv->hw->dma->stop_tx(priv->ioaddr);
+ priv->hw->dma->stop_rx(priv->ioaddr);
/* Release and free the Rx/Tx resources */
free_dma_desc_resources(priv);
/* Disable the MAC core */
- stmmac_mac_disable_tx(dev->base_addr);
- stmmac_mac_disable_rx(dev->base_addr);
+ stmmac_mac_disable_tx(priv->ioaddr);
+ stmmac_mac_disable_rx(priv->ioaddr);
netif_carrier_off(dev);
@@ -1143,7 +1140,7 @@ static netdev_tx_t stmmac_xmit(struct sk_buff *skb, struct net_device *dev)
dev->stats.tx_bytes += skb->len;
- priv->hw->dma->enable_dma_transmission(dev->base_addr);
+ priv->hw->dma->enable_dma_transmission(priv->ioaddr);
return NETDEV_TX_OK;
}
@@ -1408,11 +1405,9 @@ static irqreturn_t stmmac_interrupt(int irq, void *dev_id)
return IRQ_NONE;
}
- if (priv->is_gmac) {
- unsigned long ioaddr = dev->base_addr;
+ if (priv->is_gmac)
/* To handle GMAC own interrupts */
- priv->hw->mac->host_irq_status(ioaddr);
- }
+ priv->hw->mac->host_irq_status((void __iomem *) dev->base_addr);
stmmac_dma_interrupt(priv);
@@ -1525,7 +1520,8 @@ static int stmmac_probe(struct net_device *dev)
netif_napi_add(dev, &priv->napi, stmmac_poll, 64);
/* Get the MAC address */
- priv->hw->mac->get_umac_addr(dev->base_addr, dev->dev_addr, 0);
+ priv->hw->mac->get_umac_addr((void __iomem *) dev->base_addr,
+ dev->dev_addr, 0);
if (!is_valid_ether_addr(dev->dev_addr))
pr_warning("\tno valid MAC address;"
@@ -1555,14 +1551,13 @@ static int stmmac_probe(struct net_device *dev)
static int stmmac_mac_device_setup(struct net_device *dev)
{
struct stmmac_priv *priv = netdev_priv(dev);
- unsigned long ioaddr = dev->base_addr;
struct mac_device_info *device;
if (priv->is_gmac)
- device = dwmac1000_setup(ioaddr);
+ device = dwmac1000_setup(priv->ioaddr);
else
- device = dwmac100_setup(ioaddr);
+ device = dwmac100_setup(priv->ioaddr);
if (!device)
return -ENOMEM;
@@ -1656,7 +1651,7 @@ static int stmmac_dvr_probe(struct platform_device *pdev)
{
int ret = 0;
struct resource *res;
- unsigned int *addr = NULL;
+ void __iomem *addr = NULL;
struct net_device *ndev = NULL;
struct stmmac_priv *priv;
struct plat_stmmacenet_data *plat_dat;
@@ -1711,6 +1706,7 @@ static int stmmac_dvr_probe(struct platform_device *pdev)
priv->pbl = plat_dat->pbl; /* TLI */
priv->is_gmac = plat_dat->has_gmac; /* GMAC is on board */
priv->enh_desc = plat_dat->enh_desc;
+ priv->ioaddr = addr;
platform_set_drvdata(pdev, ndev);
@@ -1782,11 +1778,11 @@ static int stmmac_dvr_remove(struct platform_device *pdev)
pr_info("%s:\n\tremoving driver", __func__);
- priv->hw->dma->stop_rx(ndev->base_addr);
- priv->hw->dma->stop_tx(ndev->base_addr);
+ priv->hw->dma->stop_rx(priv->ioaddr);
+ priv->hw->dma->stop_tx(priv->ioaddr);
- stmmac_mac_disable_rx(ndev->base_addr);
- stmmac_mac_disable_tx(ndev->base_addr);
+ stmmac_mac_disable_rx(priv->ioaddr);
+ stmmac_mac_disable_tx(priv->ioaddr);
netif_carrier_off(ndev);
@@ -1795,7 +1791,7 @@ static int stmmac_dvr_remove(struct platform_device *pdev)
platform_set_drvdata(pdev, NULL);
unregister_netdev(ndev);
- iounmap((void *)ndev->base_addr);
+ iounmap((void *)priv->ioaddr);
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
release_mem_region(res->start, resource_size(res));
@@ -1830,22 +1826,21 @@ static int stmmac_suspend(struct platform_device *pdev, pm_message_t state)
napi_disable(&priv->napi);
/* Stop TX/RX DMA */
- priv->hw->dma->stop_tx(dev->base_addr);
- priv->hw->dma->stop_rx(dev->base_addr);
+ priv->hw->dma->stop_tx(priv->ioaddr);
+ priv->hw->dma->stop_rx(priv->ioaddr);
/* Clear the Rx/Tx descriptors */
priv->hw->desc->init_rx_desc(priv->dma_rx, priv->dma_rx_size,
dis_ic);
priv->hw->desc->init_tx_desc(priv->dma_tx, priv->dma_tx_size);
- stmmac_mac_disable_tx(dev->base_addr);
+ stmmac_mac_disable_tx(priv->ioaddr);
if (device_may_wakeup(&(pdev->dev))) {
/* Enable Power down mode by programming the PMT regs */
if (priv->wolenabled == PMT_SUPPORTED)
- priv->hw->mac->pmt(dev->base_addr,
- priv->wolopts);
+ priv->hw->mac->pmt(priv->ioaddr, priv->wolopts);
} else {
- stmmac_mac_disable_rx(dev->base_addr);
+ stmmac_mac_disable_rx(priv->ioaddr);
}
} else {
priv->shutdown = 1;
@@ -1863,7 +1858,6 @@ static int stmmac_resume(struct platform_device *pdev)
{
struct net_device *dev = platform_get_drvdata(pdev);
struct stmmac_priv *priv = netdev_priv(dev);
- unsigned long ioaddr = dev->base_addr;
if (!netif_running(dev))
return 0;
@@ -1884,15 +1878,15 @@ static int stmmac_resume(struct platform_device *pdev)
* from another devices (e.g. serial console). */
if (device_may_wakeup(&(pdev->dev)))
if (priv->wolenabled == PMT_SUPPORTED)
- priv->hw->mac->pmt(dev->base_addr, 0);
+ priv->hw->mac->pmt(priv->ioaddr, 0);
netif_device_attach(dev);
/* Enable the MAC and DMA */
- stmmac_mac_enable_rx(ioaddr);
- stmmac_mac_enable_tx(ioaddr);
- priv->hw->dma->start_tx(ioaddr);
- priv->hw->dma->start_rx(ioaddr);
+ stmmac_mac_enable_rx(priv->ioaddr);
+ stmmac_mac_enable_tx(priv->ioaddr);
+ priv->hw->dma->start_tx(priv->ioaddr);
+ priv->hw->dma->start_rx(priv->ioaddr);
#ifdef CONFIG_STMMAC_TIMER
priv->tm->timer_start(tmrate);
diff --git a/drivers/net/stmmac/stmmac_mdio.c b/drivers/net/stmmac/stmmac_mdio.c
index 40b2c79..03dea14 100644
--- a/drivers/net/stmmac/stmmac_mdio.c
+++ b/drivers/net/stmmac/stmmac_mdio.c
@@ -47,7 +47,6 @@ static int stmmac_mdio_read(struct mii_bus *bus, int phyaddr, int phyreg)
{
struct net_device *ndev = bus->priv;
struct stmmac_priv *priv = netdev_priv(ndev);
- unsigned long ioaddr = ndev->base_addr;
unsigned int mii_address = priv->hw->mii.addr;
unsigned int mii_data = priv->hw->mii.data;
@@ -56,12 +55,12 @@ static int stmmac_mdio_read(struct mii_bus *bus, int phyaddr, int phyreg)
((phyreg << 6) & (0x000007C0)));
regValue |= MII_BUSY; /* in case of GMAC */
- do {} while (((readl(ioaddr + mii_address)) & MII_BUSY) == 1);
- writel(regValue, ioaddr + mii_address);
- do {} while (((readl(ioaddr + mii_address)) & MII_BUSY) == 1);
+ do {} while (((readl(priv->ioaddr + mii_address)) & MII_BUSY) == 1);
+ writel(regValue, priv->ioaddr + mii_address);
+ do {} while (((readl(priv->ioaddr + mii_address)) & MII_BUSY) == 1);
/* Read the data from the MII data register */
- data = (int)readl(ioaddr + mii_data);
+ data = (int)readl(priv->ioaddr + mii_data);
return data;
}
@@ -79,7 +78,6 @@ static int stmmac_mdio_write(struct mii_bus *bus, int phyaddr, int phyreg,
{
struct net_device *ndev = bus->priv;
struct stmmac_priv *priv = netdev_priv(ndev);
- unsigned long ioaddr = ndev->base_addr;
unsigned int mii_address = priv->hw->mii.addr;
unsigned int mii_data = priv->hw->mii.data;
@@ -90,14 +88,14 @@ static int stmmac_mdio_write(struct mii_bus *bus, int phyaddr, int phyreg,
value |= MII_BUSY;
/* Wait until any existing MII operation is complete */
- do {} while (((readl(ioaddr + mii_address)) & MII_BUSY) == 1);
+ do {} while (((readl(priv->ioaddr + mii_address)) & MII_BUSY) == 1);
/* Set the MII address register to write */
- writel(phydata, ioaddr + mii_data);
- writel(value, ioaddr + mii_address);
+ writel(phydata, priv->ioaddr + mii_data);
+ writel(value, priv->ioaddr + mii_address);
/* Wait until any existing MII operation is complete */
- do {} while (((readl(ioaddr + mii_address)) & MII_BUSY) == 1);
+ do {} while (((readl(priv->ioaddr + mii_address)) & MII_BUSY) == 1);
return 0;
}
@@ -111,7 +109,6 @@ static int stmmac_mdio_reset(struct mii_bus *bus)
{
struct net_device *ndev = bus->priv;
struct stmmac_priv *priv = netdev_priv(ndev);
- unsigned long ioaddr = ndev->base_addr;
unsigned int mii_address = priv->hw->mii.addr;
if (priv->phy_reset) {
@@ -123,7 +120,7 @@ static int stmmac_mdio_reset(struct mii_bus *bus)
* It doesn't complete its reset until at least one clock cycle
* on MDC, so perform a dummy mdio read.
*/
- writel(0, ioaddr + mii_address);
+ writel(0, priv->ioaddr + mii_address);
return 0;
}
diff --git a/include/linux/stmmac.h b/include/linux/stmmac.h
index 632ff7c..a4adf0d 100644
--- a/include/linux/stmmac.h
+++ b/include/linux/stmmac.h
@@ -35,7 +35,7 @@ struct plat_stmmacenet_data {
int has_gmac;
int enh_desc;
void (*fix_mac_speed)(void *priv, unsigned int speed);
- void (*bus_setup)(unsigned long ioaddr);
+ void (*bus_setup)(void __iomem *ioaddr);
#ifdef CONFIG_STM_DRIVERS
struct stm_pad_config *pad_config;
#endif
--
1.5.5.6
^ permalink raw reply related
* [PATCH 2/3] stmmac: remove dead option in the driver's Kconfig
From: Giuseppe CAVALLARO @ 2010-08-24 6:40 UTC (permalink / raw)
To: netdev; +Cc: Giuseppe Cavallaro
In-Reply-To: <1282632042-752-1-git-send-email-peppe.cavallaro@st.com>
This patch removes the CPU_SUBTYPE_ST40 dependency in the
driver's Kconfig.
In fact, this option has been removed in the commit:
f96691872439ab2071171d4531c4a95b5d493ae5
as reported by Christian Dietrich.
Note that the driver remains tested on STM platforms, only.
Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>
---
drivers/net/stmmac/Kconfig | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/stmmac/Kconfig b/drivers/net/stmmac/Kconfig
index eb63d44..6439680 100644
--- a/drivers/net/stmmac/Kconfig
+++ b/drivers/net/stmmac/Kconfig
@@ -3,10 +3,10 @@ config STMMAC_ETH
select MII
select PHYLIB
select CRC32
- depends on NETDEVICES && CPU_SUBTYPE_ST40
+ depends on NETDEVICES
help
This is the driver for the Ethernet IPs are built around a
- Synopsys IP Core and fully tested on the STMicroelectronics
+ Synopsys IP Core and only tested on the STMicroelectronics
platforms.
if STMMAC_ETH
--
1.5.5.6
^ permalink raw reply related
* [PATCH 1/3] stmmac: fix_mac_speed is called during 10/100<->1000 speed changes
From: Giuseppe CAVALLARO @ 2010-08-24 6:40 UTC (permalink / raw)
To: netdev; +Cc: Pawel Moll, Giuseppe Cavallaro
From: Pawel Moll <pawel.moll@st.com>
This patch modifies the stmmac_adjust_link() function so the
fix_mac_speed() is called not only when link speed is changing
between 10 and 100 Mbps (as required in RMII mode) but also
for 1000 Mbps.
Signed-off-by: Pawel Moll <pawel.moll@st.com>
Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>
---
drivers/net/stmmac/stmmac_main.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/drivers/net/stmmac/stmmac_main.c b/drivers/net/stmmac/stmmac_main.c
index bbb7951..86b6c69 100644
--- a/drivers/net/stmmac/stmmac_main.c
+++ b/drivers/net/stmmac/stmmac_main.c
@@ -238,6 +238,9 @@ static void stmmac_adjust_link(struct net_device *dev)
case 1000:
if (likely(priv->is_gmac))
ctrl &= ~priv->hw->link.port;
+ if (likely(priv->fix_mac_speed))
+ priv->fix_mac_speed(priv->bsp_priv,
+ phydev->speed);
break;
case 100:
case 10:
--
1.5.5.6
^ permalink raw reply related
* Re: [Bugme-new] [Bug 16626] New: Machine hangs with EIP at skb_copy_and_csum_dev
From: Plamen Petrov @ 2010-08-24 13:27 UTC (permalink / raw)
To: Eric Dumazet
Cc: Jarek Poplawski, Andrew Morton, netdev, bugzilla-daemon,
bugme-daemon
In-Reply-To: <4C738636.4000107@fs.uni-ruse.bg>
На 24.8.2010 г. 11:43, Plamen Petrov написа:
> На 24.8.2010 г. 08:01, Eric Dumazet написа:
>> Le mardi 24 août 2010 à 07:51 +0300, Plamen Petrov a écrit :
>>> So far - not so good. :(
...
>>
> Here is what I've got while running the kernel with the patch
> I attached earlier plus the above one, after turning GRO on for
> my tg3 nic:
>
> [picture 10]
> http://picpaste.com/37e37f9ff9504e3a003f49092f9b1be6.jpg
>
> [picture 11]
> http://picpaste.com/5663ca7c5041c0ed7a1f3e6a9aa17a9e.jpg
>
> [picture 12]
> http://picpaste.com/17f2ecaa409a1ebbf835a2e0519d3099.jpg
>
> Now moving on to the second proposed patch from Jarek.
>
> Thanks,
> Plamen
The current status: if I enable GRO on the tg3 - the kernel oopses.
It just takes a different amount of time to trigger: somewhere from
30 seconds to 30 minutes.
The oopses looks the same, and here are the latest:
[picture 13]
http://picpaste.com/c8dbda8f5c15d9ce3e050dd7f245f5d0.jpg
[picture 14]
http://picpaste.com/646cca586b704c5b72d3cf9fa54c7344.jpg
I was wondering which debug options could help us track this down?
Thanks,
Plamen
^ permalink raw reply
* Re: [PATCH RFC] net: save RX queue number in sock for dev_pick_tx() use
From: Eric Dumazet @ 2010-08-24 13:06 UTC (permalink / raw)
To: Changli Gao, Tom Herbert
Cc: David S. Miller, Alexey Kuznetsov, Pekka Savola (ipv6),
James Morris, Hideaki YOSHIFUJI, Patrick McHardy, netdev
In-Reply-To: <1282640519-15541-1-git-send-email-xiaosuo@gmail.com>
Le mardi 24 août 2010 à 17:01 +0800, Changli Gao a écrit :
> For the packets sent out from a local server socket, we can use the queue
> from which the packets from the client socket are received.
>
> It may help on a TCP or UDP server. Because I don't have a multiqueue NIC,
> I don't even test it.
>
It may help ? or it may not...
> Signed-off-by: Changli Gao <xiaosuo@gmail.com>
> ---
> include/net/sock.h | 18 ++++++++++++++++++
> net/core/dev.c | 25 ++++++++++++++++++-------
> net/ipv4/tcp_ipv4.c | 5 ++++-
> net/ipv4/udp.c | 4 +++-
> 4 files changed, 43 insertions(+), 9 deletions(-)
> diff --git a/include/net/sock.h b/include/net/sock.h
> index 100e43b..4e5f2f4 100644
> --- a/include/net/sock.h
> +++ b/include/net/sock.h
> @@ -1231,6 +1231,24 @@ static inline int sk_tx_queue_get(const struct sock *sk)
> return sk ? sk->sk_tx_queue_mapping : -1;
> }
>
> +static inline void sk_rx_queue_save(struct sock *sk, struct sk_buff *skb)
> +{
> + struct dst_entry *dst;
> + int rxqueue;
> +
> + if (!skb_rx_queue_recorded(skb))
> + return;
> + rcu_read_lock();
> + dst = rcu_dereference_check(sk->sk_dst_cache, 1);
rcu_dereference(sk->sk_dst_cache) is fine here.
> + if (dst && !dst->dev->netdev_ops->ndo_select_queue &&
> + dst->dev == skb->dev) {
> + rxqueue = skb_get_rx_queue(skb);
> + if (rxqueue != sk_tx_queue_get(sk))
> + sk_tx_queue_set(sk, rxqueue);
> + }
> + rcu_read_unlock();
> +}
> +
ipv6 not handled
Anyway, should we store a queue number, a rxhash, a cpu number, all
values ?
Tom Herbert last patch (XPS) is about selecting a txqueue given a cpu
number at sending time. In its use, no need to add logic at receive time
to remember rxqueue. But logic is wide (for a given NIC)
I do think we should really clarify the needs before writing hundred of
lines of code that we have to maintain for next decade...
For example, storing the cpu number of the cpu that received a UDP/TCP
frame would probably be nice, and using it as a key for xmit path queue
selection would probably be faster...
Probably we want a selectable way... A multi threaded UDP application,
receiving frames on a single socket, might need to select a single
txqueue (socket property), or multiple queues (based on packet content,
or sender cpu, or last receive cpu number, ...)
^ permalink raw reply
* [patch] plip: remove superflous return
From: Dan Carpenter @ 2010-08-24 12:01 UTC (permalink / raw)
To: netdev; +Cc: Joe Perches, David S. Miller, kernel-janitors
This return isn't reachable and it obscures the goto on the line before.
Signed-off-by: Dan Carpenter <error27@gmail.com>
diff --git a/drivers/net/plip.c b/drivers/net/plip.c
index ec0349e..7e82a82 100644
--- a/drivers/net/plip.c
+++ b/drivers/net/plip.c
@@ -1279,7 +1279,6 @@ static void plip_attach (struct parport *port)
if (!nl->pardev) {
printk(KERN_ERR "%s: parport_register failed\n", name);
goto err_free_dev;
- return;
}
plip_init_netdev(dev);
^ permalink raw reply related
* [PATCH RFC] netns: keep vlan slaves on master netns move
From: David Lamparter @ 2010-08-24 11:50 UTC (permalink / raw)
To: netdev; +Cc: Patrick McHardy
Hi everyone,
attached patch makes it possible to keep macvlan / 802.1q slave devices
on moving their master to a different namespace. as the opposite works
without problems (moving the slaves into a different namespace), this
shouldn't cause problems either.
i've tested this with 802.1q on real ethernet devs and bridges and,
well, it works without crashing, but that obviously doesn't mean it is
correct :) - therefore input very welcome.
RFC,
David
P.S.: who do i Cc: on netns related stuff?
--
previously, if a vlan master device was moved from one network namespace
to another, all 802.1q and macvlan slaves were deleted.
we can use dev->reg_state to figure out whether dev_change_net_namespace
is happening, since that won't set dev->reg_state NETREG_UNREGISTERING.
so, this changes 8021q and macvlan to ignore NETDEV_UNREGISTER when
reg_state is not NETREG_UNREGISTERING.
Signed-off-by: David Lamparter <equinox@diac24.net>
---
drivers/net/macvlan.c | 4 ++++
net/8021q/vlan.c | 4 ++++
net/core/dev.c | 4 ++++
3 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
index f15fe2c..f43f8e4 100644
--- a/drivers/net/macvlan.c
+++ b/drivers/net/macvlan.c
@@ -754,6 +754,10 @@ static int macvlan_device_event(struct notifier_block *unused,
}
break;
case NETDEV_UNREGISTER:
+ /* twiddle thumbs on netns device moves */
+ if (dev->reg_state != NETREG_UNREGISTERING)
+ break;
+
list_for_each_entry_safe(vlan, next, &port->vlans, list)
vlan->dev->rtnl_link_ops->dellink(vlan->dev, NULL);
break;
diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c
index 3c1c8c1..cdc37e8 100644
--- a/net/8021q/vlan.c
+++ b/net/8021q/vlan.c
@@ -516,6 +516,10 @@ static int vlan_device_event(struct notifier_block *unused, unsigned long event,
break;
case NETDEV_UNREGISTER:
+ /* twiddle thumbs on netns device moves */
+ if (dev->reg_state != NETREG_UNREGISTERING)
+ break;
+
/* Delete all VLANs for this dev. */
grp->killall = 1;
diff --git a/net/core/dev.c b/net/core/dev.c
index 1f466e8..b1589bc 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -5618,6 +5618,10 @@ int dev_change_net_namespace(struct net_device *dev, struct net *net, const char
/* Notify protocols, that we are about to destroy
this device. They should clean all the things.
+
+ Note that dev->reg_state stays at NETREG_REGISTERED.
+ This is wanted because this way 8021q and macvlan know
+ the device is just moving and can keep their slaves up.
*/
call_netdevice_notifiers(NETDEV_UNREGISTER, dev);
call_netdevice_notifiers(NETDEV_UNREGISTER_BATCH, dev);
--
1.7.0.4
^ permalink raw reply related
* Re: IPVS network namespace aware ?
From: Hans Schillstrom @ 2010-08-24 10:24 UTC (permalink / raw)
To: Daniel Lezcano
Cc: lvs-devel@vger.kernel.org, netfilter-devel@vger.kernel.org,
netdev@vger.kernel.org
In-Reply-To: <4C7398CD.7090905@free.fr>
On Tue, 2010-08-24 at 12:02 +0200, Daniel Lezcano wrote:
> On 08/24/2010 10:53 AM, Hans Schillstrom wrote:
> > Hi Daniel
> > The progress is good, so far I think everything is ported except for
> > Simon Hormans latest patch-set.
> >
> > Right now I'm struggling with NULL pointers :-)
> > i.e. seq_file doesn't carry any netns info.
> >
> > In the example below *net will be invalid because seq->private is NULL.
> >
> > static void *ip_vs_info_seq_next(struct seq_file *seq, ....) {
> > struct net *net = seq_file_net(seq);
> >
> > single_open() seems to work, but seq_open() or seq_open_private().
> >
>
> That sounds me familiar ... :)
I have found it, local usage of seq->private.
When the admin part works, (hopefully to morrow) I will send the patch
>
> > As you can see I'm not ready, so help will be nice.
> > I'll remove some debugging stuff and send you a patch-set.
> >
>
> Cool, thanks !
>
> -- Daniel
>
> --
/Hans
^ permalink raw reply
* Re: [PATCH] net: use skb_get_rxhash()
From: Eric Dumazet @ 2010-08-24 10:21 UTC (permalink / raw)
To: Changli Gao; +Cc: David S. Miller, netdev
In-Reply-To: <1282643558-20866-1-git-send-email-xiaosuo@gmail.com>
Le mardi 24 août 2010 à 17:52 +0800, Changli Gao a écrit :
> Although it is rare the line contains skb->rxhash is executed:
>
> * The forwarded skbs should have the the rx queue recoreded.
> * The local generated skbs should have non zero sk_hash in most of cases.
>
> when it is executed, a non zero rxhash will be better.
>
> Signed-off-by: Changli Gao <xiaosuo@gmail.com>
> ---
> net/core/dev.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
> diff --git a/net/core/dev.c b/net/core/dev.c
> index 859e30f..ea041fd 100644
> --- a/net/core/dev.c
> +++ b/net/core/dev.c
> @@ -2034,7 +2034,7 @@ u16 skb_tx_hash(const struct net_device *dev, const struct sk_buff *skb)
> if (skb->sk && skb->sk->sk_hash)
> hash = skb->sk->sk_hash;
> else
> - hash = (__force u16) skb->protocol ^ skb->rxhash;
> + hash = (__force u16) skb->protocol ^ skb_get_rxhash(skb);
> hash = jhash_1word(hash, hashrnd);
>
> return (u16) (((u64) hash * dev->real_num_tx_queues) >> 32);
> --
Instead of adding hacks and growing kernel code (considering your
previous patch), could we sit down and fix existing code, if really
needed ?
Spirit of existing code is that tcp/udp sockets have a sk_hash field,
and this feeds skb->rxhash in transmit path.
(check commit 87fd308c for an example of a fix)
I do think its better to chose a hash value per socket, instead of doing
it per packet (duplicated work, and slowdown mono threaded apps because
their working set will be shared by several queues, then several cpus)
^ permalink raw reply
* Re: IPVS network namespace aware ?
From: Daniel Lezcano @ 2010-08-24 10:02 UTC (permalink / raw)
To: Hans Schillstrom
Cc: lvs-devel, netfilter-devel@vger.kernel.org,
netdev@vger.kernel.org
In-Reply-To: <1282640038.25529.38.camel@seasc0214.dyn.rnd.as.sw.ericsson.se>
On 08/24/2010 10:53 AM, Hans Schillstrom wrote:
> Hi Daniel
> The progress is good, so far I think everything is ported except for
> Simon Hormans latest patch-set.
>
> Right now I'm struggling with NULL pointers :-)
> i.e. seq_file doesn't carry any netns info.
>
> In the example below *net will be invalid because seq->private is NULL.
>
> static void *ip_vs_info_seq_next(struct seq_file *seq, ....) {
> struct net *net = seq_file_net(seq);
>
> single_open() seems to work, but seq_open() or seq_open_private().
>
That sounds me familiar ... :)
> As you can see I'm not ready, so help will be nice.
> I'll remove some debugging stuff and send you a patch-set.
>
Cool, thanks !
-- Daniel
^ permalink raw reply
* [PATCH] net: use skb_get_rxhash()
From: Changli Gao @ 2010-08-24 9:52 UTC (permalink / raw)
To: David S. Miller; +Cc: netdev, Changli Gao
Although it is rare the line contains skb->rxhash is executed:
* The forwarded skbs should have the the rx queue recoreded.
* The local generated skbs should have non zero sk_hash in most of cases.
when it is executed, a non zero rxhash will be better.
Signed-off-by: Changli Gao <xiaosuo@gmail.com>
---
net/core/dev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/core/dev.c b/net/core/dev.c
index 859e30f..ea041fd 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2034,7 +2034,7 @@ u16 skb_tx_hash(const struct net_device *dev, const struct sk_buff *skb)
if (skb->sk && skb->sk->sk_hash)
hash = skb->sk->sk_hash;
else
- hash = (__force u16) skb->protocol ^ skb->rxhash;
+ hash = (__force u16) skb->protocol ^ skb_get_rxhash(skb);
hash = jhash_1word(hash, hashrnd);
return (u16) (((u64) hash * dev->real_num_tx_queues) >> 32);
^ permalink raw reply related
* No link on e1000e with 2.6.35.3 and ThinkPad T60
From: Marc Haber @ 2010-08-24 9:45 UTC (permalink / raw)
To: Linux Kernel Developers, Linux Kernel Network Developers,
e1000-devel@lists.sourceforge.net
In-Reply-To: <20100724092644.GA13353@torres.zugschlus.de>
Hi,
On Sat, Jul 24, 2010 at 11:26:44AM +0200, Marc Haber wrote:
> Additionally, sometimes, probably after suspend/resume, the wired
> ethernet does not come up properly again, ip addr claims "NO CARRIER"
> even if the LEDs on the interface and on the switch claim that there
> was a link. No packets are received by the interface when it's at this
> stage.
As of 2.6.35.3, this issue has become worse. It now even happens
directly after freshly booting the system that I cannot get a link on
the wired ethernet.
What information do you need to find out what's going on there?
Please Cc: me on replies
Greetings
Marc
$ sudo ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Speed: Unknown!
Duplex: Unknown! (255)
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
MDI-X: Unknown
Supports Wake-on: pumbag
Wake-on: g
Current message level: 0x00000001 (1)
Link detected: no
$
[ 0.000000] #38 [0002810840 - 0002810850] BOOTMEM
[ 0.000000] #39 [0002810880 - 00028108f3] BOOTMEM
[ 0.000000] #40 [0002810900 - 0002810973] BOOTMEM
[ 0.000000] #41 [0002c00000 - 0002c10000] BOOTMEM
[ 0.000000] #42 [0002e00000 - 0002e10000] BOOTMEM
[ 0.000000] #43 [0002812980 - 0002812984] BOOTMEM
[ 0.000000] #44 [00028129c0 - 00028129c4] BOOTMEM
[ 0.000000] #45 [0002812a00 - 0002812a08] BOOTMEM
[ 0.000000] #46 [0002812a40 - 0002812a48] BOOTMEM
[ 0.000000] #47 [0002812a80 - 0002812b28] BOOTMEM
[ 0.000000] #48 [0002812b40 - 0002812ba8] BOOTMEM
[ 0.000000] #49 [0002812bc0 - 0002816bc0] BOOTMEM
[ 0.000000] #50 [0002816bc0 - 0002896bc0] BOOTMEM
[ 0.000000] #51 [0002896bc0 - 00028d6bc0] BOOTMEM
[ 0.000000] Initializing HighMem for node 0 (000377fe:000bfed0)
[ 0.000000] Memory: 3106840k/3144512k available (2664k kernel code, 37280k reserved, 1196k data, 468k init, 2235208k highmem)
[ 0.000000] virtual kernel memory layout:
[ 0.000000] fixmap : 0xfff66000 - 0xfffff000 ( 612 kB)
[ 0.000000] pkmap : 0xff800000 - 0xffc00000 (4096 kB)
[ 0.000000] vmalloc : 0xf7ffe000 - 0xff7fe000 ( 120 MB)
[ 0.000000] lowmem : 0xc0000000 - 0xf77fe000 ( 887 MB)
[ 0.000000] .init : 0xc04c6000 - 0xc053b000 ( 468 kB)
[ 0.000000] .data : 0xc039a0a3 - 0xc04c50dc (1196 kB)
[ 0.000000] .text : 0xc0100000 - 0xc039a0a3 (2664 kB)
[ 0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok.
[ 0.000000] Hierarchical RCU implementation.
[ 0.000000] RCU-based detection of stalled CPUs is disabled.
[ 0.000000] Verbose stalled-CPUs detection is disabled.
[ 0.000000] NR_IRQS:384
[ 0.000000] CPU 0 irqstacks, hard=c2c00000 soft=c2c01000
[ 0.000000] Extended CMOS year: 2000
[ 0.000000] Console: colour VGA+ 80x25
[ 0.000000] console [tty0] enabled
[ 0.000000] hpet clockevent registered
[ 0.000000] Fast TSC calibration using PIT
[ 0.000000] Detected 2161.193 MHz processor.
[ 0.004008] Calibrating delay loop (skipped), value calculated using timer frequency.. 4322.38 BogoMIPS (lpj=8644772)
[ 0.004018] pid_max: default: 32768 minimum: 301
[ 0.004107] Security Framework initialized
[ 0.004150] Mount-cache hash table entries: 512
[ 0.004406] CPU: Physical Processor ID: 0
[ 0.004410] CPU: Processor Core ID: 0
[ 0.004417] mce: CPU supports 6 MCE banks
[ 0.004433] CPU0: Thermal monitoring enabled (TM2)
[ 0.004440] using mwait in idle threads.
[ 0.004451] Performance Events: PEBS fmt0-, Core2 events, Intel PMU driver.
[ 0.004463] PEBS disabled due to CPU errata.
[ 0.004474] ... version: 2
[ 0.004478] ... bit width: 40
[ 0.004482] ... generic registers: 2
[ 0.004486] ... value mask: 000000ffffffffff
[ 0.004491] ... max period: 000000007fffffff
[ 0.004496] ... fixed-purpose events: 3
[ 0.004500] ... event mask: 0000000700000003
[ 0.006434] ACPI: Core revision 20100428
[ 0.040017] ftrace: converting mcount calls to 0f 1f 44 00 00
[ 0.040027] ftrace: allocating 13849 entries in 28 pages
[ 0.044069] Enabling APIC mode: Flat. Using 1 I/O APICs
[ 0.044482] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[ 0.086084] CPU0: Intel(R) Core(TM)2 CPU T7400 @ 2.16GHz stepping 06
[ 0.104036] CPU 1 irqstacks, hard=c2e00000 soft=c2e01000
[ 0.104047] Booting Node 0, Processors #1 Ok.
[ 0.008000] Initializing CPU#1
[ 0.196000] TSC synchronization [CPU#0 -> CPU#1]:
[ 0.196000] Measured 668564 cycles TSC warp between CPUs, turning off TSC clock.
[ 0.196000] Marking TSC unstable due to check_tsc_sync_source failed
[ 0.196032] Brought up 2 CPUs
[ 0.196037] Total of 2 processors activated (8644.99 BogoMIPS).
[ 0.200073] devtmpfs: initialized
[ 0.200266] regulator: core version 0.5
[ 0.200266] NET: Registered protocol family 16
[ 0.200266] ACPI FADT declares the system doesn't support PCIe ASPM, so disable it
[ 0.200266] ACPI: bus type pci registered
[ 0.200266] PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 0xf0000000-0xf3ffffff] (base 0xf0000000)
[ 0.200266] PCI: MMCONFIG at [mem 0xf0000000-0xf3ffffff] reserved in E820
[ 0.200266] PCI: Using MMCONFIG for extended config space
[ 0.200266] PCI: Using configuration type 1 for base access
[ 0.204080] bio: create slab <bio-0> at 0
[ 0.212480] ACPI: EC: EC description table is found, configuring boot EC
[ 0.237152] ACPI: SSDT bfef1d36 00282 (v01 PmRef Cpu0Ist 00000100 INTL 20050513)
[ 0.237613] ACPI: Dynamic OEM Table Load:
[ 0.237613] ACPI: SSDT (null) 00282 (v01 PmRef Cpu0Ist 00000100 INTL 20050513)
[ 0.237613] ACPI: SSDT bfef203d 0065A (v01 PmRef Cpu0Cst 00000100 INTL 20050513)
[ 0.241054] ACPI: Dynamic OEM Table Load:
[ 0.241062] ACPI: SSDT (null) 0065A (v01 PmRef Cpu0Cst 00000100 INTL 20050513)
[ 0.241866] ACPI: SSDT bfef1c6e 000C8 (v01 PmRef Cpu1Ist 00000100 INTL 20050513)
[ 0.243315] ACPI: Dynamic OEM Table Load:
[ 0.243323] ACPI: SSDT (null) 000C8 (v01 PmRef Cpu1Ist 00000100 INTL 20050513)
[ 0.243609] ACPI: SSDT bfef1fb8 00085 (v01 PmRef Cpu1Cst 00000100 INTL 20050513)
[ 0.245058] ACPI: Dynamic OEM Table Load:
[ 0.245065] ACPI: SSDT (null) 00085 (v01 PmRef Cpu1Cst 00000100 INTL 20050513)
[ 0.245281] ACPI: Interpreter enabled
[ 0.245288] ACPI: (supports S0 S3 S4 S5)
[ 0.245336] ACPI: Using IOAPIC for interrupt routing
[ 0.264726] ACPI: EC: GPE = 0x1c, I/O: command/status = 0x66, data = 0x62
[ 0.268107] ACPI: Power Resource [PUBS] (on)
[ 0.272897] ACPI: ACPI Dock Station Driver: 3 docks/bays found
[ 0.272907] PCI: Ignoring host bridge windows from ACPI; if necessary, use "pci=use_crs" and report a bug
[ 0.273751] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[ 0.273817] pci_root PNP0A08:00: host bridge window [io 0x0000-0x0cf7] (ignored)
[ 0.273817] pci_root PNP0A08:00: host bridge window [io 0x0d00-0xffff] (ignored)
[ 0.273817] pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff] (ignored)
[ 0.273817] pci_root PNP0A08:00: host bridge window [mem 0x000d0000-0x000d3fff] (ignored)
[ 0.273817] pci_root PNP0A08:00: host bridge window [mem 0x000d4000-0x000d7fff] (ignored)
[ 0.273817] pci_root PNP0A08:00: host bridge window [mem 0x000d8000-0x000dbfff] (ignored)
[ 0.273817] pci_root PNP0A08:00: host bridge window [mem 0xc0000000-0xfebfffff] (ignored)
[ 0.273817] pci_root PNP0A08:00: host bridge window [mem 0xfed40000-0xfed40fff] (ignored)
[ 0.273817] pci 0000:00:01.0: PME# supported from D0 D3hot D3cold
[ 0.273817] pci 0000:00:01.0: PME# disabled
[ 0.273817] pci 0000:00:1b.0: reg 10: [mem 0xee400000-0xee403fff 64bit]
[ 0.273817] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold
[ 0.273817] pci 0000:00:1b.0: PME# disabled
[ 0.273817] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold
[ 0.273817] pci 0000:00:1c.0: PME# disabled
[ 0.273817] pci 0000:00:1c.1: PME# supported from D0 D3hot D3cold
[ 0.273817] pci 0000:00:1c.1: PME# disabled
[ 0.273817] pci 0000:00:1c.2: PME# supported from D0 D3hot D3cold
[ 0.273817] pci 0000:00:1c.2: PME# disabled
[ 0.273817] pci 0000:00:1c.3: PME# supported from D0 D3hot D3cold
[ 0.273817] pci 0000:00:1c.3: PME# disabled
[ 0.273817] pci 0000:00:1d.0: reg 20: [io 0x1800-0x181f]
[ 0.273817] pci 0000:00:1d.1: reg 20: [io 0x1820-0x183f]
[ 0.273817] pci 0000:00:1d.2: reg 20: [io 0x1840-0x185f]
[ 0.273817] pci 0000:00:1d.3: reg 20: [io 0x1860-0x187f]
[ 0.273817] pci 0000:00:1d.7: reg 10: [mem 0xee404000-0xee4043ff]
[ 0.273817] pci 0000:00:1d.7: PME# supported from D0 D3hot D3cold
[ 0.273817] pci 0000:00:1d.7: PME# disabled
[ 0.273820] pci 0000:00:1f.0: quirk: [io 0x1000-0x107f] claimed by ICH6 ACPI/GPIO/TCO
[ 0.273828] pci 0000:00:1f.0: quirk: [io 0x1180-0x11bf] claimed by ICH6 GPIO
[ 0.273836] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 1 PIO at 1600 (mask 007f)
[ 0.273844] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 2 PIO at 15e0 (mask 000f)
[ 0.273852] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 3 PIO at 1680 (mask 001f)
[ 0.273924] pci 0000:00:1f.1: reg 10: [io 0x0000-0x0007]
[ 0.273937] pci 0000:00:1f.1: reg 14: [io 0x0000-0x0003]
[ 0.273950] pci 0000:00:1f.1: reg 18: [io 0x0000-0x0007]
[ 0.273962] pci 0000:00:1f.1: reg 1c: [io 0x0000-0x0003]
[ 0.273974] pci 0000:00:1f.1: reg 20: [io 0x1880-0x188f]
[ 0.274053] pci 0000:00:1f.2: reg 10: [io 0x18c8-0x18cf]
[ 0.274066] pci 0000:00:1f.2: reg 14: [io 0x18ac-0x18af]
[ 0.274078] pci 0000:00:1f.2: reg 18: [io 0x18c0-0x18c7]
[ 0.274091] pci 0000:00:1f.2: reg 1c: [io 0x18a8-0x18ab]
[ 0.274103] pci 0000:00:1f.2: reg 20: [io 0x18b0-0x18bf]
[ 0.274116] pci 0000:00:1f.2: reg 24: [mem 0xee404400-0xee4047ff]
[ 0.274168] pci 0000:00:1f.2: PME# supported from D3hot
[ 0.276009] pci 0000:00:1f.2: PME# disabled
[ 0.276093] pci 0000:00:1f.3: reg 20: [io 0x18e0-0x18ff]
[ 0.276281] pci 0000:01:00.0: reg 10: [mem 0xd8000000-0xdfffffff pref]
[ 0.276308] pci 0000:01:00.0: reg 14: [io 0x2000-0x20ff]
[ 0.276335] pci 0000:01:00.0: reg 18: [mem 0xee100000-0xee10ffff]
[ 0.276425] pci 0000:01:00.0: reg 30: [mem 0x00000000-0x0001ffff pref]
[ 0.276539] pci 0000:01:00.0: supports D1 D2
[ 0.276596] pci 0000:00:01.0: PCI bridge to [bus 01-01]
[ 0.276603] pci 0000:00:01.0: bridge window [io 0x2000-0x2fff]
[ 0.276611] pci 0000:00:01.0: bridge window [mem 0xee100000-0xee1fffff]
[ 0.276621] pci 0000:00:01.0: bridge window [mem 0xd8000000-0xdfffffff 64bit pref]
[ 0.276770] pci 0000:02:00.0: reg 10: [mem 0xee000000-0xee01ffff]
[ 0.276801] pci 0000:02:00.0: reg 18: [io 0x3000-0x301f]
[ 0.276930] pci 0000:02:00.0: PME# supported from D0 D3hot D3cold
[ 0.276941] pci 0000:02:00.0: PME# disabled
[ 0.276979] pci 0000:00:1c.0: PCI bridge to [bus 02-02]
[ 0.276987] pci 0000:00:1c.0: bridge window [io 0x3000-0x3fff]
[ 0.276996] pci 0000:00:1c.0: bridge window [mem 0xee000000-0xee0fffff]
[ 0.277010] pci 0000:00:1c.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled)
[ 0.277240] pci 0000:03:00.0: reg 10: [mem 0xedf00000-0xedf00fff]
[ 0.277507] pci 0000:03:00.0: PME# supported from D0 D3hot
[ 0.277523] pci 0000:03:00.0: PME# disabled
[ 0.277585] pci 0000:00:1c.1: PCI bridge to [bus 03-03]
[ 0.277593] pci 0000:00:1c.1: bridge window [io 0x4000-0x5fff]
[ 0.277602] pci 0000:00:1c.1: bridge window [mem 0xec000000-0xedffffff]
[ 0.277616] pci 0000:00:1c.1: bridge window [mem 0xe4000000-0xe40fffff 64bit pref]
[ 0.277699] pci 0000:00:1c.2: PCI bridge to [bus 04-0b]
[ 0.277708] pci 0000:00:1c.2: bridge window [io 0x6000-0x7fff]
[ 0.277717] pci 0000:00:1c.2: bridge window [mem 0xe8000000-0xe9ffffff]
[ 0.277730] pci 0000:00:1c.2: bridge window [mem 0xe4100000-0xe41fffff 64bit pref]
[ 0.277814] pci 0000:00:1c.3: PCI bridge to [bus 0c-13]
[ 0.277823] pci 0000:00:1c.3: bridge window [io 0x8000-0x9fff]
[ 0.277832] pci 0000:00:1c.3: bridge window [mem 0xea000000-0xebffffff]
[ 0.277845] pci 0000:00:1c.3: bridge window [mem 0xe4200000-0xe42fffff 64bit pref]
[ 0.277937] pci 0000:15:00.0: reg 10: [mem 0xe4300000-0xe4300fff]
[ 0.277977] pci 0000:15:00.0: supports D1 D2
[ 0.277982] pci 0000:15:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[ 0.277992] pci 0000:15:00.0: PME# disabled
[ 0.278087] pci 0000:00:1e.0: PCI bridge to [bus 15-18] (subtractive decode)
[ 0.278096] pci 0000:00:1e.0: bridge window [io 0xa000-0xdfff]
[ 0.278105] pci 0000:00:1e.0: bridge window [mem 0xe4300000-0xe7ffffff]
[ 0.278118] pci 0000:00:1e.0: bridge window [mem 0xe0000000-0xe3ffffff 64bit pref]
[ 0.278124] pci 0000:00:1e.0: bridge window [io 0x0000-0xffff] (subtractive decode)
[ 0.278130] pci 0000:00:1e.0: bridge window [mem 0x00000000-0xffffffff] (subtractive decode)
[ 0.278251] pci_bus 0000:00: on NUMA node 0
[ 0.278260] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
[ 0.278529] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.AGP_._PRT]
[ 0.278670] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.EXP0._PRT]
[ 0.278810] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.EXP1._PRT]
[ 0.278949] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.EXP2._PRT]
[ 0.279103] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.EXP3._PRT]
[ 0.279257] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCI1._PRT]
[ 0.288571] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 9 *10 11)
[ 0.292074] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 *7 9 10 11)
[ 0.292440] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 *5 6 7 9 10 11)
[ 0.292802] ACPI: PCI Interrupt Link [LNKD] (IRQs *3 4 5 6 7 9 10 11)
[ 0.293164] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 *6 7 9 10 11)
[ 0.293527] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 7 9 10 *11)
[ 0.293888] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 7 9 10 *11)
[ 0.294249] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 7 9 10 *11)
[ 0.294410] HEST: Table is not found!
[ 0.294410] vgaarb: device added: PCI:0000:01:00.0,decodes=io+mem,owns=io+mem,locks=none
[ 0.294410] vgaarb: loaded
[ 0.294410] SCSI subsystem initialized
[ 0.294410] usbcore: registered new interface driver usbfs
[ 0.294410] usbcore: registered new interface driver hub
[ 0.294410] usbcore: registered new device driver usb
[ 0.294410] PCI: Using ACPI for IRQ routing
[ 0.294410] PCI: pci_cache_line_size set to 64 bytes
[ 0.296085] reserve RAM buffer: 000000000009f000 - 000000000009ffff
[ 0.296091] reserve RAM buffer: 00000000bfed0000 - 00000000bfffffff
[ 0.296141] HPET: 3 timers in total, 0 timers will be used for per-cpu timer
[ 0.296141] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0
[ 0.296141] hpet0: 3 comparators, 64-bit 14.318180 MHz counter
[ 0.300078] Switching to clocksource hpet
[ 0.304122] pnp: PnP ACPI init
[ 0.304141] ACPI: bus type pnp registered
[ 0.311754] pnp: PnP ACPI: found 11 devices
[ 0.311759] ACPI: ACPI bus type pnp unregistered
[ 0.311780] system 00:00: [mem 0x00000000-0x0009ffff] could not be reserved
[ 0.311788] system 00:00: [mem 0x000c0000-0x000c3fff] could not be reserved
[ 0.311794] system 00:00: [mem 0x000c4000-0x000c7fff] could not be reserved
[ 0.311801] system 00:00: [mem 0x000c8000-0x000cbfff] could not be reserved
[ 0.311807] system 00:00: [mem 0x000cc000-0x000cffff] could not be reserved
[ 0.311813] system 00:00: [mem 0x000dc000-0x000dffff] could not be reserved
[ 0.311820] system 00:00: [mem 0x000e0000-0x000e3fff] could not be reserved
[ 0.311826] system 00:00: [mem 0x000e4000-0x000e7fff] could not be reserved
[ 0.311833] system 00:00: [mem 0x000e8000-0x000ebfff] could not be reserved
[ 0.311839] system 00:00: [mem 0x000ec000-0x000effff] could not be reserved
[ 0.311845] system 00:00: [mem 0x000f0000-0x000fffff] could not be reserved
[ 0.311852] system 00:00: [mem 0x00100000-0xbfffffff] could not be reserved
[ 0.311859] system 00:00: [mem 0xfec00000-0xfed3ffff] could not be reserved
[ 0.311866] system 00:00: [mem 0xfed41000-0xffffffff] could not be reserved
[ 0.311881] system 00:02: [io 0x164e-0x164f] has been reserved
[ 0.311887] system 00:02: [io 0x1000-0x107f] has been reserved
[ 0.311893] system 00:02: [io 0x1180-0x11bf] has been reserved
[ 0.311900] system 00:02: [io 0x0800-0x080f] has been reserved
[ 0.311906] system 00:02: [io 0x15e0-0x15ef] has been reserved
[ 0.311912] system 00:02: [io 0x1600-0x165f] could not be reserved
[ 0.311919] system 00:02: [mem 0xf0000000-0xf3ffffff] has been reserved
[ 0.311925] system 00:02: [mem 0xfed1c000-0xfed1ffff] has been reserved
[ 0.311932] system 00:02: [mem 0xfed14000-0xfed17fff] has been reserved
[ 0.311940] system 00:02: [mem 0xfed18000-0xfed18fff] has been reserved
[ 0.311947] system 00:02: [mem 0xfed19000-0xfed19fff] has been reserved
[ 0.347522] pci 0000:00:1c.0: BAR 9: assigned [mem 0xc0000000-0xc01fffff 64bit pref]
[ 0.347531] pci 0000:01:00.0: BAR 6: assigned [mem 0xee120000-0xee13ffff pref]
[ 0.347538] pci 0000:00:01.0: PCI bridge to [bus 01-01]
[ 0.347544] pci 0000:00:01.0: bridge window [io 0x2000-0x2fff]
[ 0.347553] pci 0000:00:01.0: bridge window [mem 0xee100000-0xee1fffff]
[ 0.347560] pci 0000:00:01.0: bridge window [mem 0xd8000000-0xdfffffff 64bit pref]
[ 0.347570] pci 0000:00:1c.0: PCI bridge to [bus 02-02]
[ 0.347577] pci 0000:00:1c.0: bridge window [io 0x3000-0x3fff]
[ 0.347588] pci 0000:00:1c.0: bridge window [mem 0xee000000-0xee0fffff]
[ 0.347597] pci 0000:00:1c.0: bridge window [mem 0xc0000000-0xc01fffff 64bit pref]
[ 0.347610] pci 0000:00:1c.1: PCI bridge to [bus 03-03]
[ 0.347616] pci 0000:00:1c.1: bridge window [io 0x4000-0x5fff]
[ 0.347627] pci 0000:00:1c.1: bridge window [mem 0xec000000-0xedffffff]
[ 0.347636] pci 0000:00:1c.1: bridge window [mem 0xe4000000-0xe40fffff 64bit pref]
[ 0.347649] pci 0000:00:1c.2: PCI bridge to [bus 04-0b]
[ 0.347656] pci 0000:00:1c.2: bridge window [io 0x6000-0x7fff]
[ 0.347666] pci 0000:00:1c.2: bridge window [mem 0xe8000000-0xe9ffffff]
[ 0.347675] pci 0000:00:1c.2: bridge window [mem 0xe4100000-0xe41fffff 64bit pref]
[ 0.347688] pci 0000:00:1c.3: PCI bridge to [bus 0c-13]
[ 0.347695] pci 0000:00:1c.3: bridge window [io 0x8000-0x9fff]
[ 0.347705] pci 0000:00:1c.3: bridge window [mem 0xea000000-0xebffffff]
[ 0.347714] pci 0000:00:1c.3: bridge window [mem 0xe4200000-0xe42fffff 64bit pref]
[ 0.347729] pci 0000:15:00.0: BAR 9: assigned [mem 0xe0000000-0xe3ffffff pref]
[ 0.347736] pci 0000:15:00.0: BAR 10: assigned [mem 0xc4000000-0xc7ffffff]
[ 0.347742] pci 0000:15:00.0: BAR 7: assigned [io 0xa000-0xa0ff]
[ 0.347748] pci 0000:15:00.0: BAR 8: assigned [io 0xa400-0xa4ff]
[ 0.347753] pci 0000:15:00.0: CardBus bridge to [bus 16-17]
[ 0.347758] pci 0000:15:00.0: bridge window [io 0xa000-0xa0ff]
[ 0.347768] pci 0000:15:00.0: bridge window [io 0xa400-0xa4ff]
[ 0.347778] pci 0000:15:00.0: bridge window [mem 0xe0000000-0xe3ffffff pref]
[ 0.347788] pci 0000:15:00.0: bridge window [mem 0xc4000000-0xc7ffffff]
[ 0.347798] pci 0000:00:1e.0: PCI bridge to [bus 15-18]
[ 0.347804] pci 0000:00:1e.0: bridge window [io 0xa000-0xdfff]
[ 0.347815] pci 0000:00:1e.0: bridge window [mem 0xe4300000-0xe7ffffff]
[ 0.347824] pci 0000:00:1e.0: bridge window [mem 0xe0000000-0xe3ffffff 64bit pref]
[ 0.347852] pci 0000:00:01.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[ 0.347860] pci 0000:00:01.0: setting latency timer to 64
[ 0.347879] pci 0000:00:1c.0: PCI INT A -> GSI 20 (level, low) -> IRQ 20
[ 0.347888] pci 0000:00:1c.0: setting latency timer to 64
[ 0.347906] pci 0000:00:1c.1: PCI INT B -> GSI 21 (level, low) -> IRQ 21
[ 0.347915] pci 0000:00:1c.1: setting latency timer to 64
[ 0.347934] pci 0000:00:1c.2: PCI INT C -> GSI 22 (level, low) -> IRQ 22
[ 0.347942] pci 0000:00:1c.2: setting latency timer to 64
[ 0.347961] pci 0000:00:1c.3: PCI INT D -> GSI 23 (level, low) -> IRQ 23
[ 0.347969] pci 0000:00:1c.3: setting latency timer to 64
[ 0.347979] pci 0000:00:1e.0: enabling device (0005 -> 0007)
[ 0.347990] pci 0000:00:1e.0: setting latency timer to 64
[ 0.348030] pci 0000:15:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[ 0.348042] pci_bus 0000:00: resource 0 [io 0x0000-0xffff]
[ 0.348047] pci_bus 0000:00: resource 1 [mem 0x00000000-0xffffffff]
[ 0.348053] pci_bus 0000:01: resource 0 [io 0x2000-0x2fff]
[ 0.348058] pci_bus 0000:01: resource 1 [mem 0xee100000-0xee1fffff]
[ 0.348064] pci_bus 0000:01: resource 2 [mem 0xd8000000-0xdfffffff 64bit pref]
[ 0.348070] pci_bus 0000:02: resource 0 [io 0x3000-0x3fff]
[ 0.348075] pci_bus 0000:02: resource 1 [mem 0xee000000-0xee0fffff]
[ 0.348080] pci_bus 0000:02: resource 2 [mem 0xc0000000-0xc01fffff 64bit pref]
[ 0.348086] pci_bus 0000:03: resource 0 [io 0x4000-0x5fff]
[ 0.348091] pci_bus 0000:03: resource 1 [mem 0xec000000-0xedffffff]
[ 0.348096] pci_bus 0000:03: resource 2 [mem 0xe4000000-0xe40fffff 64bit pref]
[ 0.348102] pci_bus 0000:04: resource 0 [io 0x6000-0x7fff]
[ 0.348107] pci_bus 0000:04: resource 1 [mem 0xe8000000-0xe9ffffff]
[ 0.348112] pci_bus 0000:04: resource 2 [mem 0xe4100000-0xe41fffff 64bit pref]
[ 0.348118] pci_bus 0000:0c: resource 0 [io 0x8000-0x9fff]
[ 0.348123] pci_bus 0000:0c: resource 1 [mem 0xea000000-0xebffffff]
[ 0.348128] pci_bus 0000:0c: resource 2 [mem 0xe4200000-0xe42fffff 64bit pref]
[ 0.348134] pci_bus 0000:15: resource 0 [io 0xa000-0xdfff]
[ 0.348139] pci_bus 0000:15: resource 1 [mem 0xe4300000-0xe7ffffff]
[ 0.348145] pci_bus 0000:15: resource 2 [mem 0xe0000000-0xe3ffffff 64bit pref]
[ 0.348150] pci_bus 0000:15: resource 4 [io 0x0000-0xffff]
[ 0.348155] pci_bus 0000:15: resource 5 [mem 0x00000000-0xffffffff]
[ 0.348161] pci_bus 0000:16: resource 0 [io 0xa000-0xa0ff]
[ 0.348166] pci_bus 0000:16: resource 1 [io 0xa400-0xa4ff]
[ 0.348171] pci_bus 0000:16: resource 2 [mem 0xe0000000-0xe3ffffff pref]
[ 0.348176] pci_bus 0000:16: resource 3 [mem 0xc4000000-0xc7ffffff]
[ 0.348287] NET: Registered protocol family 2
[ 0.348426] IP route cache hash table entries: 32768 (order: 5, 131072 bytes)
[ 0.348925] TCP established hash table entries: 131072 (order: 8, 1048576 bytes)
[ 0.349601] TCP bind hash table entries: 65536 (order: 7, 524288 bytes)
[ 0.349908] TCP: Hash tables configured (established 131072 bind 65536)
[ 0.349913] TCP reno registered
[ 0.349919] UDP hash table entries: 512 (order: 2, 16384 bytes)
[ 0.349933] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[ 0.350100] NET: Registered protocol family 1
[ 0.350304] pci 0000:01:00.0: Boot video device
[ 0.350376] PCI: CLS mismatch (64 != 32), using 64 bytes
[ 0.350463] Unpacking initramfs...
[ 3.062966] Freeing initrd memory: 6812k freed
[ 3.067836] Simple Boot Flag at 0x35 set to 0x1
[ 3.069089] apm: BIOS not found.
[ 3.069861] audit: initializing netlink socket (disabled)
[ 3.069891] type=2000 audit(1282647962.068:1): initialized
[ 3.070257] highmem bounce pool size: 64 pages
[ 3.070840] msgmni has been set to 1715
[ 3.071183] alg: No test for stdrng (krng)
[ 3.071313] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 254)
[ 3.071319] io scheduler noop registered
[ 3.071324] io scheduler deadline registered
[ 3.071363] io scheduler cfq registered (default)
[ 3.071594] pcieport 0000:00:01.0: setting latency timer to 64
[ 3.071652] pcieport 0000:00:01.0: irq 40 for MSI/MSI-X
[ 3.071889] pcieport 0000:00:1c.0: setting latency timer to 64
[ 3.071962] pcieport 0000:00:1c.0: irq 41 for MSI/MSI-X
[ 3.072320] pcieport 0000:00:1c.1: setting latency timer to 64
[ 3.072393] pcieport 0000:00:1c.1: irq 42 for MSI/MSI-X
[ 3.072739] pcieport 0000:00:1c.2: setting latency timer to 64
[ 3.072812] pcieport 0000:00:1c.2: irq 43 for MSI/MSI-X
[ 3.073265] pcieport 0000:00:1c.3: setting latency timer to 64
[ 3.073338] pcieport 0000:00:1c.3: irq 44 for MSI/MSI-X
[ 3.074482] intel_idle: MWAIT substates: 0x22220
[ 3.074487] intel_idle: does not run on family 6 model 15
[ 3.075065] ACPI: AC Adapter [AC] (off-line)
[ 3.075347] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input0
[ 3.075581] ACPI: Lid Switch [LID]
[ 3.075753] input: Sleep Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/input/input1
[ 3.075759] ACPI: Sleep Button [SLPB]
[ 3.075945] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input2
[ 3.075950] ACPI: Power Button [PWRF]
[ 3.076153] ACPI: acpi_idle registered with cpuidle
[ 3.081107] Monitor-Mwait will be used to enter C-1 state
[ 3.081162] Monitor-Mwait will be used to enter C-2 state
[ 3.081215] Monitor-Mwait will be used to enter C-3 state
[ 3.092443] thermal LNXTHERM:01: registered as thermal_zone0
[ 3.092463] ACPI: Thermal Zone [THM0] (52 C)
[ 3.094942] thermal LNXTHERM:02: registered as thermal_zone1
[ 3.094959] ACPI: Thermal Zone [THM1] (49 C)
[ 3.095152] ERST: Table is not found!
[ 3.095156] GHES: HEST is not enabled!
[ 3.095160] EINJ: Table is not found!
[ 3.095179] isapnp: Scanning for PnP cards...
[ 3.113146] ACPI: Battery Slot [BAT0] (battery present)
[ 3.451028] isapnp: No Plug & Play device found
[ 3.458735] nsc_gpio initializing
[ 3.458739] ramoops: invalid size specification
[ 3.458874] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[ 6.472033] floppy0: no floppy controllers found
[ 6.472750] PNP: PS/2 Controller [PNP0303:KBD,PNP0f13:MOU] at 0x60,0x64 irq 1,12
[ 6.481694] serio: i8042 KBD port at 0x60,0x64 irq 1
[ 6.481707] serio: i8042 AUX port at 0x60,0x64 irq 12
[ 6.481939] mice: PS/2 mouse device common for all mice
[ 6.482663] cpuidle: using governor ladder
[ 6.483850] cpuidle: using governor menu
[ 6.484079] GACT probability on
[ 6.484578] NET: Registered protocol family 17
[ 6.484605] NET: Registered protocol family 15
[ 6.484623] Using IPI No-Shortcut mode
[ 6.486844] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input3
[ 6.493504] registered taskstats version 1
[ 6.494296] Freeing unused kernel memory: 468k freed
[ 6.494644] Write protecting the kernel text: 2668k
[ 6.494728] Write protecting the kernel read-only data: 940k
[ 6.609172] udev: starting version 161
[ 6.715258] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 6.756657] ehci_hcd 0000:00:1d.7: power state changed by ACPI to D0
[ 6.759457] ehci_hcd 0000:00:1d.7: power state changed by ACPI to D0
[ 6.759481] ehci_hcd 0000:00:1d.7: PCI INT D -> GSI 19 (level, low) -> IRQ 19
[ 6.759518] ehci_hcd 0000:00:1d.7: setting latency timer to 64
[ 6.759525] ehci_hcd 0000:00:1d.7: EHCI Host Controller
[ 6.759638] ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 1
[ 6.759673] ehci_hcd 0000:00:1d.7: using broken periodic workaround
[ 6.759693] ehci_hcd 0000:00:1d.7: debug port 1
[ 6.763589] ehci_hcd 0000:00:1d.7: cache line size of 64 is not supported
[ 6.763623] ehci_hcd 0000:00:1d.7: irq 19, io mem 0xee404000
[ 6.840043] ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00
[ 6.840110] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[ 6.840116] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 6.840122] usb usb1: Product: EHCI Host Controller
[ 6.840127] usb usb1: Manufacturer: Linux 2.6.35.3-zgws1 ehci_hcd
[ 6.840131] usb usb1: SerialNumber: 0000:00:1d.7
[ 6.840358] hub 1-0:1.0: USB hub found
[ 6.840368] hub 1-0:1.0: 8 ports detected
[ 6.849725] e1000e: Intel(R) PRO/1000 Network Driver - 1.0.2-k4
[ 6.849731] e1000e: Copyright (c) 1999 - 2009 Intel Corporation.
[ 6.849794] e1000e 0000:02:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[ 6.849826] e1000e 0000:02:00.0: setting latency timer to 64
[ 6.850080] e1000e 0000:02:00.0: irq 45 for MSI/MSI-X
[ 6.850579] e1000e 0000:02:00.0: Disabling ASPM L0s
[ 6.877757] uhci_hcd: USB Universal Host Controller Interface driver
[ 6.878071] Linux agpgart interface v0.103
[ 6.878410] uhci_hcd 0000:00:1d.0: power state changed by ACPI to D0
[ 6.878778] uhci_hcd 0000:00:1d.0: power state changed by ACPI to D0
[ 6.878792] uhci_hcd 0000:00:1d.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[ 6.878806] uhci_hcd 0000:00:1d.0: setting latency timer to 64
[ 6.878813] uhci_hcd 0000:00:1d.0: UHCI Host Controller
[ 6.878965] uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 2
[ 6.879030] uhci_hcd 0000:00:1d.0: irq 16, io base 0x00001800
[ 6.879096] usb usb2: New USB device found, idVendor=1d6b, idProduct=0001
[ 6.879102] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 6.879108] usb usb2: Product: UHCI Host Controller
[ 6.879112] usb usb2: Manufacturer: Linux 2.6.35.3-zgws1 uhci_hcd
[ 6.879117] usb usb2: SerialNumber: 0000:00:1d.0
[ 6.879454] hub 2-0:1.0: USB hub found
[ 6.879465] hub 2-0:1.0: 2 ports detected
[ 6.879601] uhci_hcd 0000:00:1d.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17
[ 6.879613] uhci_hcd 0000:00:1d.1: setting latency timer to 64
[ 6.879620] uhci_hcd 0000:00:1d.1: UHCI Host Controller
[ 6.879752] uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 3
[ 6.879806] uhci_hcd 0000:00:1d.1: irq 17, io base 0x00001820
[ 6.879867] usb usb3: New USB device found, idVendor=1d6b, idProduct=0001
[ 6.879873] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 6.879878] usb usb3: Product: UHCI Host Controller
[ 6.879883] usb usb3: Manufacturer: Linux 2.6.35.3-zgws1 uhci_hcd
[ 6.879888] usb usb3: SerialNumber: 0000:00:1d.1
[ 6.880249] hub 3-0:1.0: USB hub found
[ 6.880260] hub 3-0:1.0: 2 ports detected
[ 6.880652] uhci_hcd 0000:00:1d.2: power state changed by ACPI to D0
[ 6.880917] uhci_hcd 0000:00:1d.2: power state changed by ACPI to D0
[ 6.880932] uhci_hcd 0000:00:1d.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18
[ 6.880944] uhci_hcd 0000:00:1d.2: setting latency timer to 64
[ 6.880951] uhci_hcd 0000:00:1d.2: UHCI Host Controller
[ 6.881023] libata version 3.00 loaded.
[ 6.881116] uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 4
[ 6.881178] uhci_hcd 0000:00:1d.2: irq 18, io base 0x00001840
[ 6.881268] usb usb4: New USB device found, idVendor=1d6b, idProduct=0001
[ 6.881274] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 6.881280] usb usb4: Product: UHCI Host Controller
[ 6.881284] usb usb4: Manufacturer: Linux 2.6.35.3-zgws1 uhci_hcd
[ 6.881289] usb usb4: SerialNumber: 0000:00:1d.2
[ 6.881651] hub 4-0:1.0: USB hub found
[ 6.881661] hub 4-0:1.0: 2 ports detected
[ 6.881806] uhci_hcd 0000:00:1d.3: PCI INT D -> GSI 19 (level, low) -> IRQ 19
[ 6.881818] uhci_hcd 0000:00:1d.3: setting latency timer to 64
[ 6.881831] uhci_hcd 0000:00:1d.3: UHCI Host Controller
[ 6.881978] uhci_hcd 0000:00:1d.3: new USB bus registered, assigned bus number 5
[ 6.882028] uhci_hcd 0000:00:1d.3: irq 19, io base 0x00001860
[ 6.882101] usb usb5: New USB device found, idVendor=1d6b, idProduct=0001
[ 6.882107] usb usb5: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 6.882112] usb usb5: Product: UHCI Host Controller
[ 6.882123] usb usb5: Manufacturer: Linux 2.6.35.3-zgws1 uhci_hcd
[ 6.882127] usb usb5: SerialNumber: 0000:00:1d.3
[ 6.882487] hub 5-0:1.0: USB hub found
[ 6.882497] hub 5-0:1.0: 2 ports detected
[ 6.892735] acpi device:05: registered as cooling_device2
[ 6.893113] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:04/LNXVIDEO:01/input/input4
[ 6.893127] ACPI: Video Device [VID1] (multi-head: yes rom: no post: no)
[ 6.910914] ata_piix 0000:00:1f.1: version 2.13
[ 6.910938] ata_piix 0000:00:1f.1: PCI INT C -> GSI 16 (level, low) -> IRQ 16
[ 6.911005] ata_piix 0000:00:1f.1: setting latency timer to 64
[ 6.917860] scsi0 : ata_piix
[ 6.918154] scsi1 : ata_piix
[ 6.919479] ata1: PATA max UDMA/100 cmd 0x1f0 ctl 0x3f6 bmdma 0x1880 irq 14
[ 6.919486] ata2: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0x1888 irq 15
[ 6.920126] ata2: port disabled. ignoring.
[ 6.969136] e1000e 0000:02:00.0: eth0: (PCI Express:2.5GB/s:Width x1) 00:1a:6b:6a:07:60
[ 6.969144] e1000e 0000:02:00.0: eth0: Intel(R) PRO/1000 Network Connection
[ 6.969287] e1000e 0000:02:00.0: eth0: MAC: 2, PHY: 2, PBA No: 005301-003
[ 7.084852] ata1.00: ATA-7: HTS541080G9SA00, MB4IC60R, max UDMA/100
[ 7.084860] ata1.00: 156301488 sectors, multi 16: LBA48
[ 7.101820] ata1.00: configured for UDMA/100
[ 7.102087] scsi 0:0:0:0: Direct-Access ATA HTS541080G9SA00 MB4I PQ: 0 ANSI: 5
[ 7.112470] ahci 0000:00:1f.2: version 3.0
[ 7.112500] ahci 0000:00:1f.2: PCI INT B -> GSI 16 (level, low) -> IRQ 16
[ 7.112615] ahci 0000:00:1f.2: irq 46 for MSI/MSI-X
[ 7.112710] ahci 0000:00:1f.2: AHCI 0001.0100 32 slots 4 ports 1.5 Gbps 0x1 impl SATA mode
[ 7.112718] ahci 0000:00:1f.2: flags: 64bit ncq pm led clo pio slum part
[ 7.112729] ahci 0000:00:1f.2: setting latency timer to 64
[ 7.112908] scsi2 : ahci
[ 7.113167] scsi3 : ahci
[ 7.113370] scsi4 : ahci
[ 7.113560] scsi5 : ahci
[ 7.113797] ata3: SATA max UDMA/133 abar m1024@0xee404400 port 0xee404500 irq 46
[ 7.113803] ata4: DUMMY
[ 7.113806] ata5: DUMMY
[ 7.113809] ata6: DUMMY
[ 7.120460] sd 0:0:0:0: [sda] 156301488 512-byte logical blocks: (80.0 GB/74.5 GiB)
[ 7.120577] sd 0:0:0:0: [sda] Write Protect is off
[ 7.120584] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[ 7.120633] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 7.121056] sda: sda1
[ 7.150518] sd 0:0:0:0: [sda] Attached SCSI disk
[ 7.432091] ata3: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
[ 7.433439] ata3.00: ACPI cmd ef/02:00:00:00:00:a0 (SET FEATURES) succeeded
[ 7.433448] ata3.00: ACPI cmd f5/00:00:00:00:00:a0 (SECURITY FREEZE LOCK) filtered out
[ 7.433456] ata3.00: ACPI cmd ef/10:03:00:00:00:a0 (SET FEATURES) filtered out
[ 7.434500] ata3.00: ATA-8: Hitachi HTS545050B9A300, PB4OC64G, max UDMA/133
[ 7.434507] ata3.00: 976773168 sectors, multi 16: LBA48 NCQ (depth 31/32), AA
[ 7.436094] ata3.00: ACPI cmd ef/02:00:00:00:00:a0 (SET FEATURES) succeeded
[ 7.436102] ata3.00: ACPI cmd f5/00:00:00:00:00:a0 (SECURITY FREEZE LOCK) filtered out
[ 7.436110] ata3.00: ACPI cmd ef/10:03:00:00:00:a0 (SET FEATURES) filtered out
[ 7.437207] ata3.00: configured for UDMA/133
[ 7.454719] ata3.00: configured for UDMA/133
[ 7.454729] ata3: EH complete
[ 7.454986] scsi 2:0:0:0: Direct-Access ATA Hitachi HTS54505 PB4O PQ: 0 ANSI: 5
[ 7.455442] sd 2:0:0:0: [sdb] 976773168 512-byte logical blocks: (500 GB/465 GiB)
[ 7.455670] sd 2:0:0:0: [sdb] Write Protect is off
[ 7.455677] sd 2:0:0:0: [sdb] Mode Sense: 00 3a 00 00
[ 7.455768] sd 2:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 7.456239] sdb: sdb1
[ 7.480412] sd 2:0:0:0: [sdb] Attached SCSI disk
[ 7.585062] usb 5-1: new full speed USB device using uhci_hcd and address 2
[ 7.755103] usb 5-1: New USB device found, idVendor=0a5c, idProduct=2110
[ 7.755111] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 7.755117] usb 5-1: Product: BCM2045B
[ 7.755121] usb 5-1: Manufacturer: Broadcom Corp
[ 7.790852] [drm] Initialized drm 1.1.0 20060810
[ 7.855680] [drm] radeon kernel modesetting enabled.
[ 7.855863] radeon 0000:01:00.0: power state changed by ACPI to D0
[ 7.855946] radeon 0000:01:00.0: power state changed by ACPI to D0
[ 7.855967] radeon 0000:01:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[ 7.855989] radeon 0000:01:00.0: setting latency timer to 64
[ 7.857936] [drm] initializing kernel modesetting (RV515 0x1002:0x7145).
[ 7.860170] [drm] register mmio base: 0xEE100000
[ 7.860175] [drm] register mmio size: 65536
[ 7.860549] ATOM BIOS: M54CSP/M52CSP
[ 7.860606] [drm] Generation 2 PCI interface, using max accessible memory
[ 7.860619] radeon 0000:01:00.0: VRAM: 128M 0x00000000 - 0x07FFFFFF (128M used)
[ 7.860626] radeon 0000:01:00.0: GTT: 512M 0x08000000 - 0x27FFFFFF
[ 7.860922] radeon 0000:01:00.0: irq 47 for MSI/MSI-X
[ 7.860948] [drm] radeon: using MSI.
[ 7.861057] [drm] radeon: irq initialized.
[ 7.863061] [drm] Detected VRAM RAM=128M, BAR=128M
[ 7.863067] [drm] RAM width 128bits DDR
[ 7.863211] [TTM] Zone kernel: Available graphics memory: 439456 kiB.
[ 7.863217] [TTM] Zone highmem: Available graphics memory: 1557060 kiB.
[ 7.863222] [TTM] Initializing pool allocator.
[ 7.863260] [drm] radeon: 128M of VRAM memory ready
[ 7.863264] [drm] radeon: 512M of GTT memory ready.
[ 7.863304] [drm] GART: num cpu pages 131072, num gpu pages 131072
[ 7.865023] [drm] radeon: 1 quad pipes, 1 z pipes initialized.
[ 7.867491] [drm] PCIE GART of 512M enabled (table at 0x00040000).
[ 7.867576] [drm] Loading R500 Microcode
[ 7.873408] [drm] radeon: ring at 0x0000000008000000
[ 7.873460] [drm] ring test succeeded in 3 usecs
[ 7.873789] [drm] radeon: ib pool ready.
[ 7.873944] [drm] ib test succeeded in 0 usecs
[ 7.873992] [drm] Unknown TV standard; defaulting to NTSC
[ 7.874293] [drm] Radeon Display Connectors
[ 7.874297] [drm] Connector 0:
[ 7.874301] [drm] VGA
[ 7.874306] [drm] DDC: 0x7e40 0x7e40 0x7e44 0x7e44 0x7e48 0x7e48 0x7e4c 0x7e4c
[ 7.874311] [drm] Encoders:
[ 7.874314] [drm] CRT1: INTERNAL_KLDSCP_DAC1
[ 7.874318] [drm] Connector 1:
[ 7.874321] [drm] LVDS
[ 7.874327] [drm] DDC: 0x7e60 0x7e60 0x7e64 0x7e64 0x7e68 0x7e68 0x7e6c 0x7e6c
[ 7.874331] [drm] Encoders:
[ 7.874334] [drm] LCD1: INTERNAL_LVTM1
[ 7.874338] [drm] Connector 2:
[ 7.874341] [drm] DVI-I
[ 7.874344] [drm] HPD1
[ 7.874349] [drm] DDC: 0x7e50 0x7e50 0x7e54 0x7e54 0x7e58 0x7e58 0x7e5c 0x7e5c
[ 7.874354] [drm] Encoders:
[ 7.874357] [drm] DFP1: INTERNAL_KLDSCP_TMDS1
[ 7.946407] [drm] radeon: power management initialized
[ 7.997113] usb 5-2: new full speed USB device using uhci_hcd and address 3
[ 8.175138] usb 5-2: New USB device found, idVendor=0483, idProduct=2016
[ 8.175145] usb 5-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 8.175151] usb 5-2: Product: Biometric Coprocessor
[ 8.175155] usb 5-2: Manufacturer: STMicroelectronics
[ 8.331765] [drm] fb mappable at 0xD80C0000
[ 8.331771] [drm] vram apper at 0xD8000000
[ 8.331775] [drm] size 7258112
[ 8.331778] [drm] fb depth is 24
[ 8.331782] [drm] pitch is 6912
[ 8.429339] Console: switching to colour frame buffer device 210x65
[ 8.445192] fb0: radeondrmfb frame buffer device
[ 8.445197] drm: registered panic notifier
[ 8.445203] Slow work thread pool: Starting up
[ 8.445400] Slow work thread pool: Ready
[ 8.445411] [drm] Initialized radeon 2.5.0 20080528 for 0000:01:00.0 on minor 0
[ 10.473092] device-mapper: ioctl: 4.17.0-ioctl (2010-03-05) initialised: dm-devel@redhat.com
[ 11.565764] md: raid1 personality registered for level 1
[ 11.637106] raid6: int32x1 342 MB/s
[ 11.704077] raid6: int32x2 392 MB/s
[ 11.772140] raid6: int32x4 313 MB/s
[ 11.840083] raid6: int32x8 236 MB/s
[ 11.908044] raid6: mmxx1 1310 MB/s
[ 11.976036] raid6: mmxx2 1456 MB/s
[ 12.044023] raid6: sse1x1 883 MB/s
[ 12.112016] raid6: sse1x2 1069 MB/s
[ 12.180037] raid6: sse2x1 1637 MB/s
[ 12.248026] raid6: sse2x2 1933 MB/s
[ 12.248031] raid6: using algorithm sse2x2 (1933 MB/s)
[ 12.250448] xor: automatically using best checksumming function: pIII_sse
[ 12.268012] pIII_sse : 3321.000 MB/sec
[ 12.268018] xor: using function: pIII_sse (3321.000 MB/sec)
[ 12.277791] md: raid6 personality registered for level 6
[ 12.277797] md: raid5 personality registered for level 5
[ 12.277802] md: raid4 personality registered for level 4
[ 15.340383] PM: Starting manual resume from disk
[ 15.366451] EXT3-fs: barriers not enabled
[ 15.374907] EXT3-fs (dm-12): mounted filesystem with writeback data mode
[ 15.375253] kjournald starting. Commit interval 5 seconds
[ 17.783591] udev: starting version 161
[ 18.152924] intel_rng: FWH not detected
[ 18.169437] i801_smbus 0000:00:1f.3: PCI INT A -> GSI 23 (level, low) -> IRQ 23
[ 18.171617] Non-volatile memory driver v1.3
[ 18.246631] cfg80211: Calling CRDA to update world regulatory domain
[ 18.320418] rtc_cmos 00:07: RTC can wake from S4
[ 18.320600] rtc_cmos 00:07: rtc core: registered rtc_cmos as rtc0
[ 18.320647] rtc0: alarms up to one month, y3k, 114 bytes nvram, hpet irqs
[ 18.351034] yenta_cardbus 0000:15:00.0: CardBus bridge found [17aa:2012]
[ 18.477938] yenta_cardbus 0000:15:00.0: ISA IRQ mask 0x0cf8, PCI irq 16
[ 18.477947] yenta_cardbus 0000:15:00.0: Socket status: 30000007
[ 18.477959] yenta_cardbus 0000:15:00.0: pcmcia: parent PCI bridge window: [io 0xa000-0xdfff]
[ 18.477967] pcmcia_socket pcmcia_socket0: cs: IO port probe 0xa000-0xdfff: excluding 0xa000-0xa0ff 0xa400-0xa4ff
[ 18.489211] Bluetooth: Core ver 2.15
[ 18.489250] NET: Registered protocol family 31
[ 18.489254] Bluetooth: HCI device and connection manager initialized
[ 18.489260] Bluetooth: HCI socket layer initialized
[ 18.519523]
[ 18.519532] yenta_cardbus 0000:15:00.0: pcmcia: parent PCI bridge window: [mem 0xe4300000-0xe7ffffff]
[ 18.519540] pcmcia_socket pcmcia_socket0: cs: memory probe 0xe4300000-0xe7ffffff: excluding 0xe4300000-0xe46cffff
[ 18.519576] yenta_cardbus 0000:15:00.0: pcmcia: parent PCI bridge window: [mem 0xe0000000-0xe3ffffff 64bit pref]
[ 18.519583] pcmcia_socket pcmcia_socket0: cs: memory probe 0xe0000000-0xe3ffffff: excluding 0xe0000000-0xe3ffffff
[ 18.564431] Bluetooth: Generic Bluetooth USB driver ver 0.6
[ 18.593117] usbcore: registered new interface driver btusb
[ 18.876574] iwl3945: Intel(R) PRO/Wireless 3945ABG/BG Network Connection driver for Linux, in-tree:s
[ 18.876581] iwl3945: Copyright(c) 2003-2010 Intel Corporation
[ 18.876714] iwl3945 0000:03:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
[ 18.876733] iwl3945 0000:03:00.0: setting latency timer to 64
[ 18.891135] pcmcia_socket pcmcia_socket0: cs: IO port probe 0x100-0x4ff: excluding 0x170-0x177 0x1f0-0x1f7 0x370-0x377 0x3c0-0x3df 0x3f0-0x3f7 0x4d0-0x4d7
[ 18.895704] pcmcia_socket pcmcia_socket0: cs: IO port probe 0x800-0x8ff: excluding 0x800-0x80f
[ 18.898073] pcmcia_socket pcmcia_socket0: cs: IO port probe 0xc00-0xcff: excluding 0xcf8-0xcff
[ 18.900120] pcmcia_socket pcmcia_socket0: cs: memory probe 0x0c0000-0x0fffff: excluding 0xc0000-0xcffff 0xdc000-0xfffff
[ 18.900246] pcmcia_socket pcmcia_socket0: cs: memory probe 0xa0000000-0xa0ffffff: excluding 0xa0000000-0xa0ffffff
[ 18.900368] pcmcia_socket pcmcia_socket0: cs: memory probe 0x60000000-0x60ffffff: excluding 0x60000000-0x60ffffff
[ 18.900496] pcmcia_socket pcmcia_socket0: cs: IO port probe 0xa00-0xaff: clean.
[ 18.946627] iwl3945 0000:03:00.0: Tunable channels: 13 802.11bg, 23 802.11a channels
[ 18.946635] iwl3945 0000:03:00.0: Detected Intel Wireless WiFi Link 3945ABG
[ 18.946798] iwl3945 0000:03:00.0: irq 48 for MSI/MSI-X
[ 19.017088] thinkpad_acpi: ThinkPad ACPI Extras v0.24
[ 19.017094] thinkpad_acpi: http://ibm-acpi.sf.net/
[ 19.017099] thinkpad_acpi: ThinkPad BIOS 7IET27WW (1.08 ), EC 79HT50WW-1.07
[ 19.017104] thinkpad_acpi: Lenovo ThinkPad T60, model 87424SG
[ 19.017109] thinkpad_acpi: WARNING: Outdated ThinkPad BIOS/EC firmware
[ 19.017113] thinkpad_acpi: WARNING: This firmware may be missing critical bug fixes and/or important features
[ 19.019448] thinkpad_acpi: detected a 8-level brightness capable ThinkPad
[ 19.019828] thinkpad_acpi: radio switch found; radios are enabled
[ 19.019857] thinkpad_acpi: This ThinkPad has standard ACPI backlight brightness control, supported by the ACPI video driver
[ 19.019863] thinkpad_acpi: Disabling thinkpad-acpi brightness events by default...
[ 19.029712] thinkpad_acpi: rfkill switch tpacpi_bluetooth_sw: radio is unblocked
[ 19.030340] Registered led device: tpacpi::thinklight
[ 19.030844] Registered led device: tpacpi::power
[ 19.031008] Registered led device: tpacpi::standby
[ 19.031485] Registered led device: tpacpi::thinkvantage
[ 19.033342] phy0: Selected rate control algorithm 'iwl-3945-rs'
[ 19.034176] thinkpad_acpi: Standard ACPI backlight interface available, not loading native one.
[ 19.036324] thinkpad_acpi: Console audio control enabled, mode: monitor (read only)
[ 19.039736] Synaptics Touchpad, model: 1, fw: 6.2, id: 0x81a0b1, caps: 0xa04793/0x300000/0x0
[ 19.039744] serio: Synaptics pass-through port at isa0060/serio1/input0
[ 19.054150] input: ThinkPad Extra Buttons as /devices/platform/thinkpad_acpi/input/input5
[ 19.086649] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input6
[ 19.159271] HDA Intel 0000:00:1b.0: PCI INT B -> GSI 17 (level, low) -> IRQ 17
[ 19.159281] hda_intel: probe_mask set to 0x1 for device 17aa:2010
[ 19.159385] HDA Intel 0000:00:1b.0: irq 49 for MSI/MSI-X
[ 19.159443] HDA Intel 0000:00:1b.0: setting latency timer to 64
[ 19.237188] input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input7
[ 20.129173] EXT3-fs (dm-12): using internal journal
[ 24.800507] IBM TrackPoint firmware: 0x0e, buttons: 3/3
[ 25.033225] input: TPPS/2 IBM TrackPoint as /devices/platform/i8042/serio1/serio2/input/input8
[ 30.181486] coretemp coretemp.0: TjMax is assumed as 100 C!
[ 30.181759] coretemp coretemp.1: TjMax is assumed as 100 C!
[ 31.836619] Adding 3145208k swap on /dev/mapper/swap0. Priority:-1 extents:1 across:3145208k
[ 321.367151] EXT3-fs: barriers not enabled
[ 321.376517] kjournald starting. Commit interval 5 seconds
[ 321.393057] EXT3-fs (dm-14): using internal journal
[ 321.393069] EXT3-fs (dm-14): mounted filesystem with writeback data mode
[ 321.419083] EXT3-fs: barriers not enabled
[ 321.435435] kjournald starting. Commit interval 5 seconds
[ 321.460192] EXT3-fs (dm-17): using internal journal
[ 321.460204] EXT3-fs (dm-17): mounted filesystem with writeback data mode
[ 321.524249] EXT3-fs: barriers not enabled
[ 321.543665] kjournald starting. Commit interval 5 seconds
[ 321.548233] EXT3-fs (dm-15): using internal journal
[ 321.548244] EXT3-fs (dm-15): mounted filesystem with writeback data mode
[ 321.599109] EXT3-fs: barriers not enabled
[ 321.607378] kjournald starting. Commit interval 5 seconds
[ 321.616163] EXT3-fs (dm-16): using internal journal
[ 321.616174] EXT3-fs (dm-16): mounted filesystem with writeback data mode
[ 321.663580] EXT3-fs: barriers not enabled
[ 321.681868] kjournald starting. Commit interval 5 seconds
[ 321.682267] EXT3-fs (dm-18): using internal journal
[ 321.682278] EXT3-fs (dm-18): mounted filesystem with writeback data mode
[ 321.735516] EXT3-fs: barriers not enabled
[ 321.740345] kjournald starting. Commit interval 5 seconds
[ 321.744142] EXT3-fs (dm-20): using internal journal
[ 321.744152] EXT3-fs (dm-20): mounted filesystem with writeback data mode
[ 321.797878] EXT3-fs: barriers not enabled
[ 321.815500] kjournald starting. Commit interval 5 seconds
[ 321.856253] EXT3-fs (dm-19): using internal journal
[ 321.856266] EXT3-fs (dm-19): mounted filesystem with writeback data mode
[ 327.426517] NET: Registered protocol family 10
[ 327.427443] lo: Disabled Privacy Extensions
[ 327.838732] Bridge firewalling registered
[ 329.163680] 802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com>
[ 329.163687] All bugs added by David S. Miller <davem@redhat.com>
[ 330.741567] e1000e 0000:02:00.0: irq 45 for MSI/MSI-X
[ 330.797308] e1000e 0000:02:00.0: irq 45 for MSI/MSI-X
[ 330.797980] ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 331.444515] iwl3945 0000:03:00.0: loaded firmware version 15.32.2.9
[ 331.530618] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 333.845719] vboxdrv: Trying to deactivate the NMI watchdog permanently...
[ 333.845728] vboxdrv: Warning: 2.6.31+ kernel detected. Most likely the hardware performance
[ 333.845731] vboxdrv: counter framework which can generate NMIs is active. You have to prevent
[ 333.845734] vboxdrv: the usage of hardware performance counters by
[ 333.845736] vboxdrv: echo 2 > /proc/sys/kernel/perf_counter_paranoid
[ 333.845744] vboxdrv: Found 2 processor cores.
[ 333.845851] vboxdrv: fAsync=1 offMin=0xa2b67 offMax=0xa2b67
[ 333.845951] vboxdrv: TSC mode is 'asynchronous', kernel timer mode is 'normal'.
[ 333.845956] vboxdrv: Successfully loaded version 3.2.8_OSE (interface 0x00140001).
[ 335.826167] ip_tables: (C) 2000-2006 Netfilter Core Team
[ 335.921665] nf_conntrack version 0.5.0 (16384 buckets, 65536 max)
[ 335.921864] CONFIG_NF_CT_ACCT is deprecated and will be removed soon. Please use
[ 335.921869] nf_conntrack.acct=1 kernel parameter, acct=1 nf_conntrack module option or
[ 335.921874] sysctl net.netfilter.nf_conntrack_acct=1 to enable it.
[ 338.833025] br0: no IPv6 routers present
[ 339.044693] Bluetooth: L2CAP ver 2.14
[ 339.044698] Bluetooth: L2CAP socket layer initialized
[ 339.730088] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 339.730095] Bluetooth: BNEP filters: protocol multicast
[ 339.931941] Bluetooth: SCO (Voice Link) ver 0.6
[ 339.931947] Bluetooth: SCO socket layer initialized
[ 340.499754] Bluetooth: RFCOMM TTY layer initialized
[ 340.499765] Bluetooth: RFCOMM socket layer initialized
[ 340.499769] Bluetooth: RFCOMM ver 1.11
[ 341.004158] lp: driver loaded but no devices found
[ 341.169361] ppdev: user-space parallel port driver
[ 343.773076] device eth0 entered promiscuous mode
[ 356.000029] usb 1-6: new high speed USB device using ehci_hcd and address 4
[ 356.129554] usb 1-6: New USB device found, idVendor=04b3, idProduct=4485
[ 356.129558] usb 1-6: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 356.129848] hub 1-6:1.0: USB hub found
[ 356.129922] hub 1-6:1.0: 4 ports detected
[ 356.401685] usb 1-6.1: new low speed USB device using ehci_hcd and address 5
[ 356.476017] Monitor-Mwait will be used to enter C-3 state
[ 356.517315] usb 1-6.1: New USB device found, idVendor=1bcf, idProduct=0007
[ 356.517319] usb 1-6.1: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[ 356.517321] usb 1-6.1: Product: USB Optical Mouse
[ 356.566607] usbcore: registered new interface driver hiddev
[ 356.569998] input: USB Optical Mouse as /devices/pci0000:00/0000:00:1d.7/usb1/1-6/1-6.1/1-6.1:1.0/input/input9
[ 356.570458] generic-usb 0003:1BCF:0007.0001: input,hiddev96,hidraw0: USB HID v1.10 Mouse [USB Optical Mouse] on usb-0000:00:1d.7-6.1/input0
[ 356.570675] usbcore: registered new interface driver usbhid
[ 356.570678] usbhid: USB HID core driver
[ 357.408983] CPUFREQ: Per core ondemand sysfs interface is deprecated - ignore_nice_load
[ 359.597108] usb 1-6.3: new high speed USB device using ehci_hcd and address 6
[ 359.693085] usb 1-6.3: New USB device found, idVendor=13fd, idProduct=1340
[ 359.693089] usb 1-6.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 359.693092] usb 1-6.3: Product: External
[ 359.693094] usb 1-6.3: Manufacturer: Generic
[ 359.693096] usb 1-6.3: SerialNumber: 9QG1Z559
[ 359.784921] Initializing USB Mass Storage driver...
[ 359.801850] scsi6 : usb-storage 1-6.3:1.0
[ 359.802034] usbcore: registered new interface driver usb-storage
[ 359.802037] USB Mass Storage support registered.
[ 360.812627] scsi 6:0:0:0: Direct-Access Generic External 1.04 PQ: 0 ANSI: 4
[ 360.814600] sd 6:0:0:0: [sdc] 976773168 512-byte logical blocks: (500 GB/465 GiB)
[ 360.815345] sd 6:0:0:0: [sdc] Write Protect is off
[ 360.815349] sd 6:0:0:0: [sdc] Mode Sense: 21 00 00 00
[ 360.815352] sd 6:0:0:0: [sdc] Assuming drive cache: write through
[ 360.816727] sd 6:0:0:0: [sdc] Assuming drive cache: write through
[ 360.816734] sdc: sdc1 sdc2 sdc3
[ 360.837748] sd 6:0:0:0: [sdc] Assuming drive cache: write through
[ 360.837752] sd 6:0:0:0: [sdc] Attached SCSI disk
[ 364.085084] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
[ 364.086101] input: Logitech Elite Keyboard as /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/bluetooth/hci0/hci0:11/input10
[ 364.086229] generic-bluetooth 0005:046D:B301.0002: input,hidraw1: BLUETOOTH HID v23.02 Keyboard [Logitech Elite Keyboard] on 00:19:7E:F6:0F:2D
[ 371.961530] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 372.538486] device eth0 left promiscuous mode
[ 372.622183] e1000e 0000:02:00.0: irq 45 for MSI/MSI-X
[ 372.677242] e1000e 0000:02:00.0: irq 45 for MSI/MSI-X
[ 372.677773] ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 372.879954] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 377.850201] wlan0: authenticate with 00:24:fe:01:97:12 (try 1)
[ 377.853703] wlan0: authenticated
[ 377.854219] wlan0: associate with 00:24:fe:01:97:12 (try 1)
[ 377.874032] wlan0: RX AssocResp from 00:24:fe:01:97:12 (capab=0x431 status=0 aid=1)
[ 377.874035] wlan0: associated
[ 377.876283] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[ 384.269049] CE: hpet increased min_delta_ns to 7500 nsec
[ 387.936024] wlan0: no IPv6 routers present
[ 412.458666] input: Logitech MX900 Mouse as /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/bluetooth/hci0/hci0:12/input11
[ 412.458793] generic-bluetooth 0005:046D:B001.0003: input,hidraw2: BLUETOOTH HID v22.00 Mouse [Logitech MX900 Mouse] on 00:19:7E:F6:0F:2D
[ 415.386604] tun: Universal TUN/TAP device driver, 1.6
[ 415.386607] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
[ 415.387661] tun0: Disabled Privacy Extensions
[ 448.565074] wlan0: deauthenticating from 00:24:fe:01:97:12 by local choice (reason=3)
[ 448.611692] cfg80211: Calling CRDA to update world regulatory domain
[ 448.704992] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 448.952477] e1000e 0000:02:00.0: irq 45 for MSI/MSI-X
[ 449.008212] e1000e 0000:02:00.0: irq 45 for MSI/MSI-X
[ 449.008883] ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 449.244497] e1000e 0000:02:00.0: irq 45 for MSI/MSI-X
[ 449.300213] e1000e 0000:02:00.0: irq 45 for MSI/MSI-X
[ 449.300899] ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 512.719141] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 512.893054] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 513.145602] e1000e 0000:02:00.0: irq 45 for MSI/MSI-X
[ 513.201263] e1000e 0000:02:00.0: irq 45 for MSI/MSI-X
[ 513.201930] ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 516.041691] CE: hpet increased min_delta_ns to 11250 nsec
[ 517.785033] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 518.032489] e1000e 0000:02:00.0: irq 45 for MSI/MSI-X
[ 518.089220] e1000e 0000:02:00.0: irq 45 for MSI/MSI-X
[ 518.089925] ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 518.276821] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 525.979923] wlan0: authenticate with 00:24:fe:01:97:12 (try 1)
[ 525.983876] wlan0: authenticated
[ 525.983914] wlan0: associate with 00:24:fe:01:97:12 (try 1)
[ 525.986924] wlan0: RX AssocResp from 00:24:fe:01:97:12 (capab=0x431 status=0 aid=1)
[ 525.986930] wlan0: associated
[ 525.988635] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[ 536.388020] wlan0: no IPv6 routers present
[ 678.841587] CE: hpet increased min_delta_ns to 16875 nsec
[ 712.538091] usb 1-6: USB disconnect, address 4
[ 712.538098] usb 1-6.1: USB disconnect, address 5
[ 712.560502] usb 1-6.3: USB disconnect, address 6
[ 724.069150] wlan0: deauthenticating from 00:24:fe:01:97:12 by local choice (reason=3)
[ 724.224797] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 724.224816] cfg80211: Calling CRDA to update world regulatory domain
[ 724.456592] e1000e 0000:02:00.0: irq 45 for MSI/MSI-X
[ 724.513342] e1000e 0000:02:00.0: irq 45 for MSI/MSI-X
[ 724.514012] ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 724.737607] e1000e 0000:02:00.0: irq 45 for MSI/MSI-X
[ 724.793247] e1000e 0000:02:00.0: irq 45 for MSI/MSI-X
[ 724.793783] ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 788.790038] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 788.953160] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 789.204655] e1000e 0000:02:00.0: irq 45 for MSI/MSI-X
[ 789.261316] e1000e 0000:02:00.0: irq 45 for MSI/MSI-X
[ 789.261998] ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 907.217156] usb 1-6: new high speed USB device using ehci_hcd and address 7
[ 907.348507] usb 1-6: New USB device found, idVendor=04b3, idProduct=4485
[ 907.348515] usb 1-6: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 907.349162] hub 1-6:1.0: USB hub found
[ 907.349342] hub 1-6:1.0: 4 ports detected
[ 907.620215] usb 1-6.1: new low speed USB device using ehci_hcd and address 8
[ 907.716957] usb 1-6.1: New USB device found, idVendor=1bcf, idProduct=0007
[ 907.716961] usb 1-6.1: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[ 907.716964] usb 1-6.1: Product: USB Optical Mouse
[ 907.721160] input: USB Optical Mouse as /devices/pci0000:00/0000:00:1d.7/usb1/1-6/1-6.1/1-6.1:1.0/input/input12
[ 907.721328] generic-usb 0003:1BCF:0007.0004: input,hiddev96,hidraw0: USB HID v1.10 Mouse [USB Optical Mouse] on usb-0000:00:1d.7-6.1/input0
[ 910.964131] usb 1-6.3: new high speed USB device using ehci_hcd and address 9
[ 911.057374] usb 1-6.3: New USB device found, idVendor=13fd, idProduct=1340
[ 911.057378] usb 1-6.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 911.057381] usb 1-6.3: Product: External
[ 911.057383] usb 1-6.3: Manufacturer: Generic
[ 911.057385] usb 1-6.3: SerialNumber: 9QG1Z559
[ 911.059506] scsi7 : usb-storage 1-6.3:1.0
[ 912.058328] scsi 7:0:0:0: Direct-Access Generic External 1.04 PQ: 0 ANSI: 4
[ 912.061133] sd 7:0:0:0: [sdc] 976773168 512-byte logical blocks: (500 GB/465 GiB)
[ 912.062537] sd 7:0:0:0: [sdc] Write Protect is off
[ 912.062540] sd 7:0:0:0: [sdc] Mode Sense: 21 00 00 00
[ 912.062543] sd 7:0:0:0: [sdc] Assuming drive cache: write through
[ 912.066724] sd 7:0:0:0: [sdc] Assuming drive cache: write through
[ 912.066732] sdc: sdc1 sdc2 sdc3
[ 912.082246] sd 7:0:0:0: [sdc] Assuming drive cache: write through
[ 912.082251] sd 7:0:0:0: [sdc] Attached SCSI disk
[ 921.728801] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 921.972508] e1000e 0000:02:00.0: irq 45 for MSI/MSI-X
[ 922.028259] e1000e 0000:02:00.0: irq 45 for MSI/MSI-X
[ 922.028914] ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 922.253501] e1000e 0000:02:00.0: irq 45 for MSI/MSI-X
[ 922.308255] e1000e 0000:02:00.0: irq 45 for MSI/MSI-X
[ 922.308924] ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 985.765192] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 986.012471] e1000e 0000:02:00.0: irq 45 for MSI/MSI-X
[ 986.065649] e1000e 0000:02:00.0: irq 45 for MSI/MSI-X
[ 986.066209] ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 994.748266] e1000e 0000:02:00.0: PCI INT A disabled
[ 998.921330] e1000e: Intel(R) PRO/1000 Network Driver - 1.0.2-k4
[ 998.921333] e1000e: Copyright (c) 1999 - 2009 Intel Corporation.
[ 998.921442] e1000e 0000:02:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[ 998.921469] e1000e 0000:02:00.0: setting latency timer to 64
[ 998.921746] e1000e 0000:02:00.0: irq 45 for MSI/MSI-X
[ 998.921923] e1000e 0000:02:00.0: Disabling ASPM L0s
[ 999.036845] e1000e 0000:02:00.0: eth0: (PCI Express:2.5GB/s:Width x1) 00:1a:6b:6a:07:60
[ 999.036849] e1000e 0000:02:00.0: eth0: Intel(R) PRO/1000 Network Connection
[ 999.036988] e1000e 0000:02:00.0: eth0: MAC: 2, PHY: 2, PBA No: 005301-003
[ 1002.765033] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 1002.897510] e1000e 0000:02:00.0: irq 45 for MSI/MSI-X
[ 1002.952256] e1000e 0000:02:00.0: irq 45 for MSI/MSI-X
[ 1002.952921] ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 1003.144462] e1000e 0000:02:00.0: irq 45 for MSI/MSI-X
[ 1003.200238] e1000e 0000:02:00.0: irq 45 for MSI/MSI-X
[ 1003.201139] ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 1003.433530] e1000e 0000:02:00.0: irq 45 for MSI/MSI-X
[ 1003.488266] e1000e 0000:02:00.0: irq 45 for MSI/MSI-X
[ 1003.488933] ADDRCONF(NETDEV_UP): eth0: link is not ready
--
-----------------------------------------------------------------------------
Marc Haber | "I don't trust Computers. They | Mailadresse im Header
Mannheim, Germany | lose things." Winona Ryder | Fon: *49 621 72739834
Nordisch by Nature | How to make an American Quilt | Fax: *49 3221 2323190
^ permalink raw reply
* Re: [PATCH] TCP_FAILFAST: a new socket option to timeout/abort a connection quicker
From: Hagen Paul Pfeifer @ 2010-08-24 9:10 UTC (permalink / raw)
To: Arnd Hannemann; +Cc: Eric Dumazet, H.K. Jerry Chu, ilpo.jarvinen, davem, netdev
In-Reply-To: <4C737D15.5060400@nets.rwth-aachen.de>
On Tue, 24 Aug 2010 10:04:37 +0200, Arnd Hannemann wrote:
> Why not call it TCP_USERTIMEOUT?
> Later you can also send it via the TCP user timeout option... (RFC5482)
> Hmm... is the ms granularity really needed? Does it make sense to abort
> a connection below a second?
I am working on a patch for UTO, the lion share is already implemented. As
I can see this patch introduce a upper limit (max) where UTO on the other
hand provides a lower limit (min). Therefore I am not sure if we should
call this option TCP_USERTIMEOUT.
Cheers, Hagen
^ permalink raw reply
* [PATCH RFC] net: save RX queue number in sock for dev_pick_tx() use
From: Changli Gao @ 2010-08-24 9:01 UTC (permalink / raw)
To: David S. Miller
Cc: Alexey Kuznetsov, Pekka Savola (ipv6), James Morris,
Hideaki YOSHIFUJI, Patrick McHardy, netdev, Changli Gao
For the packets sent out from a local server socket, we can use the queue
from which the packets from the client socket are received.
It may help on a TCP or UDP server. Because I don't have a multiqueue NIC,
I don't even test it.
Signed-off-by: Changli Gao <xiaosuo@gmail.com>
---
include/net/sock.h | 18 ++++++++++++++++++
net/core/dev.c | 25 ++++++++++++++++++-------
net/ipv4/tcp_ipv4.c | 5 ++++-
net/ipv4/udp.c | 4 +++-
4 files changed, 43 insertions(+), 9 deletions(-)
diff --git a/include/net/sock.h b/include/net/sock.h
index 100e43b..4e5f2f4 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -1231,6 +1231,24 @@ static inline int sk_tx_queue_get(const struct sock *sk)
return sk ? sk->sk_tx_queue_mapping : -1;
}
+static inline void sk_rx_queue_save(struct sock *sk, struct sk_buff *skb)
+{
+ struct dst_entry *dst;
+ int rxqueue;
+
+ if (!skb_rx_queue_recorded(skb))
+ return;
+ rcu_read_lock();
+ dst = rcu_dereference_check(sk->sk_dst_cache, 1);
+ if (dst && !dst->dev->netdev_ops->ndo_select_queue &&
+ dst->dev == skb->dev) {
+ rxqueue = skb_get_rx_queue(skb);
+ if (rxqueue != sk_tx_queue_get(sk))
+ sk_tx_queue_set(sk, rxqueue);
+ }
+ rcu_read_unlock();
+}
+
static inline void sk_set_socket(struct sock *sk, struct socket *sock)
{
sk_tx_queue_clear(sk);
diff --git a/net/core/dev.c b/net/core/dev.c
index 859e30f..8dc1904 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2054,6 +2054,18 @@ static inline u16 dev_cap_txqueue(struct net_device *dev, u16 queue_index)
return queue_index;
}
+static inline void dev_save_tx_queue(struct sk_buff *skb, struct sock *sk,
+ int queue_index)
+{
+ if (sk) {
+ struct dst_entry *dst;
+
+ dst = rcu_dereference_check(sk->sk_dst_cache, 1);
+ if (dst && skb_dst(skb) == dst)
+ sk_tx_queue_set(sk, queue_index);
+ }
+}
+
static struct netdev_queue *dev_pick_tx(struct net_device *dev,
struct sk_buff *skb)
{
@@ -2071,14 +2083,13 @@ static struct netdev_queue *dev_pick_tx(struct net_device *dev,
queue_index = 0;
if (dev->real_num_tx_queues > 1)
queue_index = skb_tx_hash(dev, skb);
-
- if (sk) {
- struct dst_entry *dst = rcu_dereference_check(sk->sk_dst_cache, 1);
-
- if (dst && skb_dst(skb) == dst)
- sk_tx_queue_set(sk, queue_index);
- }
+ dev_save_tx_queue(skb, sk, queue_index);
}
+ } else if (unlikely(queue_index >= dev->real_num_tx_queues)) {
+ do {
+ queue_index -= dev->real_num_tx_queues;
+ } while (unlikely(queue_index >= dev->real_num_tx_queues));
+ dev_save_tx_queue(skb, sk, queue_index);
}
skb_set_queue_mapping(skb, queue_index);
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
index 0207662..b1c6d3c 100644
--- a/net/ipv4/tcp_ipv4.c
+++ b/net/ipv4/tcp_ipv4.c
@@ -1560,6 +1560,7 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb)
if (sk->sk_state == TCP_ESTABLISHED) { /* Fast path */
sock_rps_save_rxhash(sk, skb->rxhash);
+ sk_rx_queue_save(sk, skb);
TCP_CHECK_TIMER(sk);
if (tcp_rcv_established(sk, skb, tcp_hdr(skb), skb->len)) {
rsk = sk;
@@ -1584,8 +1585,10 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb)
}
return 0;
}
- } else
+ } else {
sock_rps_save_rxhash(sk, skb->rxhash);
+ sk_rx_queue_save(sk, skb);
+ }
TCP_CHECK_TIMER(sk);
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
index 86e757e..e59f3db 100644
--- a/net/ipv4/udp.c
+++ b/net/ipv4/udp.c
@@ -1264,8 +1264,10 @@ static int __udp_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
{
int rc;
- if (inet_sk(sk)->inet_daddr)
+ if (inet_sk(sk)->inet_daddr) {
sock_rps_save_rxhash(sk, skb->rxhash);
+ sk_rx_queue_save(sk, skb);
+ }
rc = ip_queue_rcv_skb(sk, skb);
if (rc < 0) {
^ permalink raw reply related
* Re: tcp_shift_skb_data uses wrong mss in non-gso case?
From: Ilpo Järvinen @ 2010-08-24 8:59 UTC (permalink / raw)
To: Jesse Brandeburg
Cc: Robert Evans, Herbert Xu, Eric Dumazet, netdev@vger.kernel.org
In-Reply-To: <AANLkTi=ygaa_fV4SwaLY2gP9H+Nn54QdXcGXkfGukSCD@mail.gmail.com>
[-- Attachment #1: Type: TEXT/PLAIN, Size: 2951 bytes --]
On Mon, 23 Aug 2010, Jesse Brandeburg wrote:
> On Tue, Aug 17, 2010 at 3:35 PM, Robert Evans
> <robert.evans@nasdaqomx.com> wrote:
> > Hello all,
> >
> > In reading through the latest SACK code introduced by 832d11c, I have noticed
> > that for the in_sack case tcp_shift_skb will take mss = tcp_skb_seglen(skb).
> > This seems to be wrong since the queue might contain small packets (f.e.
> > TCP_NODELAY). If the collapse succeeds, the resulting skb will have an
> > arbitrarily small gso_size equal to the original skb length.
>
> yeah, gso_size really should never be == skb->length, because then it
> implies you're offloading a frame to be segmented with no segmentable
> data.
What makes you think we'd get such segments? Point here is verify that the
segments to be combined into a single skb share segment size, small or
large doesn't make any difference in that respect as both were counted as
a packet (or pcount worth of packets) w.r.t. cwnd consumption.
> > 8ed88d4:net/ipv4/tcp_input.c
> > 1506 in_sack = !after(start_seq, TCP_SKB_CB(skb)->seq) &&
> > 1507 !before(end_seq, TCP_SKB_CB(skb)->end_seq);
> > 1508
> > 1509 if (in_sack) {
> > 1510 len = skb->len;
> > 1511 pcount = tcp_skb_pcount(skb);
> > 1512 mss = tcp_skb_seglen(skb); /* possibly wrong? */
> > 1513
> > 1514 /* TODO: Fix DSACKs to not fragment already SACKed and w
> > 1514 e can
> > 1515 * drop this restriction as unnecessary
> > 1516 */
> > 1517 if (mss != tcp_skb_seglen(prev))
> > 1518 goto fallback;
> > 1519 } else {
> >
> > This ends up being troublesome if the segment is later retransmitted and the
> > device driver has trouble with very small gso_size (e1000e seems to be an
> > example).
>
> I bet lots of other drivers will have issue with this too.
>
> > Is the small gso_size the correct and/or desired behavior? Or am I missing
> > something else that prevents this from being a problem?
>
> I believe that this is invalid for the stack to do, Ilpo, Herbert?
> what do you think?
The point of this code is to work with already SACKed segments (or to
become SACKed from the current ACK), only TCP code is interested in them
anymore. They should not be sent again to wire unless SACK reneging occurs
but then retransmission code should deal with this just fine:
if (skb->len > cur_mss) {
if (tcp_fragment(sk, skb, cur_mss, cur_mss))
return -ENOMEM; /* We'll try again later. */
} else {
int oldpcount = tcp_skb_pcount(skb);
if (unlikely(oldpcount > 1)) {
tcp_init_tso_segs(sk, skb, cur_mss);
tcp_adjust_pcount(sk, skb, oldpcount - tcp_skb_pcount(skb));
}
}
--
i.
^ permalink raw reply
* Re: IPVS network namespace aware ?
From: Hans Schillstrom @ 2010-08-24 8:53 UTC (permalink / raw)
To: Daniel Lezcano
Cc: lvs-devel, netfilter-devel@vger.kernel.org,
netdev@vger.kernel.org
In-Reply-To: <4C72CA3C.4080708@free.fr>
Hi Daniel
The progress is good, so far I think everything is ported except for
Simon Hormans latest patch-set.
Right now I'm struggling with NULL pointers :-)
i.e. seq_file doesn't carry any netns info.
In the example below *net will be invalid because seq->private is NULL.
static void *ip_vs_info_seq_next(struct seq_file *seq, ....) {
struct net *net = seq_file_net(seq);
single_open() seems to work, but seq_open() or seq_open_private().
As you can see I'm not ready, so help will be nice.
I'll remove some debugging stuff and send you a patch-set.
/Hans
On Mon, 2010-08-23 at 21:21 +0200, Daniel Lezcano wrote:
> On 08/06/2010 02:57 PM, Hans Schillstrom wrote:
> > Hello
> > Is there any one that have made ipvs network namespace aware ?
> > There is an urgent need of it within Ericsson.
> > I could not find any trace of it in any of the normal lists.
> >
> > I will start patching ipvs next week or give a helping hand to any
> > existing work.
>
> Hi Hans,
>
> do you have a patchset ready (or just a prototype) ? I will be glad to
> help you ;)
>
> Thanks
> -- Daniel
^ permalink raw reply
* Re: [PATCH] Fix deadlock between boomerang_interrupt and boomerang_start_tx in 3c59x
From: David Miller @ 2010-08-24 8:48 UTC (permalink / raw)
To: nhorman; +Cc: eric.dumazet, netdev
In-Reply-To: <20100823234006.GA8976@hmsreliant.think-freely.org>
From: Neil Horman <nhorman@tuxdriver.com>
Date: Mon, 23 Aug 2010 19:41:44 -0400
> Ah, I see what your saying. Since bitfield access is not a single instruction
> you get races when multiple accesses take place at once, since the assignment is
> non-atomic, nor is the read.
>
> In this case, thats ok. I say that because in the only time we really care what
> the value of this bitfield is, is when we've recursed from the interrupt handler
> to the netconsole module, back into the transmit path on the same cpu. In that
> case the read is guaranteed to be ordered after the write, since its a linear
> code path. In the case where cpu 0 is in the interrupt handler and cpu1 is
> going into the transmit method for this driver, we don't really care what the
> value of the bitfield is, its a don't care. If we read it as a zero, thats ok,
> we have the driver-internal sempahore still protecting us (the one that
> deadlocks if you recurse via netconsole on the same cpu). And if we read it as
> a 1, thats ok too, because we simply cause the network scheduler to queue the
> frame and send it again as soon as we're out of the interrupt handler.
Right this should be OK.
The only write to the bit happens with the lock held.
The other bits are never modified while the device is active
and interrupts can run.
I've applied Neil's patch, thanks Neil.
^ permalink raw reply
* Re: [Bugme-new] [Bug 16626] New: Machine hangs with EIP at skb_copy_and_csum_dev
From: Plamen Petrov @ 2010-08-24 8:43 UTC (permalink / raw)
To: Eric Dumazet
Cc: Jarek Poplawski, Andrew Morton, netdev, bugzilla-daemon,
bugme-daemon
In-Reply-To: <1282626102.2378.1351.camel@edumazet-laptop>
На 24.8.2010 г. 08:01, Eric Dumazet написа:
> Le mardi 24 août 2010 à 07:51 +0300, Plamen Petrov a écrit :
>> So far - not so good. :(
...
>
> Hmm... I was thinking adding a call __skb_linearize(), just in case...
>
> diff --git a/drivers/net/8139too.c b/drivers/net/8139too.c
> index f5166dc..10928a2 100644
> --- a/drivers/net/8139too.c
> +++ b/drivers/net/8139too.c
> @@ -1696,7 +1696,7 @@ static netdev_tx_t rtl8139_start_xmit (struct sk_buff *skb,
> entry = tp->cur_tx % NUM_TX_DESC;
>
> /* Note: the chip doesn't have auto-pad! */
> - if (likely(len< TX_BUF_SIZE)) {
> + if (likely(len< TX_BUF_SIZE&& !__skb_linearize(skb))) {
> if (len< ETH_ZLEN)
> memset(tp->tx_buf[entry], 0, ETH_ZLEN);
> skb_copy_and_csum_dev(skb, tp->tx_buf[entry]);
>
>
Here is what I've got while running the kernel with the patch
I attached earlier plus the above one, after turning GRO on for
my tg3 nic:
[picture 10]
http://picpaste.com/37e37f9ff9504e3a003f49092f9b1be6.jpg
[picture 11]
http://picpaste.com/5663ca7c5041c0ed7a1f3e6a9aa17a9e.jpg
[picture 12]
http://picpaste.com/17f2ecaa409a1ebbf835a2e0519d3099.jpg
Now moving on to the second proposed patch from Jarek.
Thanks,
Plamen
^ permalink raw reply
* Re: [PATCH] TCP_FAILFAST: a new socket option to timeout/abort a connection quicker
From: Arnd Hannemann @ 2010-08-24 8:04 UTC (permalink / raw)
To: Eric Dumazet; +Cc: H.K. Jerry Chu, ilpo.jarvinen, davem, netdev
In-Reply-To: <1282632262.2378.1681.camel@edumazet-laptop>
Am 24.08.2010 08:44, schrieb Eric Dumazet:
> Le lundi 23 août 2010 à 23:20 -0700, H.K. Jerry Chu a écrit :
>> From: Jerry Chu <hkchu@google.com>
>>
>> This is a TCP level socket option that takes an unsigned int to specify
>> how long in ms TCP should resend a lost data packet before giving up
>> and returning ETIMEDOUT. The normal TCP retry/abort timeout limit still
>> applies. In other words this option is only meant for those applications
>> that need to "fail faster" than the default TCP timeout. The latter
>> may take upto 20 minutes in a normal WAN environment.
>>
>> The option is disabled (by default) when set to 0. Also it does not
>> apply during the connection establishment phase.
>>
>> Signed-off-by: H.K. Jerry Chu <hkchu@google.com>
>
> TCP_FAILFAST might be misleading. It reads as a boolean option, while
> its an option to cap the timeout, with a time unit, instead of the usual
> "number of retransmits".
Why not call it TCP_USERTIMEOUT?
Later you can also send it via the TCP user timeout option... (RFC5482)
Hmm... is the ms granularity really needed? Does it make sense to abort
a connection below a second?
> Its also funny you dont ask for a default value, given by a sysctl
> tunable ;)
Well retries1/2 would be the tunables, no?
Best regards,
Arnd
^ permalink raw reply
* Re: tcp_shift_skb_data uses wrong mss in non-gso case?
From: Herbert Xu @ 2010-08-24 7:46 UTC (permalink / raw)
To: Jesse Brandeburg
Cc: Robert Evans, Eric Dumazet, Ilpo Järvinen,
netdev@vger.kernel.org
In-Reply-To: <AANLkTi=ygaa_fV4SwaLY2gP9H+Nn54QdXcGXkfGukSCD@mail.gmail.com>
On Mon, Aug 23, 2010 at 03:34:04PM -0700, Jesse Brandeburg wrote:
> CC Ilpo, the creator of this patch being discussed:
>
> On Tue, Aug 17, 2010 at 3:35 PM, Robert Evans
> > This ends up being troublesome if the segment is later retransmitted and the
> > device driver has trouble with very small gso_size (e1000e seems to be an
> > example).
I don't see the problem. If mss == skb->len then tcp_shifted_skb
will zero gso_size.
Which code path is setting gso_size to skb->len?
Cheers,
--
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: [PATCH] netfilter: xt_condition: add security capability support
From: Jan Engelhardt @ 2010-08-24 7:32 UTC (permalink / raw)
To: Luciano Coelho
Cc: ext Changli Gao, kaber@trash.net, netfilter-devel@vger.kernel.org,
netdev@vger.kernel.org, James Morris,
linux-security-module@vger.kernel.org
In-Reply-To: <1282633220.7198.123.camel@powerslave>
On Tuesday 2010-08-24 09:00, Luciano Coelho wrote:
>>
>>It is strange that you check this capability from a module focused
>>on packet handling. For lack of a better example, it's as if you
>>tried to check the uid of the file, the latter of which is better
>>left to the routines in fs/.
>
>What I don't understand is that I see lots of components, which have
>nothing to do with security, making this kind of checks. Most of
>them (if not all) are checking for input from userspace where they
>provide their own interfaces (eg. ioctl calls, netlink messages).
>[..] Now, with the xt_condition, we're opening a new route from
>userspace to the kernel and I think it might be a good idea to
>protect that too.
Indeed so. But you did not invent any new interface. You are reusing
files, which can be protected by DAC modes, or LSMs doing
funky-stuff. xt_{condition,recent,..} already implement file modes,
but does it check for it? Well no, because fs/namei.c does it for
them. As for LSMs, well, I hope they do cater for testing for
capability bits.
>It's kind of useless to protect someone without CAP_NET_ADMIN from
>creating a condition rule if it is possible to change the condition from
>userspace without any capability protection.
Certainly not. An administrator may create a condition rule and thus
procfs entry, but the rule may be sufficiently safe and/or integrated
that a subordinate may be given permission to control things in a
limited fashion on a per-need basis. One I use personally is
-A FORWARD -m condition --condition windows -s
192.168.100.0/25 -i eth1 -o eth0 -j ACCEPT
-P FORWARD DROP
chown jengelh /proc/net/nf_condition/windows;
The presence of such rule would indicate that the administrator
generally allows Windows machines out; but personal paranoia defaults
to rejecting that unless explicitly enabled. (Gives the reassurance
that they won't succeed talking home unless Internet connectivity is
explicitly needed by the user.)
^ 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