Netdev List
 help / color / mirror / Atom feed
* [PATCH 12/24 for-2.6.25] DM9000: Add ethtool support for reading and writing EEPROM
From: Ben Dooks @ 2008-02-05  0:02 UTC (permalink / raw)
  To: netdev; +Cc: jeff, akpm, daniel, laurentp, Ben Dooks
In-Reply-To: <20080205000159.432081941@fluff.org.uk>

[-- Attachment #1: simtec/simtec-drivers-net-dm9000-ethtool-eeprom.patch --]
[-- Type: text/plain, Size: 3532 bytes --]

Add ethtool support to access the configuration EEPROM
connected to the DM9000.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>

Index: linux-2.6.24-quilt3/drivers/net/dm9000.c
===================================================================
--- linux-2.6.24-quilt3.orig/drivers/net/dm9000.c
+++ linux-2.6.24-quilt3/drivers/net/dm9000.c
@@ -186,7 +186,8 @@ static int dm9000_phy_read(struct net_de
 static void dm9000_phy_write(struct net_device *dev, int phyaddr_unused, int reg,
 			   int value);
 
-static void dm9000_read_eeprom(board_info_t *, int addr, unsigned char *to);
+static void dm9000_read_eeprom(board_info_t *, int addr, u8 *to);
+static void dm9000_write_eeprom(board_info_t *, int addr, u8 *dp);
 static void dm9000_rx(struct net_device *);
 static void dm9000_hash_table(struct net_device *);
 
@@ -409,12 +410,65 @@ static u32 dm9000_get_link(struct net_de
 	return mii_link_ok(&dm->mii);
 }
 
+#define DM_EEPROM_MAGIC		(0x444D394B)
+
+static int dm9000_get_eeprom_len(struct net_device *dev)
+{
+	return 128;
+}
+
+static int dm9000_get_eeprom(struct net_device *dev,
+			     struct ethtool_eeprom *ee, u8 *data)
+{
+	board_info_t *dm = to_dm9000_board(dev);
+	int offset = ee->offset;
+	int len = ee->len;
+	int i;
+
+	/* EEPROM access is aligned to two bytes */
+
+	if ((len & 1) != 0 || (offset & 1) != 0)
+		return -EINVAL;
+
+	ee->magic = DM_EEPROM_MAGIC;
+
+	for (i = 0; i < len; i += 2)
+		dm9000_read_eeprom(dm, (offset + i) / 2, data + i);
+
+	return 0;
+}
+
+static int dm9000_set_eeprom(struct net_device *dev,
+			     struct ethtool_eeprom *ee, u8 *data)
+{
+	board_info_t *dm = to_dm9000_board(dev);
+	int offset = ee->offset;
+	int len = ee->len;
+	int i;
+
+	/* EEPROM access is aligned to two bytes */
+
+	if ((len & 1) != 0 || (offset & 1) != 0)
+		return -EINVAL;
+
+	if (ee->magic != DM_EEPROM_MAGIC)
+		return -EINVAL;
+
+	for (i = 0; i < len; i += 2)
+		dm9000_write_eeprom(dm, (offset + i) / 2, data + i);
+
+	return 0;
+}
+
 static const struct ethtool_ops dm9000_ethtool_ops = {
 	.get_drvinfo		= dm9000_get_drvinfo,
 	.get_settings		= dm9000_get_settings,
 	.set_settings		= dm9000_set_settings,
 	.nway_reset		= dm9000_nway_reset,
 	.get_link		= dm9000_get_link,
+ 	.get_eeprom_len		= dm9000_get_eeprom_len,
+ 	.get_eeprom		= dm9000_get_eeprom,
+ 	.set_eeprom		= dm9000_set_eeprom,
 };
 
 
@@ -1011,7 +1065,7 @@ dm9000_rx(struct net_device *dev)
  *  Read a word data from EEPROM
  */
 static void
-dm9000_read_eeprom(board_info_t *db, int offset, unsigned char *to)
+dm9000_read_eeprom(board_info_t *db, int offset, u8 *to)
 {
 	mutex_lock(&db->addr_lock);
 
@@ -1027,18 +1081,17 @@ dm9000_read_eeprom(board_info_t *db, int
 	mutex_unlock(&db->addr_lock);
 }
 
-#ifdef DM9000_PROGRAM_EEPROM
 /*
  * Write a word data to SROM
  */
 static void
-write_srom_word(board_info_t * db, int offset, u16 val)
+dm9000_write_eeprom(board_info_t *db, int offset, u8 *data)
 {
 	mutex_lock(&db->addr_lock);
 
 	iow(db, DM9000_EPAR, offset);
-	iow(db, DM9000_EPDRH, ((val >> 8) & 0xff));
-	iow(db, DM9000_EPDRL, (val & 0xff));
+	iow(db, DM9000_EPDRH, data[1]);
+	iow(db, DM9000_EPDRL, data[0]);
 	iow(db, DM9000_EPCR, EPCR_WEP | EPCR_ERPRW);
 	mdelay(8);		/* same shit */
 	iow(db, DM9000_EPCR, 0);
@@ -1046,6 +1099,7 @@ write_srom_word(board_info_t * db, int o
 	mutex_unlock(&db->addr_lock);
 }
 
+#ifdef DM9000_PROGRAM_EEPROM
 /*
  * Only for development:
  * Here we write static data to the eeprom in case

-- 
Ben (ben@fluff.org, http://www.fluff.org/)

  'a smiley only costs 4 bytes'

^ permalink raw reply

* [PATCH 03/24 for-2.6.25] DM9000 use dev_xxx() instead of printk for output.
From: Ben Dooks @ 2008-02-05  0:02 UTC (permalink / raw)
  To: netdev; +Cc: jeff, akpm, daniel, laurentp, Ben Dooks
In-Reply-To: <20080205000159.432081941@fluff.org.uk>

[-- Attachment #1: simtec/simtec-drivers-net-dm9000-devmacros.patch --]
[-- Type: text/plain, Size: 6374 bytes --]

Move to using dev_dbg() and friends for the output of
information to the user.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>

Index: linux-2.6.24-git5-dm9k/drivers/net/dm9000.c
===================================================================
--- linux-2.6.24-git5-dm9k.orig/drivers/net/dm9000.c
+++ linux-2.6.24-git5-dm9k/drivers/net/dm9000.c
@@ -143,6 +143,8 @@ typedef struct board_info {
 	void (*outblk)(void __iomem *port, void *data, int length);
 	void (*dumpblk)(void __iomem *port, int length);
 
+	struct device	*dev;	     /* parent device */
+
 	struct resource	*addr_res;   /* resources found */
 	struct resource *data_res;
 	struct resource	*addr_req;   /* resources requested */
@@ -185,7 +187,8 @@ static void program_eeprom(board_info_t 
 static void
 dm9000_reset(board_info_t * db)
 {
-	PRINTK1("dm9000x: resetting\n");
+	dev_dbg(db->dev, "resetting device\n");
+
 	/* RESET device */
 	writeb(DM9000_NCR, db->io_addr);
 	udelay(200);
@@ -301,14 +304,10 @@ static void dm9000_set_io(struct board_i
 		db->inblk   = dm9000_inblk_8bit;
 		break;
 
-	case 2:
-		db->dumpblk = dm9000_dumpblk_16bit;
-		db->outblk  = dm9000_outblk_16bit;
-		db->inblk   = dm9000_inblk_16bit;
-		break;
 
 	case 3:
-		printk(KERN_ERR PFX ": 3 byte IO, falling back to 16bit\n");
+		dev_dbg(db->dev, ": 3 byte IO, falling back to 16bit\n");
+	case 2:
 		db->dumpblk = dm9000_dumpblk_16bit;
 		db->outblk  = dm9000_outblk_16bit;
 		db->inblk   = dm9000_inblk_16bit;
@@ -411,18 +410,20 @@ dm9000_probe(struct platform_device *pde
 	/* Init network device */
 	ndev = alloc_etherdev(sizeof (struct board_info));
 	if (!ndev) {
-		printk("%s: could not allocate device.\n", CARDNAME);
+		dev_err(&pdev->dev, "could not allocate device.\n");
 		return -ENOMEM;
 	}
 
 	SET_NETDEV_DEV(ndev, &pdev->dev);
 
-	PRINTK2("dm9000_probe()");
+	dev_dbg(&pdev->dev, "dm9000_probe()");
 
 	/* setup board info structure */
 	db = (struct board_info *) ndev->priv;
 	memset(db, 0, sizeof (*db));
 
+	db->dev = &pdev->dev;
+
 	spin_lock_init(&db->lock);
 
 	if (pdev->num_resources < 2) {
@@ -451,7 +452,7 @@ dm9000_probe(struct platform_device *pde
 
 		if (db->addr_res == NULL || db->data_res == NULL ||
 		    db->irq_res == NULL) {
-			printk(KERN_ERR PFX "insufficient resources\n");
+			dev_err(db->dev, "insufficient resources\n");
 			ret = -ENOENT;
 			goto out;
 		}
@@ -461,7 +462,7 @@ dm9000_probe(struct platform_device *pde
 						  pdev->name);
 
 		if (db->addr_req == NULL) {
-			printk(KERN_ERR PFX "cannot claim address reg area\n");
+			dev_err(db->dev, "cannot claim address reg area\n");
 			ret = -EIO;
 			goto out;
 		}
@@ -469,7 +470,7 @@ dm9000_probe(struct platform_device *pde
 		db->io_addr = ioremap(db->addr_res->start, i);
 
 		if (db->io_addr == NULL) {
-			printk(KERN_ERR "failed to ioremap address reg\n");
+			dev_err(db->dev, "failed to ioremap address reg\n");
 			ret = -EINVAL;
 			goto out;
 		}
@@ -479,7 +480,7 @@ dm9000_probe(struct platform_device *pde
 						  pdev->name);
 
 		if (db->data_req == NULL) {
-			printk(KERN_ERR PFX "cannot claim data reg area\n");
+			dev_err(db->dev, "cannot claim data reg area\n");
 			ret = -EIO;
 			goto out;
 		}
@@ -487,7 +488,7 @@ dm9000_probe(struct platform_device *pde
 		db->io_data = ioremap(db->data_res->start, iosize);
 
 		if (db->io_data == NULL) {
-			printk(KERN_ERR "failed to ioremap data reg\n");
+			dev_err(db->dev,"failed to ioremap data reg\n");
 			ret = -EINVAL;
 			goto out;
 		}
@@ -541,11 +542,11 @@ dm9000_probe(struct platform_device *pde
 
 		if (id_val == DM9000_ID)
 			break;
-		printk("%s: read wrong id 0x%08x\n", CARDNAME, id_val);
+		dev_err(db->dev, "read wrong id 0x%08x\n", id_val);
 	}
 
 	if (id_val != DM9000_ID) {
-		printk("%s: wrong id: 0x%08x\n", CARDNAME, id_val);
+		dev_err(db->dev, "wrong id: 0x%08x\n", id_val);
 		ret = -ENODEV;
 		goto out;
 	}
@@ -593,8 +594,8 @@ dm9000_probe(struct platform_device *pde
 	}
 
 	if (!is_valid_ether_addr(ndev->dev_addr))
-		printk("%s: Invalid ethernet MAC address.  Please "
-		       "set using ifconfig\n", ndev->name);
+		dev_warn(db->dev, "%s: Invalid ethernet MAC address. Please "
+			 "set using ifconfig\n", ndev->name);
 
 	platform_set_drvdata(pdev, ndev);
 	ret = register_netdev(ndev);
@@ -608,7 +609,7 @@ dm9000_probe(struct platform_device *pde
 	return 0;
 
 out:
-	printk("%s: not found (%d).\n", CARDNAME, ret);
+	dev_err(db->dev, "not found (%d).\n", ret);
 
 	dm9000_release_board(pdev, db);
 	free_netdev(ndev);
@@ -625,7 +626,7 @@ dm9000_open(struct net_device *dev)
 {
 	board_info_t *db = (board_info_t *) dev->priv;
 
-	PRINTK2("entering dm9000_open\n");
+	dev_dbg(db->dev, "entering %s\n", __func__);
 
 	if (request_irq(dev->irq, &dm9000_interrupt, DM9000_IRQ_FLAGS, dev->name, dev))
 		return -EAGAIN;
@@ -900,7 +901,7 @@ dm9000_rx(struct net_device *dev)
 
 		/* Status check: this byte must be 0 or 1 */
 		if (rxbyte > DM9000_PKT_RDY) {
-			printk("status check failed: %d\n", rxbyte);
+			dev_warn(db->dev, "status check fail: %d\n", rxbyte);
 			iow(db, DM9000_RCR, 0x00);	/* Stop Device */
 			iow(db, DM9000_ISR, IMR_PAR);	/* Stop INT request */
 			return;
@@ -920,25 +921,25 @@ dm9000_rx(struct net_device *dev)
 		/* Packet Status check */
 		if (RxLen < 0x40) {
 			GoodPacket = false;
-			PRINTK1("Bad Packet received (runt)\n");
+			dev_dbg(db->dev, "Bad Packet received (runt)\n");
 		}
 
 		if (RxLen > DM9000_PKT_MAX) {
-			PRINTK1("RST: RX Len:%x\n", RxLen);
+			dev_dbg(db->dev, "RST: RX Len:%x\n", RxLen);
 		}
 
 		if (rxhdr.RxStatus & 0xbf) {
 			GoodPacket = false;
 			if (rxhdr.RxStatus & 0x01) {
-				PRINTK1("fifo error\n");
+				dev_dbg(db->dev, "fifo error\n");
 				dev->stats.rx_fifo_errors++;
 			}
 			if (rxhdr.RxStatus & 0x02) {
-				PRINTK1("crc error\n");
+				dev_dbg(db->dev, "crc error\n");
 				dev->stats.rx_crc_errors++;
 			}
 			if (rxhdr.RxStatus & 0x80) {
-				PRINTK1("length error\n");
+				dev_dbg(db->dev, "length error\n");
 				dev->stats.rx_length_errors++;
 			}
 		}
@@ -1187,8 +1188,7 @@ dm9000_drv_remove(struct platform_device
 	dm9000_release_board(pdev, (board_info_t *) ndev->priv);
 	free_netdev(ndev);		/* free device structure */
 
-	PRINTK1("clean_module() exit\n");
-
+	dev_dbg(&pdev->dev, "released and freed device\n");
 	return 0;
 }
 

-- 
Ben (ben@fluff.org, http://www.fluff.org/)

  'a smiley only costs 4 bytes'

^ permalink raw reply

* [PATCH 15/24 for-2.6.25] DM9000: Ensure spinlock held whilst accessing EEPROM registers
From: Ben Dooks @ 2008-02-05  0:02 UTC (permalink / raw)
  To: netdev; +Cc: jeff, akpm, daniel, laurentp, Ben Dooks
In-Reply-To: <20080205000159.432081941@fluff.org.uk>

[-- Attachment #1: simtec/simtec-drivers-net-dm9000-spinlock-eeprom.patch --]
[-- Type: text/plain, Size: 1810 bytes --]

Ensure we hold the spinlock whilst the registers and being
modified even though we hold the overall lock. This should
protect against an interrupt happening whilst we are using
the device.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>

Index: linux-2.6.24-quilt3/drivers/net/dm9000.c
===================================================================
--- linux-2.6.24-quilt3.orig/drivers/net/dm9000.c
+++ linux-2.6.24-quilt3/drivers/net/dm9000.c
@@ -1076,17 +1076,29 @@ dm9000_rx(struct net_device *dev)
 static void
 dm9000_read_eeprom(board_info_t *db, int offset, u8 *to)
 {
+	unsigned long flags;
+
 	mutex_lock(&db->addr_lock);
 
+	spin_lock_irqsave(&db->lock, flags);
+
 	iow(db, DM9000_EPAR, offset);
 	iow(db, DM9000_EPCR, EPCR_ERPRR);
+
+	spin_unlock_irqrestore(&db->lock, flags);
+
 	mdelay(8);		/* according to the datasheet 200us should be enough,
 				   but it doesn't work */
+
+	spin_lock_irqsave(&db->lock, flags);
+
 	iow(db, DM9000_EPCR, 0x0);
 
 	to[0] = ior(db, DM9000_EPDRL);
 	to[1] = ior(db, DM9000_EPDRH);
 
+	spin_unlock_irqrestore(&db->lock, flags);
+
 	mutex_unlock(&db->addr_lock);
 }
 
@@ -1096,14 +1108,22 @@ dm9000_read_eeprom(board_info_t *db, int
 static void
 dm9000_write_eeprom(board_info_t *db, int offset, u8 *data)
 {
+	unsigned long flags;
+
 	mutex_lock(&db->addr_lock);
 
+	spin_lock_irqsave(&db->lock, flags);
 	iow(db, DM9000_EPAR, offset);
 	iow(db, DM9000_EPDRH, data[1]);
 	iow(db, DM9000_EPDRL, data[0]);
 	iow(db, DM9000_EPCR, EPCR_WEP | EPCR_ERPRW);
+	spin_unlock_irqrestore(&db->lock, flags);
+
 	mdelay(8);		/* same shit */
+
+	spin_lock_irqsave(&db->lock, flags);
 	iow(db, DM9000_EPCR, 0);
+	spin_unlock_irqrestore(&db->lock, flags);
 
 	mutex_unlock(&db->addr_lock);
 }

-- 
Ben (ben@fluff.org, http://www.fluff.org/)

  'a smiley only costs 4 bytes'

^ permalink raw reply

* [PATCH 01/24 for-2.6.25] DM9000: Fix endian-ness of data accesses. Patch from: Laurent Pinchart <laurentp@cse-semaphore.com>
From: Ben Dooks @ 2008-02-05  0:02 UTC (permalink / raw)
  To: netdev; +Cc: jeff, akpm, daniel, laurentp, Ben Dooks
In-Reply-To: <20080205000159.432081941@fluff.org.uk>

[-- Attachment #1: thirdparty/dm9000-fix-8bit.patch --]
[-- Type: text/plain, Size: 1544 bytes --]

This patch splits the receive status in 8bit wide fields and convert the
packet length from little endian to CPU byte order.

Signed-off-by: Laurent Pinchart <laurentp@cse-semaphore.com>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>

Index: linux-2.6.24-git5-dm9k/drivers/net/dm9000.c
===================================================================
--- linux-2.6.24-git5-dm9k.orig/drivers/net/dm9000.c
+++ linux-2.6.24-git5-dm9k/drivers/net/dm9000.c
@@ -867,7 +867,8 @@ dm9000_timer(unsigned long data)
 }
 
 struct dm9000_rxhdr {
-	u16	RxStatus;
+	u8	RxPktReady;
+	u8	RxStatus;
 	u16	RxLen;
 } __attribute__((__packed__));
 
@@ -908,7 +909,7 @@ dm9000_rx(struct net_device *dev)
 
 		(db->inblk)(db->io_data, &rxhdr, sizeof(rxhdr));
 
-		RxLen = rxhdr.RxLen;
+		RxLen = le16_to_cpu(rxhdr.RxLen);
 
 		/* Packet Status check */
 		if (RxLen < 0x40) {
@@ -920,17 +921,17 @@ dm9000_rx(struct net_device *dev)
 			PRINTK1("RST: RX Len:%x\n", RxLen);
 		}
 
-		if (rxhdr.RxStatus & 0xbf00) {
+		if (rxhdr.RxStatus & 0xbf) {
 			GoodPacket = false;
-			if (rxhdr.RxStatus & 0x100) {
+			if (rxhdr.RxStatus & 0x01) {
 				PRINTK1("fifo error\n");
 				dev->stats.rx_fifo_errors++;
 			}
-			if (rxhdr.RxStatus & 0x200) {
+			if (rxhdr.RxStatus & 0x02) {
 				PRINTK1("crc error\n");
 				dev->stats.rx_crc_errors++;
 			}
-			if (rxhdr.RxStatus & 0x8000) {
+			if (rxhdr.RxStatus & 0x80) {
 				PRINTK1("length error\n");
 				dev->stats.rx_length_errors++;
 			}

-- 
Ben (ben@fluff.org, http://www.fluff.org/)

  'a smiley only costs 4 bytes'

^ permalink raw reply

* [PATCH 14/24 for-2.6.25] DM9000: Remove EEPROM initialisation code.
From: Ben Dooks @ 2008-02-05  0:02 UTC (permalink / raw)
  To: netdev; +Cc: jeff, akpm, daniel, laurentp, Ben Dooks
In-Reply-To: <20080205000159.432081941@fluff.org.uk>

[-- Attachment #1: simtec/simtec-drivers-net-dm9000-remove-eeprom-program.patch --]
[-- Type: text/plain, Size: 1876 bytes --]

Remove the old hack to program an initial EEPROM setting
into the DM9000 as we now have ethtool support for reading
and writing the EEPROM.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>

Index: linux-2.6.24-quilt3/drivers/net/dm9000.c
===================================================================
--- linux-2.6.24-quilt3.orig/drivers/net/dm9000.c
+++ linux-2.6.24-quilt3/drivers/net/dm9000.c
@@ -191,10 +191,6 @@ static void dm9000_write_eeprom(board_in
 static void dm9000_rx(struct net_device *);
 static void dm9000_hash_table(struct net_device *);
 
-//#define DM9000_PROGRAM_EEPROM
-#ifdef DM9000_PROGRAM_EEPROM
-static void program_eeprom(board_info_t * db);
-#endif
 /* DM9000 network board routine ---------------------------- */
 
 static void
@@ -699,9 +695,6 @@ dm9000_probe(struct platform_device *pde
 	ndev->poll_controller	 = &dm9000_poll_controller;
 #endif
 
-#ifdef DM9000_PROGRAM_EEPROM
-	program_eeprom(db);
-#endif
 	db->msg_enable       = NETIF_MSG_LINK;
 	db->mii.phy_id_mask  = 0x1f;
 	db->mii.reg_num_mask = 0x1f;
@@ -1115,28 +1108,6 @@ dm9000_write_eeprom(board_info_t *db, in
 	mutex_unlock(&db->addr_lock);
 }
 
-#ifdef DM9000_PROGRAM_EEPROM
-/*
- * Only for development:
- * Here we write static data to the eeprom in case
- * we don't have valid content on a new board
- */
-static void
-program_eeprom(board_info_t * db)
-{
-	u16 eeprom[] = { 0x0c00, 0x007f, 0x1300,	/* MAC Address */
-		0x0000,		/* Autoload: accept nothing */
-		0x0a46, 0x9000,	/* Vendor / Product ID */
-		0x0000,		/* pin control */
-		0x0000,
-	};			/* Wake-up mode control */
-	int i;
-	for (i = 0; i < 8; i++)
-		write_srom_word(db, i, eeprom[i]);
-}
-#endif
-
-
 /*
  *  Calculate the CRC valude of the Rx packet
  *  flag = 1 : return the reverse CRC (for the received packet CRC)

-- 
Ben (ben@fluff.org, http://www.fluff.org/)

  'a smiley only costs 4 bytes'

^ permalink raw reply

* Re: 2.6.24-mm1 - Build failure at net/sched/cls_flow.c:598
From: Andrew Morton @ 2008-02-04 23:25 UTC (permalink / raw)
  To: Tilman Schmidt; +Cc: linux-kernel, Patrick McHardy, netdev
In-Reply-To: <47A79291.5010204@imap.cc>

On Mon, 04 Feb 2008 23:32:49 +0100
Tilman Schmidt <tilman@imap.cc> wrote:

> My attempt to build this failed with:
> 
>    CC [M]  net/sched/cls_flow.o
> net/sched/cls_flow.c: In function ___flow_dump___:
> net/sched/cls_flow.c:598: error: ___struct tcf_ematch_tree___ has no member named ___hdr___
> 
> Config attached.

Thanks.  hm.

	#else /* CONFIG_NET_EMATCH */

	struct tcf_ematch_tree
	{
	};

methinks Patrick has a CONFIG_NET_EMATCH=n problem?

^ permalink raw reply

* [PATCH] Add IPv6 support to TCP SYN cookies
From: Glenn Griffin @ 2008-02-04 23:01 UTC (permalink / raw)
  To: netdev, linux-kernel; +Cc: Andi Kleen

Add IPv6 support to TCP SYN cookies.  This is written and tested against
2.6.24, and applies cleanly to linus' current HEAD (d2fc0b).  Unfortunately
linus' HEAD breaks my sky2 card at the moment, so I'm unable to test against
that.  I see no reason why it would be affected though.  Comments/suggestions
are welcome.

Signed-off-by: Glenn Griffin <ggriffin.kernel@gmail.com>
---
 include/net/tcp.h     |    4 +
 net/ipv4/syncookies.c |  203 ++++++++++++++++++++++++++++++++++++++++++++++++-
 net/ipv6/tcp_ipv6.c   |   77 +++++++++++++-----
 3 files changed, 260 insertions(+), 24 deletions(-)

diff --git a/include/net/tcp.h b/include/net/tcp.h
index cb5b033..02dc6dd 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -435,6 +435,9 @@ extern struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb,
 				    struct ip_options *opt);
 extern __u32 cookie_v4_init_sequence(struct sock *sk, struct sk_buff *skb, 
 				     __u16 *mss);
+extern struct sock *cookie_v6_check(struct sock *sk, struct sk_buff *skb);
+extern __u32 cookie_v6_init_sequence(struct sock *sk, struct sk_buff *skb,
+				     __u16 *mss);
 
 /* tcp_output.c */
 
@@ -1337,6 +1340,7 @@ extern int tcp_proc_register(struct tcp_seq_afinfo *afinfo);
 extern void tcp_proc_unregister(struct tcp_seq_afinfo *afinfo);
 
 extern struct request_sock_ops tcp_request_sock_ops;
+extern struct request_sock_ops tcp6_request_sock_ops;
 
 extern int tcp_v4_destroy_sock(struct sock *sk);
 
diff --git a/net/ipv4/syncookies.c b/net/ipv4/syncookies.c
index 2da1be0..b342bae 100644
--- a/net/ipv4/syncookies.c
+++ b/net/ipv4/syncookies.c
@@ -3,6 +3,7 @@
  *
  *  Copyright (C) 1997 Andi Kleen
  *  Based on ideas by D.J.Bernstein and Eric Schenk.
+ *  IPv6 Support Added by Glenn Griffin (2008)
  *
  *	This program is free software; you can redistribute it and/or
  *      modify it under the terms of the GNU General Public License
@@ -10,8 +11,6 @@
  *      2 of the License, or (at your option) any later version.
  *
  *  $Id: syncookies.c,v 1.18 2002/02/01 22:01:04 davem Exp $
- *
- *  Missing: IPv6 support.
  */
 
 #include <linux/tcp.h>
@@ -19,6 +18,7 @@
 #include <linux/random.h>
 #include <linux/cryptohash.h>
 #include <linux/kernel.h>
+#include <net/ipv6.h>
 #include <net/tcp.h>
 
 extern int sysctl_tcp_syncookies;
@@ -281,3 +281,202 @@ struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb,
 	ret = get_cookie_sock(sk, skb, req, &rt->u.dst);
 out:	return ret;
 }
+
+/* IPv6 Implementation
+ * Just a reimplementation of the above IPv4 implementation adjusting for
+ * the longer address length.  Could optionally add an additional addrlen
+ * argument to most of the above functions.
+ *
+ * Reference the code comments above to understand what is going on
+ */
+
+static u32 cookie_hash6(__be32 *saddr, __be32 *daddr, __be16 sport,
+			__be16 dport, u32 count, int c)
+{
+	__u32 tmp[16 + 5 + SHA_WORKSPACE_WORDS];
+
+	/*
+	 * we have 320 bits of information to hash, copy in the remaining
+	 * 192 bits required for sha_transform, from the syncookie_secret
+	 * and overwrite the digest with the secret
+	 */
+	memcpy(tmp + 10, syncookie_secret[c], 44);
+	memcpy(tmp, saddr, 16);
+	memcpy(tmp + 4, daddr, 16);
+	tmp[8] = ((__force u32)sport << 16) + (__force u32)dport;
+	tmp[9] = count;
+	sha_transform(tmp + 16, (__u8 *)tmp, tmp + 16 + 5);
+
+	return tmp[17];
+}
+
+static __u32 secure_tcp_syn_cookie6(__be32 *saddr, __be32 *daddr, __be16 sport,
+				    __be16 dport, __u32 sseq, __u32 count,
+				    __u32 data)
+{
+	return (cookie_hash6(saddr, daddr, sport, dport, 0, 0) +
+		sseq + (count << COOKIEBITS) +
+		((cookie_hash6(saddr, daddr, sport, dport, count, 1) + data)
+		& COOKIEMASK));
+}
+
+static __u32 check_tcp_syn_cookie6(__u32 cookie, __be32 *saddr, __be32 *daddr,
+				   __be16 sport, __be16 dport, __u32 sseq,
+				   __u32 count, __u32 maxdiff)
+{
+	__u32 diff;
+
+	cookie -= cookie_hash6(saddr, daddr, sport, dport, 0, 0) + sseq;
+
+	diff = (count - (cookie >> COOKIEBITS)) & ((__u32) -1 >> COOKIEBITS);
+	if (diff >= maxdiff)
+		return (__u32)-1;
+
+	return (cookie -
+		cookie_hash6(saddr, daddr, sport, dport, count - diff, 1))
+		& COOKIEMASK;
+}
+
+__u32 cookie_v6_init_sequence(struct sock *sk, struct sk_buff *skb, __u16 *mssp)
+{
+	struct ipv6hdr *iph = ipv6_hdr(skb);
+	const struct tcphdr *th = tcp_hdr(skb);
+	int mssind;
+	const __u16 mss = *mssp;
+
+	tcp_sk(sk)->last_synq_overflow = jiffies;
+
+	for (mssind = 0; mss > msstab[mssind + 1]; mssind++)
+		;
+	*mssp = msstab[mssind] + 1;
+
+	NET_INC_STATS_BH(LINUX_MIB_SYNCOOKIESSENT);
+
+	return secure_tcp_syn_cookie6(iph->saddr.s6_addr32,
+				      iph->daddr.s6_addr32,
+				      th->source, th->dest, ntohl(th->seq),
+				      jiffies / (HZ * 60), mssind);
+}
+
+static inline int cookie_check6(struct sk_buff *skb, __u32 cookie)
+{
+	struct ipv6hdr *iph = ipv6_hdr(skb);
+	const struct tcphdr *th = tcp_hdr(skb);
+	__u32 seq = ntohl(th->seq) - 1;
+	__u32 mssind = check_tcp_syn_cookie6(cookie, iph->saddr.s6_addr32,
+					     iph->daddr.s6_addr32, th->source,
+					     th->dest, seq, jiffies / (HZ * 60),
+					     COUNTER_TRIES);
+
+	return mssind < NUM_MSS ? msstab[mssind] + 1 : 0;
+}
+
+struct sock *cookie_v6_check(struct sock *sk, struct sk_buff *skb)
+{
+	struct inet_request_sock *ireq;
+	struct inet6_request_sock *ireq6;
+	struct tcp_request_sock *treq;
+	struct ipv6_pinfo *np = inet6_sk(sk);
+	struct tcp_sock *tp = tcp_sk(sk);
+	const struct tcphdr *th = tcp_hdr(skb);
+	__u32 cookie = ntohl(th->ack_seq) - 1;
+	struct sock *ret = sk;
+	struct request_sock *req;
+	int mss;
+	struct dst_entry *dst;
+	__u8 rcv_wscale;
+
+	if (!sysctl_tcp_syncookies || !th->ack)
+		goto out;
+
+	if (time_after(jiffies, tp->last_synq_overflow + TCP_TIMEOUT_INIT) ||
+		(mss = cookie_check6(skb, cookie)) == 0) {
+		NET_INC_STATS_BH(LINUX_MIB_SYNCOOKIESFAILED);
+		goto out;
+	}
+
+	NET_INC_STATS_BH(LINUX_MIB_SYNCOOKIESRECV);
+
+	ret = NULL;
+	req = inet6_reqsk_alloc(&tcp6_request_sock_ops);
+	if (!req)
+		goto out;
+
+	ireq = inet_rsk(req);
+	ireq6 = inet6_rsk(req);
+	treq = tcp_rsk(req);
+	ireq6->pktopts = NULL;
+
+	if (security_inet_conn_request(sk, skb, req)) {
+		reqsk_free(req);
+		goto out;
+	}
+
+	req->mss = mss;
+	ireq->rmt_port = th->source;
+	ipv6_addr_copy(&ireq6->rmt_addr, &ipv6_hdr(skb)->saddr);
+	ipv6_addr_copy(&ireq6->loc_addr, &ipv6_hdr(skb)->daddr);
+	if (ipv6_opt_accepted(sk, skb) ||
+	    np->rxopt.bits.rxinfo || np->rxopt.bits.rxoinfo ||
+	    np->rxopt.bits.rxhlim || np->rxopt.bits.rxohlim) {
+		atomic_inc(&skb->users);
+		ireq6->pktopts = skb;
+	}
+
+	ireq6->iif = sk->sk_bound_dev_if;
+	/* So that link locals have meaning */
+	if (!sk->sk_bound_dev_if &&
+	    ipv6_addr_type(&ireq6->rmt_addr) & IPV6_ADDR_LINKLOCAL)
+		ireq6->iif = inet6_iif(skb);
+
+	req->expires = 0UL;
+	req->retrans = 0;
+	ireq->snd_wscale = ireq->rcv_wscale = ireq->tstamp_ok = 0;
+	ireq->wscale_ok = ireq->sack_ok = 0;
+	treq->rcv_isn = ntohl(th->seq) - 1;
+	treq->snt_isn = cookie;
+
+	/*
+	 * We need to lookup the dst_entry to get the correct window size.
+	 * This is taken from tcp_v6_syn_recv_sock.  Somebody please enlighten
+	 * me if there is a preferred way.
+	 */
+	{
+		struct in6_addr *final_p = NULL, final;
+		struct flowi fl;
+		memset(&fl, 0, sizeof(fl));
+		fl.proto = IPPROTO_TCP;
+		ipv6_addr_copy(&fl.fl6_dst, &ireq6->rmt_addr);
+		if (np->opt && np->opt->srcrt) {
+			struct rt0_hdr *rt0 = (struct rt0_hdr *) np->opt->srcrt;
+			ipv6_addr_copy(&final, &fl.fl6_dst);
+			ipv6_addr_copy(&fl.fl6_dst, rt0->addr);
+			final_p = &final;
+		}
+		ipv6_addr_copy(&fl.fl6_src, &ireq6->loc_addr);
+		fl.oif = sk->sk_bound_dev_if;
+		fl.fl_ip_dport = inet_rsk(req)->rmt_port;
+		fl.fl_ip_sport = inet_sk(sk)->sport;
+		security_req_classify_flow(req, &fl);
+		if (ip6_dst_lookup(sk, &dst, &fl)) {
+			reqsk_free(req);
+			goto out;
+		}
+		if (final_p)
+			ipv6_addr_copy(&fl.fl6_dst, final_p);
+		if ((xfrm_lookup(&dst, &fl, sk, 0)) < 0)
+			goto out;
+	}
+
+	req->window_clamp = dst_metric(dst, RTAX_WINDOW);
+	tcp_select_initial_window(tcp_full_space(sk), req->mss,
+				  &req->rcv_wnd, &req->window_clamp,
+				  0, &rcv_wscale);
+
+	ireq->rcv_wscale = rcv_wscale;
+
+	ret = get_cookie_sock(sk, skb, req, dst);
+
+out:	return ret;
+}
+
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
index 93980c3..ad39bd1 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -520,6 +520,20 @@ done:
 	return err;
 }
 
+static inline void syn_flood_warning(struct sk_buff *skb)
+{
+#ifdef CONFIG_SYN_COOKIES
+	if (sysctl_tcp_syncookies)
+		printk(KERN_INFO
+		       "TCPv6: Possible SYN flooding on port %d. "
+		       "Sending cookies.\n", ntohs(tcp_hdr(skb)->dest));
+	else
+#endif
+		printk(KERN_INFO
+		       "TCPv6: Possible SYN flooding on port %d. "
+		       "Dropping request.\n", ntohs(tcp_hdr(skb)->dest));
+}
+
 static void tcp_v6_reqsk_destructor(struct request_sock *req)
 {
 	if (inet6_rsk(req)->pktopts)
@@ -923,7 +937,7 @@ done_opts:
 }
 #endif
 
-static struct request_sock_ops tcp6_request_sock_ops __read_mostly = {
+struct request_sock_ops tcp6_request_sock_ops __read_mostly = {
 	.family		=	AF_INET6,
 	.obj_size	=	sizeof(struct tcp6_request_sock),
 	.rtx_syn_ack	=	tcp_v6_send_synack,
@@ -1221,9 +1235,9 @@ static struct sock *tcp_v6_hnd_req(struct sock *sk,struct sk_buff *skb)
 		return NULL;
 	}
 
-#if 0 /*def CONFIG_SYN_COOKIES*/
+#ifdef CONFIG_SYN_COOKIES
 	if (!th->rst && !th->syn && th->ack)
-		sk = cookie_v6_check(sk, skb, &(IPCB(skb)->opt));
+		sk = cookie_v6_check(sk, skb);
 #endif
 	return sk;
 }
@@ -1239,6 +1253,11 @@ static int tcp_v6_conn_request(struct sock *sk, struct sk_buff *skb)
 	struct tcp_sock *tp = tcp_sk(sk);
 	struct request_sock *req = NULL;
 	__u32 isn = TCP_SKB_CB(skb)->when;
+#ifdef CONFIG_SYN_COOKIES
+	int want_cookie = 0;
+#else
+#define want_cookie 0
+#endif
 
 	if (skb->protocol == htons(ETH_P_IP))
 		return tcp_v4_conn_request(sk, skb);
@@ -1246,12 +1265,14 @@ static int tcp_v6_conn_request(struct sock *sk, struct sk_buff *skb)
 	if (!ipv6_unicast_destination(skb))
 		goto drop;
 
-	/*
-	 *	There are no SYN attacks on IPv6, yet...
-	 */
 	if (inet_csk_reqsk_queue_is_full(sk) && !isn) {
 		if (net_ratelimit())
-			printk(KERN_INFO "TCPv6: dropping request, synflood is possible\n");
+			syn_flood_warning(skb);
+#ifdef CONFIG_SYN_COOKIES
+		if (sysctl_tcp_syncookies)
+			want_cookie = 1;
+		else
+#endif
 		goto drop;
 	}
 
@@ -1272,29 +1293,39 @@ static int tcp_v6_conn_request(struct sock *sk, struct sk_buff *skb)
 
 	tcp_parse_options(skb, &tmp_opt, 0);
 
+	if (want_cookie) {
+		tcp_clear_options(&tmp_opt);
+		tmp_opt.saw_tstamp = 0;
+	}
+
 	tmp_opt.tstamp_ok = tmp_opt.saw_tstamp;
 	tcp_openreq_init(req, &tmp_opt, skb);
 
 	treq = inet6_rsk(req);
 	ipv6_addr_copy(&treq->rmt_addr, &ipv6_hdr(skb)->saddr);
 	ipv6_addr_copy(&treq->loc_addr, &ipv6_hdr(skb)->daddr);
-	TCP_ECN_create_request(req, tcp_hdr(skb));
 	treq->pktopts = NULL;
-	if (ipv6_opt_accepted(sk, skb) ||
-	    np->rxopt.bits.rxinfo || np->rxopt.bits.rxoinfo ||
-	    np->rxopt.bits.rxhlim || np->rxopt.bits.rxohlim) {
-		atomic_inc(&skb->users);
-		treq->pktopts = skb;
-	}
-	treq->iif = sk->sk_bound_dev_if;
+	if (!want_cookie)
+		TCP_ECN_create_request(req, tcp_hdr(skb));
+
+	if (want_cookie) {
+		isn = cookie_v6_init_sequence(sk, skb, &req->mss);
+	} else if (!isn) {
+		if (ipv6_opt_accepted(sk, skb) ||
+		    np->rxopt.bits.rxinfo || np->rxopt.bits.rxoinfo ||
+		    np->rxopt.bits.rxhlim || np->rxopt.bits.rxohlim) {
+			atomic_inc(&skb->users);
+			treq->pktopts = skb;
+		}
+		treq->iif = sk->sk_bound_dev_if;
 
-	/* So that link locals have meaning */
-	if (!sk->sk_bound_dev_if &&
-	    ipv6_addr_type(&treq->rmt_addr) & IPV6_ADDR_LINKLOCAL)
-		treq->iif = inet6_iif(skb);
+		/* So that link locals have meaning */
+		if (!sk->sk_bound_dev_if &&
+		    ipv6_addr_type(&treq->rmt_addr) & IPV6_ADDR_LINKLOCAL)
+			treq->iif = inet6_iif(skb);
 
-	if (isn == 0)
 		isn = tcp_v6_init_sequence(skb);
+	}
 
 	tcp_rsk(req)->snt_isn = isn;
 
@@ -1303,8 +1334,10 @@ static int tcp_v6_conn_request(struct sock *sk, struct sk_buff *skb)
 	if (tcp_v6_send_synack(sk, req, NULL))
 		goto drop;
 
-	inet6_csk_reqsk_queue_hash_add(sk, req, TCP_TIMEOUT_INIT);
-	return 0;
+	if (!want_cookie) {
+		inet6_csk_reqsk_queue_hash_add(sk, req, TCP_TIMEOUT_INIT);
+		return 0;
+	}
 
 drop:
 	if (req)
-- 
1.5.3.4


^ permalink raw reply related

* Re: [PATCH 2/2] ehea: add memory remove hotplug support
From: Michael Ellerman @ 2008-02-04 23:14 UTC (permalink / raw)
  To: Jan-Bernd Themann
  Cc: Jeff Garzik, Thomas Klein, Jan-Bernd Themann, netdev,
	linux-kernel, linux-ppc, Christoph Raisch, Marcus Eder
In-Reply-To: <200802041624.31228.ossthema@de.ibm.com>

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


On Mon, 2008-02-04 at 16:24 +0100, Jan-Bernd Themann wrote:
> On Monday 04 February 2008 15:46, Michael Ellerman wrote:
> > On Mon, 2008-02-04 at 14:04 +0100, Jan-Bernd Themann wrote:
> > > Add memory remove hotplug support
> 
> > > @@ -3559,6 +3578,10 @@ int __init ehea_module_init(void)
> > >  	if (ret)
> > >  		ehea_info("failed registering reboot notifier");
> > >  
> > > +	ret = register_memory_notifier(&ehea_mem_nb);
> > > +	if (ret)
> > > +		ehea_info("failed registering memory remove notifier");
> > > 
> > >  	ret = crash_shutdown_register(&ehea_crash_handler);
> > >  	if (ret)
> > >  		ehea_info("failed registering crash handler");
> > 
> > You don't do anything except print a message if the registration fails.
> > What happens when someone tries to remove memory but the memory notifier
> > wasn't registered properly? Bang?
> 
> In case the registration fails and somebody tries to free memory:
> - Driver will not remove the affected memory from the eHEA memory region
>   --> Firmware (phyp) can not free that memory (as marked as used)
>   --> Therefore the removed memory could not be used in an other partition
> 
> It makes sense to allow the driver to work anyway. Having no ethernet
> would not really be a good alternative.

Yeah I agree. I wasn't clear from the patch that no notifier -> no
memory removed. Rather than, no notifier -> memory removed and ehea
isn't told about it.

cheers

-- 
Michael Ellerman
OzLabs, IBM Australia Development Lab

wwweb: http://michael.ellerman.id.au
phone: +61 2 6212 1183 (tie line 70 21183)

We do not inherit the earth from our ancestors,
we borrow it from our children. - S.M.A.R.T Person

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

^ permalink raw reply

* [PATCH] [RFC] 3c509: convert to isa_driver and pnp_driver v3
From: Ondrej Zary @ 2008-02-04 23:02 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: netdev, Linux Kernel, Andrew Morton
In-Reply-To: <47A4D791.3050700@garzik.org>

Hello,
this patch converts 3c509 driver to isa_driver and pnp_driver. The result is 
that autoloading using udev and hibernation works with ISA PnP cards. It also 
adds hibernation support for non-PnP ISA cards.

xcvr module parameter was removed as its value was not used.

Tested using 3 ISA cards in various combinations of PnP and non-PnP modes.

Signed-off-by: Ondrej Zary <linux@rainbow-software.org>

--- linux-2.6.24-orig/drivers/net/3c509.c	2008-01-27 19:48:19.000000000 +0100
+++ linux-2.6.24-pentium/drivers/net/3c509.c	2008-02-04 22:30:37.000000000 +0100
@@ -54,25 +54,24 @@
 		v1.19a 28Oct2002 Davud Ruggiero <jdr@farfalle.com>
 			- Increase *read_eeprom udelay to workaround oops with 2 cards.
 		v1.19b 08Nov2002 Marc Zyngier <maz@wild-wind.fr.eu.org>
-		    - Introduce driver model for EISA cards.
+			- Introduce driver model for EISA cards.
+		v1.20  04Feb2008 Ondrej Zary <linux@rainbow-software.org>
+			- convert to isa_driver and pnp_driver and some cleanups
 */
 
 #define DRV_NAME	"3c509"
-#define DRV_VERSION	"1.19b"
-#define DRV_RELDATE	"08Nov2002"
+#define DRV_VERSION	"1.20"
+#define DRV_RELDATE	"04Feb2008"
 
 /* A few values that may be tweaked. */
 
 /* Time in jiffies before concluding the transmitter is hung. */
 #define TX_TIMEOUT  (400*HZ/1000)
-/* Maximum events (Rx packets, etc.) to handle at each interrupt. */
-static int max_interrupt_work = 10;
 
 #include <linux/module.h>
-#ifdef CONFIG_MCA
 #include <linux/mca.h>
-#endif
-#include <linux/isapnp.h>
+#include <linux/isa.h>
+#include <linux/pnp.h>
 #include <linux/string.h>
 #include <linux/interrupt.h>
 #include <linux/errno.h>
@@ -97,10 +96,6 @@
 
 static char version[] __initdata = DRV_NAME ".c:" DRV_VERSION " " DRV_RELDATE " becker@scyld.com\n";
 
-#if defined(CONFIG_PM) && (defined(CONFIG_MCA) || defined(CONFIG_EISA))
-#define EL3_SUSPEND
-#endif
-
 #ifdef EL3_DEBUG
 static int el3_debug = EL3_DEBUG;
 #else
@@ -111,6 +106,7 @@
  * a global variable so that the mca/eisa probe routines can increment
  * it */
 static int el3_cards = 0;
+#define EL3_MAX_CARDS 8
 
 /* To minimize the size of the driver source I only define operating
    constants if they are used several times.  You'll need the manual
@@ -119,7 +115,7 @@
 #define EL3_DATA 0x00
 #define EL3_CMD 0x0e
 #define EL3_STATUS 0x0e
-#define	 EEPROM_READ 0x80
+#define	EEPROM_READ 0x80
 
 #define EL3_IO_EXTENT	16
 
@@ -168,23 +164,31 @@
  */
 #define SKB_QUEUE_SIZE	64
 
+typedef enum { EL3_ISA, EL3_PNP, EL3_MCA, EL3_EISA } el3_cardtype;
+
 struct el3_private {
 	struct net_device_stats stats;
-	struct net_device *next_dev;
 	spinlock_t lock;
 	/* skb send-queue */
 	int head, size;
 	struct sk_buff *queue[SKB_QUEUE_SIZE];
-	enum {
-		EL3_MCA,
-		EL3_PNP,
-		EL3_EISA,
-	} type;						/* type of device */
-	struct device *dev;
+	el3_cardtype type;
 };
-static int id_port __initdata = 0x110;	/* Start with 0x110 to avoid new sound cards.*/
-static struct net_device *el3_root_dev;
+static int id_port;
+static int current_tag;
+static struct net_device *el3_devs[EL3_MAX_CARDS];
+
+/* Parameters that may be passed into the module. */
+static int debug = -1;
+static int irq[] = {-1, -1, -1, -1, -1, -1, -1, -1};
+/* Maximum events (Rx packets, etc.) to handle at each interrupt. */
+static int max_interrupt_work = 10;
+#ifdef CONFIG_PNP
+static int nopnp;
+#endif
 
+static int __init el3_common_init(struct net_device *dev);
+static void el3_common_remove (struct net_device *dev);
 static ushort id_read_eeprom(int index);
 static ushort read_eeprom(int ioaddr, int index);
 static int el3_open(struct net_device *dev);
@@ -199,23 +203,277 @@
 static void el3_down(struct net_device *dev);
 static void el3_up(struct net_device *dev);
 static const struct ethtool_ops ethtool_ops;
-#ifdef EL3_SUSPEND
+#ifdef CONFIG_PM
 static int el3_suspend(struct device *, pm_message_t);
 static int el3_resume(struct device *);
-#else
-#define el3_suspend NULL
-#define el3_resume NULL
 #endif
 
 
 /* generic device remove for all device types */
-#if defined(CONFIG_EISA) || defined(CONFIG_MCA)
 static int el3_device_remove (struct device *device);
-#endif
 #ifdef CONFIG_NET_POLL_CONTROLLER
 static void el3_poll_controller(struct net_device *dev);
 #endif
 
+/* Return 0 on success, 1 on error, 2 when found already detected PnP card */
+static int el3_isa_id_sequence(__be16 *phys_addr)
+{
+	short lrs_state = 0xff;
+	int i;
+
+	/* ISA boards are detected by sending the ID sequence to the
+	   ID_PORT.  We find cards past the first by setting the 'current_tag'
+	   on cards as they are found.  Cards with their tag set will not
+	   respond to subsequent ID sequences. */
+
+	outb(0x00, id_port);
+	outb(0x00, id_port);
+	for (i = 0; i < 255; i++) {
+		outb(lrs_state, id_port);
+		lrs_state <<= 1;
+		lrs_state = lrs_state & 0x100 ? lrs_state ^ 0xcf : lrs_state;
+	}
+	/* For the first probe, clear all board's tag registers. */
+	if (current_tag == 0)
+		outb(0xd0, id_port);
+	else				/* Otherwise kill off already-found boards. */
+		outb(0xd8, id_port);
+	if (id_read_eeprom(7) != 0x6d50)
+		return 1;
+	/* Read in EEPROM data, which does contention-select.
+	   Only the lowest address board will stay "on-line".
+	   3Com got the byte order backwards. */
+	for (i = 0; i < 3; i++)
+		phys_addr[i] = htons(id_read_eeprom(i));
+#ifdef CONFIG_PNP
+	if (!nopnp) {
+		/* The ISA PnP 3c509 cards respond to the ID sequence too.
+		   This check is needed in order not to register them twice. */
+		for (i = 0; i < el3_cards; i++) {
+			struct el3_private *lp = netdev_priv(el3_devs[i]);
+			if (lp->type == EL3_PNP && !memcmp(phys_addr, el3_devs[i]->dev_addr, ETH_ALEN)) {
+				if (el3_debug > 3)
+					printk(KERN_DEBUG "3c509 with address %02x %02x %02x %02x %02x %02x was found by ISAPnP\n",
+						phys_addr[0] & 0xff, phys_addr[0] >> 8,
+						phys_addr[1] & 0xff, phys_addr[1] >> 8,
+						phys_addr[2] & 0xff, phys_addr[2] >> 8);
+				/* Set the adaptor tag so that the next card can be found. */
+				outb(0xd0 + ++current_tag, id_port);
+				return 2;
+			}
+		}
+	}
+#endif /* CONFIG_PNP */
+	return 0;
+
+}
+
+static void __devinit el3_dev_fill(struct net_device *dev, __be16 *phys_addr,
+			           int ioaddr, int irq, int if_port,
+			           el3_cardtype type)
+{
+	struct el3_private *lp = netdev_priv(dev);
+
+	memcpy(dev->dev_addr, phys_addr, ETH_ALEN);
+	dev->base_addr = ioaddr;
+	dev->irq = irq;
+	dev->if_port = if_port;
+	lp->type = type;
+}
+
+static int __devinit el3_isa_match(struct device *pdev,
+				   unsigned int ndev)
+{
+	struct net_device *dev;
+	int ioaddr, isa_irq, if_port, err;
+	unsigned int iobase;
+	__be16 phys_addr[3];
+
+	while ((err = el3_isa_id_sequence(phys_addr)) == 2)
+		;	/* Skip to next card when PnP card found */
+	if (err == 1)
+		return 0;
+
+	iobase = id_read_eeprom(8);
+	if_port = iobase >> 14;
+	ioaddr = 0x200 + ((iobase & 0x1f) << 4);
+	if (irq[el3_cards] > 1 && irq[el3_cards] < 16)
+		isa_irq = irq[el3_cards];
+	else
+		isa_irq = id_read_eeprom(9) >> 12;
+
+	dev = alloc_etherdev(sizeof (struct el3_private));
+	if (!dev)
+		return -ENOMEM;
+
+	netdev_boot_setup_check(dev);
+
+	if (!request_region(ioaddr, EL3_IO_EXTENT, "3c509-isa")) {
+		free_netdev(dev);
+		return 0;
+	}
+
+	/* Set the adaptor tag so that the next card can be found. */
+	outb(0xd0 + ++current_tag, id_port);
+
+	/* Activate the adaptor at the EEPROM location. */
+	outb((ioaddr >> 4) | 0xe0, id_port);
+
+	EL3WINDOW(0);
+	if (inw(ioaddr) != 0x6d50) {
+		free_netdev(dev);
+		return 0;
+	}
+
+	/* Free the interrupt so that some other card can use it. */
+	outw(0x0f00, ioaddr + WN0_IRQ);
+
+	el3_dev_fill(dev, phys_addr, ioaddr, isa_irq, if_port, EL3_ISA);
+	dev_set_drvdata(pdev, dev);
+	if (el3_common_init(dev)) {
+		free_netdev(dev);
+		return 0;
+	}
+
+	el3_devs[el3_cards++] = dev;
+	return 1;
+}
+
+static int __devexit el3_isa_remove(struct device *pdev,
+				    unsigned int ndev)
+{
+	el3_device_remove(pdev);
+	dev_set_drvdata(pdev, NULL);
+	return 0;
+}
+
+#ifdef CONFIG_PM
+static int el3_isa_suspend(struct device *dev, unsigned int n,
+			   pm_message_t state)
+{
+	current_tag = 0;
+	return el3_suspend(dev, state);
+}
+
+static int el3_isa_resume(struct device *dev, unsigned int n)
+{
+	struct net_device *ndev = dev_get_drvdata(dev);
+	int ioaddr = ndev->base_addr, err;
+	__be16 phys_addr[3];
+
+	while ((err = el3_isa_id_sequence(phys_addr)) == 2)
+		;	/* Skip to next card when PnP card found */
+	if (err == 1)
+		return 0;
+	/* Set the adaptor tag so that the next card can be found. */
+	outb(0xd0 + ++current_tag, id_port);
+	/* Enable the card */
+	outb((ioaddr >> 4) | 0xe0, id_port);
+	EL3WINDOW(0);
+	if (inw(ioaddr) != 0x6d50)
+		return 1;
+	/* Free the interrupt so that some other card can use it. */
+	outw(0x0f00, ioaddr + WN0_IRQ);
+	return el3_resume(dev);
+}
+#endif
+
+static struct isa_driver el3_isa_driver = {
+	.match		= el3_isa_match,
+	.remove		= __devexit_p(el3_isa_remove),
+#ifdef CONFIG_PM
+	.suspend	= el3_isa_suspend,
+	.resume		= el3_isa_resume,
+#endif
+	.driver		= {
+		.name	= "3c509"
+	},
+};
+static int isa_registered;
+
+#ifdef CONFIG_PNP
+static struct pnp_device_id el3_pnp_ids[] = {
+	{ .id = "TCM5090" }, /* 3Com Etherlink III (TP) */
+	{ .id = "TCM5091" }, /* 3Com Etherlink III */
+	{ .id = "TCM5094" }, /* 3Com Etherlink III (combo) */
+	{ .id = "TCM5095" }, /* 3Com Etherlink III (TPO) */
+	{ .id = "TCM5098" }, /* 3Com Etherlink III (TPC) */
+	{ .id = "PNP80f7" }, /* 3Com Etherlink III compatible */
+	{ .id = "PNP80f8" }, /* 3Com Etherlink III compatible */
+	{ .id = "" }
+};
+MODULE_DEVICE_TABLE(pnp, el3_pnp_ids);
+
+static int __devinit el3_pnp_probe(struct pnp_dev *pdev,
+				    const struct pnp_device_id *id)
+{
+	short i;
+	int ioaddr, irq, if_port;
+	u16 phys_addr[3];
+	struct net_device *dev = NULL;
+	int err;
+
+	ioaddr = pnp_port_start(pdev, 0);
+	if (!request_region(ioaddr, EL3_IO_EXTENT, "3c509-pnp"))
+		return -EBUSY;
+	irq = pnp_irq(pdev, 0);
+	EL3WINDOW(0);
+	for (i = 0; i < 3; i++)
+		phys_addr[i] = htons(read_eeprom(ioaddr, i));
+	if_port = read_eeprom(ioaddr, 8) >> 14;
+	dev = alloc_etherdev(sizeof (struct el3_private));
+	if (!dev) {
+		release_region(ioaddr, EL3_IO_EXTENT);
+		return -ENOMEM;
+	}
+	SET_NETDEV_DEV(dev, &pdev->dev);
+	netdev_boot_setup_check(dev);
+
+	el3_dev_fill(dev, phys_addr, ioaddr, irq, if_port, EL3_PNP);
+	pnp_set_drvdata (pdev, dev);
+	err = el3_common_init(dev);
+
+	if (err) {
+		pnp_set_drvdata (pdev, NULL);
+		free_netdev(dev);
+		return err;
+	}
+
+	el3_devs[el3_cards++] = dev;
+	return 0;
+}
+
+static void __devexit el3_pnp_remove(struct pnp_dev *pdev)
+{
+	el3_common_remove(pnp_get_drvdata(pdev));
+	pnp_set_drvdata(pdev, NULL);
+}
+
+#ifdef CONFIG_PM
+static int el3_pnp_suspend(struct pnp_dev *pdev, pm_message_t state)
+{
+	return el3_suspend(&pdev->dev, state);
+}
+
+static int el3_pnp_resume(struct pnp_dev *pdev)
+{
+	return el3_resume(&pdev->dev);
+}
+#endif
+
+static struct pnp_driver el3_pnp_driver = {
+	.name		= "3c509",
+	.id_table	= el3_pnp_ids,
+	.probe		= el3_pnp_probe,
+	.remove		= __devexit_p(el3_pnp_remove),
+#ifdef CONFIG_PM
+	.suspend	= el3_pnp_suspend,
+	.resume		= el3_pnp_resume,
+#endif
+};
+static int pnp_registered;
+#endif /* CONFIG_PNP */
+
 #ifdef CONFIG_EISA
 static struct eisa_device_id el3_eisa_ids[] = {
 		{ "TCM5092" },
@@ -230,13 +488,14 @@
 static struct eisa_driver el3_eisa_driver = {
 		.id_table = el3_eisa_ids,
 		.driver   = {
-				.name    = "3c509",
+				.name    = "3c579",
 				.probe   = el3_eisa_probe,
 				.remove  = __devexit_p (el3_device_remove),
 				.suspend = el3_suspend,
 				.resume  = el3_resume,
 		}
 };
+static int eisa_registered;
 #endif
 
 #ifdef CONFIG_MCA
@@ -271,45 +530,9 @@
 				.resume  = el3_resume,
 		},
 };
+static int mca_registered;
 #endif /* CONFIG_MCA */
 
-#if defined(__ISAPNP__)
-static struct isapnp_device_id el3_isapnp_adapters[] __initdata = {
-	{	ISAPNP_ANY_ID, ISAPNP_ANY_ID,
-		ISAPNP_VENDOR('T', 'C', 'M'), ISAPNP_FUNCTION(0x5090),
-		(long) "3Com Etherlink III (TP)" },
-	{	ISAPNP_ANY_ID, ISAPNP_ANY_ID,
-		ISAPNP_VENDOR('T', 'C', 'M'), ISAPNP_FUNCTION(0x5091),
-		(long) "3Com Etherlink III" },
-	{	ISAPNP_ANY_ID, ISAPNP_ANY_ID,
-		ISAPNP_VENDOR('T', 'C', 'M'), ISAPNP_FUNCTION(0x5094),
-		(long) "3Com Etherlink III (combo)" },
-	{	ISAPNP_ANY_ID, ISAPNP_ANY_ID,
-		ISAPNP_VENDOR('T', 'C', 'M'), ISAPNP_FUNCTION(0x5095),
-		(long) "3Com Etherlink III (TPO)" },
-	{	ISAPNP_ANY_ID, ISAPNP_ANY_ID,
-		ISAPNP_VENDOR('T', 'C', 'M'), ISAPNP_FUNCTION(0x5098),
-		(long) "3Com Etherlink III (TPC)" },
-	{	ISAPNP_ANY_ID, ISAPNP_ANY_ID,
-		ISAPNP_VENDOR('P', 'N', 'P'), ISAPNP_FUNCTION(0x80f7),
-		(long) "3Com Etherlink III compatible" },
-	{	ISAPNP_ANY_ID, ISAPNP_ANY_ID,
-		ISAPNP_VENDOR('P', 'N', 'P'), ISAPNP_FUNCTION(0x80f8),
-		(long) "3Com Etherlink III compatible" },
-	{ }	/* terminate list */
-};
-
-static __be16 el3_isapnp_phys_addr[8][3];
-static int nopnp;
-#endif /* __ISAPNP__ */
-
-/* With the driver model introduction for EISA devices, both init
- * and cleanup have been split :
- * - EISA devices probe/remove starts in el3_eisa_probe/el3_device_remove
- * - MCA/ISA still use el3_probe
- *
- * Both call el3_common_init/el3_common_remove. */
-
 static int __init el3_common_init(struct net_device *dev)
 {
 	struct el3_private *lp = netdev_priv(dev);
@@ -360,231 +583,11 @@
 
 static void el3_common_remove (struct net_device *dev)
 {
-	struct el3_private *lp = netdev_priv(dev);
-
-	(void) lp;				/* Keep gcc quiet... */
-#if defined(__ISAPNP__)
-	if (lp->type == EL3_PNP)
-		pnp_device_detach(to_pnp_dev(lp->dev));
-#endif
-
 	unregister_netdev (dev);
 	release_region(dev->base_addr, EL3_IO_EXTENT);
 	free_netdev (dev);
 }
 
-static int __init el3_probe(int card_idx)
-{
-	struct net_device *dev;
-	struct el3_private *lp;
-	short lrs_state = 0xff, i;
-	int ioaddr, irq, if_port;
-	__be16 phys_addr[3];
-	static int current_tag;
-	int err = -ENODEV;
-#if defined(__ISAPNP__)
-	static int pnp_cards;
-	struct pnp_dev *idev = NULL;
-	int pnp_found = 0;
-
-	if (nopnp == 1)
-		goto no_pnp;
-
-	for (i=0; el3_isapnp_adapters[i].vendor != 0; i++) {
-		int j;
-		while ((idev = pnp_find_dev(NULL,
-					    el3_isapnp_adapters[i].vendor,
-					    el3_isapnp_adapters[i].function,
-					    idev))) {
-			if (pnp_device_attach(idev) < 0)
-				continue;
-			if (pnp_activate_dev(idev) < 0) {
-__again:
-				pnp_device_detach(idev);
-				continue;
-			}
-			if (!pnp_port_valid(idev, 0) || !pnp_irq_valid(idev, 0))
-				goto __again;
-			ioaddr = pnp_port_start(idev, 0);
-			if (!request_region(ioaddr, EL3_IO_EXTENT, "3c509 PnP")) {
-				pnp_device_detach(idev);
-				return -EBUSY;
-			}
-			irq = pnp_irq(idev, 0);
-			if (el3_debug > 3)
-				printk ("ISAPnP reports %s at i/o 0x%x, irq %d\n",
-					(char*) el3_isapnp_adapters[i].driver_data, ioaddr, irq);
-			EL3WINDOW(0);
-			for (j = 0; j < 3; j++)
-				el3_isapnp_phys_addr[pnp_cards][j] =
-					phys_addr[j] =
-						htons(read_eeprom(ioaddr, j));
-			if_port = read_eeprom(ioaddr, 8) >> 14;
-			dev = alloc_etherdev(sizeof (struct el3_private));
-			if (!dev) {
-					release_region(ioaddr, EL3_IO_EXTENT);
-					pnp_device_detach(idev);
-					return -ENOMEM;
-			}
-
-			SET_NETDEV_DEV(dev, &idev->dev);
-			pnp_cards++;
-
-			netdev_boot_setup_check(dev);
-			pnp_found = 1;
-			goto found;
-		}
-	}
-no_pnp:
-#endif /* __ISAPNP__ */
-
-	/* Select an open I/O location at 0x1*0 to do contention select. */
-	for ( ; id_port < 0x200; id_port += 0x10) {
-		if (!request_region(id_port, 1, "3c509"))
-			continue;
-		outb(0x00, id_port);
-		outb(0xff, id_port);
-		if (inb(id_port) & 0x01){
-			release_region(id_port, 1);
-			break;
-		} else
-			release_region(id_port, 1);
-	}
-	if (id_port >= 0x200) {
-		/* Rare -- do we really need a warning? */
-		printk(" WARNING: No I/O port available for 3c509 activation.\n");
-		return -ENODEV;
-	}
-
-	/* Next check for all ISA bus boards by sending the ID sequence to the
-	   ID_PORT.  We find cards past the first by setting the 'current_tag'
-	   on cards as they are found.  Cards with their tag set will not
-	   respond to subsequent ID sequences. */
-
-	outb(0x00, id_port);
-	outb(0x00, id_port);
-	for(i = 0; i < 255; i++) {
-		outb(lrs_state, id_port);
-		lrs_state <<= 1;
-		lrs_state = lrs_state & 0x100 ? lrs_state ^ 0xcf : lrs_state;
-	}
-
-	/* For the first probe, clear all board's tag registers. */
-	if (current_tag == 0)
-		outb(0xd0, id_port);
-	else				/* Otherwise kill off already-found boards. */
-		outb(0xd8, id_port);
-
-	if (id_read_eeprom(7) != 0x6d50) {
-		return -ENODEV;
-	}
-
-	/* Read in EEPROM data, which does contention-select.
-	   Only the lowest address board will stay "on-line".
-	   3Com got the byte order backwards. */
-	for (i = 0; i < 3; i++) {
-		phys_addr[i] = htons(id_read_eeprom(i));
-	}
-
-#if defined(__ISAPNP__)
-	if (nopnp == 0) {
-		/* The ISA PnP 3c509 cards respond to the ID sequence.
-		   This check is needed in order not to register them twice. */
-		for (i = 0; i < pnp_cards; i++) {
-			if (phys_addr[0] == el3_isapnp_phys_addr[i][0] &&
-			    phys_addr[1] == el3_isapnp_phys_addr[i][1] &&
-			    phys_addr[2] == el3_isapnp_phys_addr[i][2])
-			{
-				if (el3_debug > 3)
-					printk("3c509 with address %02x %02x %02x %02x %02x %02x was found by ISAPnP\n",
-						phys_addr[0] & 0xff, phys_addr[0] >> 8,
-						phys_addr[1] & 0xff, phys_addr[1] >> 8,
-						phys_addr[2] & 0xff, phys_addr[2] >> 8);
-				/* Set the adaptor tag so that the next card can be found. */
-				outb(0xd0 + ++current_tag, id_port);
-				goto no_pnp;
-			}
-		}
-	}
-#endif /* __ISAPNP__ */
-
-	{
-		unsigned int iobase = id_read_eeprom(8);
-		if_port = iobase >> 14;
-		ioaddr = 0x200 + ((iobase & 0x1f) << 4);
-	}
-	irq = id_read_eeprom(9) >> 12;
-
-	dev = alloc_etherdev(sizeof (struct el3_private));
-	if (!dev)
-		return -ENOMEM;
-
-	netdev_boot_setup_check(dev);
-
-	/* Set passed-in IRQ or I/O Addr. */
-	if (dev->irq > 1  &&  dev->irq < 16)
-			irq = dev->irq;
-
-	if (dev->base_addr) {
-		if (dev->mem_end == 0x3c509 	/* Magic key */
-		    && dev->base_addr >= 0x200  &&  dev->base_addr <= 0x3e0)
-			ioaddr = dev->base_addr & 0x3f0;
-		else if (dev->base_addr != ioaddr)
-			goto out;
-	}
-
-	if (!request_region(ioaddr, EL3_IO_EXTENT, "3c509")) {
-		err = -EBUSY;
-		goto out;
-	}
-
-	/* Set the adaptor tag so that the next card can be found. */
-	outb(0xd0 + ++current_tag, id_port);
-
-	/* Activate the adaptor at the EEPROM location. */
-	outb((ioaddr >> 4) | 0xe0, id_port);
-
-	EL3WINDOW(0);
-	if (inw(ioaddr) != 0x6d50)
-		goto out1;
-
-	/* Free the interrupt so that some other card can use it. */
-	outw(0x0f00, ioaddr + WN0_IRQ);
-
-#if defined(__ISAPNP__)
- found:							/* PNP jumps here... */
-#endif /* __ISAPNP__ */
-
-	memcpy(dev->dev_addr, phys_addr, sizeof(phys_addr));
-	dev->base_addr = ioaddr;
-	dev->irq = irq;
-	dev->if_port = if_port;
-	lp = netdev_priv(dev);
-#if defined(__ISAPNP__)
-	lp->dev = &idev->dev;
-	if (pnp_found)
-		lp->type = EL3_PNP;
-#endif
-	err = el3_common_init(dev);
-
-	if (err)
-		goto out1;
-
-	el3_cards++;
-	lp->next_dev = el3_root_dev;
-	el3_root_dev = dev;
-	return 0;
-
-out1:
-#if defined(__ISAPNP__)
-	if (idev)
-		pnp_device_detach(idev);
-#endif
-out:
-	free_netdev(dev);
-	return err;
-}
-
 #ifdef CONFIG_MCA
 static int __init el3_mca_probe(struct device *device)
 {
@@ -613,7 +616,7 @@
 	irq = pos5 & 0x0f;
 
 
-	printk("3c529: found %s at slot %d\n",
+	printk(KERN_INFO "3c529: found %s at slot %d\n",
 		   el3_mca_adapter_names[mdev->index], slot + 1);
 
 	/* claim the slot */
@@ -626,7 +629,7 @@
 	irq = mca_device_transform_irq(mdev, irq);
 	ioaddr = mca_device_transform_ioport(mdev, ioaddr);
 	if (el3_debug > 2) {
-			printk("3c529: irq %d  ioaddr 0x%x  ifport %d\n", irq, ioaddr, if_port);
+			printk(KERN_DEBUG "3c529: irq %d  ioaddr 0x%x  ifport %d\n", irq, ioaddr, if_port);
 	}
 	EL3WINDOW(0);
 	for (i = 0; i < 3; i++) {
@@ -641,13 +644,7 @@
 
 	netdev_boot_setup_check(dev);
 
-	memcpy(dev->dev_addr, phys_addr, sizeof(phys_addr));
-	dev->base_addr = ioaddr;
-	dev->irq = irq;
-	dev->if_port = if_port;
-	lp = netdev_priv(dev);
-	lp->dev = device;
-	lp->type = EL3_MCA;
+	el3_dev_fill(dev, phys_addr, ioaddr, irq, if_port, EL3_MCA);
 	device->driver_data = dev;
 	err = el3_common_init(dev);
 
@@ -657,7 +654,7 @@
 		return -ENOMEM;
 	}
 
-	el3_cards++;
+	el3_devs[el3_cards++] = dev;
 	return 0;
 }
 
@@ -678,7 +675,7 @@
 	edev = to_eisa_device (device);
 	ioaddr = edev->base_addr;
 
-	if (!request_region(ioaddr, EL3_IO_EXTENT, "3c509"))
+	if (!request_region(ioaddr, EL3_IO_EXTENT, "3c579-eisa"))
 		return -EBUSY;
 
 	/* Change the register set to the configuration window 0. */
@@ -700,13 +697,7 @@
 
 	netdev_boot_setup_check(dev);
 
-	memcpy(dev->dev_addr, phys_addr, sizeof(phys_addr));
-	dev->base_addr = ioaddr;
-	dev->irq = irq;
-	dev->if_port = if_port;
-	lp = netdev_priv(dev);
-	lp->dev = device;
-	lp->type = EL3_EISA;
+	el3_dev_fill(dev, phys_addr, ioaddr, irq, if_port, EL3_EISA);
 	eisa_set_drvdata (edev, dev);
 	err = el3_common_init(dev);
 
@@ -716,12 +707,11 @@
 		return err;
 	}
 
-	el3_cards++;
+	el3_devs[el3_cards++] = dev;
 	return 0;
 }
 #endif
 
-#if defined(CONFIG_EISA) || defined(CONFIG_MCA)
 /* This remove works for all device types.
  *
  * The net dev must be stored in the driver_data field */
@@ -734,7 +724,6 @@
 	el3_common_remove (dev);
 	return 0;
 }
-#endif
 
 /* Read a word from the EEPROM using the regular EEPROM access register.
    Assume that we are in register window zero.
@@ -749,7 +738,7 @@
 }
 
 /* Read a word from the EEPROM when in the ISA ID probe state. */
-static ushort __init id_read_eeprom(int index)
+static ushort id_read_eeprom(int index)
 {
 	int bit, word = 0;
 
@@ -765,7 +754,7 @@
 		word = (word << 1) + (inb(id_port) & 0x01);
 
 	if (el3_debug > 3)
-		printk("  3c509 EEPROM word %d %#4.4x.\n", index, word);
+		printk(KERN_DEBUG "  3c509 EEPROM word %d %#4.4x.\n", index, word);
 
 	return word;
 }
@@ -787,13 +776,13 @@
 
 	EL3WINDOW(0);
 	if (el3_debug > 3)
-		printk("%s: Opening, IRQ %d	 status@%x %4.4x.\n", dev->name,
+		printk(KERN_DEBUG "%s: Opening, IRQ %d	 status@%x %4.4x.\n", dev->name,
 			   dev->irq, ioaddr + EL3_STATUS, inw(ioaddr + EL3_STATUS));
 
 	el3_up(dev);
 
 	if (el3_debug > 3)
-		printk("%s: Opened 3c509  IRQ %d  status %4.4x.\n",
+		printk(KERN_DEBUG "%s: Opened 3c509  IRQ %d  status %4.4x.\n",
 			   dev->name, dev->irq, inw(ioaddr + EL3_STATUS));
 
 	return 0;
@@ -806,7 +795,7 @@
 	int ioaddr = dev->base_addr;
 
 	/* Transmitter timeout, serious problems. */
-	printk("%s: transmit timed out, Tx_status %2.2x status %4.4x "
+	printk(KERN_WARNING "%s: transmit timed out, Tx_status %2.2x status %4.4x "
 		   "Tx FIFO room %d.\n",
 		   dev->name, inb(ioaddr + TX_STATUS), inw(ioaddr + EL3_STATUS),
 		   inw(ioaddr + TX_FREE));
@@ -831,7 +820,7 @@
 	lp->stats.tx_bytes += skb->len;
 
 	if (el3_debug > 4) {
-		printk("%s: el3_start_xmit(length = %u) called, status %4.4x.\n",
+		printk(KERN_DEBUG "%s: el3_start_xmit(length = %u) called, status %4.4x.\n",
 			   dev->name, skb->len, inw(ioaddr + EL3_STATUS));
 	}
 #if 0
@@ -840,7 +829,7 @@
 		ushort status = inw(ioaddr + EL3_STATUS);
 		if (status & 0x0001 		/* IRQ line active, missed one. */
 			&& inw(ioaddr + EL3_STATUS) & 1) { 			/* Make sure. */
-			printk("%s: Missed interrupt, status then %04x now %04x"
+			printk(KERN_DEBUG "%s: Missed interrupt, status then %04x now %04x"
 				   "  Tx %2.2x Rx %4.4x.\n", dev->name, status,
 				   inw(ioaddr + EL3_STATUS), inb(ioaddr + TX_STATUS),
 				   inw(ioaddr + RX_STATUS));
@@ -914,7 +903,7 @@
 
 	if (el3_debug > 4) {
 		status = inw(ioaddr + EL3_STATUS);
-		printk("%s: interrupt, status %4.4x.\n", dev->name, status);
+		printk(KERN_DEBUG "%s: interrupt, status %4.4x.\n", dev->name, status);
 	}
 
 	while ((status = inw(ioaddr + EL3_STATUS)) &
@@ -925,7 +914,7 @@
 
 		if (status & TxAvailable) {
 			if (el3_debug > 5)
-				printk("	TX room bit was handled.\n");
+				printk(KERN_DEBUG "	TX room bit was handled.\n");
 			/* There's room in the FIFO for a full-sized packet. */
 			outw(AckIntr | TxAvailable, ioaddr + EL3_CMD);
 			netif_wake_queue (dev);
@@ -964,7 +953,7 @@
 		}
 
 		if (--i < 0) {
-			printk("%s: Infinite loop in interrupt, status %4.4x.\n",
+			printk(KERN_ERR "%s: Infinite loop in interrupt, status %4.4x.\n",
 				   dev->name, status);
 			/* Clear all interrupts. */
 			outw(AckIntr | 0xFF, ioaddr + EL3_CMD);
@@ -975,7 +964,7 @@
 	}
 
 	if (el3_debug > 4) {
-		printk("%s: exiting interrupt, status %4.4x.\n", dev->name,
+		printk(KERN_DEBUG "%s: exiting interrupt, status %4.4x.\n", dev->name,
 			   inw(ioaddr + EL3_STATUS));
 	}
 	spin_unlock(&lp->lock);
@@ -1450,7 +1439,7 @@
 }
 
 /* Power Management support functions */
-#ifdef EL3_SUSPEND
+#ifdef CONFIG_PM
 
 static int
 el3_suspend(struct device *pdev, pm_message_t state)
@@ -1500,79 +1489,102 @@
 	return 0;
 }
 
-#endif /* EL3_SUSPEND */
-
-/* Parameters that may be passed into the module. */
-static int debug = -1;
-static int irq[] = {-1, -1, -1, -1, -1, -1, -1, -1};
-static int xcvr[] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1};
+#endif /* CONFIG_PM */
 
 module_param(debug,int, 0);
 module_param_array(irq, int, NULL, 0);
-module_param_array(xcvr, int, NULL, 0);
 module_param(max_interrupt_work, int, 0);
 MODULE_PARM_DESC(debug, "debug level (0-6)");
 MODULE_PARM_DESC(irq, "IRQ number(s) (assigned)");
-MODULE_PARM_DESC(xcvr,"transceiver(s) (0=internal, 1=external)");
 MODULE_PARM_DESC(max_interrupt_work, "maximum events handled per interrupt");
-#if defined(__ISAPNP__)
+#ifdef CONFIG_PNP
 module_param(nopnp, int, 0);
 MODULE_PARM_DESC(nopnp, "disable ISA PnP support (0-1)");
-MODULE_DEVICE_TABLE(isapnp, el3_isapnp_adapters);
-#endif	/* __ISAPNP__ */
-MODULE_DESCRIPTION("3Com Etherlink III (3c509, 3c509B) ISA/PnP ethernet driver");
+#endif	/* CONFIG_PNP */
+MODULE_DESCRIPTION("3Com Etherlink III (3c509, 3c509B, 3c529, 3c579) ethernet driver");
 MODULE_LICENSE("GPL");
 
 static int __init el3_init_module(void)
 {
 	int ret = 0;
-	el3_cards = 0;
 
 	if (debug >= 0)
 		el3_debug = debug;
 
-	el3_root_dev = NULL;
-	while (el3_probe(el3_cards) == 0) {
-		if (irq[el3_cards] > 1)
-			el3_root_dev->irq = irq[el3_cards];
-		if (xcvr[el3_cards] >= 0)
-			el3_root_dev->if_port = xcvr[el3_cards];
-		el3_cards++;
+#ifdef CONFIG_PNP
+	if (!nopnp) {
+		ret = pnp_register_driver(&el3_pnp_driver);
+		if (!ret)
+			pnp_registered = 1;
+	}
+#endif
+	/* Select an open I/O location at 0x1*0 to do ISA contention select. */
+	/* Start with 0x110 to avoid some sound cards.*/
+	for (id_port = 0x110 ; id_port < 0x200; id_port += 0x10) {
+		if (!request_region(id_port, 1, "3c509-control"))
+			continue;
+		outb(0x00, id_port);
+		outb(0xff, id_port);
+		if (inb(id_port) & 0x01)
+			break;
+		else
+			release_region(id_port, 1);
+	}
+	if (id_port >= 0x200) {
+		id_port = 0;
+		printk(KERN_ERR "No I/O port available for 3c509 activation.\n");
+	} else {
+		ret = isa_register_driver(&el3_isa_driver, EL3_MAX_CARDS);
+		if (!ret)
+			isa_registered = 1;
 	}
-
 #ifdef CONFIG_EISA
 	ret = eisa_driver_register(&el3_eisa_driver);
+	if (!ret)
+		eisa_registeted = 1;
 #endif
 #ifdef CONFIG_MCA
-	{
-		int err = mca_register_driver(&el3_mca_driver);
-		if (ret == 0)
-			ret = err;
-	}
+	ret = mca_register_driver(&el3_mca_driver);
+	if (!ret)
+		mca_registered = 1;
+#endif
+
+#ifdef CONFIG_PNP
+	if (pnp_registered)
+		ret = 0;
+#endif
+	if (isa_registered)
+		ret = 0;
+#ifdef CONFIG_EISA
+	if (eisa_registered)
+		ret = 0;
+#endif
+#ifdef CONFIG_MCA
+	if (mca_registered)
+		ret = 0;
 #endif
 	return ret;
 }
 
 static void __exit el3_cleanup_module(void)
 {
-	struct net_device *next_dev;
-
-	while (el3_root_dev) {
-		struct el3_private *lp = netdev_priv(el3_root_dev);
-
-		next_dev = lp->next_dev;
-		el3_common_remove (el3_root_dev);
-		el3_root_dev = next_dev;
-	}
-
+#ifdef CONFIG_PNP
+	if (pnp_registered)
+		pnp_unregister_driver(&el3_pnp_driver);
+#endif
+	if (isa_registered)
+		isa_unregister_driver(&el3_isa_driver);
+	if (id_port)
+		release_region(id_port, 1);
 #ifdef CONFIG_EISA
-	eisa_driver_unregister (&el3_eisa_driver);
+	if (eisa_registered)
+		eisa_driver_unregister (&el3_eisa_driver);
 #endif
 #ifdef CONFIG_MCA
-	mca_unregister_driver(&el3_mca_driver);
+	if (mca_registered)
+		mca_unregister_driver(&el3_mca_driver);
 #endif
 }
 
 module_init (el3_init_module);
 module_exit (el3_cleanup_module);
-


-- 
Ondrej Zary

^ permalink raw reply

* [PATCH] Add IPv6 support to TCP SYN cookies
From: Glenn Griffin @ 2008-02-04 23:01 UTC (permalink / raw)
  To: netdev, linux-kernel; +Cc: Andi Kleen

Here is a reworked implementation that restricts the code to the ipv6 module as
Andi suggested.  Uses the same CONFIG and sysctl variables as the ipv4
implementation.

Signed-off-by: Glenn Griffin <ggriffin.kernel@gmail.com>
---
 include/net/tcp.h     |    6 +
 net/ipv6/Makefile     |    1 +
 net/ipv6/syncookies.c |  273 +++++++++++++++++++++++++++++++++++++++++++++++++
 net/ipv6/tcp_ipv6.c   |   77 ++++++++++----
 4 files changed, 335 insertions(+), 22 deletions(-)
 create mode 100644 net/ipv6/syncookies.c

diff --git a/include/net/tcp.h b/include/net/tcp.h
index cb5b033..d7f620c 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -436,6 +436,11 @@ extern struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb,
 extern __u32 cookie_v4_init_sequence(struct sock *sk, struct sk_buff *skb, 
 				     __u16 *mss);
 
+/* From net/ipv6/syncookies.c */
+extern struct sock *cookie_v6_check(struct sock *sk, struct sk_buff *skb);
+extern __u32 cookie_v6_init_sequence(struct sock *sk, struct sk_buff *skb,
+				     __u16 *mss);
+
 /* tcp_output.c */
 
 extern void __tcp_push_pending_frames(struct sock *sk, unsigned int cur_mss,
@@ -1337,6 +1342,7 @@ extern int tcp_proc_register(struct tcp_seq_afinfo *afinfo);
 extern void tcp_proc_unregister(struct tcp_seq_afinfo *afinfo);
 
 extern struct request_sock_ops tcp_request_sock_ops;
+extern struct request_sock_ops tcp6_request_sock_ops;
 
 extern int tcp_v4_destroy_sock(struct sock *sk);
 
diff --git a/net/ipv6/Makefile b/net/ipv6/Makefile
index 87c23a7..d1a1056 100644
--- a/net/ipv6/Makefile
+++ b/net/ipv6/Makefile
@@ -15,6 +15,7 @@ ipv6-$(CONFIG_XFRM) += xfrm6_policy.o xfrm6_state.o xfrm6_input.o \
 ipv6-$(CONFIG_NETFILTER) += netfilter.o
 ipv6-$(CONFIG_IPV6_MULTIPLE_TABLES) += fib6_rules.o
 ipv6-$(CONFIG_PROC_FS) += proc.o
+ipv6-$(CONFIG_SYN_COOKIES) += syncookies.o
 
 ipv6-objs += $(ipv6-y)
 
diff --git a/net/ipv6/syncookies.c b/net/ipv6/syncookies.c
new file mode 100644
index 0000000..521c9da
--- /dev/null
+++ b/net/ipv6/syncookies.c
@@ -0,0 +1,273 @@
+/*
+ *  IPv6 Syncookies implementation for the Linux kernel
+ *
+ *  Authors:
+ *  Glenn Griffin	<ggriffin.kernel@gmail.com>
+ *
+ *  Based on IPv4 implementation by Andi Kleen
+ *  linux/net/ipv4/syncookies.c
+ *
+ *	This program is free software; you can redistribute it and/or
+ *      modify it under the terms of the GNU General Public License
+ *      as published by the Free Software Foundation; either version
+ *      2 of the License, or (at your option) any later version.
+ *
+ */
+
+#include <linux/tcp.h>
+#include <linux/random.h>
+#include <linux/cryptohash.h>
+#include <linux/kernel.h>
+#include <net/ipv6.h>
+#include <net/tcp.h>
+
+extern int sysctl_tcp_syncookies;
+
+static __u32 syncookie_secret[2][16-10+SHA_DIGEST_WORDS];
+
+static __init int init_syncookies(void)
+{
+	get_random_bytes(syncookie_secret, sizeof(syncookie_secret));
+	return 0;
+}
+module_init(init_syncookies);
+
+#define COOKIEBITS 24	/* Upper bits store count */
+#define COOKIEMASK (((__u32)1 << COOKIEBITS) - 1)
+
+/*
+ * This table has to be sorted and terminated with (__u16)-1.
+ * XXX generate a better table.
+ * Unresolved Issues: HIPPI with a 64k MSS is not well supported.
+ * 
+ * Taken directly from ipv4 implementation. 
+ * Should this list be modified for ipv6 use or is it close enough?
+ * rfc 2460 8.3 suggests mss values 20 bytes less than ipv4 counterpart
+ */
+static __u16 const msstab[] = {
+	64 - 1,
+	256 - 1,
+	512 - 1,
+	536 - 1,
+	1024 - 1,
+	1440 - 1,
+	1460 - 1,
+	4312 - 1,
+	(__u16)-1
+};
+/* The number doesn't include the -1 terminator */
+#define NUM_MSS (ARRAY_SIZE(msstab) - 1)
+
+/*
+ * This (misnamed) value is the age of syncookie which is permitted.
+ * Its ideal value should be dependent on TCP_TIMEOUT_INIT and
+ * sysctl_tcp_retries1. It's a rather complicated formula (exponential
+ * backoff) to compute at runtime so it's currently hardcoded here.
+ */
+#define COUNTER_TRIES 4
+
+static inline struct sock *get_cookie_sock(struct sock *sk, struct sk_buff *skb,
+					   struct request_sock *req,
+					   struct dst_entry *dst)
+{
+	struct inet_connection_sock *icsk = inet_csk(sk);
+	struct sock *child;
+
+	child = icsk->icsk_af_ops->syn_recv_sock(sk, skb, req, dst);
+	if (child)
+		inet_csk_reqsk_queue_add(sk, req, child);
+	else
+		reqsk_free(req);
+
+	return child;
+}
+
+static u32 cookie_hash(struct in6_addr *saddr, struct in6_addr *daddr,
+		       __be16 sport, __be16 dport, u32 count, int c)
+{
+	__u32 tmp[16 + 5 + SHA_WORKSPACE_WORDS];
+
+	/*
+	 * we have 320 bits of information to hash, copy in the remaining
+	 * 192 bits required for sha_transform, from the syncookie_secret
+	 * and overwrite the digest with the secret
+	 */
+	memcpy(tmp + 10, syncookie_secret[c], sizeof(syncookie_secret[c]));
+	memcpy(tmp, saddr, 16);
+	memcpy(tmp + 4, daddr, 16);
+	tmp[8] = ((__force u32)sport << 16) + (__force u32)dport;
+	tmp[9] = count;
+	sha_transform(tmp + 16, (__u8 *)tmp, tmp + 16 + 5);
+
+	return tmp[17];
+}
+
+static __u32 secure_tcp_syn_cookie(struct in6_addr *saddr, struct in6_addr *daddr,
+				   __be16 sport, __be16 dport, __u32 sseq,
+				   __u32 count, __u32 data)
+{
+	return (cookie_hash(saddr, daddr, sport, dport, 0, 0) +
+		sseq + (count << COOKIEBITS) +
+		((cookie_hash(saddr, daddr, sport, dport, count, 1) + data)
+		& COOKIEMASK));
+}
+
+static __u32 check_tcp_syn_cookie(__u32 cookie, struct in6_addr *saddr,
+				  struct in6_addr *daddr, __be16 sport,
+				  __be16 dport, __u32 sseq, __u32 count,
+				  __u32 maxdiff)
+{
+	__u32 diff;
+
+	cookie -= cookie_hash(saddr, daddr, sport, dport, 0, 0) + sseq;
+
+	diff = (count - (cookie >> COOKIEBITS)) & ((__u32) -1 >> COOKIEBITS);
+	if (diff >= maxdiff)
+		return (__u32)-1;
+
+	return (cookie -
+		cookie_hash(saddr, daddr, sport, dport, count - diff, 1))
+		& COOKIEMASK;
+}
+
+__u32 cookie_v6_init_sequence(struct sock *sk, struct sk_buff *skb, __u16 *mssp)
+{
+	struct ipv6hdr *iph = ipv6_hdr(skb);
+	const struct tcphdr *th = tcp_hdr(skb);
+	int mssind;
+	const __u16 mss = *mssp;
+
+	tcp_sk(sk)->last_synq_overflow = jiffies;
+
+	for (mssind = 0; mss > msstab[mssind + 1]; mssind++)
+		;
+	*mssp = msstab[mssind] + 1;
+
+	NET_INC_STATS_BH(LINUX_MIB_SYNCOOKIESSENT);
+
+	return secure_tcp_syn_cookie(&iph->saddr, &iph->daddr, th->source,
+				     th->dest, ntohl(th->seq),
+				     jiffies / (HZ * 60), mssind);
+}
+
+static inline int cookie_check(struct sk_buff *skb, __u32 cookie)
+{
+	struct ipv6hdr *iph = ipv6_hdr(skb);
+	const struct tcphdr *th = tcp_hdr(skb);
+	__u32 seq = ntohl(th->seq) - 1;
+	__u32 mssind = check_tcp_syn_cookie(cookie, &iph->saddr, &iph->daddr,
+					    th->source, th->dest, seq,
+					    jiffies / (HZ * 60), COUNTER_TRIES);
+
+	return mssind < NUM_MSS ? msstab[mssind] + 1 : 0;
+}
+
+struct sock *cookie_v6_check(struct sock *sk, struct sk_buff *skb)
+{
+	struct inet_request_sock *ireq;
+	struct inet6_request_sock *ireq6;
+	struct tcp_request_sock *treq;
+	struct ipv6_pinfo *np = inet6_sk(sk);
+	struct tcp_sock *tp = tcp_sk(sk);
+	const struct tcphdr *th = tcp_hdr(skb);
+	__u32 cookie = ntohl(th->ack_seq) - 1;
+	struct sock *ret = sk;
+	struct request_sock *req;
+	int mss;
+	struct dst_entry *dst;
+	__u8 rcv_wscale;
+
+	if (!sysctl_tcp_syncookies || !th->ack)
+		goto out;
+
+	if (time_after(jiffies, tp->last_synq_overflow + TCP_TIMEOUT_INIT) ||
+		(mss = cookie_check(skb, cookie)) == 0) {
+		NET_INC_STATS_BH(LINUX_MIB_SYNCOOKIESFAILED);
+		goto out;
+	}
+
+	NET_INC_STATS_BH(LINUX_MIB_SYNCOOKIESRECV);
+
+	ret = NULL;
+	req = inet6_reqsk_alloc(&tcp6_request_sock_ops);
+	if (!req)
+		goto out;
+
+	ireq = inet_rsk(req);
+	ireq6 = inet6_rsk(req);
+	treq = tcp_rsk(req);
+	ireq6->pktopts = NULL;
+
+	if (security_inet_conn_request(sk, skb, req)) {
+		reqsk_free(req);
+		goto out;
+	}
+
+	req->mss = mss;
+	ireq->rmt_port = th->source;
+	ipv6_addr_copy(&ireq6->rmt_addr, &ipv6_hdr(skb)->saddr);
+	ipv6_addr_copy(&ireq6->loc_addr, &ipv6_hdr(skb)->daddr);
+	if (ipv6_opt_accepted(sk, skb) ||
+	    np->rxopt.bits.rxinfo || np->rxopt.bits.rxoinfo ||
+	    np->rxopt.bits.rxhlim || np->rxopt.bits.rxohlim) {
+		atomic_inc(&skb->users);
+		ireq6->pktopts = skb;
+	}
+
+	ireq6->iif = sk->sk_bound_dev_if;
+	/* So that link locals have meaning */
+	if (!sk->sk_bound_dev_if &&
+	    ipv6_addr_type(&ireq6->rmt_addr) & IPV6_ADDR_LINKLOCAL)
+		ireq6->iif = inet6_iif(skb);
+
+	req->expires = 0UL;
+	req->retrans = 0;
+	ireq->snd_wscale = ireq->rcv_wscale = ireq->tstamp_ok = 0;
+	ireq->wscale_ok = ireq->sack_ok = 0;
+	treq->rcv_isn = ntohl(th->seq) - 1;
+	treq->snt_isn = cookie;
+
+	/*
+	 * We need to lookup the dst_entry to get the correct window size.
+	 * This is taken from tcp_v6_syn_recv_sock.  Somebody please enlighten
+	 * me if there is a preferred way.
+	 */
+	{
+		struct in6_addr *final_p = NULL, final;
+		struct flowi fl;
+		memset(&fl, 0, sizeof(fl));
+		fl.proto = IPPROTO_TCP;
+		ipv6_addr_copy(&fl.fl6_dst, &ireq6->rmt_addr);
+		if (np->opt && np->opt->srcrt) {
+			struct rt0_hdr *rt0 = (struct rt0_hdr *) np->opt->srcrt;
+			ipv6_addr_copy(&final, &fl.fl6_dst);
+			ipv6_addr_copy(&fl.fl6_dst, rt0->addr);
+			final_p = &final;
+		}
+		ipv6_addr_copy(&fl.fl6_src, &ireq6->loc_addr);
+		fl.oif = sk->sk_bound_dev_if;
+		fl.fl_ip_dport = inet_rsk(req)->rmt_port;
+		fl.fl_ip_sport = inet_sk(sk)->sport;
+		security_req_classify_flow(req, &fl);
+		if (ip6_dst_lookup(sk, &dst, &fl)) {
+			reqsk_free(req);
+			goto out;
+		}
+		if (final_p)
+			ipv6_addr_copy(&fl.fl6_dst, final_p);
+		if ((xfrm_lookup(&dst, &fl, sk, 0)) < 0)
+			goto out;
+	}
+
+	req->window_clamp = dst_metric(dst, RTAX_WINDOW);
+	tcp_select_initial_window(tcp_full_space(sk), req->mss,
+				  &req->rcv_wnd, &req->window_clamp,
+				  0, &rcv_wscale);
+
+	ireq->rcv_wscale = rcv_wscale;
+
+	ret = get_cookie_sock(sk, skb, req, dst);
+
+out:	return ret;
+}
+
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
index 93980c3..ad39bd1 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -520,6 +520,20 @@ done:
 	return err;
 }
 
+static inline void syn_flood_warning(struct sk_buff *skb)
+{
+#ifdef CONFIG_SYN_COOKIES
+	if (sysctl_tcp_syncookies)
+		printk(KERN_INFO
+		       "TCPv6: Possible SYN flooding on port %d. "
+		       "Sending cookies.\n", ntohs(tcp_hdr(skb)->dest));
+	else
+#endif
+		printk(KERN_INFO
+		       "TCPv6: Possible SYN flooding on port %d. "
+		       "Dropping request.\n", ntohs(tcp_hdr(skb)->dest));
+}
+
 static void tcp_v6_reqsk_destructor(struct request_sock *req)
 {
 	if (inet6_rsk(req)->pktopts)
@@ -923,7 +937,7 @@ done_opts:
 }
 #endif
 
-static struct request_sock_ops tcp6_request_sock_ops __read_mostly = {
+struct request_sock_ops tcp6_request_sock_ops __read_mostly = {
 	.family		=	AF_INET6,
 	.obj_size	=	sizeof(struct tcp6_request_sock),
 	.rtx_syn_ack	=	tcp_v6_send_synack,
@@ -1221,9 +1235,9 @@ static struct sock *tcp_v6_hnd_req(struct sock *sk,struct sk_buff *skb)
 		return NULL;
 	}
 
-#if 0 /*def CONFIG_SYN_COOKIES*/
+#ifdef CONFIG_SYN_COOKIES
 	if (!th->rst && !th->syn && th->ack)
-		sk = cookie_v6_check(sk, skb, &(IPCB(skb)->opt));
+		sk = cookie_v6_check(sk, skb);
 #endif
 	return sk;
 }
@@ -1239,6 +1253,11 @@ static int tcp_v6_conn_request(struct sock *sk, struct sk_buff *skb)
 	struct tcp_sock *tp = tcp_sk(sk);
 	struct request_sock *req = NULL;
 	__u32 isn = TCP_SKB_CB(skb)->when;
+#ifdef CONFIG_SYN_COOKIES
+	int want_cookie = 0;
+#else
+#define want_cookie 0
+#endif
 
 	if (skb->protocol == htons(ETH_P_IP))
 		return tcp_v4_conn_request(sk, skb);
@@ -1246,12 +1265,14 @@ static int tcp_v6_conn_request(struct sock *sk, struct sk_buff *skb)
 	if (!ipv6_unicast_destination(skb))
 		goto drop;
 
-	/*
-	 *	There are no SYN attacks on IPv6, yet...
-	 */
 	if (inet_csk_reqsk_queue_is_full(sk) && !isn) {
 		if (net_ratelimit())
-			printk(KERN_INFO "TCPv6: dropping request, synflood is possible\n");
+			syn_flood_warning(skb);
+#ifdef CONFIG_SYN_COOKIES
+		if (sysctl_tcp_syncookies)
+			want_cookie = 1;
+		else
+#endif
 		goto drop;
 	}
 
@@ -1272,29 +1293,39 @@ static int tcp_v6_conn_request(struct sock *sk, struct sk_buff *skb)
 
 	tcp_parse_options(skb, &tmp_opt, 0);
 
+	if (want_cookie) {
+		tcp_clear_options(&tmp_opt);
+		tmp_opt.saw_tstamp = 0;
+	}
+
 	tmp_opt.tstamp_ok = tmp_opt.saw_tstamp;
 	tcp_openreq_init(req, &tmp_opt, skb);
 
 	treq = inet6_rsk(req);
 	ipv6_addr_copy(&treq->rmt_addr, &ipv6_hdr(skb)->saddr);
 	ipv6_addr_copy(&treq->loc_addr, &ipv6_hdr(skb)->daddr);
-	TCP_ECN_create_request(req, tcp_hdr(skb));
 	treq->pktopts = NULL;
-	if (ipv6_opt_accepted(sk, skb) ||
-	    np->rxopt.bits.rxinfo || np->rxopt.bits.rxoinfo ||
-	    np->rxopt.bits.rxhlim || np->rxopt.bits.rxohlim) {
-		atomic_inc(&skb->users);
-		treq->pktopts = skb;
-	}
-	treq->iif = sk->sk_bound_dev_if;
+	if (!want_cookie)
+		TCP_ECN_create_request(req, tcp_hdr(skb));
+
+	if (want_cookie) {
+		isn = cookie_v6_init_sequence(sk, skb, &req->mss);
+	} else if (!isn) {
+		if (ipv6_opt_accepted(sk, skb) ||
+		    np->rxopt.bits.rxinfo || np->rxopt.bits.rxoinfo ||
+		    np->rxopt.bits.rxhlim || np->rxopt.bits.rxohlim) {
+			atomic_inc(&skb->users);
+			treq->pktopts = skb;
+		}
+		treq->iif = sk->sk_bound_dev_if;
 
-	/* So that link locals have meaning */
-	if (!sk->sk_bound_dev_if &&
-	    ipv6_addr_type(&treq->rmt_addr) & IPV6_ADDR_LINKLOCAL)
-		treq->iif = inet6_iif(skb);
+		/* So that link locals have meaning */
+		if (!sk->sk_bound_dev_if &&
+		    ipv6_addr_type(&treq->rmt_addr) & IPV6_ADDR_LINKLOCAL)
+			treq->iif = inet6_iif(skb);
 
-	if (isn == 0)
 		isn = tcp_v6_init_sequence(skb);
+	}
 
 	tcp_rsk(req)->snt_isn = isn;
 
@@ -1303,8 +1334,10 @@ static int tcp_v6_conn_request(struct sock *sk, struct sk_buff *skb)
 	if (tcp_v6_send_synack(sk, req, NULL))
 		goto drop;
 
-	inet6_csk_reqsk_queue_hash_add(sk, req, TCP_TIMEOUT_INIT);
-	return 0;
+	if (!want_cookie) {
+		inet6_csk_reqsk_queue_hash_add(sk, req, TCP_TIMEOUT_INIT);
+		return 0;
+	}
 
 drop:
 	if (req)
-- 
1.5.3.4

^ permalink raw reply related

* Re: [Bugme-new] [Bug 9888] New: tun device without protocol info header fails under IPv6
From: Andrew Morton @ 2008-02-04 22:53 UTC (permalink / raw)
  To: steve.zabele; +Cc: bugme-daemon, netdev, maxk
In-Reply-To: <bug-9888-10286@http.bugzilla.kernel.org/>

On Mon,  4 Feb 2008 13:46:13 -0800 (PST)
bugme-daemon@bugzilla.kernel.org wrote:

> http://bugzilla.kernel.org/show_bug.cgi?id=9888
> 
>            Summary: tun device without protocol info header fails under IPv6
>            Product: Networking
>            Version: 2.5
>      KernelVersion: >=2.6.23
>           Platform: All
>         OS/Version: Linux
>               Tree: Mainline
>             Status: NEW
>           Severity: low
>           Priority: P1
>          Component: IPV6
>         AssignedTo: yoshfuji@linux-ipv6.org
>         ReportedBy: steve.zabele@baesystems.com
> 
> 
> Latest working kernel version: None known -- appears to be a historic bug
> Earliest failing kernel version: All
> Distribution:
> Hardware Environment:
> Software Environment:
> Problem Description:
> 
> Steps to reproduce: 
> 
> Open a tun device as type TUN, set the TUN_NO_PI flag, and try sending an IPv6
> packet. The packet appears at the interface under tcpdumps, but propagates no
> further. This is because the default protocol info used for tun devices where
> the TUN_NO_PI flag is set assumes IPv4 as can be seen by the initialization at
> the top of the tun_get_user function in drivers/net/tun.c file given by
> 
>         struct tun_pi pi = { 0, __constant_htons(ETH_P_IP) };
> 
> This can easily be fixed by adding a quick check at the top of tun_get_user.
> Basically the code that used to read
> 
>         if (!(tun->flags & TUN_NO_PI)) {
>                 if ((len -= sizeof(pi)) > count)
>                         return -EINVAL;
> 
>                 if(memcpy_fromiovec((void *)&pi, iv, sizeof(pi)))
>                         return -EFAULT;
>         }
> 
> when changed to read
> 
>         if (!(tun->flags & TUN_NO_PI)) {
>                 if ((len -= sizeof(pi)) > count)
>                         return -EINVAL;
> 
>                 if(memcpy_fromiovec((void *)&pi, iv, sizeof(pi)))
>                         return -EFAULT;
>         }
>         else {
>           /* Fixup default pi if IPv6 rather than IPv4 */
>           if (((tun->flags & TUN_TYPE_MASK) == TUN_TUN_DEV) &&
>               (*(char *)(iv->iov_base)      == 0x60)) {
>             pi.proto = __constant_htons(ETH_P_IPV6);
>           }
>         }
> 
> fixes the problem. 
> 
> How do we get this in as part of the maintained codebase??
> 

Please email a tested patch prepared as described in

	Documentation/SubmittingPatches
	Documentation/SubmitChecklist
	http://www.zip.com.au/~akpm/linux/patches/stuff/tpp.txt

to

	Maxim Krasnyansky <maxk@qualcomm.com>
	"David S. Miller" <davem@davemloft.net>
	Andrew Morton <akpm@linux-foundation.org>
	netdev@vger.kernel.org

thanks.

^ permalink raw reply

* Re: [Wireless, ath5k] 2.6.24-git13 9135f1901ee6449dfe338adf6e40e9c2025b8150
From: Jiri Slaby @ 2008-02-04 22:36 UTC (permalink / raw)
  To: Dan Williams
  Cc: Oliver Pinter, John W. Linville, Bruno Randolf, netdev,
	Andrew Morton, Linus Torvalds, Linux Kernel, ath5k-devel
In-Reply-To: <1202161934.24527.5.camel@localhost.localdomain>

On 02/04/2008 10:52 PM, Dan Williams wrote:
> On Mon, 2008-02-04 at 22:34 +0100, Oliver Pinter wrote:
>> On 2/4/08, Jiri Slaby <jirislaby@gmail.com> wrote:
>>> On 02/04/2008 03:00 PM, Oliver Pinter (Pintér Olivér) wrote:
>>>> ioctl[SIOCSIWAUTH]: Operation not supported
>>>> WEXT auth param 4 value 0x0 - bind(PF_UNIX): Address already in use
>>> 4 - 0x0 is TKIP, nothing we should worry about.
>>>
>>>> ctrl_iface exists and seems to be in use - cannot override it
>>>> Delete '/var/run/wpa_supplicant/ath0' manually if it is not used anymore
>>>> Failed to initialize control interface '/var/run/wpa_supplicant'.
>>>> You may have another wpa_supplicant process already running or the file
>>> was
>>>> left by an unclean termination of wpa_supplicant in which case you will
>>> need
>>>> to manually remove this file before starting wpa_supplicant again.
>>> Have you?
>> yes

Ok, on one log it can't be bound and connected to, on the others it can be 
bound. I think you have 2 wpa/NM/whatever processes there which try to assign.

> Note that the specific behavior of the process requesting scan results
> can sometimes interact badly with the driver.  The driver most likely
> needs to cope with this (by caching the BSS list internally for example)
> and handle whatever behavior userspace programs throw at it.

The driver doesn't cope with scanning at all. It doesn't support passive scans. 
It's a mac layer who scans (sends probe request for each channel and listens for 
probe response for a while) here.

The scan results as Dan mentioned will be appreciated.

^ permalink raw reply

* Re: [PATCH] xircom_cb should return NETDEV_TX_BUSY when there are no descriptors available
From: Jeff Garzik @ 2008-02-04 22:31 UTC (permalink / raw)
  To: Erik Mouw; +Cc: netdev, Waskiewicz Jr, Peter P, jamal
In-Reply-To: <20080204212037.GB11417@gateway.home>

Erik Mouw wrote:
> On Mon, Feb 04, 2008 at 06:56:54PM +0100, Erik Mouw wrote:
>> Changes in other networking paths uncovered a bug in the xircom_cb
>> driver which made the kernel spew lots of the following error messages:
>>
>>   BUG eth1 code -5 qlen 0
>>
>> It turned out that the driver returned -EIO when there was no
>> descriptor available for sending packets. It should return
>> NETDEV_TX_BUSY instead. This was discussed on the netdev list before,
>> see http://thread.gmane.org/gmane.linux.network/84603 .
>>
>> Signed-off-by: Erik Mouw <mouw@nl.linux.org>
> 
> Forgot to tell: the patch is against 2.6.24 but should apply cleanly to
> the latest git kernel. The xircom_cb driver appears to be orphaned so
> I've send the patch to you.

Yep, that's the right thing to do...

	Jeff




^ permalink raw reply

* Re: [Wireless, ath5k] 2.6.24-git13 9135f1901ee6449dfe338adf6e40e9c2025b8150
From: Dan Williams @ 2008-02-04 21:52 UTC (permalink / raw)
  To: Oliver Pinter
  Cc: Jiri Slaby, netdev, ath5k-devel-xDcbHBWguxEUs3QNXV6qNA,
	John W. Linville, Linux Kernel, Bruno Randolf, Andrew Morton,
	Linus Torvalds
In-Reply-To: <6101e8c40802041334o20b2b391la5b0a5f557ee67c5-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>

On Mon, 2008-02-04 at 22:34 +0100, Oliver Pinter wrote:
> On 2/4/08, Jiri Slaby <jirislaby@gmail.com> wrote:
> > On 02/04/2008 03:00 PM, Oliver Pinter (Pintér Olivér) wrote:
> > > git top: 9135f1901ee6449dfe338adf6e40e9c2025b8150
> > >
> > > [  399.582185] wpa_supplicant[4383]: segfault at 30 ip 080697ca sp
> > > bf87a690 error 4 in wpa_supplicant[8048000+4c000]
> > > [  406.277199] wpa_supplicant[4384]: segfault at 30 ip 080697ca sp
> > > bfc13a30 error 4 in wpa_supplicant[8048000+4c000]
> > > [  407.586375] wpa_supplicant[4385]: segfault at 30 ip 080697ca sp
> > > bf9ed000 error 4 in wpa_supplicant[8048000+4c000]
> > > [  411.671037] wpa_supplicant[4386]: segfault at 30 ip 080697ca sp
> > > bf8f3710 error 4 in wpa_supplicant[8048000+4c000]
> > > [  412.569843] wpa_supplicant[4387]: segfault at 30 ip 080697ca sp
> > > bfc19a30 error 4 in wpa_supplicant[8048000+4c000]
> > > [  413.118874] wpa_supplicant[4388]: segfault at 30 ip 080697ca sp
> > > bfc9cab0 error 4 in wpa_supplicant[8048000+4c000]
> >
> > Seems like wpa_supplicant is broken. Is this a regression?
> 
> yes, but with madwifi is all ok
> >
> > > home:~# wpa_supplicant -Dwext -iath0 -c
> > /etc/wpa_supplicant/wpa_supplicant.conf
> >
> > ath0? udev renamed it?
> 
> yes
> >
> > > ioctl[SIOCSIWAUTH]: Operation not supported
> > > WEXT auth param 4 value 0x0 - bind(PF_UNIX): Address already in use
> >
> > 4 - 0x0 is TKIP, nothing we should worry about.
> >
> > > ctrl_iface exists and seems to be in use - cannot override it
> > > Delete '/var/run/wpa_supplicant/ath0' manually if it is not used anymore
> > > Failed to initialize control interface '/var/run/wpa_supplicant'.
> > > You may have another wpa_supplicant process already running or the file
> > was
> > > left by an unclean termination of wpa_supplicant in which case you will
> > need
> > > to manually remove this file before starting wpa_supplicant again.
> >
> > Have you?
> 
> yes
> >
> > I guess ltrace would help here. And maybe strace...
> >
> 
> strace attached and wpa_supplicant more verbose output

It doesn't look like the driver is returning _any_ scan results.  What
does '/sbin/iwlist wlan0 scan' show from the command line.  If the
driver isn't returning scan results to the supplicant, there's not much
the supplicant can do.  You may need to ensure the interface is up
before scanning.

Note that the specific behavior of the process requesting scan results
can sometimes interact badly with the driver.  The driver most likely
needs to cope with this (by caching the BSS list internally for example)
and handle whatever behavior userspace programs throw at it.

Dan

_______________________________________________
ath5k-devel mailing list
ath5k-devel@lists.ath5k.org
https://lists.ath5k.org/mailman/listinfo/ath5k-devel

^ permalink raw reply

* Re: [Wireless, ath5k] 2.6.24-git13 9135f1901ee6449dfe338adf6e40e9c2025b8150
From: Oliver Pinter @ 2008-02-04 21:40 UTC (permalink / raw)
  To: Jiri Slaby
  Cc: netdev, ath5k-devel-xDcbHBWguxEUs3QNXV6qNA, John W. Linville,
	Linux Kernel, Bruno Randolf, Andrew Morton
In-Reply-To: <6101e8c40802041334o20b2b391la5b0a5f557ee67c5-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>

On 2/4/08, Oliver Pinter <oliver.pntr-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> On 2/4/08, Jiri Slaby <jirislaby-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> > On 02/04/2008 03:00 PM, Oliver Pinter (Pintér Olivér) wrote:
> > > git top: 9135f1901ee6449dfe338adf6e40e9c2025b8150
> > >
> > > [  399.582185] wpa_supplicant[4383]: segfault at 30 ip 080697ca sp
> > > bf87a690 error 4 in wpa_supplicant[8048000+4c000]
> > > [  406.277199] wpa_supplicant[4384]: segfault at 30 ip 080697ca sp
> > > bfc13a30 error 4 in wpa_supplicant[8048000+4c000]
> > > [  407.586375] wpa_supplicant[4385]: segfault at 30 ip 080697ca sp
> > > bf9ed000 error 4 in wpa_supplicant[8048000+4c000]
> > > [  411.671037] wpa_supplicant[4386]: segfault at 30 ip 080697ca sp
> > > bf8f3710 error 4 in wpa_supplicant[8048000+4c000]
> > > [  412.569843] wpa_supplicant[4387]: segfault at 30 ip 080697ca sp
> > > bfc19a30 error 4 in wpa_supplicant[8048000+4c000]
> > > [  413.118874] wpa_supplicant[4388]: segfault at 30 ip 080697ca sp
> > > bfc9cab0 error 4 in wpa_supplicant[8048000+4c000]
> >
> > Seems like wpa_supplicant is broken. Is this a regression?
>
> yes, but with madwifi is all ok
> >
> > > home:~# wpa_supplicant -Dwext -iath0 -c
> > /etc/wpa_supplicant/wpa_supplicant.conf
> >
> > ath0? udev renamed it?
>
> yes
> >
> > > ioctl[SIOCSIWAUTH]: Operation not supported
> > > WEXT auth param 4 value 0x0 - bind(PF_UNIX): Address already in use
> >
> > 4 - 0x0 is TKIP, nothing we should worry about.
> >
> > > ctrl_iface exists and seems to be in use - cannot override it
> > > Delete '/var/run/wpa_supplicant/ath0' manually if it is not used
> anymore
> > > Failed to initialize control interface '/var/run/wpa_supplicant'.
> > > You may have another wpa_supplicant process already running or the file
> > was
> > > left by an unclean termination of wpa_supplicant in which case you will
> > need
> > > to manually remove this file before starting wpa_supplicant again.
> >
> > Have you?
>
> yes
> >
> > I guess ltrace would help here. And maybe strace...
> >
>
> strace attached and wpa_supplicant more verbose output
> --
> Thanks,
> Oliver
>
02:01.0 Ethernet controller: Atheros Communications, Inc. AR5212
802.11abg NIC (rev 01)
        Subsystem: D-Link System Inc D-Link AirPlus DWL-G520 Wireless
PCI Adapter(rev.B)
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium
>TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 168 (2500ns min, 7000ns max), Cache Line Size: 32 bytes
        Interrupt: pin A routed to IRQ 18
        Region 0: Memory at e4000000 (32-bit, non-prefetchable) [size=64K]
        Capabilities: [44] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=2 PME-

02:01.0 Ethernet controller: Atheros Communications, Inc. AR5212
802.11abg NIC (rev 01)
00: 8c 16 13 00 06 00 90 02 01 00 00 02 08 a8 00 00
10: 00 00 00 e4 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 01 50 00 00 86 11 13 3a
30: 00 00 00 00 44 00 00 00 00 00 00 00 0b 01 0a 1c
40: 00 00 00 00 01 00 c2 01 00 40 00 c6 00 00 00 00
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00


-- 
Thanks,
Oliver

^ permalink raw reply

* Re: [Wireless, ath5k] 2.6.24-git13 9135f1901ee6449dfe338adf6e40e9c2025b8150
From: Oliver Pinter @ 2008-02-04 21:34 UTC (permalink / raw)
  To: Jiri Slaby
  Cc: John W. Linville, Bruno Randolf, netdev, Andrew Morton,
	Linus Torvalds, Linux Kernel, ath5k-devel
In-Reply-To: <47A774AB.5060008@gmail.com>

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

On 2/4/08, Jiri Slaby <jirislaby@gmail.com> wrote:
> On 02/04/2008 03:00 PM, Oliver Pinter (Pintér Olivér) wrote:
> > git top: 9135f1901ee6449dfe338adf6e40e9c2025b8150
> >
> > [  399.582185] wpa_supplicant[4383]: segfault at 30 ip 080697ca sp
> > bf87a690 error 4 in wpa_supplicant[8048000+4c000]
> > [  406.277199] wpa_supplicant[4384]: segfault at 30 ip 080697ca sp
> > bfc13a30 error 4 in wpa_supplicant[8048000+4c000]
> > [  407.586375] wpa_supplicant[4385]: segfault at 30 ip 080697ca sp
> > bf9ed000 error 4 in wpa_supplicant[8048000+4c000]
> > [  411.671037] wpa_supplicant[4386]: segfault at 30 ip 080697ca sp
> > bf8f3710 error 4 in wpa_supplicant[8048000+4c000]
> > [  412.569843] wpa_supplicant[4387]: segfault at 30 ip 080697ca sp
> > bfc19a30 error 4 in wpa_supplicant[8048000+4c000]
> > [  413.118874] wpa_supplicant[4388]: segfault at 30 ip 080697ca sp
> > bfc9cab0 error 4 in wpa_supplicant[8048000+4c000]
>
> Seems like wpa_supplicant is broken. Is this a regression?

yes, but with madwifi is all ok
>
> > home:~# wpa_supplicant -Dwext -iath0 -c
> /etc/wpa_supplicant/wpa_supplicant.conf
>
> ath0? udev renamed it?

yes
>
> > ioctl[SIOCSIWAUTH]: Operation not supported
> > WEXT auth param 4 value 0x0 - bind(PF_UNIX): Address already in use
>
> 4 - 0x0 is TKIP, nothing we should worry about.
>
> > ctrl_iface exists and seems to be in use - cannot override it
> > Delete '/var/run/wpa_supplicant/ath0' manually if it is not used anymore
> > Failed to initialize control interface '/var/run/wpa_supplicant'.
> > You may have another wpa_supplicant process already running or the file
> was
> > left by an unclean termination of wpa_supplicant in which case you will
> need
> > to manually remove this file before starting wpa_supplicant again.
>
> Have you?

yes
>
> I guess ltrace would help here. And maybe strace...
>

strace attached and wpa_supplicant more verbose output
-- 
Thanks,
Oliver

[-- Attachment #2: wpa_supplicant-log --]
[-- Type: text/plain, Size: 7242 bytes --]

Initializing interface 'ath0' conf '/etc/wpa_supplicant/wpa_supplicant.conf' driver 'wext' ctrl_interface 'N/A' bridge 'N/A'
Configuration file '/etc/wpa_supplicant/wpa_supplicant.conf' -> '/etc/wpa_supplicant/wpa_supplicant.conf'
Reading configuration file '/etc/wpa_supplicant/wpa_supplicant.conf'
ctrl_interface='/var/run/wpa_supplicant'
Line: 5 - start of a new network block
ssid - hexdump_ascii(len=9):
     69 6e 65 74 40 68 6f 6d 65                        inet@home       
scan_ssid=1 (0x1)
key_mgmt: 0x2
proto: 0x2
pairwise: 0x8
group: 0x8
PSK (ASCII passphrase) - hexdump_ascii(len=19): [REMOVED]
PSK (from passphrase) - hexdump(len=32): [REMOVED]
Priority group 0
   id=0 ssid='inet@home'
Initializing interface (2) 'ath0'
EAPOL: SUPP_PAE entering state DISCONNECTED
EAPOL: KEY_RX entering state NO_KEY_RECEIVE
EAPOL: SUPP_BE entering state INITIALIZE
EAP: EAP entering state DISABLED
EAPOL: External notification - portEnabled=0
EAPOL: External notification - portValid=0
SIOCGIWRANGE: WE(compiled)=22 WE(source)ioctl[SIOCSIWAUTH]: Operation not supported
WEXT auth param 4 value 0x0 - =21 enc_capa=0xf
  capabilities: key_mgmt 0xf enc 0xf
WEXT: Operstate: linkmode=1, operstate=5
Own MAC address: 00:17:9a:d1:ee:f4
wpa_driver_wext_set_wpa
wpa_driver_wext_set_key: alg=0 key_idx=0 set_tx=0 seq_len=0 key_len=0
wpa_driver_wext_set_key: alg=0 key_idx=1 set_tx=0 seq_len=0 key_len=0
wpa_driver_wext_set_key: alg=0 key_idx=2 set_tx=0 seq_len=0 key_len=0
wpa_driver_wext_set_key: alg=0 key_idx=3 set_tx=0 seq_len=0 key_len=0
wpa_driver_wext_set_countermeasures
wpa_driver_wext_set_drop_unencrypted
Setting scan request: 0 sec 100000 usec
Added interface ath0
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
Wireless event: cmd=0x8b06 len=8
State: DISCONNECTED -> SCANNING
Starting AP scan (specific SSID)
Scan SSID - hexdump_ascii(len=9):
     69 6e 65 74 40 68 6f 6d 65                        inet@home       
Trying to get current scan results first without requesting a new scan to speed up initial association
Received 0 bytes of scan results (0 BSSes)
Scan results: 0
Selecting BSS from priority group 0
No suitable AP found.
Setting scan request: 0 sec 0 usec
Starting AP scan (broadcast SSID)
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
Wireless event: cmd=0x8b19 len=8
Received 0 bytes of scan results (0 BSSes)
Scan results: 0
Selecting BSS from priority group 0
No suitable AP found.
Setting scan request: 5 sec 0 usec
Starting AP scan (specific SSID)
Scan SSID - hexdump_ascii(len=9):
     69 6e 65 74 40 68 6f 6d 65                        inet@home       
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
Wireless event: cmd=0x8b19 len=8
Received 0 bytes of scan results (0 BSSes)
Scan results: 0
Selecting BSS from priority group 0
No suitable AP found.
Setting scan request: 5 sec 0 usec
Starting AP scan (broadcast SSID)
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
Wireless event: cmd=0x8b19 len=8
Received 0 bytes of scan results (0 BSSes)
Scan results: 0
Selecting BSS from priority group 0
No suitable AP found.
Setting scan request: 5 sec 0 usec
Starting AP scan (specific SSID)
Scan SSID - hexdump_ascii(len=9):
     69 6e 65 74 40 68 6f 6d 65                        inet@home       
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
Wireless event: cmd=0x8b19 len=8
Received 0 bytes of scan results (0 BSSes)
Scan results: 0
Selecting BSS from priority group 0
No suitable AP found.
Setting scan request: 5 sec 0 usec
Starting AP scan (broadcast SSID)
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
Wireless event: cmd=0x8b19 len=8
Received 0 bytes of scan results (0 BSSes)
Scan results: 0
Selecting BSS from priority group 0
No suitable AP found.
Setting scan request: 5 sec 0 usec
Starting AP scan (specific SSID)
Scan SSID - hexdump_ascii(len=9):
     69 6e 65 74 40 68 6f 6d 65                        inet@home       
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
Wireless event: cmd=0x8b19 len=8
Received 0 bytes of scan results (0 BSSes)
Scan results: 0
Selecting BSS from priority group 0
No suitable AP found.
Setting scan request: 5 sec 0 usec
Starting AP scan (broadcast SSID)
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
Wireless event: cmd=0x8b19 len=8
Received 0 bytes of scan results (0 BSSes)
Scan results: 0
Selecting BSS from priority group 0
No suitable AP found.
Setting scan request: 5 sec 0 usec
Starting AP scan (specific SSID)
Scan SSID - hexdump_ascii(len=9):
     69 6e 65 74 40 68 6f 6d 65                        inet@home       
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
Wireless event: cmd=0x8b19 len=8
Received 0 bytes of scan results (0 BSSes)
Scan results: 0
Selecting BSS from priority group 0
No suitable AP found.
Setting scan request: 5 sec 0 usec
Starting AP scan (broadcast SSID)
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
Wireless event: cmd=0x8b19 len=8
Received 0 bytes of scan results (0 BSSes)
Scan results: 0
Selecting BSS from priority group 0
No suitable AP found.
Setting scan request: 5 sec 0 usec
Starting AP scan (specific SSID)
Scan SSID - hexdump_ascii(len=9):
     69 6e 65 74 40 68 6f 6d 65                        inet@home       
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
Wireless event: cmd=0x8b19 len=8
Received 0 bytes of scan results (0 BSSes)
Scan results: 0
Selecting BSS from priority group 0
No suitable AP found.
Setting scan request: 5 sec 0 usec
Starting AP scan (broadcast SSID)
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
Wireless event: cmd=0x8b19 len=8
Received 0 bytes of scan results (0 BSSes)
Scan results: 0
Selecting BSS from priority group 0
No suitable AP found.
Setting scan request: 5 sec 0 usec
Starting AP scan (specific SSID)
Scan SSID - hexdump_ascii(len=9):
     69 6e 65 74 40 68 6f 6d 65                        inet@home       
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
Wireless event: cmd=0x8b19 len=8
Received 0 bytes of scan results (0 BSSes)
Scan results: 0
Selecting BSS from priority group 0
No suitable AP found.
Setting scan request: 5 sec 0 usec
Starting AP scan (broadcast SSID)
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
Wireless event: cmd=0x8b19 len=8
Received 0 bytes of scan results (0 BSSes)
Scan results: 0
Selecting BSS from priority group 0
No suitable AP found.
Setting scan request: 5 sec 0 usec
Starting AP scan (specific SSID)
Scan SSID - hexdump_ascii(len=9):
     69 6e 65 74 40 68 6f 6d 65                        inet@home       
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
Wireless event: cmd=0x8b19 len=8
Received 0 bytes of scan results (0 BSSes)
Scan results: 0
Selecting BSS from priority group 0
No suitable AP found.
Setting scan request: 5 sec 0 usec
Starting AP scan (broadcast SSID)
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
Wireless event: cmd=0x8b19 len=8
Received 0 bytes of scan results (0 BSSes)
Scan results: 0
Selecting BSS from priority group 0
No suitable AP found.
Setting scan request: 5 sec 0 usec
Starting AP scan (specific SSID)
Scan SSID - hexdump_ascii(len=9):
     69 6e 65 74 40 68 6f 6d 65                        inet@home       
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
Wireless event: cmd=0x8b19 len=8
Received 0 bytes of scan results (0 BSSes)
Scan results: 0
Selecting BSS from priority group

[-- Attachment #3: wpa_supplicant-log-strace --]
[-- Type: text/plain, Size: 40498 bytes --]

execve("/sbin/wpa_supplicant", ["wpa_supplicant", "-Dwext", "-iath0", "-c", "/etc/wpa_supplicant/wpa_supplica"..., "-dd"], [/* 15 vars */]) = 0
uname({sys="Linux", node="home", ...})  = 0
brk(0)                                  = 0x9a5d000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7fa6000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=77517, ...}) = 0
mmap2(NULL, 77517, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f93000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/i686/cmov/libssl.so.0.9.8", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\220\255"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=252768, ...}) = 0
mmap2(NULL, 255732, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7f54000
mmap2(0xb7f8f000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3a) = 0xb7f8f000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/i686/cmov/libcrypto.so.0.9.8", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300Y\3"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=1270520, ...}) = 0
mmap2(NULL, 1282904, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e1a000
mmap2(0xb7f3c000, 81920, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x122) = 0xb7f3c000
mmap2(0xb7f50000, 13144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7f50000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7e19000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/tls/i686/cmov/libdl.so.2", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20\f\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=9592, ...}) = 0
mmap2(NULL, 12404, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e15000
mmap2(0xb7e17000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0xb7e17000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/libdbus-1.so.3", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\220K\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=203740, ...}) = 0
mmap2(NULL, 203036, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7de3000
mmap2(0xb7e14000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x31) = 0xb7e14000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/tls/i686/cmov/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240O\1"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=1241392, ...}) = 0
mmap2(NULL, 1247388, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7cb2000
mmap2(0xb7dd9000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x127) = 0xb7dd9000
mmap2(0xb7de0000, 10396, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7de0000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/libz.so.1", O_RDONLY)    = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\340\26"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=78500, ...}) = 0
mmap2(NULL, 81456, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7c9e000
mmap2(0xb7cb1000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12) = 0xb7cb1000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7c9d000
mprotect(0xb7dd9000, 20480, PROT_READ)  = 0
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7c9d940, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
munmap(0xb7f93000, 77517)               = 0
brk(0)                                  = 0x9a5d000
brk(0x9a7e000)                          = 0x9a7e000
open("/dev/null", O_RDWR)               = 3
close(3)                                = 0
fstat64(1, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7fa5000
open("/etc/wpa_supplicant/wpa_supplicant.conf", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=183, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7fa4000
read(3, "# WPA-PSK/TKIP\n\nctrl_interface=/"..., 4096) = 183
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0xb7fa4000, 4096)                = 0
gettimeofday({1202160232, 545053}, NULL) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3
socket(PF_NETLINK, SOCK_RAW, 0)         = 4
bind(4, {sa_family=AF_NETLINK, pid=0, groups=00000001}, 12) = 0
ioctl(3, 0x8b36, 0xbffbc0cc)            = -1 EOPNOTSUPP (Operation not supported)
ioctl(3, SIOCSIWMODE, 0xbffbc0d0)       = 0
ioctl(3, SIOCGIFFLAGS, {ifr_name="ath0", ifr_flags=IFF_UP|IFF_BROADCAST|IFF_MULTICAST}) = 0
ioctl(3, SIOCSIFFLAGS, 0xbffbc0d0)      = 0
ioctl(3, SIOCGIWRANGE, 0xbffbc138)      = 0
write(1, "Initializing interface \'ath0\' co"..., 1024Initializing interface 'ath0' conf '/etc/wpa_supplicant/wpa_supplicant.conf' driver 'wext' ctrl_interface 'N/A' bridge 'N/A'
Configuration file '/etc/wpa_supplicant/wpa_supplicant.conf' -> '/etc/wpa_supplicant/wpa_supplicant.conf'
Reading configuration file '/etc/wpa_supplicant/wpa_supplicant.conf'
ctrl_interface='/var/run/wpa_supplicant'
Line: 5 - start of a new network block
ssid - hexdump_ascii(len=9):
     69 6e 65 74 40 68 6f 6d 65                        inet@home       
scan_ssid=1 (0x1)
key_mgmt: 0x2
proto: 0x2
pairwise: 0x8
group: 0x8
PSK (ASCII passphrase) - hexdump_ascii(len=19): [REMOVED]
PSK (from passphrase) - hexdump(len=32): [REMOVED]
Priority group 0
   id=0 ssid='inet@home'
Initializing interface (2) 'ath0'
EAPOL: SUPP_PAE entering state DISCONNECTED
EAPOL: KEY_RX entering state NO_KEY_RECEIVE
EAPOL: SUPP_BE entering state INITIALIZE
EAP: EAP entering state DISABLED
EAPOL: External notification - portEnabled=0
EAPOL: External notification - portValid=0
SIOCGIWRANGE: WE(compiled)=22 WE(source)) = 1024
access("/proc/net", R_OK)               = 0
access("/proc/net/unix", R_OK)          = 0
socket(PF_FILE, SOCK_DGRAM, 0)          = 5
ioctl(5, SIOCGIFINDEX, {ifr_name="ath0", ifr_index=4}) = 0
close(5)                                = 0
send(4, "-\0\0\0\23\0\1\0\1\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0\0\0\0"..., 45, 0) = 45
socket(PF_PACKET, SOCK_DGRAM, 36488)    = 5
ioctl(5, SIOCGIFINDEX, {ifr_name="ath0", ifr_index=4}) = 0
bind(5, {sa_family=AF_PACKET, proto=0x888e, if4, pkttype=PACKET_HOST, addr(0)={0, }, 20) = 0
ioctl(5, SIOCGIFHWADDR, {ifr_name="ath0", ifr_hwaddr=00:17:9a:d1:ee:f4}) = 0
ioctl(3, 0x8b32, 0xbffbc10c)            = 0
ioctl(3, 0x8b34, 0xbffbc0ac)            = 0
ioctl(3, 0x8b34, 0xbffbc0ac)            = 0
ioctl(3, 0x8b34, 0xbffbc0ac)            = 0
ioctl(3, 0x8b34, 0xbffbc0ac)            = 0
ioctl(3, 0x8b32, 0xbffbc10c)            = -1 EOPNOTSUPP (Operation not supported)
dup(2)                                  = 6
fcntl64(6, F_GETFL)                     = 0x1 (flags O_WRONLY)
close(6)                                = 0
write(2, "ioctl[SIOCSIWAUTH]: Operation no"..., 44ioctl[SIOCSIWAUTH]: Operation not supported
) = 44
write(2, "WEXT auth param 4 value 0x0 - ", 30WEXT auth param 4 value 0x0 - ) = 30
ioctl(3, 0x8b32, 0xbffbc10c)            = 0
gettimeofday({1202160232, 553652}, NULL) = 0
mkdir("/var/run/wpa_supplicant", 0770)  = -1 EEXIST (File exists)
socket(PF_FILE, SOCK_DGRAM, 0)          = 6
bind(6, {sa_family=AF_FILE, path="/var/run/wpa_supplicant/ath0"}, 110) = -1 EADDRINUSE (Address already in use)
write(2, "bind(PF_UNIX): Address already i"..., 38bind(PF_UNIX): Address already in use
) = 38
connect(6, {sa_family=AF_FILE, path="/var/run/wpa_supplicant/ath0"}, 110) = -1 ECONNREFUSED (Connection refused)
unlink("/var/run/wpa_supplicant/ath0")  = 0
bind(6, {sa_family=AF_FILE, path="/var/run/wpa_supplicant/ath0"}, 110) = 0
chmod("/var/run/wpa_supplicant/ath0", 0770) = 0
rt_sigaction(SIGINT, {0x80503c0, [INT], SA_RESTART}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGTERM, {0x80503c0, [TERM], SA_RESTART}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGHUP, {0x80503c0, [HUP], SA_RESTART}, {SIG_DFL}, 8) = 0
gettimeofday({1202160232, 554720}, NULL) = 0
select(7, [4 5 6], [], [], {0, 98932})  = 1 (in [4], left {0, 98932})
gettimeofday({1202160232, 554856}, NULL) = 0
recvfrom(4, ",\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\4\0\0\0\3\20\0"..., 8192, MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000001}, [12]) = 44
recvfrom(4, 0xbffb9f78, 8192, 64, 0xbffbc12c, 0xbffbc138) = -1 EAGAIN (Resource temporarily unavailable)
gettimeofday({1202160232, 555119}, NULL) = 0
select(7, [4 5 6], [], [], {0, 98533})  = 0 (Timeout)
gettimeofday({1202160232, 653186}, NULL) = 0
gettimeofday({1202160232, 653234}, NULL) = 0
select(7, [4 5 6], [], [], {0, 418})    = 0 (Timeout)
gettimeofday({1202160232, 654422}, NULL) = 0
write(1, "=21 enc_capa=0xf\n  capabilities:"..., 1024=21 enc_capa=0xf
  capabilities: key_mgmt 0xf enc 0xf
WEXT: Operstate: linkmode=1, operstate=5
Own MAC address: 00:17:9a:d1:ee:f4
wpa_driver_wext_set_wpa
wpa_driver_wext_set_key: alg=0 key_idx=0 set_tx=0 seq_len=0 key_len=0
wpa_driver_wext_set_key: alg=0 key_idx=1 set_tx=0 seq_len=0 key_len=0
wpa_driver_wext_set_key: alg=0 key_idx=2 set_tx=0 seq_len=0 key_len=0
wpa_driver_wext_set_key: alg=0 key_idx=3 set_tx=0 seq_len=0 key_len=0
wpa_driver_wext_set_countermeasures
wpa_driver_wext_set_drop_unencrypted
Setting scan request: 0 sec 100000 usec
Using existing control interface directory.
ctrl_iface exists, but does not allow connections - assuming it was leftover from forced program termination
Successfully replaced leftover ctrl_iface socket '/var/run/wpa_supplicant/ath0'
Added interface ath0
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
Wireless event: cmd=0x8b06 len=8
State: DISCONNECTED -> SCANNING
Starting AP scan (specific SSID)
Scan SSID - hexdump_ascii(len=9):
     69 6e 65 74 40 68 6f 6d 65           ) = 1024
ioctl(3, SIOCGIWSCAN, 0xbffbbf40)       = 0
gettimeofday({1202160232, 654649}, NULL) = 0
gettimeofday({1202160232, 654697}, NULL) = 0
select(7, [4 5 6], [], [], {0, 0})      = 0 (Timeout)
gettimeofday({1202160232, 654806}, NULL) = 0
ioctl(3, SIOCSIWSCAN, 0xbffbc0ac)       = 0
gettimeofday({1202160232, 654916}, NULL) = 0
gettimeofday({1202160232, 654963}, NULL) = 0
select(7, [4 5 6], [], [], {0, 890090}) = 0 (Timeout)
gettimeofday({1202160233, 545406}, NULL) = 0
gettimeofday({1202160233, 545463}, NULL) = 0
gettimeofday({1202160233, 545724}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999739}) = 1 (in [4], left {0, 849000})
gettimeofday({1202160233, 697156}, NULL) = 0
recvfrom(4, ",\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\4\0\0\0\3\20\0"..., 8192, MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000001}, [12]) = 44
ioctl(3, SIOCGIWSCAN, 0xbffb9d70)       = 0
gettimeofday({1202160233, 697818}, NULL) = 0
recvfrom(4, 0xbffb9f78, 8192, 64, 0xbffbc12c, 0xbffbc138) = -1 EAGAIN (Resource temporarily unavailable)
gettimeofday({1202160233, 697936}, NULL) = 0
select(7, [4 5 6], [], [], {0, 847527}) = 0 (Timeout)
gettimeofday({1202160234, 545181}, NULL) = 0
gettimeofday({1202160234, 545233}, NULL) = 0
select(7, [4 5 6], [], [], {0, 230})    = 0 (Timeout)
gettimeofday({1202160234, 546427}, NULL) = 0
gettimeofday({1202160234, 546479}, NULL) = 0
gettimeofday({1202160234, 546547}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999932}) = 0 (Timeout)
gettimeofday({1202160235, 546189}, NULL) = 0
gettimeofday({1202160235, 546241}, NULL) = 0
select(7, [4 5 6], [], [], {0, 238})    = 0 (Timeout)
gettimeofday({1202160235, 547426}, NULL) = 0
gettimeofday({1202160235, 547479}, NULL) = 0
gettimeofday({1202160235, 547547}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999932}) = 0 (Timeout)
gettimeofday({1202160236, 547187}, NULL) = 0
gettimeofday({1202160236, 547239}, NULL) = 0
select(7, [4 5 6], [], [], {0, 240})    = 0 (Timeout)
gettimeofday({1202160236, 548427}, NULL) = 0
gettimeofday({1202160236, 548479}, NULL) = 0
gettimeofday({1202160236, 548550}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999929}) = 0 (Timeout)
gettimeofday({1202160237, 548189}, NULL) = 0
gettimeofday({1202160237, 548241}, NULL) = 0
select(7, [4 5 6], [], [], {0, 238})    = 0 (Timeout)
gettimeofday({1202160237, 549427}, NULL) = 0
gettimeofday({1202160237, 549479}, NULL) = 0
gettimeofday({1202160237, 549550}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999929}) = 0 (Timeout)
gettimeofday({1202160238, 549180}, NULL) = 0
gettimeofday({1202160238, 549232}, NULL) = 0
select(7, [4 5 6], [], [], {0, 247})    = 0 (Timeout)
gettimeofday({1202160238, 550427}, NULL) = 0
gettimeofday({1202160238, 550479}, NULL) = 0
gettimeofday({1202160238, 550550}, NULL) = 0
select(7, [4 5 6], [], [], {0, 147268}) = 0 (Timeout)
gettimeofday({1202160238, 698182}, NULL) = 0
ioctl(3, SIOCSIWSCAN, 0xbffbc0ac)       = 0
gettimeofday({1202160238, 698299}, NULL) = 0
gettimeofday({1202160238, 698351}, NULL) = 0
select(7, [4 5 6], [], [], {0, 852128}) = 0 (Timeout)
gettimeofday({1202160239, 551668}, NULL) = 0
gettimeofday({1202160239, 551945}, NULL) = 0
gettimeofday({1202160239, 552238}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999707}) = 1 (in [4], left {0, 839000})
gettimeofday({1202160239, 713640}, NULL) = 0
recvfrom(4, ",\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\4\0\0\0\3\20\0"..., 8192, MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000001}, [12]) = 44
ioctl(3, SIOCGIWSCAN, 0xbffb9d70)       = 0
gettimeofday({1202160239, 714578}, NULL) = 0
recvfrom(4, 0xbffb9f78, 8192, 64, 0xbffbc12c, 0xbffbc138) = -1 EAGAIN (Resource temporarily unavailable)
gettimeofday({1202160239, 715191}, NULL) = 0
select(7, [4 5 6], [], [], {0, 836754}) = 0 (Timeout)
gettimeofday({1202160240, 552342}, NULL) = 0
gettimeofday({1202160240, 552614}, NULL) = 0
gettimeofday({1202160240, 552682}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999932}) = 0 (Timeout)
gettimeofday({1202160241, 552429}, NULL) = 0
gettimeofday({1202160241, 552482}, NULL) = 0
select(7, [4 5 6], [], [], {0, 132})    = 0 (Timeout)
gettimeofday({1202160241, 553427}, NULL) = 0
gettimeofday({1202160241, 553479}, NULL) = 0
gettimeofday({1202160241, 553547}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999932}) = 0 (Timeout)
gettimeofday({1202160242, 553181}, NULL) = 0
gettimeofday({1202160242, 553233}, NULL) = 0
select(7, [4 5 6], [], [], {0, 246})    = 0 (Timeout)
gettimeofday({1202160242, 554427}, NULL) = 0
gettimeofday({1202160242, 554480}, NULL) = 0
gettimeofday({1202160242, 554547}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999933}) = 0 (Timeout)
gettimeofday({1202160243, 554186}, NULL) = 0
gettimeofday({1202160243, 554238}, NULL) = 0
select(7, [4 5 6], [], [], {0, 242})    = 0 (Timeout)
gettimeofday({1202160243, 555427}, NULL) = 0
gettimeofday({1202160243, 555479}, NULL) = 0
gettimeofday({1202160243, 555547}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999932}) = 0 (Timeout)
gettimeofday({1202160244, 555186}, NULL) = 0
gettimeofday({1202160244, 555239}, NULL) = 0
select(7, [4 5 6], [], [], {0, 240})    = 0 (Timeout)
gettimeofday({1202160244, 556427}, NULL) = 0
gettimeofday({1202160244, 556479}, NULL) = 0
gettimeofday({1202160244, 556547}, NULL) = 0
select(7, [4 5 6], [], [], {0, 158031}) = 0 (Timeout)
gettimeofday({1202160244, 715190}, NULL) = 0
ioctl(3, SIOCSIWSCAN, 0xbffbc0ac)       = 0
gettimeofday({1202160244, 715303}, NULL) = 0
gettimeofday({1202160244, 715356}, NULL) = 0
select(7, [4 5 6], [], [], {0, 841123}) = 0 (Timeout)
gettimeofday({1202160245, 557433}, NULL) = 0
gettimeofday({1202160245, 557488}, NULL) = 0
gettimeofday({1202160245, 557558}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999930}) = 1 (in [4], left {0, 812000})
gettimeofday({1202160245, 745454}, NULL) = 0
recvfrom(4, ",\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\4\0\0\0\3\20\0"..., 8192, MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000001}, [12]) = 44
write(1, "             inet@home       \nTr"..., 1024             inet@home       
Trying to get current scan results first without requesting a new scan to speed up initial association
Received 0 bytes of scan results (0 BSSes)
Scan results: 0
Selecting BSS from priority group 0
No suitable AP found.
Setting scan request: 0 sec 0 usec
Starting AP scan (broadcast SSID)
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
Wireless event: cmd=0x8b19 len=8
Received 0 bytes of scan results (0 BSSes)
Scan results: 0
Selecting BSS from priority group 0
No suitable AP found.
Setting scan request: 5 sec 0 usec
Starting AP scan (specific SSID)
Scan SSID - hexdump_ascii(len=9):
     69 6e 65 74 40 68 6f 6d 65                        inet@home       
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
Wireless event: cmd=0x8b19 len=8
Received 0 bytes of scan results (0 BSSes)
Scan results: 0
Selecting BSS from priority group 0
No suitable AP found.
Setting scan request: 5 sec 0 usec
Starting AP scan (broadcast SSID)
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
Wireless event:) = 1024
ioctl(3, SIOCGIWSCAN, 0xbffb9d70)       = 0
gettimeofday({1202160245, 745806}, NULL) = 0
recvfrom(4, 0xbffb9f78, 8192, 64, 0xbffbc12c, 0xbffbc138) = -1 EAGAIN (Resource temporarily unavailable)
gettimeofday({1202160245, 745926}, NULL) = 0
select(7, [4 5 6], [], [], {0, 811562}) = 0 (Timeout)
gettimeofday({1202160246, 557184}, NULL) = 0
gettimeofday({1202160246, 557237}, NULL) = 0
select(7, [4 5 6], [], [], {0, 251})    = 0 (Timeout)
gettimeofday({1202160246, 558428}, NULL) = 0
gettimeofday({1202160246, 558482}, NULL) = 0
gettimeofday({1202160246, 558551}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999931}) = 0 (Timeout)
gettimeofday({1202160247, 558183}, NULL) = 0
gettimeofday({1202160247, 558236}, NULL) = 0
select(7, [4 5 6], [], [], {0, 246})    = 0 (Timeout)
gettimeofday({1202160247, 559427}, NULL) = 0
gettimeofday({1202160247, 559480}, NULL) = 0
gettimeofday({1202160247, 559547}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999933}) = 0 (Timeout)
gettimeofday({1202160248, 559187}, NULL) = 0
gettimeofday({1202160248, 559239}, NULL) = 0
select(7, [4 5 6], [], [], {0, 241})    = 0 (Timeout)
gettimeofday({1202160248, 560438}, NULL) = 0
gettimeofday({1202160248, 560491}, NULL) = 0
gettimeofday({1202160248, 560559}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999932}) = 0 (Timeout)
gettimeofday({1202160249, 560189}, NULL) = 0
gettimeofday({1202160249, 560241}, NULL) = 0
select(7, [4 5 6], [], [], {0, 250})    = 0 (Timeout)
gettimeofday({1202160249, 561427}, NULL) = 0
gettimeofday({1202160249, 561480}, NULL) = 0
gettimeofday({1202160249, 561547}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999933}) = 0 (Timeout)
gettimeofday({1202160250, 561188}, NULL) = 0
gettimeofday({1202160250, 561241}, NULL) = 0
select(7, [4 5 6], [], [], {0, 239})    = 0 (Timeout)
gettimeofday({1202160250, 562427}, NULL) = 0
gettimeofday({1202160250, 562480}, NULL) = 0
gettimeofday({1202160250, 562548}, NULL) = 0
select(7, [4 5 6], [], [], {0, 183258}) = 0 (Timeout)
gettimeofday({1202160250, 746180}, NULL) = 0
ioctl(3, SIOCSIWSCAN, 0xbffbc0ac)       = 0
gettimeofday({1202160250, 746302}, NULL) = 0
gettimeofday({1202160250, 746355}, NULL) = 0
select(7, [4 5 6], [], [], {0, 816125}) = 0 (Timeout)
gettimeofday({1202160251, 563182}, NULL) = 0
gettimeofday({1202160251, 563235}, NULL) = 0
gettimeofday({1202160251, 563303}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999932}) = 1 (in [4], left {0, 802000})
gettimeofday({1202160251, 761461}, NULL) = 0
recvfrom(4, ",\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\4\0\0\0\3\20\0"..., 8192, MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000001}, [12]) = 44
ioctl(3, SIOCGIWSCAN, 0xbffb9d70)       = 0
gettimeofday({1202160251, 761738}, NULL) = 0
recvfrom(4, 0xbffb9f78, 8192, 64, 0xbffbc12c, 0xbffbc138) = -1 EAGAIN (Resource temporarily unavailable)
gettimeofday({1202160251, 761856}, NULL) = 0
select(7, [4 5 6], [], [], {0, 801379}) = 0 (Timeout)
gettimeofday({1202160252, 563181}, NULL) = 0
gettimeofday({1202160252, 563234}, NULL) = 0
select(7, [4 5 6], [], [], {0, 1})      = 0 (Timeout)
gettimeofday({1202160252, 564427}, NULL) = 0
gettimeofday({1202160252, 564480}, NULL) = 0
gettimeofday({1202160252, 564548}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999932}) = 0 (Timeout)
gettimeofday({1202160253, 564181}, NULL) = 0
gettimeofday({1202160253, 564233}, NULL) = 0
select(7, [4 5 6], [], [], {0, 247})    = 0 (Timeout)
gettimeofday({1202160253, 565426}, NULL) = 0
gettimeofday({1202160253, 565478}, NULL) = 0
gettimeofday({1202160253, 565546}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999932}) = 0 (Timeout)
gettimeofday({1202160254, 565181}, NULL) = 0
gettimeofday({1202160254, 565234}, NULL) = 0
select(7, [4 5 6], [], [], {0, 244})    = 0 (Timeout)
gettimeofday({1202160254, 566427}, NULL) = 0
gettimeofday({1202160254, 566480}, NULL) = 0
gettimeofday({1202160254, 566547}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999933}) = 0 (Timeout)
gettimeofday({1202160255, 566467}, NULL) = 0
gettimeofday({1202160255, 566552}, NULL) = 0
select(7, [4 5 6], [], [], {0, 0})      = 0 (Timeout)
gettimeofday({1202160255, 566737}, NULL) = 0
gettimeofday({1202160255, 566821}, NULL) = 0
gettimeofday({1202160255, 566921}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999900}) = 0 (Timeout)
gettimeofday({1202160256, 566216}, NULL) = 0
gettimeofday({1202160256, 566301}, NULL) = 0
select(7, [4 5 6], [], [], {0, 520})    = 0 (Timeout)
gettimeofday({1202160256, 567445}, NULL) = 0
gettimeofday({1202160256, 567531}, NULL) = 0
gettimeofday({1202160256, 567633}, NULL) = 0
select(7, [4 5 6], [], [], {0, 194105}) = 0 (Timeout)
gettimeofday({1202160256, 762447}, NULL) = 0
ioctl(3, SIOCSIWSCAN, 0xbffbc0ac)       = 0
gettimeofday({1202160256, 762629}, NULL) = 0
gettimeofday({1202160256, 762716}, NULL) = 0
select(7, [4 5 6], [], [], {0, 804815}) = 0 (Timeout)
gettimeofday({1202160257, 567203}, NULL) = 0
gettimeofday({1202160257, 567289}, NULL) = 0
select(7, [4 5 6], [], [], {0, 242})    = 0 (Timeout)
gettimeofday({1202160257, 568445}, NULL) = 0
gettimeofday({1202160257, 568531}, NULL) = 0
gettimeofday({1202160257, 568632}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999899}) = 1 (in [4], left {0, 791000})
gettimeofday({1202160257, 777476}, NULL) = 0
recvfrom(4, ",\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\4\0\0\0\3\20\0"..., 8192, MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000001}, [12]) = 44
ioctl(3, SIOCGIWSCAN, 0xbffb9d70)       = 0
gettimeofday({1202160257, 777862}, NULL) = 0
recvfrom(4, 0xbffb9f78, 8192, 64, 0xbffbc12c, 0xbffbc138) = -1 EAGAIN (Resource temporarily unavailable)
gettimeofday({1202160257, 778053}, NULL) = 0
select(7, [4 5 6], [], [], {0, 790478}) = 0 (Timeout)
gettimeofday({1202160258, 569211}, NULL) = 0
gettimeofday({1202160258, 569298}, NULL) = 0
gettimeofday({1202160258, 569408}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999890}) = 0 (Timeout)
gettimeofday({1202160259, 569210}, NULL) = 0
gettimeofday({1202160259, 569296}, NULL) = 0
select(7, [4 5 6], [], [], {0, 2})      = 0 (Timeout)
gettimeofday({1202160259, 570446}, NULL) = 0
gettimeofday({1202160259, 570532}, NULL) = 0
gettimeofday({1202160259, 570633}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999899}) = 0 (Timeout)
gettimeofday({1202160260, 570201}, NULL) = 0
gettimeofday({1202160260, 570288}, NULL) = 0
select(7, [4 5 6], [], [], {0, 244})    = 0 (Timeout)
gettimeofday({1202160260, 571446}, NULL) = 0
gettimeofday({1202160260, 571532}, NULL) = 0
gettimeofday({1202160260, 571634}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999898}) = 0 (Timeout)
gettimeofday({1202160261, 571202}, NULL) = 0
gettimeofday({1202160261, 571290}, NULL) = 0
select(7, [4 5 6], [], [], {0, 242})    = 0 (Timeout)
gettimeofday({1202160261, 572446}, NULL) = 0
gettimeofday({1202160261, 572532}, NULL) = 0
gettimeofday({1202160261, 572634}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999898}) = 0 (Timeout)
gettimeofday({1202160262, 572219}, NULL) = 0
gettimeofday({1202160262, 572305}, NULL) = 0
select(7, [4 5 6], [], [], {0, 227})    = 0 (Timeout)
gettimeofday({1202160262, 573444}, NULL) = 0
gettimeofday({1202160262, 573548}, NULL) = 0
gettimeofday({1202160262, 573651}, NULL) = 0
select(7, [4 5 6], [], [], {0, 204211}) = 0 (Timeout)
gettimeofday({1202160262, 778208}, NULL) = 0
ioctl(3, SIOCSIWSCAN, 0xbffbc0ac)       = 0
gettimeofday({1202160262, 778407}, NULL) = 0
gettimeofday({1202160262, 778494}, NULL) = 0
select(7, [4 5 6], [], [], {0, 795054}) = 0 (Timeout)
gettimeofday({1202160263, 574209}, NULL) = 0
gettimeofday({1202160263, 574298}, NULL) = 0
gettimeofday({1202160263, 574412}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999886}) = 1 (in [4], left {0, 781000})
gettimeofday({1202160263, 793478}, NULL) = 0
recvfrom(4, ",\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\4\0\0\0\3\20\0"..., 8192, MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000001}, [12]) = 44
write(1, " cmd=0x8b19 len=8\nReceived 0 byt"..., 1024 cmd=0x8b19 len=8
Received 0 bytes of scan results (0 BSSes)
Scan results: 0
Selecting BSS from priority group 0
No suitable AP found.
Setting scan request: 5 sec 0 usec
Starting AP scan (specific SSID)
Scan SSID - hexdump_ascii(len=9):
     69 6e 65 74 40 68 6f 6d 65                        inet@home       
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
Wireless event: cmd=0x8b19 len=8
Received 0 bytes of scan results (0 BSSes)
Scan results: 0
Selecting BSS from priority group 0
No suitable AP found.
Setting scan request: 5 sec 0 usec
Starting AP scan (broadcast SSID)
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
Wireless event: cmd=0x8b19 len=8
Received 0 bytes of scan results (0 BSSes)
Scan results: 0
Selecting BSS from priority group 0
No suitable AP found.
Setting scan request: 5 sec 0 usec
Starting AP scan (specific SSID)
Scan SSID - hexdump_ascii(len=9):
     69 6e 65 74 40 68 6f 6d 65                        inet@home       
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
Wireless event: cmd=0x8b1) = 1024
ioctl(3, SIOCGIWSCAN, 0xbffb9d70)       = 0
gettimeofday({1202160263, 794102}, NULL) = 0
recvfrom(4, 0xbffb9f78, 8192, 64, 0xbffbc12c, 0xbffbc138) = -1 EAGAIN (Resource temporarily unavailable)
gettimeofday({1202160263, 794297}, NULL) = 0
select(7, [4 5 6], [], [], {0, 780001}) = 0 (Timeout)
gettimeofday({1202160264, 575204}, NULL) = 0
gettimeofday({1202160264, 575293}, NULL) = 0
gettimeofday({1202160264, 575404}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999889}) = 0 (Timeout)
gettimeofday({1202160265, 576950}, NULL) = 0
gettimeofday({1202160265, 577040}, NULL) = 0
gettimeofday({1202160265, 578320}, NULL) = 0
select(7, [4 5 6], [], [], {0, 998720}) = 0 (Timeout)
gettimeofday({1202160266, 577219}, NULL) = 0
gettimeofday({1202160266, 577309}, NULL) = 0
gettimeofday({1202160266, 577420}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999889}) = 0 (Timeout)
gettimeofday({1202160267, 577455}, NULL) = 0
gettimeofday({1202160267, 577544}, NULL) = 0
gettimeofday({1202160267, 577647}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999897}) = 0 (Timeout)
gettimeofday({1202160268, 577203}, NULL) = 0
gettimeofday({1202160268, 577291}, NULL) = 0
select(7, [4 5 6], [], [], {0, 253})    = 0 (Timeout)
gettimeofday({1202160268, 578447}, NULL) = 0
gettimeofday({1202160268, 578534}, NULL) = 0
gettimeofday({1202160268, 578637}, NULL) = 0
select(7, [4 5 6], [], [], {0, 215465}) = 0 (Timeout)
gettimeofday({1202160268, 794200}, NULL) = 0
ioctl(3, SIOCSIWSCAN, 0xbffbc0ac)       = 0
gettimeofday({1202160268, 794393}, NULL) = 0
gettimeofday({1202160268, 794481}, NULL) = 0
select(7, [4 5 6], [], [], {0, 784053}) = 0 (Timeout)
gettimeofday({1202160269, 579206}, NULL) = 0
gettimeofday({1202160269, 579295}, NULL) = 0
gettimeofday({1202160269, 579406}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999889}) = 1 (in [4], left {0, 768000})
gettimeofday({1202160269, 811477}, NULL) = 0
recvfrom(4, ",\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\4\0\0\0\3\20\0"..., 8192, MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000001}, [12]) = 44
ioctl(3, SIOCGIWSCAN, 0xbffb9d70)       = 0
gettimeofday({1202160269, 811871}, NULL) = 0
recvfrom(4, 0xbffb9f78, 8192, 64, 0xbffbc12c, 0xbffbc138) = -1 EAGAIN (Resource temporarily unavailable)
gettimeofday({1202160269, 812065}, NULL) = 0
select(7, [4 5 6], [], [], {0, 767230}) = 0 (Timeout)
gettimeofday({1202160270, 580452}, NULL) = 0
gettimeofday({1202160270, 580541}, NULL) = 0
gettimeofday({1202160270, 580645}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999896}) = 0 (Timeout)
gettimeofday({1202160271, 580204}, NULL) = 0
gettimeofday({1202160271, 580291}, NULL) = 0
select(7, [4 5 6], [], [], {0, 250})    = 0 (Timeout)
gettimeofday({1202160271, 581445}, NULL) = 0
gettimeofday({1202160271, 581531}, NULL) = 0
gettimeofday({1202160271, 581633}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999898}) = 0 (Timeout)
gettimeofday({1202160272, 581202}, NULL) = 0
gettimeofday({1202160272, 581289}, NULL) = 0
select(7, [4 5 6], [], [], {0, 242})    = 0 (Timeout)
gettimeofday({1202160272, 582445}, NULL) = 0
gettimeofday({1202160272, 582532}, NULL) = 0
gettimeofday({1202160272, 582634}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999898}) = 0 (Timeout)
gettimeofday({1202160273, 582203}, NULL) = 0
gettimeofday({1202160273, 582290}, NULL) = 0
select(7, [4 5 6], [], [], {0, 242})    = 0 (Timeout)
gettimeofday({1202160273, 583446}, NULL) = 0
gettimeofday({1202160273, 583532}, NULL) = 0
gettimeofday({1202160273, 583633}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999899}) = 0 (Timeout)
gettimeofday({1202160274, 583203}, NULL) = 0
gettimeofday({1202160274, 583290}, NULL) = 0
select(7, [4 5 6], [], [], {0, 242})    = 0 (Timeout)
gettimeofday({1202160274, 584446}, NULL) = 0
gettimeofday({1202160274, 584532}, NULL) = 0
gettimeofday({1202160274, 584634}, NULL) = 0
select(7, [4 5 6], [], [], {0, 227237}) = 0 (Timeout)
gettimeofday({1202160274, 812198}, NULL) = 0
ioctl(3, SIOCSIWSCAN, 0xbffbc0ac)       = 0
gettimeofday({1202160274, 812395}, NULL) = 0
gettimeofday({1202160274, 812482}, NULL) = 0
select(7, [4 5 6], [], [], {0, 772050}) = 0 (Timeout)
gettimeofday({1202160275, 585460}, NULL) = 0
gettimeofday({1202160275, 585548}, NULL) = 0
gettimeofday({1202160275, 585650}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999898}) = 1 (in [4], left {0, 748000})
gettimeofday({1202160275, 837472}, NULL) = 0
recvfrom(4, ",\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\4\0\0\0\3\20\0"..., 8192, MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000001}, [12]) = 44
ioctl(3, SIOCGIWSCAN, 0xbffb9d70)       = 0
gettimeofday({1202160275, 837858}, NULL) = 0
recvfrom(4, 0xbffb9f78, 8192, 64, 0xbffbc12c, 0xbffbc138) = -1 EAGAIN (Resource temporarily unavailable)
gettimeofday({1202160275, 838049}, NULL) = 0
select(7, [4 5 6], [], [], {0, 747499}) = 0 (Timeout)
gettimeofday({1202160276, 586453}, NULL) = 0
gettimeofday({1202160276, 586541}, NULL) = 0
gettimeofday({1202160276, 586644}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999897}) = 0 (Timeout)
gettimeofday({1202160277, 586202}, NULL) = 0
gettimeofday({1202160277, 586289}, NULL) = 0
select(7, [4 5 6], [], [], {0, 252})    = 0 (Timeout)
gettimeofday({1202160277, 587446}, NULL) = 0
gettimeofday({1202160277, 587532}, NULL) = 0
gettimeofday({1202160277, 587634}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999898}) = 0 (Timeout)
gettimeofday({1202160278, 587201}, NULL) = 0
gettimeofday({1202160278, 587287}, NULL) = 0
select(7, [4 5 6], [], [], {0, 245})    = 0 (Timeout)
gettimeofday({1202160278, 588446}, NULL) = 0
gettimeofday({1202160278, 588533}, NULL) = 0
gettimeofday({1202160278, 588634}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999899}) = 0 (Timeout)
gettimeofday({1202160279, 588202}, NULL) = 0
gettimeofday({1202160279, 588290}, NULL) = 0
select(7, [4 5 6], [], [], {0, 243})    = 0 (Timeout)
gettimeofday({1202160279, 589446}, NULL) = 0
gettimeofday({1202160279, 589532}, NULL) = 0
gettimeofday({1202160279, 589634}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999898}) = 0 (Timeout)
gettimeofday({1202160280, 589205}, NULL) = 0
gettimeofday({1202160280, 589292}, NULL) = 0
select(7, [4 5 6], [], [], {0, 240})    = 0 (Timeout)
gettimeofday({1202160280, 590446}, NULL) = 0
gettimeofday({1202160280, 590533}, NULL) = 0
gettimeofday({1202160280, 590634}, NULL) = 0
select(7, [4 5 6], [], [], {0, 247224}) = 0 (Timeout)
gettimeofday({1202160280, 838198}, NULL) = 0
ioctl(3, SIOCSIWSCAN, 0xbffbc0ac)       = 0
gettimeofday({1202160280, 838406}, NULL) = 0
gettimeofday({1202160280, 838493}, NULL) = 0
select(7, [4 5 6], [], [], {0, 752040}) = 0 (Timeout)
gettimeofday({1202160281, 591453}, NULL) = 0
gettimeofday({1202160281, 591542}, NULL) = 0
gettimeofday({1202160281, 591644}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999898}) = 1 (in [4], left {0, 738000})
gettimeofday({1202160281, 853480}, NULL) = 0
recvfrom(4, ",\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\4\0\0\0\3\20\0"..., 8192, MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000001}, [12]) = 44
ioctl(3, SIOCGIWSCAN, 0xbffb9d70)       = 0
write(1, "9 len=8\nReceived 0 bytes of scan"..., 10249 len=8
Received 0 bytes of scan results (0 BSSes)
Scan results: 0
Selecting BSS from priority group 0
No suitable AP found.
Setting scan request: 5 sec 0 usec
Starting AP scan (broadcast SSID)
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
Wireless event: cmd=0x8b19 len=8
Received 0 bytes of scan results (0 BSSes)
Scan results: 0
Selecting BSS from priority group 0
No suitable AP found.
Setting scan request: 5 sec 0 usec
Starting AP scan (specific SSID)
Scan SSID - hexdump_ascii(len=9):
     69 6e 65 74 40 68 6f 6d 65                        inet@home       
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
Wireless event: cmd=0x8b19 len=8
Received 0 bytes of scan results (0 BSSes)
Scan results: 0
Selecting BSS from priority group 0
No suitable AP found.
Setting scan request: 5 sec 0 usec
Starting AP scan (broadcast SSID)
RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP])
Wireless event: cmd=0x8b19 len=8
Received 0 bytes of scan results (0 BSSes)
Scan results: 0
Selecting BSS from priority group 0
No suitable ) = 1024
gettimeofday({1202160281, 854102}, NULL) = 0
recvfrom(4, 0xbffb9f78, 8192, 64, 0xbffbc12c, 0xbffbc138) = -1 EAGAIN (Resource temporarily unavailable)
gettimeofday({1202160281, 854294}, NULL) = 0
select(7, [4 5 6], [], [], {0, 737248}) = 0 (Timeout)
gettimeofday({1202160282, 592202}, NULL) = 0
gettimeofday({1202160282, 592290}, NULL) = 0
gettimeofday({1202160282, 592402}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999888}) = 0 (Timeout)
gettimeofday({1202160283, 592210}, NULL) = 0
gettimeofday({1202160283, 592297}, NULL) = 0
select(7, [4 5 6], [], [], {0, 0})      = 0 (Timeout)
gettimeofday({1202160283, 592491}, NULL) = 0
gettimeofday({1202160283, 592577}, NULL) = 0
gettimeofday({1202160283, 592679}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999898}) = 0 (Timeout)
gettimeofday({1202160284, 592210}, NULL) = 0
gettimeofday({1202160284, 592297}, NULL) = 0
select(7, [4 5 6], [], [], {0, 280})    = 0 (Timeout)
gettimeofday({1202160284, 593445}, NULL) = 0
gettimeofday({1202160284, 593532}, NULL) = 0
gettimeofday({1202160284, 593634}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999898}) = 0 (Timeout)
gettimeofday({1202160285, 593451}, NULL) = 0
gettimeofday({1202160285, 593538}, NULL) = 0
select(7, [4 5 6], [], [], {0, 0})      = 0 (Timeout)
gettimeofday({1202160285, 593725}, NULL) = 0
gettimeofday({1202160285, 593810}, NULL) = 0
gettimeofday({1202160285, 593912}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999898}) = 0 (Timeout)
gettimeofday({1202160286, 593452}, NULL) = 0
gettimeofday({1202160286, 593539}, NULL) = 0
select(7, [4 5 6], [], [], {0, 271})    = 0 (Timeout)
gettimeofday({1202160286, 594445}, NULL) = 0
gettimeofday({1202160286, 594531}, NULL) = 0
gettimeofday({1202160286, 594633}, NULL) = 0
select(7, [4 5 6], [], [], {0, 259469}) = 0 (Timeout)
gettimeofday({1202160286, 854199}, NULL) = 0
ioctl(3, SIOCSIWSCAN, 0xbffbc0ac)       = 0
gettimeofday({1202160286, 854396}, NULL) = 0
gettimeofday({1202160286, 854482}, NULL) = 0
select(7, [4 5 6], [], [], {0, 740049}) = 0 (Timeout)
gettimeofday({1202160287, 595455}, NULL) = 0
gettimeofday({1202160287, 595542}, NULL) = 0
gettimeofday({1202160287, 595643}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999899}) = 1 (in [4], left {0, 726000})
gettimeofday({1202160287, 869612}, NULL) = 0
recvfrom(4, ",\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\4\0\0\0\3\20\0"..., 8192, MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000001}, [12]) = 44
ioctl(3, SIOCGIWSCAN, 0xbffb9d70)       = 0
gettimeofday({1202160287, 870626}, NULL) = 0
recvfrom(4, 0xbffb9f78, 8192, 64, 0xbffbc12c, 0xbffbc138) = -1 EAGAIN (Resource temporarily unavailable)
gettimeofday({1202160287, 871239}, NULL) = 0
select(7, [4 5 6], [], [], {0, 724303}) = 0 (Timeout)
gettimeofday({1202160288, 596339}, NULL) = 0
gettimeofday({1202160288, 596611}, NULL) = 0
gettimeofday({1202160288, 596680}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999931}) = 0 (Timeout)
gettimeofday({1202160289, 596182}, NULL) = 0
gettimeofday({1202160289, 596234}, NULL) = 0
select(7, [4 5 6], [], [], {0, 377})    = 0 (Timeout)
gettimeofday({1202160289, 597428}, NULL) = 0
gettimeofday({1202160289, 597480}, NULL) = 0
gettimeofday({1202160289, 597547}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999933}) = 0 (Timeout)
gettimeofday({1202160290, 597181}, NULL) = 0
gettimeofday({1202160290, 597233}, NULL) = 0
select(7, [4 5 6], [], [], {0, 247})    = 0 (Timeout)
gettimeofday({1202160290, 598427}, NULL) = 0
gettimeofday({1202160290, 598480}, NULL) = 0
gettimeofday({1202160290, 598547}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999933}) = 0 (Timeout)
gettimeofday({1202160291, 598187}, NULL) = 0
gettimeofday({1202160291, 598240}, NULL) = 0
select(7, [4 5 6], [], [], {0, 240})    = 0 (Timeout)
gettimeofday({1202160291, 600191}, NULL) = 0
gettimeofday({1202160291, 600243}, NULL) = 0
gettimeofday({1202160291, 600311}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999932}) = 0 (Timeout)
gettimeofday({1202160292, 600429}, NULL) = 0
gettimeofday({1202160292, 600482}, NULL) = 0
gettimeofday({1202160292, 600549}, NULL) = 0
select(7, [4 5 6], [], [], {0, 270077}) = 0 (Timeout)
gettimeofday({1202160292, 871179}, NULL) = 0
ioctl(3, SIOCSIWSCAN, 0xbffbc0ac)       = 0
gettimeofday({1202160292, 871292}, NULL) = 0
gettimeofday({1202160292, 871345}, NULL) = 0
select(7, [4 5 6], [], [], {0, 729137}) = 0 (Timeout)
gettimeofday({1202160293, 601185}, NULL) = 0
gettimeofday({1202160293, 601239}, NULL) = 0
gettimeofday({1202160293, 601308}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999931}) = 1 (in [4], left {0, 715000})
gettimeofday({1202160293, 886456}, NULL) = 0
recvfrom(4, ",\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\4\0\0\0\3\20\0"..., 8192, MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000001}, [12]) = 44
ioctl(3, SIOCGIWSCAN, 0xbffb9d70)       = 0
gettimeofday({1202160293, 886735}, NULL) = 0
recvfrom(4, 0xbffb9f78, 8192, 64, 0xbffbc12c, 0xbffbc138) = -1 EAGAIN (Resource temporarily unavailable)
gettimeofday({1202160293, 886854}, NULL) = 0
select(7, [4 5 6], [], [], {0, 714385}) = 0 (Timeout)
gettimeofday({1202160294, 601183}, NULL) = 0
gettimeofday({1202160294, 601237}, NULL) = 0
select(7, [4 5 6], [], [], {0, 2})      = 0 (Timeout)
gettimeofday({1202160294, 602440}, NULL) = 0
gettimeofday({1202160294, 602494}, NULL) = 0
gettimeofday({1202160294, 602563}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999931}) = 0 (Timeout)
gettimeofday({1202160295, 602190}, NULL) = 0
gettimeofday({1202160295, 602243}, NULL) = 0
select(7, [4 5 6], [], [], {0, 251})    = 0 (Timeout)
gettimeofday({1202160295, 603439}, NULL) = 0
gettimeofday({1202160295, 603491}, NULL) = 0
gettimeofday({1202160295, 603559}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999932}) = 0 (Timeout)
gettimeofday({1202160296, 603183}, NULL) = 0
gettimeofday({1202160296, 603236}, NULL) = 0
select(7, [4 5 6], [], [], {0, 255})    = 0 (Timeout)
gettimeofday({1202160296, 604427}, NULL) = 0
gettimeofday({1202160296, 604480}, NULL) = 0
gettimeofday({1202160296, 604549}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999931}

[-- Attachment #4: wpa_supplicant-strace --]
[-- Type: text/plain, Size: 28821 bytes --]

execve("/sbin/wpa_supplicant", ["wpa_supplicant", "-Dwext", "-iath0", "-c", "/etc/wpa_supplicant/wpa_supplica"...], [/* 15 vars */]) = 0
uname({sys="Linux", node="home", ...})  = 0
brk(0)                                  = 0x9400000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f11000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=77517, ...}) = 0
mmap2(NULL, 77517, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7efe000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/i686/cmov/libssl.so.0.9.8", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\220\255"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=252768, ...}) = 0
mmap2(NULL, 255732, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7ebf000
mmap2(0xb7efa000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3a) = 0xb7efa000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/i686/cmov/libcrypto.so.0.9.8", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300Y\3"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=1270520, ...}) = 0
mmap2(NULL, 1282904, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7d85000
mmap2(0xb7ea7000, 81920, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x122) = 0xb7ea7000
mmap2(0xb7ebb000, 13144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7ebb000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7d84000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/tls/i686/cmov/libdl.so.2", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20\f\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=9592, ...}) = 0
mmap2(NULL, 12404, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7d80000
mmap2(0xb7d82000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0xb7d82000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/libdbus-1.so.3", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\220K\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=203740, ...}) = 0
mmap2(NULL, 203036, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7d4e000
mmap2(0xb7d7f000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x31) = 0xb7d7f000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/tls/i686/cmov/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240O\1"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=1241392, ...}) = 0
mmap2(NULL, 1247388, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7c1d000
mmap2(0xb7d44000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x127) = 0xb7d44000
mmap2(0xb7d4b000, 10396, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7d4b000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/libz.so.1", O_RDONLY)    = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\340\26"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=78500, ...}) = 0
mmap2(NULL, 81456, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7c09000
mmap2(0xb7c1c000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12) = 0xb7c1c000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7c08000
mprotect(0xb7d44000, 20480, PROT_READ)  = 0
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7c08940, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
munmap(0xb7efe000, 77517)               = 0
brk(0)                                  = 0x9400000
brk(0x9421000)                          = 0x9421000
open("/dev/null", O_RDWR)               = 3
close(3)                                = 0
open("/etc/wpa_supplicant/wpa_supplicant.conf", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=183, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f10000
read(3, "# WPA-PSK/TKIP\n\nctrl_interface=/"..., 4096) = 183
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0xb7f10000, 4096)                = 0
gettimeofday({1202160306, 209689}, NULL) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3
socket(PF_NETLINK, SOCK_RAW, 0)         = 4
bind(4, {sa_family=AF_NETLINK, pid=0, groups=00000001}, 12) = 0
ioctl(3, 0x8b36, 0xbfb2943c)            = -1 EOPNOTSUPP (Operation not supported)
ioctl(3, SIOCSIWMODE, 0xbfb29440)       = 0
ioctl(3, SIOCGIFFLAGS, {ifr_name="ath0", ifr_flags=IFF_BROADCAST|IFF_MULTICAST}) = 0
ioctl(3, SIOCSIFFLAGS, 0xbfb29440)      = 0
ioctl(3, SIOCGIWRANGE, 0xbfb294a8)      = 0
access("/proc/net", R_OK)               = 0
access("/proc/net/unix", R_OK)          = 0
socket(PF_FILE, SOCK_DGRAM, 0)          = 5
ioctl(5, SIOCGIFINDEX, {ifr_name="ath0", ifr_index=4}) = 0
close(5)                                = 0
send(4, "-\0\0\0\23\0\1\0\1\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0\0\0\0"..., 45, 0) = 45
socket(PF_PACKET, SOCK_DGRAM, 36488)    = 5
ioctl(5, SIOCGIFINDEX, {ifr_name="ath0", ifr_index=4}) = 0
bind(5, {sa_family=AF_PACKET, proto=0x888e, if4, pkttype=PACKET_HOST, addr(0)={0, }, 20) = 0
ioctl(5, SIOCGIFHWADDR, {ifr_name="ath0", ifr_hwaddr=00:17:9a:d1:ee:f4}) = 0
ioctl(3, 0x8b32, 0xbfb2947c)            = 0
ioctl(3, 0x8b34, 0xbfb2941c)            = 0
ioctl(3, 0x8b34, 0xbfb2941c)            = 0
ioctl(3, 0x8b34, 0xbfb2941c)            = 0
ioctl(3, 0x8b34, 0xbfb2941c)            = 0
ioctl(3, 0x8b32, 0xbfb2947c)            = -1 EOPNOTSUPP (Operation not supported)
dup(2)                                  = 6
fcntl64(6, F_GETFL)                     = 0x1 (flags O_WRONLY)
close(6)                                = 0
write(2, "ioctl[SIOCSIWAUTH]: Operation no"..., 44ioctl[SIOCSIWAUTH]: Operation not supported
) = 44
write(2, "WEXT auth param 4 value 0x0 - ", 30WEXT auth param 4 value 0x0 - ) = 30
ioctl(3, 0x8b32, 0xbfb2947c)            = 0
gettimeofday({1202160306, 273212}, NULL) = 0
mkdir("/var/run/wpa_supplicant", 0770)  = 0
socket(PF_FILE, SOCK_DGRAM, 0)          = 6
bind(6, {sa_family=AF_FILE, path="/var/run/wpa_supplicant/ath0"}, 110) = 0
chmod("/var/run/wpa_supplicant/ath0", 0770) = 0
rt_sigaction(SIGINT, {0x80503c0, [INT], SA_RESTART}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGTERM, {0x80503c0, [TERM], SA_RESTART}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGHUP, {0x80503c0, [HUP], SA_RESTART}, {SIG_DFL}, 8) = 0
gettimeofday({1202160306, 273930}, NULL) = 0
select(7, [4 5 6], [], [], {0, 99282})  = 1 (in [4], left {0, 99282})
gettimeofday({1202160306, 274076}, NULL) = 0
recvfrom(4, ",\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\4\0\0\0\2\20\0"..., 8192, MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000001}, [12]) = 44
recvfrom(4, "\370\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0!\3\3\0\0\0C\20"..., 8192, MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000001}, [12]) = 248
recvfrom(4, "\364\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\4\0\0\0\3\20"..., 8192, MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000001}, [12]) = 244
recvfrom(4, 0xbfb272e8, 8192, 64, 0xbfb2949c, 0xbfb294a8) = -1 EAGAIN (Resource temporarily unavailable)
gettimeofday({1202160306, 274665}, NULL) = 0
select(7, [4 5 6], [], [], {0, 98547})  = 0 (Timeout)
gettimeofday({1202160306, 373199}, NULL) = 0
gettimeofday({1202160306, 373253}, NULL) = 0
select(7, [4 5 6], [], [], {0, 0})      = 0 (Timeout)
gettimeofday({1202160306, 373392}, NULL) = 0
ioctl(3, SIOCGIWSCAN, 0xbfb292b0)       = 0
gettimeofday({1202160306, 374445}, NULL) = 0
gettimeofday({1202160306, 374691}, NULL) = 0
select(7, [4 5 6], [], [], {0, 0})      = 0 (Timeout)
gettimeofday({1202160306, 375201}, NULL) = 0
ioctl(3, SIOCSIWSCAN, 0xbfb2941c)       = 0
gettimeofday({1202160306, 375707}, NULL) = 0
gettimeofday({1202160306, 375951}, NULL) = 0
select(7, [4 5 6], [], [], {0, 833738}) = 0 (Timeout)
gettimeofday({1202160307, 219209}, NULL) = 0
gettimeofday({1202160307, 219268}, NULL) = 0
gettimeofday({1202160307, 219342}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999926}) = 1 (in [4], left {0, 829000})
gettimeofday({1202160307, 390427}, NULL) = 0
recvfrom(4, ",\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\4\0\0\0\3\20\0"..., 8192, MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000001}, [12]) = 44
ioctl(3, SIOCGIWSCAN, 0xbfb270e0)       = 0
gettimeofday({1202160307, 390729}, NULL) = 0
recvfrom(4, 0xbfb272e8, 8192, 64, 0xbfb2949c, 0xbfb294a8) = -1 EAGAIN (Resource temporarily unavailable)
gettimeofday({1202160307, 390852}, NULL) = 0
select(7, [4 5 6], [], [], {0, 828416}) = 0 (Timeout)
gettimeofday({1202160308, 219185}, NULL) = 0
gettimeofday({1202160308, 219240}, NULL) = 0
select(7, [4 5 6], [], [], {0, 28})     = 0 (Timeout)
gettimeofday({1202160308, 220180}, NULL) = 0
gettimeofday({1202160308, 220234}, NULL) = 0
gettimeofday({1202160308, 220304}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999930}) = 0 (Timeout)
gettimeofday({1202160309, 220184}, NULL) = 0
gettimeofday({1202160309, 220238}, NULL) = 0
select(7, [4 5 6], [], [], {0, 0})      = 0 (Timeout)
gettimeofday({1202160309, 220361}, NULL) = 0
gettimeofday({1202160309, 220415}, NULL) = 0
gettimeofday({1202160309, 220484}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999931}) = 0 (Timeout)
gettimeofday({1202160310, 220186}, NULL) = 0
gettimeofday({1202160310, 220240}, NULL) = 0
select(7, [4 5 6], [], [], {0, 175})    = 0 (Timeout)
gettimeofday({1202160310, 221179}, NULL) = 0
gettimeofday({1202160310, 221233}, NULL) = 0
gettimeofday({1202160310, 221303}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999930}) = 0 (Timeout)
gettimeofday({1202160311, 221184}, NULL) = 0
gettimeofday({1202160311, 221238}, NULL) = 0
select(7, [4 5 6], [], [], {0, 0})      = 0 (Timeout)
gettimeofday({1202160311, 221360}, NULL) = 0
gettimeofday({1202160311, 221413}, NULL) = 0
gettimeofday({1202160311, 221482}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999931}) = 0 (Timeout)
gettimeofday({1202160312, 221184}, NULL) = 0
gettimeofday({1202160312, 221239}, NULL) = 0
select(7, [4 5 6], [], [], {0, 174})    = 0 (Timeout)
gettimeofday({1202160312, 222180}, NULL) = 0
gettimeofday({1202160312, 222234}, NULL) = 0
gettimeofday({1202160312, 222303}, NULL) = 0
select(7, [4 5 6], [], [], {0, 168426}) = 0 (Timeout)
gettimeofday({1202160312, 391182}, NULL) = 0
ioctl(3, SIOCSIWSCAN, 0xbfb2941c)       = 0
gettimeofday({1202160312, 391300}, NULL) = 0
gettimeofday({1202160312, 391354}, NULL) = 0
select(7, [4 5 6], [], [], {0, 830880}) = 0 (Timeout)
gettimeofday({1202160313, 222183}, NULL) = 0
gettimeofday({1202160313, 222237}, NULL) = 0
select(7, [4 5 6], [], [], {0, 0})      = 0 (Timeout)
gettimeofday({1202160313, 222357}, NULL) = 0
gettimeofday({1202160313, 222409}, NULL) = 0
gettimeofday({1202160313, 222478}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999931}) = 1 (in [4], left {0, 789000})
gettimeofday({1202160313, 434057}, NULL) = 0
recvfrom(4, ",\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\4\0\0\0\3\20\0"..., 8192, MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000001}, [12]) = 44
ioctl(3, SIOCGIWSCAN, 0xbfb270e0)       = 0
gettimeofday({1202160313, 434339}, NULL) = 0
recvfrom(4, 0xbfb272e8, 8192, 64, 0xbfb2949c, 0xbfb294a8) = -1 EAGAIN (Resource temporarily unavailable)
gettimeofday({1202160313, 434463}, NULL) = 0
select(7, [4 5 6], [], [], {0, 787946}) = 0 (Timeout)
gettimeofday({1202160314, 222186}, NULL) = 0
gettimeofday({1202160314, 222241}, NULL) = 0
select(7, [4 5 6], [], [], {0, 168})    = 0 (Timeout)
gettimeofday({1202160314, 223181}, NULL) = 0
gettimeofday({1202160314, 223235}, NULL) = 0
gettimeofday({1202160314, 223306}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999929}) = 0 (Timeout)
gettimeofday({1202160315, 223182}, NULL) = 0
gettimeofday({1202160315, 223235}, NULL) = 0
select(7, [4 5 6], [], [], {0, 0})      = 0 (Timeout)
gettimeofday({1202160315, 223356}, NULL) = 0
gettimeofday({1202160315, 223409}, NULL) = 0
gettimeofday({1202160315, 223476}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999933}) = 0 (Timeout)
gettimeofday({1202160316, 223185}, NULL) = 0
gettimeofday({1202160316, 223240}, NULL) = 0
select(7, [4 5 6], [], [], {0, 169})    = 0 (Timeout)
gettimeofday({1202160316, 224180}, NULL) = 0
gettimeofday({1202160316, 224234}, NULL) = 0
gettimeofday({1202160316, 224304}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999930}) = 0 (Timeout)
gettimeofday({1202160317, 224184}, NULL) = 0
gettimeofday({1202160317, 224238}, NULL) = 0
select(7, [4 5 6], [], [], {0, 0})      = 0 (Timeout)
gettimeofday({1202160317, 224359}, NULL) = 0
gettimeofday({1202160317, 224412}, NULL) = 0
gettimeofday({1202160317, 224482}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999930}) = 0 (Timeout)
gettimeofday({1202160318, 224186}, NULL) = 0
gettimeofday({1202160318, 224241}, NULL) = 0
select(7, [4 5 6], [], [], {0, 171})    = 0 (Timeout)
gettimeofday({1202160318, 225179}, NULL) = 0
gettimeofday({1202160318, 225233}, NULL) = 0
gettimeofday({1202160318, 225303}, NULL) = 0
select(7, [4 5 6], [], [], {0, 209036}) = 0 (Timeout)
gettimeofday({1202160318, 435182}, NULL) = 0
ioctl(3, SIOCSIWSCAN, 0xbfb2941c)       = 0
gettimeofday({1202160318, 435295}, NULL) = 0
gettimeofday({1202160318, 435349}, NULL) = 0
select(7, [4 5 6], [], [], {0, 789884}) = 0 (Timeout)
gettimeofday({1202160319, 225396}, NULL) = 0
gettimeofday({1202160319, 225660}, NULL) = 0
gettimeofday({1202160319, 225938}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999722}) = 1 (in [4], left {0, 774000})
gettimeofday({1202160319, 452419}, NULL) = 0
recvfrom(4, ",\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\4\0\0\0\3\20\0"..., 8192, MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000001}, [12]) = 44
ioctl(3, SIOCGIWSCAN, 0xbfb270e0)       = 0
gettimeofday({1202160319, 452956}, NULL) = 0
recvfrom(4, 0xbfb272e8, 8192, 64, 0xbfb2949c, 0xbfb294a8) = -1 EAGAIN (Resource temporarily unavailable)
gettimeofday({1202160319, 455258}, NULL) = 0
select(7, [4 5 6], [], [], {0, 770402}) = 0 (Timeout)
gettimeofday({1202160320, 226189}, NULL) = 0
gettimeofday({1202160320, 226243}, NULL) = 0
gettimeofday({1202160320, 226312}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999931}) = 0 (Timeout)
gettimeofday({1202160321, 226188}, NULL) = 0
gettimeofday({1202160321, 226241}, NULL) = 0
select(7, [4 5 6], [], [], {0, 2})      = 0 (Timeout)
gettimeofday({1202160321, 227427}, NULL) = 0
gettimeofday({1202160321, 227480}, NULL) = 0
gettimeofday({1202160321, 227547}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999933}) = 0 (Timeout)
gettimeofday({1202160322, 227429}, NULL) = 0
gettimeofday({1202160322, 227483}, NULL) = 0
select(7, [4 5 6], [], [], {0, 0})      = 0 (Timeout)
gettimeofday({1202160322, 227602}, NULL) = 0
gettimeofday({1202160322, 227655}, NULL) = 0
gettimeofday({1202160322, 227722}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999933}) = 0 (Timeout)
gettimeofday({1202160323, 227179}, NULL) = 0
gettimeofday({1202160323, 227231}, NULL) = 0
select(7, [4 5 6], [], [], {0, 424})    = 0 (Timeout)
gettimeofday({1202160323, 228427}, NULL) = 0
gettimeofday({1202160323, 228479}, NULL) = 0
gettimeofday({1202160323, 228550}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999929}) = 0 (Timeout)
gettimeofday({1202160324, 228179}, NULL) = 0
gettimeofday({1202160324, 228232}, NULL) = 0
select(7, [4 5 6], [], [], {0, 247})    = 0 (Timeout)
gettimeofday({1202160324, 229427}, NULL) = 0
gettimeofday({1202160324, 229479}, NULL) = 0
gettimeofday({1202160324, 229550}, NULL) = 0
select(7, [4 5 6], [], [], {0, 223406}) = 0 (Timeout)
gettimeofday({1202160324, 453179}, NULL) = 0
ioctl(3, SIOCSIWSCAN, 0xbfb2941c)       = 0
gettimeofday({1202160324, 453292}, NULL) = 0
gettimeofday({1202160324, 453345}, NULL) = 0
select(7, [4 5 6], [], [], {0, 776134}) = 0 (Timeout)
gettimeofday({1202160325, 230182}, NULL) = 0
gettimeofday({1202160325, 230236}, NULL) = 0
gettimeofday({1202160325, 230303}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999933}) = 1 (in [4], left {0, 762000})
gettimeofday({1202160325, 468453}, NULL) = 0
recvfrom(4, ",\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\4\0\0\0\3\20\0"..., 8192, MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000001}, [12]) = 44
ioctl(3, SIOCGIWSCAN, 0xbfb270e0)       = 0
gettimeofday({1202160325, 468724}, NULL) = 0
recvfrom(4, 0xbfb272e8, 8192, 64, 0xbfb2949c, 0xbfb294a8) = -1 EAGAIN (Resource temporarily unavailable)
gettimeofday({1202160325, 468843}, NULL) = 0
select(7, [4 5 6], [], [], {0, 761393}) = 0 (Timeout)
gettimeofday({1202160326, 230181}, NULL) = 0
gettimeofday({1202160326, 230234}, NULL) = 0
select(7, [4 5 6], [], [], {0, 2})      = 0 (Timeout)
gettimeofday({1202160326, 231428}, NULL) = 0
gettimeofday({1202160326, 231481}, NULL) = 0
gettimeofday({1202160326, 231549}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999932}) = 0 (Timeout)
gettimeofday({1202160327, 231181}, NULL) = 0
gettimeofday({1202160327, 231234}, NULL) = 0
select(7, [4 5 6], [], [], {0, 247})    = 0 (Timeout)
gettimeofday({1202160327, 232427}, NULL) = 0
gettimeofday({1202160327, 232480}, NULL) = 0
gettimeofday({1202160327, 232547}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999933}) = 0 (Timeout)
gettimeofday({1202160328, 232180}, NULL) = 0
gettimeofday({1202160328, 232233}, NULL) = 0
select(7, [4 5 6], [], [], {0, 247})    = 0 (Timeout)
gettimeofday({1202160328, 233439}, NULL) = 0
gettimeofday({1202160328, 233492}, NULL) = 0
gettimeofday({1202160328, 233562}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999930}) = 0 (Timeout)
gettimeofday({1202160329, 233189}, NULL) = 0
gettimeofday({1202160329, 233241}, NULL) = 0
select(7, [4 5 6], [], [], {0, 251})    = 0 (Timeout)
gettimeofday({1202160329, 234427}, NULL) = 0
gettimeofday({1202160329, 234480}, NULL) = 0
gettimeofday({1202160329, 234551}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999929}) = 0 (Timeout)
gettimeofday({1202160330, 234428}, NULL) = 0
gettimeofday({1202160330, 234481}, NULL) = 0
select(7, [4 5 6], [], [], {0, 0})      = 0 (Timeout)
gettimeofday({1202160330, 234601}, NULL) = 0
gettimeofday({1202160330, 234653}, NULL) = 0
gettimeofday({1202160330, 234723}, NULL) = 0
select(7, [4 5 6], [], [], {0, 234001}) = 0 (Timeout)
gettimeofday({1202160330, 469179}, NULL) = 0
ioctl(3, SIOCSIWSCAN, 0xbfb2941c)       = 0
gettimeofday({1202160330, 469291}, NULL) = 0
gettimeofday({1202160330, 469344}, NULL) = 0
select(7, [4 5 6], [], [], {0, 765309}) = 0 (Timeout)
gettimeofday({1202160331, 235427}, NULL) = 0
gettimeofday({1202160331, 235481}, NULL) = 0
gettimeofday({1202160331, 235552}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999929}) = 1 (in [4], left {0, 751000})
gettimeofday({1202160331, 484455}, NULL) = 0
recvfrom(4, ",\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\4\0\0\0\3\20\0"..., 8192, MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000001}, [12]) = 44
ioctl(3, SIOCGIWSCAN, 0xbfb270e0)       = 0
gettimeofday({1202160331, 484726}, NULL) = 0
recvfrom(4, 0xbfb272e8, 8192, 64, 0xbfb2949c, 0xbfb294a8) = -1 EAGAIN (Resource temporarily unavailable)
gettimeofday({1202160331, 484845}, NULL) = 0
select(7, [4 5 6], [], [], {0, 750636}) = 0 (Timeout)
gettimeofday({1202160332, 235191}, NULL) = 0
gettimeofday({1202160332, 235245}, NULL) = 0
select(7, [4 5 6], [], [], {0, 236})    = 0 (Timeout)
gettimeofday({1202160332, 236428}, NULL) = 0
gettimeofday({1202160332, 236482}, NULL) = 0
gettimeofday({1202160332, 236553}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999929}) = 0 (Timeout)
gettimeofday({1202160333, 236183}, NULL) = 0
gettimeofday({1202160333, 236237}, NULL) = 0
select(7, [4 5 6], [], [], {0, 245})    = 0 (Timeout)
gettimeofday({1202160333, 237428}, NULL) = 0
gettimeofday({1202160333, 237481}, NULL) = 0
gettimeofday({1202160333, 237548}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999933}) = 0 (Timeout)
gettimeofday({1202160334, 237183}, NULL) = 0
gettimeofday({1202160334, 237236}, NULL) = 0
select(7, [4 5 6], [], [], {0, 245})    = 0 (Timeout)
gettimeofday({1202160334, 238428}, NULL) = 0
gettimeofday({1202160334, 238481}, NULL) = 0
gettimeofday({1202160334, 238548}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999933}) = 0 (Timeout)
gettimeofday({1202160335, 238220}, NULL) = 0
gettimeofday({1202160335, 238305}, NULL) = 0
select(7, [4 5 6], [], [], {0, 176})    = 0 (Timeout)
gettimeofday({1202160335, 239445}, NULL) = 0
gettimeofday({1202160335, 239532}, NULL) = 0
gettimeofday({1202160335, 239635}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999897}) = 0 (Timeout)
gettimeofday({1202160336, 239208}, NULL) = 0
gettimeofday({1202160336, 239295}, NULL) = 0
select(7, [4 5 6], [], [], {0, 237})    = 0 (Timeout)
gettimeofday({1202160336, 240447}, NULL) = 0
gettimeofday({1202160336, 240534}, NULL) = 0
gettimeofday({1202160336, 240635}, NULL) = 0
select(7, [4 5 6], [], [], {0, 244091}) = 0 (Timeout)
gettimeofday({1202160336, 485208}, NULL) = 0
ioctl(3, SIOCSIWSCAN, 0xbfb2941c)       = 0
gettimeofday({1202160336, 485401}, NULL) = 0
gettimeofday({1202160336, 485489}, NULL) = 0
select(7, [4 5 6], [], [], {0, 755045}) = 0 (Timeout)
gettimeofday({1202160337, 241451}, NULL) = 0
gettimeofday({1202160337, 241540}, NULL) = 0
gettimeofday({1202160337, 241645}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999895}) = 1 (in [4], left {0, 741000})
gettimeofday({1202160337, 500481}, NULL) = 0
recvfrom(4, ",\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\4\0\0\0\3\20\0"..., 8192, MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000001}, [12]) = 44
ioctl(3, SIOCGIWSCAN, 0xbfb270e0)       = 0
gettimeofday({1202160337, 500866}, NULL) = 0
recvfrom(4, 0xbfb272e8, 8192, 64, 0xbfb2949c, 0xbfb294a8) = -1 EAGAIN (Resource temporarily unavailable)
gettimeofday({1202160337, 501059}, NULL) = 0
select(7, [4 5 6], [], [], {0, 740481}) = 0 (Timeout)
gettimeofday({1202160338, 242210}, NULL) = 0
gettimeofday({1202160338, 242297}, NULL) = 0
gettimeofday({1202160338, 242407}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999890}) = 0 (Timeout)
gettimeofday({1202160339, 242210}, NULL) = 0
gettimeofday({1202160339, 242297}, NULL) = 0
select(7, [4 5 6], [], [], {0, 0})      = 0 (Timeout)
gettimeofday({1202160339, 242493}, NULL) = 0
gettimeofday({1202160339, 242579}, NULL) = 0
gettimeofday({1202160339, 242680}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999899}) = 0 (Timeout)
gettimeofday({1202160340, 242452}, NULL) = 0
gettimeofday({1202160340, 242539}, NULL) = 0
select(7, [4 5 6], [], [], {0, 40})     = 0 (Timeout)
gettimeofday({1202160340, 243445}, NULL) = 0
gettimeofday({1202160340, 243532}, NULL) = 0
gettimeofday({1202160340, 243634}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999898}) = 0 (Timeout)
gettimeofday({1202160341, 243340}, NULL) = 0
gettimeofday({1202160341, 243611}, NULL) = 0
select(7, [4 5 6], [], [], {0, 0})      = 0 (Timeout)
gettimeofday({1202160341, 244153}, NULL) = 0
gettimeofday({1202160341, 244206}, NULL) = 0
gettimeofday({1202160341, 244578}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999628}) = 0 (Timeout)
gettimeofday({1202160342, 244182}, NULL) = 0
gettimeofday({1202160342, 244235}, NULL) = 0
select(7, [4 5 6], [], [], {0, 0})      = 0 (Timeout)
gettimeofday({1202160342, 244354}, NULL) = 0
gettimeofday({1202160342, 244414}, NULL) = 0
gettimeofday({1202160342, 244483}, NULL) = 0
select(7, [4 5 6], [], [], {0, 256383}) = 0 (Timeout)
gettimeofday({1202160342, 501188}, NULL) = 0
ioctl(3, SIOCSIWSCAN, 0xbfb2941c)       = 0
gettimeofday({1202160342, 501301}, NULL) = 0
gettimeofday({1202160342, 501353}, NULL) = 0
select(7, [4 5 6], [], [], {0, 743061}) = 0 (Timeout)
gettimeofday({1202160343, 245428}, NULL) = 0
gettimeofday({1202160343, 245481}, NULL) = 0
gettimeofday({1202160343, 245549}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999932}) = 1 (in [4], left {0, 729000})
gettimeofday({1202160343, 516452}, NULL) = 0
recvfrom(4, ",\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\4\0\0\0\3\20\0"..., 8192, MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000001}, [12]) = 44
ioctl(3, SIOCGIWSCAN, 0xbfb270e0)       = 0
gettimeofday({1202160343, 516721}, NULL) = 0
recvfrom(4, 0xbfb272e8, 8192, 64, 0xbfb2949c, 0xbfb294a8) = -1 EAGAIN (Resource temporarily unavailable)
gettimeofday({1202160343, 516841}, NULL) = 0
select(7, [4 5 6], [], [], {0, 728640}) = 0 (Timeout)
gettimeofday({1202160344, 245181}, NULL) = 0
gettimeofday({1202160344, 245234}, NULL) = 0
select(7, [4 5 6], [], [], {0, 247})    = 0 (Timeout)
gettimeofday({1202160344, 246428}, NULL) = 0
gettimeofday({1202160344, 246481}, NULL) = 0
gettimeofday({1202160344, 246548}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999933}) = 0 (Timeout)
gettimeofday({1202160345, 246180}, NULL) = 0
gettimeofday({1202160345, 246233}, NULL) = 0
select(7, [4 5 6], [], [], {0, 248})    = 0 (Timeout)
gettimeofday({1202160345, 247427}, NULL) = 0
gettimeofday({1202160345, 247480}, NULL) = 0
gettimeofday({1202160345, 247546}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999934}) = 0 (Timeout)
gettimeofday({1202160346, 247181}, NULL) = 0
gettimeofday({1202160346, 247234}, NULL) = 0
select(7, [4 5 6], [], [], {0, 246})    = 0 (Timeout)
gettimeofday({1202160346, 248428}, NULL) = 0
gettimeofday({1202160346, 248480}, NULL) = 0
gettimeofday({1202160346, 248547}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999933}) = 0 (Timeout)
gettimeofday({1202160347, 248182}, NULL) = 0
gettimeofday({1202160347, 248235}, NULL) = 0
select(7, [4 5 6], [], [], {0, 245})    = 0 (Timeout)
gettimeofday({1202160347, 249427}, NULL) = 0
gettimeofday({1202160347, 249480}, NULL) = 0
gettimeofday({1202160347, 249549}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999931}) = 0 (Timeout)
gettimeofday({1202160348, 249181}, NULL) = 0
gettimeofday({1202160348, 249234}, NULL) = 0
select(7, [4 5 6], [], [], {0, 246})    = 0 (Timeout)
gettimeofday({1202160348, 250438}, NULL) = 0
gettimeofday({1202160348, 250490}, NULL) = 0
gettimeofday({1202160348, 250557}, NULL) = 0
select(7, [4 5 6], [], [], {0, 266164}) = 0 (Timeout)
gettimeofday({1202160348, 517428}, NULL) = 0
ioctl(3, SIOCSIWSCAN, 0xbfb2941c)       = 0
gettimeofday({1202160348, 517541}, NULL) = 0
gettimeofday({1202160348, 517593}, NULL) = 0
select(7, [4 5 6], [], [], {0, 732897}) = 0 (Timeout)
gettimeofday({1202160349, 250189}, NULL) = 0
gettimeofday({1202160349, 250242}, NULL) = 0
select(7, [4 5 6], [], [], {0, 248})    = 0 (Timeout)
gettimeofday({1202160349, 251427}, NULL) = 0
gettimeofday({1202160349, 251480}, NULL) = 0
gettimeofday({1202160349, 251546}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999934}) = 1 (in [4], left {0, 719000})
gettimeofday({1202160349, 532458}, NULL) = 0
recvfrom(4, ",\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\4\0\0\0\3\20\0"..., 8192, MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000001}, [12]) = 44
ioctl(3, SIOCGIWSCAN, 0xbfb270e0)       = 0
gettimeofday({1202160349, 532728}, NULL) = 0
recvfrom(4, 0xbfb272e8, 8192, 64, 0xbfb2949c, 0xbfb294a8) = -1 EAGAIN (Resource temporarily unavailable)
gettimeofday({1202160349, 532846}, NULL) = 0
select(7, [4 5 6], [], [], {0, 718634}) = 0 (Timeout)
gettimeofday({1202160350, 251428}, NULL) = 0
gettimeofday({1202160350, 251481}, NULL) = 0
select(7, [4 5 6], [], [], {0, 0})      = 0 (Timeout)
gettimeofday({1202160350, 251600}, NULL) = 0
gettimeofday({1202160350, 251652}, NULL) = 0
gettimeofday({1202160350, 251720}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999932}) = 0 (Timeout)
gettimeofday({1202160351, 251428}, NULL) = 0
gettimeofday({1202160351, 251481}, NULL) = 0
select(7, [4 5 6], [], [], {0, 171})    = 0 (Timeout)
gettimeofday({1202160351, 252427}, NULL) = 0
gettimeofday({1202160351, 252479}, NULL) = 0
gettimeofday({1202160351, 252546}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999933}) = 0 (Timeout)
gettimeofday({1202160352, 252183}, NULL) = 0
gettimeofday({1202160352, 252236}, NULL) = 0
select(7, [4 5 6], [], [], {0, 243})    = 0 (Timeout)
gettimeofday({1202160352, 253427}, NULL) = 0
gettimeofday({1202160352, 253480}, NULL) = 0
gettimeofday({1202160352, 253549}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999931}) = 0 (Timeout)
gettimeofday({1202160353, 253180}, NULL) = 0
gettimeofday({1202160353, 253233}, NULL) = 0
select(7, [4 5 6], [], [], {0, 247})    = 0 (Timeout)
gettimeofday({1202160353, 254427}, NULL) = 0
gettimeofday({1202160353, 254479}, NULL) = 0
gettimeofday({1202160353, 254546}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999933}

[-- Attachment #5: wpa_supplicant-strace2 --]
[-- Type: text/plain, Size: 20747 bytes --]

execve("/sbin/wpa_supplicant", ["wpa_supplicant", "-Dwext", "-iath0", "-c", "/etc/wpa_supplicant/wpa_supplica"...], [/* 15 vars */]) = 0
uname({sys="Linux", node="home", ...})  = 0
brk(0)                                  = 0x80e5000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f57000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=77517, ...}) = 0
mmap2(NULL, 77517, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f44000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/i686/cmov/libssl.so.0.9.8", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\220\255"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=252768, ...}) = 0
mmap2(NULL, 255732, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7f05000
mmap2(0xb7f40000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3a) = 0xb7f40000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/i686/cmov/libcrypto.so.0.9.8", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300Y\3"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=1270520, ...}) = 0
mmap2(NULL, 1282904, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7dcb000
mmap2(0xb7eed000, 81920, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x122) = 0xb7eed000
mmap2(0xb7f01000, 13144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7f01000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7dca000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/tls/i686/cmov/libdl.so.2", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20\f\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=9592, ...}) = 0
mmap2(NULL, 12404, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7dc6000
mmap2(0xb7dc8000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0xb7dc8000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/libdbus-1.so.3", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\220K\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=203740, ...}) = 0
mmap2(NULL, 203036, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7d94000
mmap2(0xb7dc5000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x31) = 0xb7dc5000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/tls/i686/cmov/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240O\1"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=1241392, ...}) = 0
mmap2(NULL, 1247388, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7c63000
mmap2(0xb7d8a000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x127) = 0xb7d8a000
mmap2(0xb7d91000, 10396, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7d91000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/libz.so.1", O_RDONLY)    = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\340\26"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=78500, ...}) = 0
mmap2(NULL, 81456, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7c4f000
mmap2(0xb7c62000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12) = 0xb7c62000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7c4e000
mprotect(0xb7d8a000, 20480, PROT_READ)  = 0
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7c4e940, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
munmap(0xb7f44000, 77517)               = 0
brk(0)                                  = 0x80e5000
brk(0x8106000)                          = 0x8106000
open("/dev/null", O_RDWR)               = 3
close(3)                                = 0
open("/etc/wpa_supplicant/wpa_supplicant.conf", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=183, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f56000
read(3, "# WPA-PSK/TKIP\n\nctrl_interface=/"..., 4096) = 183
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0xb7f56000, 4096)                = 0
gettimeofday({1202160452, 570860}, NULL) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3
socket(PF_NETLINK, SOCK_RAW, 0)         = 4
bind(4, {sa_family=AF_NETLINK, pid=0, groups=00000001}, 12) = 0
ioctl(3, 0x8b36, 0xbfb6cc7c)            = -1 EOPNOTSUPP (Operation not supported)
ioctl(3, SIOCSIWMODE, 0xbfb6cc80)       = 0
ioctl(3, SIOCGIFFLAGS, {ifr_name="ath0", ifr_flags=IFF_UP|IFF_BROADCAST|IFF_PROMISC|IFF_MULTICAST}) = 0
ioctl(3, SIOCSIFFLAGS, 0xbfb6cc80)      = 0
ioctl(3, SIOCGIWRANGE, 0xbfb6cce8)      = 0
access("/proc/net", R_OK)               = 0
access("/proc/net/unix", R_OK)          = 0
socket(PF_FILE, SOCK_DGRAM, 0)          = 5
ioctl(5, SIOCGIFINDEX, {ifr_name="ath0", ifr_index=4}) = 0
close(5)                                = 0
send(4, "-\0\0\0\23\0\1\0\1\0\0\0\0\0\0\0\0\0\0\0\4\0\0\0\0\0\0"..., 45, 0) = 45
socket(PF_PACKET, SOCK_DGRAM, 36488)    = 5
ioctl(5, SIOCGIFINDEX, {ifr_name="ath0", ifr_index=4}) = 0
bind(5, {sa_family=AF_PACKET, proto=0x888e, if4, pkttype=PACKET_HOST, addr(0)={0, }, 20) = 0
ioctl(5, SIOCGIFHWADDR, {ifr_name="ath0", ifr_hwaddr=00:17:9a:d1:ee:f4}) = 0
ioctl(3, 0x8b32, 0xbfb6ccbc)            = 0
ioctl(3, 0x8b34, 0xbfb6cc5c)            = 0
ioctl(3, 0x8b34, 0xbfb6cc5c)            = 0
ioctl(3, 0x8b34, 0xbfb6cc5c)            = 0
ioctl(3, 0x8b34, 0xbfb6cc5c)            = 0
ioctl(3, 0x8b32, 0xbfb6ccbc)            = -1 EOPNOTSUPP (Operation not supported)
dup(2)                                  = 6
fcntl64(6, F_GETFL)                     = 0x1 (flags O_WRONLY)
close(6)                                = 0
write(2, "ioctl[SIOCSIWAUTH]: Operation no"..., 44ioctl[SIOCSIWAUTH]: Operation not supported
) = 44
write(2, "WEXT auth param 4 value 0x0 - ", 30WEXT auth param 4 value 0x0 - ) = 30
ioctl(3, 0x8b32, 0xbfb6ccbc)            = 0
gettimeofday({1202160452, 576111}, NULL) = 0
mkdir("/var/run/wpa_supplicant", 0770)  = 0
socket(PF_FILE, SOCK_DGRAM, 0)          = 6
bind(6, {sa_family=AF_FILE, path="/var/run/wpa_supplicant/ath0"}, 110) = 0
chmod("/var/run/wpa_supplicant/ath0", 0770) = 0
rt_sigaction(SIGINT, {0x80503c0, [INT], SA_RESTART}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGTERM, {0x80503c0, [TERM], SA_RESTART}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGHUP, {0x80503c0, [HUP], SA_RESTART}, {SIG_DFL}, 8) = 0
gettimeofday({1202160452, 576925}, NULL) = 0
select(7, [4 5 6], [], [], {0, 99186})  = 1 (in [4], left {0, 99186})
gettimeofday({1202160452, 577072}, NULL) = 0
recvfrom(4, ",\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\4\0\0\0\3\21\0"..., 8192, MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000001}, [12]) = 44
recvfrom(4, 0xbfb6ab28, 8192, 64, 0xbfb6ccdc, 0xbfb6cce8) = -1 EAGAIN (Resource temporarily unavailable)
gettimeofday({1202160452, 577346}, NULL) = 0
select(7, [4 5 6], [], [], {0, 98765})  = 0 (Timeout)
gettimeofday({1202160452, 676429}, NULL) = 0
ioctl(3, SIOCGIWSCAN, 0xbfb6caf0)       = 0
gettimeofday({1202160452, 676589}, NULL) = 0
gettimeofday({1202160452, 676642}, NULL) = 0
select(7, [4 5 6], [], [], {0, 0})      = 0 (Timeout)
gettimeofday({1202160452, 676762}, NULL) = 0
ioctl(3, SIOCSIWSCAN, 0xbfb6cc5c)       = 0
gettimeofday({1202160452, 676873}, NULL) = 0
gettimeofday({1202160452, 676926}, NULL) = 0
select(7, [4 5 6], [], [], {0, 893934}) = 0 (Timeout)
gettimeofday({1202160453, 570187}, NULL) = 0
gettimeofday({1202160453, 570241}, NULL) = 0
select(7, [4 5 6], [], [], {0, 619})    = 0 (Timeout)
gettimeofday({1202160453, 571428}, NULL) = 0
gettimeofday({1202160453, 571482}, NULL) = 0
gettimeofday({1202160453, 571552}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999930}) = 1 (in [4], left {0, 880000})
gettimeofday({1202160453, 691461}, NULL) = 0
recvfrom(4, ",\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\4\0\0\0\3\21\0"..., 8192, MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000001}, [12]) = 44
ioctl(3, SIOCGIWSCAN, 0xbfb6a920)       = 0
gettimeofday({1202160453, 691739}, NULL) = 0
recvfrom(4, 0xbfb6ab28, 8192, 64, 0xbfb6ccdc, 0xbfb6cce8) = -1 EAGAIN (Resource temporarily unavailable)
gettimeofday({1202160453, 691859}, NULL) = 0
select(7, [4 5 6], [], [], {0, 879623}) = 0 (Timeout)
gettimeofday({1202160454, 571185}, NULL) = 0
gettimeofday({1202160454, 571238}, NULL) = 0
select(7, [4 5 6], [], [], {0, 244})    = 0 (Timeout)
gettimeofday({1202160454, 572429}, NULL) = 0
gettimeofday({1202160454, 572482}, NULL) = 0
gettimeofday({1202160454, 572551}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999931}) = 0 (Timeout)
gettimeofday({1202160455, 572183}, NULL) = 0
gettimeofday({1202160455, 572236}, NULL) = 0
select(7, [4 5 6], [], [], {0, 246})    = 0 (Timeout)
gettimeofday({1202160455, 573428}, NULL) = 0
gettimeofday({1202160455, 573480}, NULL) = 0
gettimeofday({1202160455, 573547}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999933}) = 0 (Timeout)
gettimeofday({1202160456, 573182}, NULL) = 0
gettimeofday({1202160456, 573235}, NULL) = 0
select(7, [4 5 6], [], [], {0, 245})    = 0 (Timeout)
gettimeofday({1202160456, 574428}, NULL) = 0
gettimeofday({1202160456, 574480}, NULL) = 0
gettimeofday({1202160456, 574547}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999933}) = 0 (Timeout)
gettimeofday({1202160457, 574182}, NULL) = 0
gettimeofday({1202160457, 574235}, NULL) = 0
select(7, [4 5 6], [], [], {0, 245})    = 0 (Timeout)
gettimeofday({1202160457, 575439}, NULL) = 0
gettimeofday({1202160457, 575491}, NULL) = 0
gettimeofday({1202160457, 575559}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999932}) = 0 (Timeout)
gettimeofday({1202160458, 575190}, NULL) = 0
gettimeofday({1202160458, 575242}, NULL) = 0
select(7, [4 5 6], [], [], {0, 249})    = 0 (Timeout)
gettimeofday({1202160458, 576428}, NULL) = 0
gettimeofday({1202160458, 576480}, NULL) = 0
gettimeofday({1202160458, 576547}, NULL) = 0
select(7, [4 5 6], [], [], {0, 115192}) = 0 (Timeout)
gettimeofday({1202160458, 692179}, NULL) = 0
ioctl(3, SIOCSIWSCAN, 0xbfb6cc5c)       = 0
gettimeofday({1202160458, 692292}, NULL) = 0
gettimeofday({1202160458, 692344}, NULL) = 0
select(7, [4 5 6], [], [], {0, 884136}) = 0 (Timeout)
gettimeofday({1202160459, 577182}, NULL) = 0
gettimeofday({1202160459, 577235}, NULL) = 0
gettimeofday({1202160459, 577303}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999932}) = 1 (in [4], left {0, 870000})
gettimeofday({1202160459, 707452}, NULL) = 0
recvfrom(4, ",\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\4\0\0\0\3\21\0"..., 8192, MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000001}, [12]) = 44
ioctl(3, SIOCGIWSCAN, 0xbfb6a920)       = 0
gettimeofday({1202160459, 707726}, NULL) = 0
recvfrom(4, 0xbfb6ab28, 8192, 64, 0xbfb6ccdc, 0xbfb6cce8) = -1 EAGAIN (Resource temporarily unavailable)
gettimeofday({1202160459, 707844}, NULL) = 0
select(7, [4 5 6], [], [], {0, 869391}) = 0 (Timeout)
gettimeofday({1202160460, 577196}, NULL) = 0
gettimeofday({1202160460, 577249}, NULL) = 0
select(7, [4 5 6], [], [], {0, 0})      = 0 (Timeout)
gettimeofday({1202160460, 577376}, NULL) = 0
gettimeofday({1202160460, 577429}, NULL) = 0
gettimeofday({1202160460, 577498}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999931}) = 0 (Timeout)
gettimeofday({1202160461, 577185}, NULL) = 0
gettimeofday({1202160461, 577238}, NULL) = 0
select(7, [4 5 6], [], [], {0, 191})    = 0 (Timeout)
gettimeofday({1202160461, 578428}, NULL) = 0
gettimeofday({1202160461, 578481}, NULL) = 0
gettimeofday({1202160461, 578548}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999933}) = 0 (Timeout)
gettimeofday({1202160462, 578181}, NULL) = 0
gettimeofday({1202160462, 578235}, NULL) = 0
select(7, [4 5 6], [], [], {0, 246})    = 0 (Timeout)
gettimeofday({1202160462, 579428}, NULL) = 0
gettimeofday({1202160462, 579481}, NULL) = 0
gettimeofday({1202160462, 579549}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999932}) = 0 (Timeout)
gettimeofday({1202160463, 579187}, NULL) = 0
gettimeofday({1202160463, 579240}, NULL) = 0
select(7, [4 5 6], [], [], {0, 241})    = 0 (Timeout)
gettimeofday({1202160463, 580428}, NULL) = 0
gettimeofday({1202160463, 580481}, NULL) = 0
gettimeofday({1202160463, 580551}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999930}) = 0 (Timeout)
gettimeofday({1202160464, 580193}, NULL) = 0
gettimeofday({1202160464, 580246}, NULL) = 0
select(7, [4 5 6], [], [], {0, 235})    = 0 (Timeout)
gettimeofday({1202160464, 581428}, NULL) = 0
gettimeofday({1202160464, 581481}, NULL) = 0
gettimeofday({1202160464, 581552}, NULL) = 0
select(7, [4 5 6], [], [], {0, 126174}) = 0 (Timeout)
gettimeofday({1202160464, 708187}, NULL) = 0
ioctl(3, SIOCSIWSCAN, 0xbfb6cc5c)       = 0
gettimeofday({1202160464, 708299}, NULL) = 0
gettimeofday({1202160464, 708352}, NULL) = 0
select(7, [4 5 6], [], [], {0, 873129}) = 0 (Timeout)
gettimeofday({1202160465, 582430}, NULL) = 0
gettimeofday({1202160465, 582483}, NULL) = 0
gettimeofday({1202160465, 582552}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999931}) = 1 (in [4], left {0, 837000})
gettimeofday({1202160465, 745455}, NULL) = 0
recvfrom(4, ",\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\4\0\0\0\3\21\0"..., 8192, MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000001}, [12]) = 44
ioctl(3, SIOCGIWSCAN, 0xbfb6a920)       = 0
gettimeofday({1202160465, 745728}, NULL) = 0
recvfrom(4, 0xbfb6ab28, 8192, 64, 0xbfb6ccdc, 0xbfb6cce8) = -1 EAGAIN (Resource temporarily unavailable)
gettimeofday({1202160465, 745846}, NULL) = 0
select(7, [4 5 6], [], [], {0, 836637}) = 0 (Timeout)
gettimeofday({1202160466, 582182}, NULL) = 0
gettimeofday({1202160466, 582235}, NULL) = 0
select(7, [4 5 6], [], [], {0, 248})    = 0 (Timeout)
gettimeofday({1202160466, 583428}, NULL) = 0
gettimeofday({1202160466, 583481}, NULL) = 0
gettimeofday({1202160466, 583549}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999932}) = 0 (Timeout)
gettimeofday({1202160467, 583181}, NULL) = 0
gettimeofday({1202160467, 583234}, NULL) = 0
select(7, [4 5 6], [], [], {0, 247})    = 0 (Timeout)
gettimeofday({1202160467, 584428}, NULL) = 0
gettimeofday({1202160467, 584480}, NULL) = 0
gettimeofday({1202160467, 584547}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999933}) = 0 (Timeout)
gettimeofday({1202160468, 584182}, NULL) = 0
gettimeofday({1202160468, 584235}, NULL) = 0
select(7, [4 5 6], [], [], {0, 245})    = 0 (Timeout)
gettimeofday({1202160468, 585439}, NULL) = 0
gettimeofday({1202160468, 585492}, NULL) = 0
gettimeofday({1202160468, 585559}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999933}) = 0 (Timeout)
gettimeofday({1202160469, 585430}, NULL) = 0
gettimeofday({1202160469, 585484}, NULL) = 0
select(7, [4 5 6], [], [], {0, 8})      = 0 (Timeout)
gettimeofday({1202160469, 586428}, NULL) = 0
gettimeofday({1202160469, 586480}, NULL) = 0
gettimeofday({1202160469, 586548}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999932}) = 0 (Timeout)
gettimeofday({1202160470, 586181}, NULL) = 0
gettimeofday({1202160470, 586235}, NULL) = 0
select(7, [4 5 6], [], [], {0, 245})    = 0 (Timeout)
gettimeofday({1202160470, 587428}, NULL) = 0
gettimeofday({1202160470, 587481}, NULL) = 0
gettimeofday({1202160470, 587549}, NULL) = 0
select(7, [4 5 6], [], [], {0, 158179}) = 0 (Timeout)
gettimeofday({1202160470, 746180}, NULL) = 0
ioctl(3, SIOCSIWSCAN, 0xbfb6cc5c)       = 0
gettimeofday({1202160470, 746293}, NULL) = 0
gettimeofday({1202160470, 746345}, NULL) = 0
select(7, [4 5 6], [], [], {0, 841136}) = 0 (Timeout)
gettimeofday({1202160471, 588430}, NULL) = 0
gettimeofday({1202160471, 588484}, NULL) = 0
gettimeofday({1202160471, 588553}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999931}) = 1 (in [4], left {0, 827000})
gettimeofday({1202160471, 761463}, NULL) = 0
recvfrom(4, ",\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\4\0\0\0\3\21\0"..., 8192, MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000001}, [12]) = 44
ioctl(3, SIOCGIWSCAN, 0xbfb6a920)       = 0
gettimeofday({1202160471, 761733}, NULL) = 0
recvfrom(4, 0xbfb6ab28, 8192, 64, 0xbfb6ccdc, 0xbfb6cce8) = -1 EAGAIN (Resource temporarily unavailable)
gettimeofday({1202160471, 761851}, NULL) = 0
select(7, [4 5 6], [], [], {0, 826633}) = 0 (Timeout)
gettimeofday({1202160472, 588182}, NULL) = 0
gettimeofday({1202160472, 588236}, NULL) = 0
select(7, [4 5 6], [], [], {0, 248})    = 0 (Timeout)
gettimeofday({1202160472, 589428}, NULL) = 0
gettimeofday({1202160472, 589481}, NULL) = 0
gettimeofday({1202160472, 589550}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999931}) = 0 (Timeout)
gettimeofday({1202160473, 589182}, NULL) = 0
gettimeofday({1202160473, 589235}, NULL) = 0
select(7, [4 5 6], [], [], {0, 246})    = 0 (Timeout)
gettimeofday({1202160473, 590428}, NULL) = 0
gettimeofday({1202160473, 590481}, NULL) = 0
gettimeofday({1202160473, 590548}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999933}) = 0 (Timeout)
gettimeofday({1202160474, 590183}, NULL) = 0
gettimeofday({1202160474, 590236}, NULL) = 0
select(7, [4 5 6], [], [], {0, 245})    = 0 (Timeout)
gettimeofday({1202160474, 591429}, NULL) = 0
gettimeofday({1202160474, 591482}, NULL) = 0
gettimeofday({1202160474, 591549}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999933}) = 0 (Timeout)
gettimeofday({1202160475, 591196}, NULL) = 0
gettimeofday({1202160475, 591249}, NULL) = 0
select(7, [4 5 6], [], [], {0, 233})    = 0 (Timeout)
gettimeofday({1202160475, 592428}, NULL) = 0
gettimeofday({1202160475, 592481}, NULL) = 0
gettimeofday({1202160475, 592549}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999932}) = 0 (Timeout)
gettimeofday({1202160476, 592194}, NULL) = 0
gettimeofday({1202160476, 592247}, NULL) = 0
select(7, [4 5 6], [], [], {0, 234})    = 0 (Timeout)
gettimeofday({1202160476, 593428}, NULL) = 0
gettimeofday({1202160476, 593481}, NULL) = 0
gettimeofday({1202160476, 593551}, NULL) = 0
select(7, [4 5 6], [], [], {0, 168182}) = 0 (Timeout)
gettimeofday({1202160476, 762182}, NULL) = 0
ioctl(3, SIOCSIWSCAN, 0xbfb6cc5c)       = 0
gettimeofday({1202160476, 762294}, NULL) = 0
gettimeofday({1202160476, 762347}, NULL) = 0
select(7, [4 5 6], [], [], {0, 831134}) = 0 (Timeout)
gettimeofday({1202160477, 594430}, NULL) = 0
gettimeofday({1202160477, 594483}, NULL) = 0
gettimeofday({1202160477, 594551}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999932}) = 1 (in [4], left {0, 817000})
gettimeofday({1202160477, 777448}, NULL) = 0
recvfrom(4, ",\0\0\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\4\0\0\0\3\21\0"..., 8192, MSG_DONTWAIT, {sa_family=AF_NETLINK, pid=0, groups=00000001}, [12]) = 44
ioctl(3, SIOCGIWSCAN, 0xbfb6a920)       = 0
gettimeofday({1202160477, 777720}, NULL) = 0
recvfrom(4, 0xbfb6ab28, 8192, 64, 0xbfb6ccdc, 0xbfb6cce8) = -1 EAGAIN (Resource temporarily unavailable)
gettimeofday({1202160477, 777839}, NULL) = 0
select(7, [4 5 6], [], [], {0, 816644}) = 0 (Timeout)
gettimeofday({1202160478, 594430}, NULL) = 0
gettimeofday({1202160478, 594483}, NULL) = 0
select(7, [4 5 6], [], [], {0, 0})      = 0 (Timeout)
gettimeofday({1202160478, 594603}, NULL) = 0
gettimeofday({1202160478, 594655}, NULL) = 0
gettimeofday({1202160478, 594723}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999932}) = 0 (Timeout)
gettimeofday({1202160479, 594430}, NULL) = 0
gettimeofday({1202160479, 594482}, NULL) = 0
select(7, [4 5 6], [], [], {0, 173})    = 0 (Timeout)
gettimeofday({1202160479, 595434}, NULL) = 0
gettimeofday({1202160479, 595486}, NULL) = 0
gettimeofday({1202160479, 595554}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999932}) = 0 (Timeout)
gettimeofday({1202160480, 595180}, NULL) = 0
gettimeofday({1202160480, 595234}, NULL) = 0
select(7, [4 5 6], [], [], {0, 252})    = 0 (Timeout)
gettimeofday({1202160480, 596428}, NULL) = 0
gettimeofday({1202160480, 596480}, NULL) = 0
gettimeofday({1202160480, 596548}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999932}) = 0 (Timeout)
gettimeofday({1202160481, 596182}, NULL) = 0
gettimeofday({1202160481, 596235}, NULL) = 0
select(7, [4 5 6], [], [], {0, 245})    = 0 (Timeout)
gettimeofday({1202160481, 597429}, NULL) = 0
gettimeofday({1202160481, 597482}, NULL) = 0
gettimeofday({1202160481, 597550}, NULL) = 0
select(7, [4 5 6], [], [], {0, 999932}

^ permalink raw reply

* Re: [PATCH] xircom_cb should return NETDEV_TX_BUSY when there are no descriptors available
From: Erik Mouw @ 2008-02-04 21:20 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: netdev, Waskiewicz Jr, Peter P, jamal
In-Reply-To: <20080204175653.GC16952@gateway.home>

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

On Mon, Feb 04, 2008 at 06:56:54PM +0100, Erik Mouw wrote:
> Changes in other networking paths uncovered a bug in the xircom_cb
> driver which made the kernel spew lots of the following error messages:
> 
>   BUG eth1 code -5 qlen 0
> 
> It turned out that the driver returned -EIO when there was no
> descriptor available for sending packets. It should return
> NETDEV_TX_BUSY instead. This was discussed on the netdev list before,
> see http://thread.gmane.org/gmane.linux.network/84603 .
> 
> Signed-off-by: Erik Mouw <mouw@nl.linux.org>

Forgot to tell: the patch is against 2.6.24 but should apply cleanly to
the latest git kernel. The xircom_cb driver appears to be orphaned so
I've send the patch to you.


Erik

-- 
They're all fools. Don't worry. Darwin may be slow, but he'll
eventually get them. -- Matthew Lammers in alt.sysadmin.recovery

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply

* Re: [PATCH 2.6.24-mm1] error compiling net driver NE2000/NE1000
From: Andrew Morton @ 2008-02-04 21:10 UTC (permalink / raw)
  To: Pierre Peiffer; +Cc: linux-kernel, netdev, Alan Cox
In-Reply-To: <20080204162921.94984e72.pierre.peiffer@bull.net>

On Mon, 4 Feb 2008 16:29:21 +0100
Pierre Peiffer <pierre.peiffer@bull.net> wrote:

> Hi,
> 
> 	When I compile the kernel 2.6.24-mm1 with:
> CONFIG_NET_ISA=y
> CONFIG_NE2000=y
> 
> I have the following compile error:
> ...
>   GEN     .version
>   CHK     include/linux/compile.h
>   UPD     include/linux/compile.h
>   CC      init/version.o
>   LD      init/built-in.o
>   LD      .tmp_vmlinux1
> drivers/built-in.o: In function `ne_block_output':
> linux-2.6.24-mm1/drivers/net/ne.c:797: undefined reference to `NS8390_init'
> drivers/built-in.o: In function `ne_drv_resume':
> linux-2.6.24-mm1/drivers/net/ne.c:858: undefined reference to `NS8390_init'
> drivers/built-in.o: In function `ne_probe1':
> linux-2.6.24-mm1/drivers/net/ne.c:539: undefined reference to `NS8390_init'
> make[1]: *** [.tmp_vmlinux1] Error 1
> make: *** [sub-make] Error 2

Thanks for reporting this.

> As I saw that the file 8390p.c is compiled for this driver, but not the file 
> 8390.c which contains this function NS8390_init(), I fixed this error with
> the following patch.

Alan's
8390-split-8390-support-into-a-pausing-and-a-non-pausing-driver-core.patch
would be a prime suspect.  I assume this bug isn't present ing mainline or
in 2.6.24?

> As NS8390p_init() does the same thing than NS8390_init(), I suppose that this is the right fix ?
> 
> Signed-off-by: Pierre Peiffer <pierre.peiffer@bull.net>
> ---
>  drivers/net/ne.c |    6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> Index: b/drivers/net/ne.c
> ===================================================================
> --- a/drivers/net/ne.c
> +++ b/drivers/net/ne.c
> @@ -536,7 +536,7 @@ static int __init ne_probe1(struct net_d
>  #ifdef CONFIG_NET_POLL_CONTROLLER
>  	dev->poll_controller = eip_poll;
>  #endif
> -	NS8390_init(dev, 0);
> +	NS8390p_init(dev, 0);
>  
>  	ret = register_netdev(dev);
>  	if (ret)
> @@ -794,7 +794,7 @@ retry:
>  		if (time_after(jiffies, dma_start + 2*HZ/100)) {		/* 20ms */
>  			printk(KERN_WARNING "%s: timeout waiting for Tx RDC.\n", dev->name);
>  			ne_reset_8390(dev);
> -			NS8390_init(dev,1);
> +			NS8390p_init(dev,1);
>  			break;
>  		}
>  
> @@ -855,7 +855,7 @@ static int ne_drv_resume(struct platform
>  
>  	if (netif_running(dev)) {
>  		ne_reset_8390(dev);
> -		NS8390_init(dev, 1);
> +		NS8390p_init(dev, 1);
>  		netif_device_attach(dev);
>  	}
>  	return 0;



^ permalink raw reply

* Re: [Wireless, ath5k] 2.6.24-git13 9135f1901ee6449dfe338adf6e40e9c2025b8150
From: Jiri Slaby @ 2008-02-04 20:25 UTC (permalink / raw)
  To: "Oliver Pinter (Pintér Olivér)"
  Cc: netdev, ath5k-devel-xDcbHBWguxEUs3QNXV6qNA, John W. Linville,
	Linux Kernel, Bruno Randolf, Andrew Morton, Linus Torvalds
In-Reply-To: <6101e8c40802040600q804e40cs97d0031920e58d9d-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>

On 02/04/2008 03:00 PM, Oliver Pinter (Pintér Olivér) wrote:
> git top: 9135f1901ee6449dfe338adf6e40e9c2025b8150
> 
> [  399.582185] wpa_supplicant[4383]: segfault at 30 ip 080697ca sp
> bf87a690 error 4 in wpa_supplicant[8048000+4c000]
> [  406.277199] wpa_supplicant[4384]: segfault at 30 ip 080697ca sp
> bfc13a30 error 4 in wpa_supplicant[8048000+4c000]
> [  407.586375] wpa_supplicant[4385]: segfault at 30 ip 080697ca sp
> bf9ed000 error 4 in wpa_supplicant[8048000+4c000]
> [  411.671037] wpa_supplicant[4386]: segfault at 30 ip 080697ca sp
> bf8f3710 error 4 in wpa_supplicant[8048000+4c000]
> [  412.569843] wpa_supplicant[4387]: segfault at 30 ip 080697ca sp
> bfc19a30 error 4 in wpa_supplicant[8048000+4c000]
> [  413.118874] wpa_supplicant[4388]: segfault at 30 ip 080697ca sp
> bfc9cab0 error 4 in wpa_supplicant[8048000+4c000]

Seems like wpa_supplicant is broken. Is this a regression?

> home:~# wpa_supplicant -Dwext -iath0 -c /etc/wpa_supplicant/wpa_supplicant.conf

ath0? udev renamed it?

> ioctl[SIOCSIWAUTH]: Operation not supported
> WEXT auth param 4 value 0x0 - bind(PF_UNIX): Address already in use

4 - 0x0 is TKIP, nothing we should worry about.

> ctrl_iface exists and seems to be in use - cannot override it
> Delete '/var/run/wpa_supplicant/ath0' manually if it is not used anymore
> Failed to initialize control interface '/var/run/wpa_supplicant'.
> You may have another wpa_supplicant process already running or the file was
> left by an unclean termination of wpa_supplicant in which case you will need
> to manually remove this file before starting wpa_supplicant again.

Have you?

I guess ltrace would help here. And maybe strace...

^ permalink raw reply

* Re: why does DCCP SO_REUSEADDR have to be SOL_DCCP?
From: Rick Jones @ 2008-02-04 18:46 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo; +Cc: Linux Network Development list
In-Reply-To: <20080202025259.GH17164@ghostprotocols.net>

Arnaldo Carvalho de Melo wrote:
> Em Fri, Feb 01, 2008 at 05:42:23PM -0800, Rick Jones escreveu:
> 
>>Hi -
>>
>>I'm tweaking the netperf omni tests to be able to run over DCCP.  I've run 
>>across a not-unorecedented problem with getaddrinfo() not groking either 
>>SOCK_DCCP or IPPROTO_DCCP in the hints, and that I can more or less live 
>>with - I had to do a kludge for getaddrinfo() for IPPROTO_SCTP under Linux 
>>at one point and I can see how the two are not necessarily going to be in 
>>sync.
> 
> 
> See the ttcp patch where we do a xgetaddrinfo crude hack to handle dccp:
> 
> http://vger.kernel.org/~acme/dccp/ttcp.c

That is basically what netperf ends-up doing presently, although it is 
much more vocal about it :)

>>And I've worked-around no user-level include files (ie without setting 
>>__KERNEL__) define the DCCP stuff, and that is OK too, albeit somewhat 
>>inconvenient.
> 
> 
> Humm, for what? Again, see the ttcp code above:

I see that it too is making a guess for the DCCP defines.  I prefer to 
get those from the "regular" include files because several of them can 
be platform specific and netperf happens on many platforms.  If DCCP is 
still "experimental" I suppose that living with defines not being in 
user-level includes is to be expected.

>>My question though is why on earth does an SO_REUSEADDR setsockopt() 
>>against a DCCP socket have to be SOL_DCCP?  SCTP and TCP are quite happy 
>>with SOL_SOCKET, and it might be foolish consistency, but since the option 
>>_does_ begin with SO_ I'd have expected it to work for SOL_SOCKET, but 
>>(again RHEL5.1, yes, I do plan on getting upstream but have to satisfy 
>>several masters) it doesn't seem to be the case - a subsequent listen() or 
>>connect() call after an SOL_SOCKET SO_REUSEADDR against a DCCP socket 
>>leaves one SOL as it were...
> 
> 
> Strange, lemme check...
> 
>  1. sys_socketcall ->
>  2.  sys_setsockopt ->
>  3.    if (level == SOL_SOCKET) {
>  4.      sock_setsockopt:
>  5.        case SO_REUSEADDR:
>  6.          sk->sk_reuse = valbool;
>  7.    } else
>  8.      sock->ops->setsockopt = inet_dccp_ops->setsockopt =
>  9.        inet_dccp_ops->setsockopt = sock_common_setsockopt ->
> 10.          sk->sk_prot->setsockopt = dccp_v4_prot->setsockopt =
> 11.	    dccp_setsockopt
> 12.              if (level != SOL_DCCP)
> 13.                return inet_csk(sk)->icsk_af_ops->setsockopt() =
> 14.		  ip_setsockopt
> 15.              return do_dccp_setsockopt()
> 
> SO_REUSEADDR is handled in 4, if you pass SOL_SOCKET.
> 
> If instead you pass SOL_DCCP we'll go down the rabbit hole till
> do_dccp_setsockopt() and SO_REUSEADDR, that is equal to 2, will be
> interpreted as DCCP_SOCKOPT_SERVICE, that is also equal to 2, so you'll
> be setting the service, not changing the SO_REUSEADDR setting.

That is completely unexpected.  Particularly based on the implications of:

http://www.linux-foundation.org/en/Net:DCCP

> 
> The problem here is that you need to use:
> 
> setsockopt(fd, SOL_DCCP, DCCP_SOCKOPT_PACKET_SIZE, service,
>            sizeof(service));

I guess since I was going off the URL above and it doesn't mention 
that... :)  I was just blythly ass-u-me-ing that DCCP was usable as a 
"just swap the IPPROTO in your socket() call and go" sort of thing. And 
wasn't expecting to have to make additional setsockopt() calls.

> Look forward for a happy DCCP netperf bencharking session!

Looks like some very basic stuff (whatever one gets passing SOL_DCCP to 
the SO_REUSEADDR setting) is functioning in the top of trunk.  I now 
have to think about what to do wrt DCCP service types.  If I should add 
something to the parsing of -T dccp or if I should add yet another 
command-line option :)

happy benchmarking,

rick jones

^ permalink raw reply

* Re: [NET_SCHED 00/04]: External SFQ classifiers/flow classifier
From: Corey Hickey @ 2008-02-04 18:25 UTC (permalink / raw)
  To: Patrick McHardy; +Cc: Linux Netdev List
In-Reply-To: <47A74FEE.6080103@trash.net>

Patrick McHardy wrote:
> You're missing protocol, handle etc. Try something like this:
> 
> tc filter add dev eth0 protocol ip pref 1 parent 1: handle 1 \ 
> 
>          flow hash keys dst divisor 1024

Thanks, the kernel accepts that. I guess I understand tc filter usage
less than I thought I did.... Time to teach myself better.

-Corey

^ permalink raw reply

* Re: [PATCH 4/5] ehea: fix phyp checkpatch complaints
From: Scott Wood @ 2008-02-04 18:06 UTC (permalink / raw)
  To: Doug Maxey
  Cc: Jan-Bernd Themann, netdev, Jeff Garzik, Linux PowerPC List,
	Paul Mackerras
In-Reply-To: <19294.1201927197@bebe.enoyolf.org>

Doug Maxey wrote:
> On Fri, 01 Feb 2008 13:23:45 CST, Scott Wood wrote:
>> On Thu, Jan 31, 2008 at 08:20:50PM -0600, Doug Maxey wrote:
>>>  /* input param R5 */
>>> -#define H_ALL_RES_QP_EQPO         EHEA_BMASK_IBM(9, 11)
> ...
>>> +#define H_ALL_RES_QP_EQPO	  EHEA_BMASK_IBM(9, 11)
> ...
>> This was better the way it was (before, it was readable at any tab setting);
>> checkpatch is overeager to complain on tab/space issues (it's a bit hard to
>> distinguish indentation from alignment with a regex).
> 
> In emacs, with no special offsets, the lines appear to still line up.

Are you using a tab size other than 8?

> What did happen was spaces were turned to tabs where applicable.

I disagree about the applicability. :-)

> What editor shows a bad alignment?

Any editor that has been configured to a non-default tab size.

-Scott

^ permalink raw reply

* Re: [PATCH] 2.6.24-mm1 section type conflict cleanup
From: Sam Ravnborg @ 2008-02-04 18:04 UTC (permalink / raw)
  To: Kamalesh Babulal; +Cc: Andrew Morton, linux-kernel, netdev, apw, balbir
In-Reply-To: <20080204162223.GA6888@linux.vnet.ibm.com>

On Mon, Feb 04, 2008 at 09:52:23PM +0530, Kamalesh Babulal wrote:
> Hi Andrew,
> 
> The 2.6.24-mm1 kernel build fails at many places with section type
> conflict build error.

What arch?
We have troubles with powerpc as pointed out by Al in another thread.

	Sam

^ permalink raw reply

* [PATCH] xircom_cb should return NETDEV_TX_BUSY when there are no descriptors available
From: Erik Mouw @ 2008-02-04 17:56 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: netdev, Waskiewicz Jr, Peter P, jamal

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

Hi,

Changes in other networking paths uncovered a bug in the xircom_cb
driver which made the kernel spew lots of the following error messages:

  BUG eth1 code -5 qlen 0

It turned out that the driver returned -EIO when there was no
descriptor available for sending packets. It should return
NETDEV_TX_BUSY instead. This was discussed on the netdev list before,
see http://thread.gmane.org/gmane.linux.network/84603 .

Signed-off-by: Erik Mouw <mouw@nl.linux.org>

diff --git a/drivers/net/tulip/xircom_cb.c b/drivers/net/tulip/xircom_cb.c
index 8fc7274..6b93d01 100644
--- a/drivers/net/tulip/xircom_cb.c
+++ b/drivers/net/tulip/xircom_cb.c
@@ -441,7 +441,7 @@ static int xircom_start_xmit(struct sk_buff *skb, struct net_device *dev)
 	spin_unlock_irqrestore(&card->lock,flags);
 	trigger_transmit(card);
 
-	return -EIO;
+	return NETDEV_TX_BUSY;
 }
 
 


[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply related

* Re: [NET_SCHED 00/04]: External SFQ classifiers/flow classifier
From: Patrick McHardy @ 2008-02-04 17:48 UTC (permalink / raw)
  To: Corey Hickey; +Cc: Linux Netdev List
In-Reply-To: <47A4FB81.80700@fatooh.org>

Corey Hickey wrote:
> Patrick McHardy wrote:
>> These patches add support for external classifiers to SFQ and add a
>> new "flow" classifier, which can do hashing based on user-specified
>> keys or deterministic mapping of keys to classes. Additionally there
>> is a patch to make the SFQ queues visisble as classes to verify that
>> the hash is indeed doing something useful and a patch to consifiy
>> struct tcf_ext_map, which I had queued in the same tree.
> 
> Excellent! I'm glad this is applied. I'm having trouble figuring out how
> it works, though. As a test, I'm trying to set up SFQ equivalent to
> ESFQ's "hash dst". Here's what I do, and this is what I get:
> 
> ------------------------------------------------------------------------
> # ./tc qdisc add dev eth0 root handle 1: sfq
> # ./tc filter add dev eth0 parent 1: flow hash keys dst
> RTNETLINK answers: Invalid argument
> We have an error talking to the kernel
> ------------------------------------------------------------------------
> 
> I've tried a few different keys with the same results. I don't know what
> I'm doing wrong, or even where to start figuring it out. Can you point
> me in the right direction?


You're missing protocol, handle etc. Try something like this:

tc filter add dev eth0 protocol ip pref 1 parent 1: handle 1 \ 

         flow hash keys dst divisor 1024


^ permalink raw reply


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