[git patches] net driver fixes

2007-08-14 Thread Jeff Garzik
Minor stuff except for the xen-netfront fix.  e1000 change is an
adds-pci-ids-only change.

Please pull from 'upstream-linus' branch of
master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git 
upstream-linus

to receive the following updates:

 MAINTAINERS   |6 ++
 drivers/net/3c59x.c   |1 +
 drivers/net/ax88796.c |5 +++--
 drivers/net/e1000/e1000_ethtool.c |2 ++
 drivers/net/e1000/e1000_hw.c  |5 +
 drivers/net/e1000/e1000_hw.h  |3 +++
 drivers/net/e1000/e1000_main.c|4 
 drivers/net/myri10ge/myri10ge.c   |   25 ++---
 drivers/net/natsemi.c |3 +++
 drivers/net/via-rhine.c   |6 ++
 drivers/net/xen-netfront.c|7 ---
 11 files changed, 55 insertions(+), 12 deletions(-)

Andrew Morton (2):
  ax88796 printk fixes
  natsemi: fix netdev error acounting

Auke Kok (1):
  e1000: Add device IDs of new 82571 board variants

Brice Goglin (1):
  myri10ge: Use the pause counter to avoid a needless device reset

Dustin Marquess (1):
  via-rhine: disable rx_copybreak on archs that don't allow unaligned DMA 
access

Jeremy Fitzhardinge (1):
  xen-netfront: Avoid deref'ing skbafter it is potentially freed.

Steffen Klassert (2):
  3c59x: fix duplex configuration
  3c59x maintainer

diff --git a/MAINTAINERS b/MAINTAINERS
index d3a0684..e4dde7f 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -97,6 +97,12 @@ M:   [EMAIL PROTECTED]
 L: netdev@vger.kernel.org
 S: Maintained
 
+3C59X NETWORK DRIVER
+P: Steffen Klassert
+M: [EMAIL PROTECTED]
+L: netdev@vger.kernel.org
+S: Maintained
+
 3CR990 NETWORK DRIVER
 P: David Dillow
 M: [EMAIL PROTECTED]
diff --git a/drivers/net/3c59x.c b/drivers/net/3c59x.c
index 001c66d..a8c0f43 100644
--- a/drivers/net/3c59x.c
+++ b/drivers/net/3c59x.c
@@ -1555,6 +1555,7 @@ vortex_up(struct net_device *dev)
mii_reg1 = mdio_read(dev, vp-phys[0], MII_BMSR);
mii_reg5 = mdio_read(dev, vp-phys[0], MII_LPA);
vp-partner_flow_ctrl = ((mii_reg5  0x0400) != 0);
+   vp-mii.full_duplex = vp-full_duplex;
 
vortex_check_media(dev, 1);
}
diff --git a/drivers/net/ax88796.c b/drivers/net/ax88796.c
index 83da177..90e0734 100644
--- a/drivers/net/ax88796.c
+++ b/drivers/net/ax88796.c
@@ -821,8 +821,9 @@ static int ax_probe(struct platform_device *pdev)
dev-base_addr = (unsigned long)ei_status.mem;
 
if (ei_status.mem == NULL) {
-   dev_err(pdev-dev, Cannot ioremap area (%08zx,%08zx)\n,
-   res-start, res-end);
+   dev_err(pdev-dev, Cannot ioremap area (%08llx,%08llx)\n,
+   (unsigned long long)res-start,
+   (unsigned long long)res-end);
 
ret = -ENXIO;
goto exit_req;
diff --git a/drivers/net/e1000/e1000_ethtool.c 
b/drivers/net/e1000/e1000_ethtool.c
index c90c92e..4c3785c 100644
--- a/drivers/net/e1000/e1000_ethtool.c
+++ b/drivers/net/e1000/e1000_ethtool.c
@@ -1706,6 +1706,7 @@ static int e1000_wol_exclusion(struct e1000_adapter 
*adapter, struct ethtool_wol
case E1000_DEV_ID_82545EM_COPPER:
case E1000_DEV_ID_82546GB_QUAD_COPPER:
case E1000_DEV_ID_82546GB_PCIE:
+   case E1000_DEV_ID_82571EB_SERDES_QUAD:
/* these don't support WoL at all */
wol-supported = 0;
break;
@@ -1723,6 +1724,7 @@ static int e1000_wol_exclusion(struct e1000_adapter 
*adapter, struct ethtool_wol
retval = 0;
break;
case E1000_DEV_ID_82571EB_QUAD_COPPER:
+   case E1000_DEV_ID_82571EB_QUAD_FIBER:
case E1000_DEV_ID_82571EB_QUAD_COPPER_LOWPROFILE:
case E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3:
/* quad port adapters only support WoL on port A */
diff --git a/drivers/net/e1000/e1000_hw.c b/drivers/net/e1000/e1000_hw.c
index 9be4469..ba120f7 100644
--- a/drivers/net/e1000/e1000_hw.c
+++ b/drivers/net/e1000/e1000_hw.c
@@ -384,7 +384,10 @@ e1000_set_mac_type(struct e1000_hw *hw)
case E1000_DEV_ID_82571EB_COPPER:
case E1000_DEV_ID_82571EB_FIBER:
case E1000_DEV_ID_82571EB_SERDES:
+   case E1000_DEV_ID_82571EB_SERDES_DUAL:
+   case E1000_DEV_ID_82571EB_SERDES_QUAD:
case E1000_DEV_ID_82571EB_QUAD_COPPER:
+   case E1000_DEV_ID_82571EB_QUAD_FIBER:
case E1000_DEV_ID_82571EB_QUAD_COPPER_LOWPROFILE:
hw-mac_type = e1000_82571;
break;
@@ -485,6 +488,8 @@ e1000_set_media_type(struct e1000_hw *hw)
 case E1000_DEV_ID_82545GM_SERDES:
 case E1000_DEV_ID_82546GB_SERDES:
 case E1000_DEV_ID_82571EB_SERDES:
+case E1000_DEV_ID_82571EB_SERDES_DUAL:
+case E1000_DEV_ID_82571EB_SERDES_QUAD:
 case E1000_DEV_ID_82572EI_SERDES:
 case E1000_DEV_ID_80003ES2LAN_SERDES_DPT:
 

Re: [patch]support for USB autosuspend in the asix driver

2007-08-14 Thread David Brownell
On Monday 13 August 2007, Jeff Garzik wrote:
 Oliver Neukum wrote:
  Hi,
  
  this implements support for USB autosuspend in the asix USB ethernet
  driver.
  
  Regards
  Oliver
  Signed-off-by: Oliver Neukum [EMAIL PROTECTED]
 
 David, does this look OK to you?  I never saw much comment from anybody, 
 and cannot really comment on the USB parts.

I didn't see anything obviously wrong.  I presume Oliver tested
this with actual ASIX hardware ... assuming that, it's OK by me.

- Dave


 
   Jeff
 
 
 


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


Re: [patch]support for USB autosuspend in the asix driver

2007-08-14 Thread Oliver Neukum
Am Dienstag 14 August 2007 schrieb David Brownell:
 On Monday 13 August 2007, Jeff Garzik wrote:
  Oliver Neukum wrote:
   Hi,
   
   this implements support for USB autosuspend in the asix USB ethernet
   driver.
   
 Regards
 Oliver
   Signed-off-by: Oliver Neukum [EMAIL PROTECTED]
  
  David, does this look OK to you?  I never saw much comment from anybody, 
  and cannot really comment on the USB parts.
 
 I didn't see anything obviously wrong.  I presume Oliver tested
 this with actual ASIX hardware ... assuming that, it's OK by me.

I've tested it. It works.

Regards
Oliver
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 6/24] make atomic_read() behave consistently on frv

2007-08-14 Thread Herbert Xu
On Tue, Aug 14, 2007 at 03:34:25PM +1000, Nick Piggin wrote:

 What do you think of this crazy idea?
 
 /* Enforce a compiler barrier for only operations to location X.
  * Call multiple times to provide an ordering between multiple
  * memory locations. Other memory operations can be assumed by
  * the compiler to remain unchanged and may be reordered
  */
 #define order(x) asm volatile( : +m (x))

Yes this is a very good idea.  This also makes it explicit
that the coder is depending on this rather than the more
vague connotations of atomic_read.

Cheers,
-- 
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmVHI~} [EMAIL PROTECTED]
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Block device throttling [Re: Distributed storage.]

2007-08-14 Thread Evgeniy Polyakov
On Mon, Aug 13, 2007 at 06:04:06AM -0700, Daniel Phillips ([EMAIL PROTECTED]) 
wrote:
 Perhaps you never worried about the resources that the device mapper 
 mapping function allocates to handle each bio and so did not consider 
 this hole significant.  These resources can be significant, as is the 
 case with ddsnap.  It is essential to close that window through with 
 the virtual device's queue limit may be violated.  Not doing so will 
 allow deadlock.

This is not a bug, this is special kind of calculation - total limit is
number of physical devices multiplied by theirs limits. It was done 
_on purpose_ to allow different device to have different limits (for 
example in distributed storage project it is possible to have both remote 
and local node in the same device, but local device should not have _any_
limit at all, but network one should).

Virtual device essentially has _no_ limit. And that as done on purpose.

-- 
Evgeniy Polyakov
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 0/9 Rev3] Implement batching skb API and support in IPoIB

2007-08-14 Thread Krishna Kumar2
Hi Dave,

David Miller [EMAIL PROTECTED] wrote on 08/08/2007 04:19:00 PM:

 From: Krishna Kumar [EMAIL PROTECTED]
 Date: Wed, 08 Aug 2007 15:01:14 +0530

  RESULTS: The performance improvement for TCP No Delay is in the range
of -8%
 to 320% (with -8% being the sole negative), with many individual
tests
 giving 50% or more improvement (I think it is to do with the hw
slots
 getting full quicker resulting in more batching when the queue gets
 woken). The results for TCP is in the range of -11% to 93%, with
most
 of the tests (8/12) giving improvements.

 Not because I think it obviates your work, but rather because I'm
 curious, could you test a TSO-in-hardware driver converted to
 batching and see how TSO alone compares to batching for a pure
 TCP workload?

 I personally don't think it will help for that case at all as
 TSO likely does better job of coalescing the work _and_ reducing
 bus traffic as well as work in the TCP stack.

I used E1000 (guess the choice is OK as e1000_tso returns TRUE. My
hw is 82547GI).

You are right, it doesn't help TSO case at all (infact degrades). Two
things to note though:
  - E1000 may not be suitable for adding batching (which is no
longer a new API, as I have changed it already).
  - Small skbs where TSO doesn't come into picture still seems to
improve. A couple of cases for large skbs did result in some
improved (like 4K, TCP No Delay, 32 procs).

[Total segments retransmission for original code test run: 2220  for
new code test run: 1620. So the retransmission problem that I was
getting seems to be an IPoIB bug, though I did have to fix one bug
in my networking component where I was calling qdisc_run(NULL) for
regular xmit path and change to always use batching. The problem is
that skb1 - skb10 may be present in the queue after each of them
failed to be sent out, then net_tx_action fires which batches all of
these into the blist and tries to send them out again, which also
fails (eg tx lock fail or queue full), then the next single skb xmit
will send the latest skb ignoring the 10 skbs that are already waiting
in the batching list. These 10 skbs are sent out only the next time
net_tx_action is called, so out of order skbs result. This fix reduced
retransmissions from 180,000 to 55,000 or so. When I changed IPoIB
driver to use iterative sends of each skb instead of creating multiple
Work Request's, that number went down to 15].

I ran 3 iterations of 45 sec tests (total 1 hour 16 min, but I will
run a longer one tonight). The results are (results in KB/s, and %):

Test Case  Org BW   New BW  % Change

  TCP

Size:32 Procs:1 18483918112.01
Size:32 Procs:8 21888   21555   -1.52
Size:32 Procs:3219317   22433   16.13

Size:256 Procs:115584   25991   66.78
Size:256 Procs:8110937  74565   -32.78
Size:256 Procs:32   105767  98967   -6.42

Size:4096 Procs:1   81910   96073   17.29
Size:4096 Procs:8   113302  94040   -17.00
Size:4096 Procs:32  109664  105522  -3.77

TCP No Delay:
--
Size:32 Procs:1 2688317718.19
Size:32 Procs:8 656810588   61.20
Size:32 Procs:326573783819.24

Size:256 Procs:1786912724   61.69
Size:256 Procs:865652   45652   -30.46
Size:256 Procs:32   95114   112279  18.04

Size:4096 Procs:1   95302   84664   -11.16
Size:4096 Procs:8   19  89111   -19.80
Size:4096 Procs:32  109249  113919  4.27

I will submit Rev4 with suggested changes (including single merged
API) on Thursday after some more testing.

Thanks,

- KK

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


Re: 2.4.35-pre1: new e1000 driver breaks old hardware

2007-08-14 Thread Wolfgang Nothdurft

Kok, Auke wrote:

Wolfgang Nothdurft wrote:

Hi,

with the new e1000 driver version 7.3.20 the onboard gigabit nic 82547EI
(8086:1019) doesn't work correctly.
After transferring about 100 megabytes over a gigabit link the transfer
stopped and I have to reinit the link either by doing a ifconfig down/up
or unplugging the network cable.
The RxIntDelay is set to 0 like described in the docu. Playing with this
Parameter only increases the amount of traffic to be send and the error
occurs later.


have you tried (the default) 8000 ? Do you get the same problem when you 
run 2.6.21 with 7.5.5.1 or 7.3.20 ?



This happens also with the 7.4.35 and 7.5.5 driver from the intel side.
The driver 5.7.6 from kernel 2.4.33.3 and the 6.1.16 from intel works
very well on this hardware.
Also other gigabit nics we use didn't have this problem.
Is this issue already known?


this is the first time I have heard this issue.


Is there any solution yet?


I'm not that good :)

Can you file a bugreport on e1000.sf.net and attach the usual (ethtool 
-e, dmesg, ifconfig -a, lspci -vv) debugging output and problem 
description for us? I'll try to see if I can have our labs setup a repro 
case, which might be hard given the adapter type, but we will do our best.


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



Any news about this issue?
The bug report is 
http://sourceforge.net/tracker/index.php?func=detailaid=1739537group_id=42302atid=447449


Kind Regards
Wolfgang

--
Wolfgang Nothdurft [EMAIL PROTECTED]
Linogate Internet Technologies fon: +49 (0)821 - 25 96 - 0
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 0/9 Rev3] Implement batching skb API and support in IPoIB

2007-08-14 Thread Krishna Kumar2

Forgot to mention one thing:

 This fix reduced
 retransmissions from 180,000 to 55,000 or so. When I changed IPoIB
 driver to use iterative sends of each skb instead of creating multiple
 Work Request's, that number went down to 15].

This also reduced TCP No Delay performance from huge percentages like
200-400% and now is almost the same as original code. So fixing this
problem in IPoIB (driver?) will enable to use the multiple Work Request
 Work Completion, rather than limiting batching to single WR/WC.

thanks,

- KK


__

Hi Dave,

David Miller [EMAIL PROTECTED] wrote on 08/08/2007 04:19:00 PM:

 From: Krishna Kumar [EMAIL PROTECTED]
 Date: Wed, 08 Aug 2007 15:01:14 +0530

  RESULTS: The performance improvement for TCP No Delay is in the range
of -8%
 to 320% (with -8% being the sole negative), with many individual
tests
 giving 50% or more improvement (I think it is to do with the hw
slots
 getting full quicker resulting in more batching when the queue gets
 woken). The results for TCP is in the range of -11% to 93%, with
most
 of the tests (8/12) giving improvements.

 Not because I think it obviates your work, but rather because I'm
 curious, could you test a TSO-in-hardware driver converted to
 batching and see how TSO alone compares to batching for a pure
 TCP workload?

 I personally don't think it will help for that case at all as
 TSO likely does better job of coalescing the work _and_ reducing
 bus traffic as well as work in the TCP stack.

I used E1000 (guess the choice is OK as e1000_tso returns TRUE. My
hw is 82547GI).

You are right, it doesn't help TSO case at all (infact degrades). Two
things to note though:
  - E1000 may not be suitable for adding batching (which is no
longer a new API, as I have changed it already).
  - Small skbs where TSO doesn't come into picture still seems to
improve. A couple of cases for large skbs did result in some
improved (like 4K, TCP No Delay, 32 procs).

[Total segments retransmission for original code test run: 2220  for
new code test run: 1620. So the retransmission problem that I was
getting seems to be an IPoIB bug, though I did have to fix one bug
in my networking component where I was calling qdisc_run(NULL) for
regular xmit path and change to always use batching. The problem is
that skb1 - skb10 may be present in the queue after each of them
failed to be sent out, then net_tx_action fires which batches all of
these into the blist and tries to send them out again, which also
fails (eg tx lock fail or queue full), then the next single skb xmit
will send the latest skb ignoring the 10 skbs that are already waiting
in the batching list. These 10 skbs are sent out only the next time
net_tx_action is called, so out of order skbs result. This fix reduced
retransmissions from 180,000 to 55,000 or so. When I changed IPoIB
driver to use iterative sends of each skb instead of creating multiple
Work Request's, that number went down to 15].

I ran 3 iterations of 45 sec tests (total 1 hour 16 min, but I will
run a longer one tonight). The results are (results in KB/s, and %):

Test Case  Org BW   New BW  % Change

  TCP

Size:32 Procs:1 18483918112.01
Size:32 Procs:8 21888   21555   -1.52
Size:32 Procs:3219317   22433   16.13

Size:256 Procs:115584   25991   66.78
Size:256 Procs:8110937  74565   -32.78
Size:256 Procs:32   105767  98967   -6.42

Size:4096 Procs:1   81910   96073   17.29
Size:4096 Procs:8   113302  94040   -17.00
Size:4096 Procs:32  109664  105522  -3.77

TCP No Delay:
--
Size:32 Procs:1 2688317718.19
Size:32 Procs:8 656810588   61.20
Size:32 Procs:326573783819.24

Size:256 Procs:1786912724   61.69
Size:256 Procs:865652   45652   -30.46
Size:256 Procs:32   95114   112279  18.04

Size:4096 Procs:1   95302   84664   -11.16
Size:4096 Procs:8   19  89111   -19.80
Size:4096 Procs:32  109249  113919  4.27

I will submit Rev4 with suggested changes (including single merged
API) on Thursday after some more testing.

Thanks,

- KK

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

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


Re: [patch 08/18] 3c59x: check return of pci_enable_device()

2007-08-14 Thread Mark Hindley
On Tue, Aug 14, 2007 at 01:33:26AM -0400, Jeff Garzik wrote:
 I would strongly prefer that vortex_up return a value, since all the 
 important callers of this function can themselves return an error back 
 to the system.
 
 we can definitely return a meaningful return value here, if 
 pci_enable_device() fails, and I would rather not apply a patch that 
 fails to propagate a serious condition (pci_enable_device failure is 
 indeed serious) when it is possible to do so
 

OK. Any comments on this revised version? I have only ignored the return of
vortex_up in vortex_error. It is not immediately clear what to do if
vortex_up still fails there after a pci reset.

Mark


diff --git a/drivers/net/3c59x.c b/drivers/net/3c59x.c
index 001c66d..a1dfd6b 100644
--- a/drivers/net/3c59x.c
+++ b/drivers/net/3c59x.c
@@ -705,7 +705,7 @@ static struct {
 
 static int vortex_probe1(struct device *gendev, void __iomem *ioaddr, int irq,
   int chip_idx, int card_idx);
-static void vortex_up(struct net_device *dev);
+static int vortex_up(struct net_device *dev);
 static void vortex_down(struct net_device *dev, int final);
 static int vortex_open(struct net_device *dev);
 static void mdio_sync(void __iomem *ioaddr, int bits);
@@ -841,8 +841,11 @@ static int vortex_resume(struct pci_dev *pdev)
return -EBUSY;
}
if (netif_running(dev)) {
-   vortex_up(dev);
-   netif_device_attach(dev);
+   err = vortex_up(dev);
+   if (err)
+   return err;
+   else  
+   netif_device_attach(dev);
}
}
return 0;
@@ -1484,19 +1487,24 @@ static void vortex_check_media(struct net_device *dev, 
unsigned int init)
}
 }
 
-static void
+static int
 vortex_up(struct net_device *dev)
 {
struct vortex_private *vp = netdev_priv(dev);
void __iomem *ioaddr = vp-ioaddr;
unsigned int config;
-   int i, mii_reg1, mii_reg5;
+   int i, mii_reg1, mii_reg5, err;
 
if (VORTEX_PCI(vp)) {
pci_set_power_state(VORTEX_PCI(vp), PCI_D0);/* Go active */
if (vp-pm_state_valid)
pci_restore_state(VORTEX_PCI(vp));
-   pci_enable_device(VORTEX_PCI(vp));
+   err = pci_enable_device(VORTEX_PCI(vp));
+   if (err) {
+   printk(KERN_WARNING %s: Could not enable device \n,
+   dev-name);
+   goto err_out;
+   }
}
 
/* Before initializing select the active media port. */
@@ -1660,6 +1668,8 @@ vortex_up(struct net_device *dev)
if (vp-cb_fn_base) /* The PCMCIA people are 
idiots.  */
iowrite32(0x8000, vp-cb_fn_base + 4);
netif_start_queue (dev);
+err_out:
+   return err;
 }
 
 static int
@@ -1673,7 +1683,7 @@ vortex_open(struct net_device *dev)
if ((retval = request_irq(dev-irq, vp-full_bus_master_rx ?
boomerang_interrupt : vortex_interrupt, 
IRQF_SHARED, dev-name, dev))) {
printk(KERN_ERR %s: Could not reserve IRQ %d\n, dev-name, 
dev-irq);
-   goto out;
+   goto err;
}
 
if (vp-full_bus_master_rx) { /* Boomerang bus master. */
@@ -1702,20 +1712,22 @@ vortex_open(struct net_device *dev)
}
}
retval = -ENOMEM;
-   goto out_free_irq;
+   goto err_free_irq;
}
/* Wrap the ring. */
vp-rx_ring[i-1].next = cpu_to_le32(vp-rx_ring_dma);
}
 
-   vortex_up(dev);
-   return 0;
+   retval = vortex_up(dev);
+   if (!retval)
+   goto out;
 
-out_free_irq:
+err_free_irq:
free_irq(dev-irq, dev);
-out:
+err:
if (vortex_debug  1)
printk(KERN_ERR %s: vortex_open() fails: returning %d\n, 
dev-name, retval);
+out:
return retval;
 }
 
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: dm9000: add set_mac_address()

2007-08-14 Thread Ben Dooks
On Sun, Aug 12, 2007 at 07:08:52PM -0400, Jeff Garzik wrote:
 set_mac_address should not write to the SROM, as Michael noted.
 
 The proper operations are:
 
 probe time:
   read MAC address from SROM
 
 dev open (interface up):
   write dev-dev_addr[] to RX filter (or identity) registers
 
 EEPROM update support is available separately, via an ethtool sub-ioctl.

This sounds sensible, I am working on adding ethtool support
and should have a patch available in the next day or so.

-- 
Ben ([EMAIL PROTECTED], http://www.fluff.org/)

  'a smiley only costs 4 bytes'
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Davicom Ethernet (onboard) with many Tx timeouts...

2007-08-14 Thread Ben Dooks
On Wed, Jan 03, 2007 at 10:33:08PM -0200, D?niel Fraga wrote:
 Linux 2.6.19 (but this problem occurs with previous kernels too)
 gcc 4.1.1
 pentium 3
 Module dmfe.ko
 
 dmfe: Davicom DM9xxx net driver, version 1.36.4 (2002-01-17)

hmm, dmfe does not cover the dm9000, a little missleading?

-- 
Ben ([EMAIL PROTECTED], http://www.fluff.org/)

  'a smiley only costs 4 bytes'
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Block device throttling [Re: Distributed storage.]

2007-08-14 Thread Daniel Phillips
On Tuesday 14 August 2007 01:46, Evgeniy Polyakov wrote:
 On Mon, Aug 13, 2007 at 06:04:06AM -0700, Daniel Phillips 
([EMAIL PROTECTED]) wrote:
  Perhaps you never worried about the resources that the device
  mapper mapping function allocates to handle each bio and so did not
  consider this hole significant.  These resources can be
  significant, as is the case with ddsnap.  It is essential to close
  that window through with the virtual device's queue limit may be
  violated.  Not doing so will allow deadlock.

 This is not a bug, this is special kind of calculation - total limit
 is number of physical devices multiplied by theirs limits. It was
 done _on purpose_ to allow different device to have different limits
 (for example in distributed storage project it is possible to have
 both remote and local node in the same device, but local device
 should not have _any_ limit at all, but network one should).

 Virtual device essentially has _no_ limit. And that as done on
 purpose.

And it will not solve the deadlock problem in general.  (Maybe it works 
for your virtual device, but I wonder...)  If the virtual device 
allocates memory during generic_make_request then the memory needs to 
be throttled.

Regards,

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


[PATCH] [DM9000] External PHY support

2007-08-14 Thread Laurent Pinchart
This patch adds a flag to the DM9000 platform data which, when set,
configures the device to use an external PHY.

Signed-off-by: Laurent Pinchart [EMAIL PROTECTED]
---
 drivers/net/dm9000.c   |6 ++
 include/linux/dm9000.h |1 +
 2 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/drivers/net/dm9000.c b/drivers/net/dm9000.c
index ee578d9..820f0d3 100644
--- a/drivers/net/dm9000.c
+++ b/drivers/net/dm9000.c
@@ -124,6 +124,7 @@ typedef struct board_info {
u16 dbug_cnt;
u8 io_mode; /* 0:word, 2:byte */
u8 phy_addr;
+   unsigned int flags;
 
void (*inblk)(void __iomem *port, void *data, int length);
void (*outblk)(void __iomem *port, void *data, int length);
@@ -513,6 +514,8 @@ dm9000_probe(struct platform_device *pdev)
 
if (pdata-dumpblk != NULL)
db-dumpblk = pdata-dumpblk;
+
+   db-flags = pdata-flags;
}
 
dm9000_reset(db);
@@ -655,6 +658,9 @@ dm9000_init_dm9000(struct net_device *dev)
iow(db, DM9000_GPCR, GPCR_GEP_CNTL);/* Let GPIO0 output */
iow(db, DM9000_GPR, 0); /* Enable PHY */
 
+   if (db-flags  DM9000_PLATF_EXT_PHY)
+   iow(db, DM9000_NCR, NCR_EXT_PHY);
+
/* Program operating register */
iow(db, DM9000_TCR, 0); /* TX Polling clear */
iow(db, DM9000_BPTR, 0x3f); /* Less 3Kb, 200us */
diff --git a/include/linux/dm9000.h b/include/linux/dm9000.h
index 0008e2a..ea530fd 100644
--- a/include/linux/dm9000.h
+++ b/include/linux/dm9000.h
@@ -19,6 +19,7 @@
 #define DM9000_PLATF_8BITONLY  (0x0001)
 #define DM9000_PLATF_16BITONLY (0x0002)
 #define DM9000_PLATF_32BITONLY (0x0004)
+#define DM9000_PLATF_EXT_PHY   (0x0008)
 
 /* platfrom data for platfrom device structure's platfrom_data field */
 
-- 
1.5.0


-- 
Laurent Pinchart
CSE Semaphore Belgium

Chaussée de Bruxelles, 732A
B-1410 Waterloo
Belgium

T +32 (2) 387 42 59
F +32 (2) 387 42 75
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Block device throttling [Re: Distributed storage.]

2007-08-14 Thread Evgeniy Polyakov
On Tue, Aug 14, 2007 at 04:13:10AM -0700, Daniel Phillips ([EMAIL PROTECTED]) 
wrote:
 On Tuesday 14 August 2007 01:46, Evgeniy Polyakov wrote:
  On Mon, Aug 13, 2007 at 06:04:06AM -0700, Daniel Phillips 
 ([EMAIL PROTECTED]) wrote:
   Perhaps you never worried about the resources that the device
   mapper mapping function allocates to handle each bio and so did not
   consider this hole significant.  These resources can be
   significant, as is the case with ddsnap.  It is essential to close
   that window through with the virtual device's queue limit may be
   violated.  Not doing so will allow deadlock.
 
  This is not a bug, this is special kind of calculation - total limit
  is number of physical devices multiplied by theirs limits. It was
  done _on purpose_ to allow different device to have different limits
  (for example in distributed storage project it is possible to have
  both remote and local node in the same device, but local device
  should not have _any_ limit at all, but network one should).
 
  Virtual device essentially has _no_ limit. And that as done on
  purpose.
 
 And it will not solve the deadlock problem in general.  (Maybe it works 
 for your virtual device, but I wonder...)  If the virtual device 
 allocates memory during generic_make_request then the memory needs to 
 be throttled.

Daniel, if device process bio by itself, it has a limit and thus it will
wait in generic_make_request(), if it queues it to different device,
then the same logic applies there. If virutal device does not process
bio, its limit will always be recharged to underlying devices, and
overall limit is equal to number of physical device (or devices which do
process bio) multiplied by theirs limits. This does _work_ and I showed
example how limits are processed and who and where will sleep. This
solution is not narrow fix, please check my examples I showed before.

 Regards,
 
 Daniel

-- 
Evgeniy Polyakov
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Block device throttling [Re: Distributed storage.]

2007-08-14 Thread Daniel Phillips
On Tuesday 14 August 2007 04:30, Evgeniy Polyakov wrote:
  And it will not solve the deadlock problem in general.  (Maybe it
  works for your virtual device, but I wonder...)  If the virtual
  device allocates memory during generic_make_request then the memory
  needs to be throttled.

 Daniel, if device process bio by itself, it has a limit and thus it
 will wait in generic_make_request()

What will make it wait?

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


Re: Block device throttling [Re: Distributed storage.]

2007-08-14 Thread Evgeniy Polyakov
On Tue, Aug 14, 2007 at 04:35:43AM -0700, Daniel Phillips ([EMAIL PROTECTED]) 
wrote:
 On Tuesday 14 August 2007 04:30, Evgeniy Polyakov wrote:
   And it will not solve the deadlock problem in general.  (Maybe it
   works for your virtual device, but I wonder...)  If the virtual
   device allocates memory during generic_make_request then the memory
   needs to be throttled.
 
  Daniel, if device process bio by itself, it has a limit and thus it
  will wait in generic_make_request()
 
 What will make it wait?

gneric_make_request() for given block device.

Example:

   virt_device - do_smth_with_bio -bio_endio().
   |
  / \
 phys0   phys1

Each of three devices above works with bio, each one eventually calls
bio_endio() and bio-bi_bdev will be one of the three above devices.

Thus, when system calls generic_make_request(bio-bi_bdev == virt_device),
one of the three limits will be charged, depending on the fact, that
virtual device forward bio to physical devices or not. Actually virtual
device limit will be charged too first, but if bio is forwarded, its 
portion will be reduced from virtual device's limit.

Now, if virtual device allocates bio itself (like device mapper), then
this new bio will be forwarded to physical devices via
gneric_make_request() and thus it will sleep in the physical device's
queue, if it is filled.

So, if each of three devices has a limit of 10 bios, then actual number
of bios in flight is maximum 3 * 10, since each device will be charged
up to _its_ maximum limit, not limit for the first device in the chain.

So, you set 10 to virtual device and its can process bio itself (like
send it to network), then this is number of bios in flight, which are
processed by _this_ device and not forwarded further. Actual number of
bios you can flush into virtual device is its own limit plus limits of
all physical devices atached to it.

-- 
Evgeniy Polyakov
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] [DM9000] Add support for big-endian hosts

2007-08-14 Thread Laurent Pinchart
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 [EMAIL PROTECTED]
---
 drivers/net/dm9000.c |   13 +++--
 1 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/net/dm9000.c b/drivers/net/dm9000.c
index 264fa0e..ee578d9 100644
--- a/drivers/net/dm9000.c
+++ b/drivers/net/dm9000.c
@@ -879,7 +879,8 @@ dm9000_timer(unsigned long data)
 }
 
 struct dm9000_rxhdr {
-   u16 RxStatus;
+   u8  RxPktReady;
+   u8  RxStatus;
u16 RxLen;
 } __attribute__((__packed__));
 
@@ -920,7 +921,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) {
@@ -932,17 +933,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);
db-stats.rx_fifo_errors++;
}
-   if (rxhdr.RxStatus  0x200) {
+   if (rxhdr.RxStatus  0x02) {
PRINTK1(crc error\n);
db-stats.rx_crc_errors++;
}
-   if (rxhdr.RxStatus  0x8000) {
+   if (rxhdr.RxStatus  0x80) {
PRINTK1(length error\n);
db-stats.rx_length_errors++;
}
-- 
1.5.0


-- 
Laurent Pinchart
CSE Semaphore Belgium

Chaussée de Bruxelles, 732A
B-1410 Waterloo
Belgium

T +32 (2) 387 42 59
F +32 (2) 387 42 75
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] netfilter : xt_u32 bug correction

2007-08-14 Thread Eric Dumazet
Hi all

This applies to net-2.6 (so should be forwared to Linus for 2.6.23 inclusion ?)

Thank you

[PATCH] netfilter : xt_u32 bug correction

An extraneous ; makes xt_u32 match useless

Signed-off-by: Eric Dumazet [EMAIL PROTECTED]
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] netfilter : xt_u32 bug correction

2007-08-14 Thread Eric Dumazet
Hi all

This applies to net-2.6 (so should be forwared to Linus for 2.6.23 inclusion ?)
Sorry for the first mail without attachment.

Thank you

[PATCH] netfilter : xt_u32 bug correction

An extraneous ; makes xt_u32 match useless

Signed-off-by: Eric Dumazet [EMAIL PROTECTED]

diff --git a/net/netfilter/xt_u32.c b/net/netfilter/xt_u32.c
index 04b677a..89b2d5c 100644
--- a/net/netfilter/xt_u32.c
+++ b/net/netfilter/xt_u32.c
@@ -35,7 +35,7 @@ static bool u32_match_it(const struct xt_u32 *data,
at  = 0;
pos = ct-location[0].number;
 
-   if (skb-len  4 || pos  skb-len - 4);
+   if (skb-len  4 || pos  skb-len - 4)
return false;
 
ret   = skb_copy_bits(skb, pos, val, sizeof(val));
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Block device throttling [Re: Distributed storage.]

2007-08-14 Thread Daniel Phillips
On Tuesday 14 August 2007 04:50, Evgeniy Polyakov wrote:
 On Tue, Aug 14, 2007 at 04:35:43AM -0700, Daniel Phillips 
([EMAIL PROTECTED]) wrote:
  On Tuesday 14 August 2007 04:30, Evgeniy Polyakov wrote:
And it will not solve the deadlock problem in general.  (Maybe
it works for your virtual device, but I wonder...)  If the
virtual device allocates memory during generic_make_request
then the memory needs to be throttled.
  
   Daniel, if device process bio by itself, it has a limit and thus
   it will wait in generic_make_request()
 
  What will make it wait?

 gneric_make_request() for given block device.

Not good enough, that only makes one thread wait.  Look here:

http://lkml.org/lkml/2007/8/13/788

An unlimited number of threads can come in, each consuming resources of 
the virtual device, and violating the throttling rules.

The throttling of the virtual device must begin in generic_make_request 
and last to -endio.  You release the throttle of the virtual device at 
the point you remap the bio to an underlying device, which you have 
convinced yourself is ok, but it is not.  You seem to miss the fact 
that whatever resources the virtual device has allocated are no longer 
protected by the throttle count *of the virtual device*, or you do not 
see why that is a bad thing.  It is a very bad thing, roughly like 
leaving some shared data outside a spin_lock/unlock.

Regards,

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


Re: Block device throttling [Re: Distributed storage.]

2007-08-14 Thread Evgeniy Polyakov
On Tue, Aug 14, 2007 at 05:32:29AM -0700, Daniel Phillips ([EMAIL PROTECTED]) 
wrote:
 On Tuesday 14 August 2007 04:50, Evgeniy Polyakov wrote:
  On Tue, Aug 14, 2007 at 04:35:43AM -0700, Daniel Phillips 
 ([EMAIL PROTECTED]) wrote:
   On Tuesday 14 August 2007 04:30, Evgeniy Polyakov wrote:
 And it will not solve the deadlock problem in general.  (Maybe
 it works for your virtual device, but I wonder...)  If the
 virtual device allocates memory during generic_make_request
 then the memory needs to be throttled.
   
Daniel, if device process bio by itself, it has a limit and thus
it will wait in generic_make_request()
  
   What will make it wait?
 
  gneric_make_request() for given block device.
 
 Not good enough, that only makes one thread wait.  Look here:
 
 http://lkml.org/lkml/2007/8/13/788
 
 An unlimited number of threads can come in, each consuming resources of 
 the virtual device, and violating the throttling rules.
 
 The throttling of the virtual device must begin in generic_make_request 
 and last to -endio.  You release the throttle of the virtual device at 
 the point you remap the bio to an underlying device, which you have 
 convinced yourself is ok, but it is not.  You seem to miss the fact 
 that whatever resources the virtual device has allocated are no longer 
 protected by the throttle count *of the virtual device*, or you do not 

Because it is charged to another device. No matter how many of them are
chained, limit is applied to the last device being used.
So, if you have unlimited number of threads, each one allocates a
request, forward it down to low-level devices, each one will eventually
sleep, but yes, each one _can_ allocate _one_ request before it goes
sleeping. It is done to allow fain-grained limits, since some devices
(like locally attached disks) do not require throttling.

Here is an example with threads you mentioned:
http://article.gmane.org/gmane.linux.file-systems/17644

-- 
Evgeniy Polyakov
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Block device throttling [Re: Distributed storage.]

2007-08-14 Thread Daniel Phillips
On Tuesday 14 August 2007 05:46, Evgeniy Polyakov wrote:
  The throttling of the virtual device must begin in
  generic_make_request and last to -endio.  You release the throttle
  of the virtual device at the point you remap the bio to an
  underlying device, which you have convinced yourself is ok, but it
  is not.  You seem to miss the fact that whatever resources the
  virtual device has allocated are no longer protected by the
  throttle count *of the virtual device*, or you do not

 Because it is charged to another device.

Great.  You charged the resource to another device, but you did not 
limit the amount of resources that the first device can consume.  Which 
misses the whole point.

Regards,

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


Re: BUG: when using 'brctl stp'

2007-08-14 Thread Stephen Hemminger
Bridge locking for /sys/class/net/br0/bridge/stp_enabled
was wrong.  Another bug in bridge utilities makes it such that
this interface, meant it wasn't being used.  The locking needs to be removed
from set_stp_state(), the lock is already acquired down in
br_stp_start()/br_stp_stop.

Signed-off-by: Stephen Hemminger [EMAIL PROTECTED]


--- a/net/bridge/br_sysfs_br.c  2007-07-16 14:24:18.0 +0100
+++ b/net/bridge/br_sysfs_br.c  2007-08-14 13:44:23.0 +0100
@@ -150,9 +150,7 @@ static ssize_t show_stp_state(struct dev
 static void set_stp_state(struct net_bridge *br, unsigned long val)
 {
rtnl_lock();
-   spin_unlock_bh(br-lock);
br_stp_set_enabled(br, val);
-   spin_lock_bh(br-lock);
rtnl_unlock();
 }
 
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: BUG: when using 'brctl stp'

2007-08-14 Thread Lennert Buytenhek
On Tue, Aug 14, 2007 at 02:11:05PM +0100, Stephen Hemminger wrote:

 Bridge locking for /sys/class/net/br0/bridge/stp_enabled
 was wrong.  Another bug in bridge utilities makes it such that
 this interface, meant it wasn't being used.  The locking needs
 to be removed from set_stp_state(), the lock is already acquired
 down in br_stp_start()/br_stp_stop.

The 'locking' in set_stp_state() is actually dropping the lock
around the br_stp_set_enabled() invocation, not acquiring it:


 @@ -150,9 +150,7 @@ static ssize_t show_stp_state(struct dev
  static void set_stp_state(struct net_bridge *br, unsigned long val)
  {
   rtnl_lock();
 - spin_unlock_bh(br-lock);
   br_stp_set_enabled(br, val);
 - spin_lock_bh(br-lock);
   rtnl_unlock();
  }
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] bridge: sysfs locking fix.

2007-08-14 Thread Stephen Hemminger
Forget earlier patch, it is wrong...

The stp change code generates sleeping function called from invalid context
because rtnl_lock() called with BH disabled. This fixes it by not acquiring then
dropping the bridge lock.

Signed-off-by: Stephen Hemminger [EMAIL PROTECTED]

--- a/net/bridge/br_sysfs_br.c  2007-08-06 09:26:48.0 +0100
+++ b/net/bridge/br_sysfs_br.c  2007-08-14 14:29:52.0 +0100
@@ -147,20 +147,26 @@ static ssize_t show_stp_state(struct dev
return sprintf(buf, %d\n, br-stp_enabled);
 }
 
-static void set_stp_state(struct net_bridge *br, unsigned long val)
-{
-   rtnl_lock();
-   spin_unlock_bh(br-lock);
-   br_stp_set_enabled(br, val);
-   spin_lock_bh(br-lock);
-   rtnl_unlock();
-}
 
 static ssize_t store_stp_state(struct device *d,
   struct device_attribute *attr, const char *buf,
   size_t len)
 {
-   return store_bridge_parm(d, buf, len, set_stp_state);
+   struct net_bridge *br = to_bridge(d);
+   char *endp;
+   unsigned long val;
+
+   if (!capable(CAP_NET_ADMIN))
+   return -EPERM;
+
+   val = simple_strtoul(buf, endp, 0);
+   if (endp == buf)
+   return -EINVAL;
+
+   rtnl_lock();
+   br_stp_set_enabled(br, val);
+   rtnl_unlock();
+
 }
 static DEVICE_ATTR(stp_state, S_IRUGO | S_IWUSR, show_stp_state,
   store_stp_state);
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: possible BUG while using CUPS

2007-08-14 Thread Chuck Ebbert
On 08/13/2007 11:46 AM, Udo van den Heuvel wrote:
 Michal Piotrowski wrote:
 On 11/08/07, Udo van den Heuvel [EMAIL PROTECTED] wrote:
 Using Cups 1.2.12 on Linux 2.6.22.1.
 (...)
 I clikc that link and hear the ping-ping of the BUG:
 This is very interesting. Can you reproduce this bug?
 
 I think so. (at least: I have seen it before: clicking around in Cups
 and this crash/bug/whatever.)
 
 This is on a VIA Epia EK8000. ksymoops did not really help me, this is
 all output I got.

 Ideas?
 BTW. Please try 2.6.22.2.
 
 Compiling...

If you can reproduce that, do it after booting with kstack=2048 and post
that so we can see the whole stack in the oops message.
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] [396/2many] MAINTAINERS - QLOGIC QLAxxx NETWORK DRIVER

2007-08-14 Thread Ron Mercer
On Sun, Aug 12, 2007 at 11:34:33PM -0700, [EMAIL PROTECTED] wrote:
 Add file pattern to MAINTAINER entry
 
 Signed-off-by: Joe Perches [EMAIL PROTECTED]
 
 diff --git a/MAINTAINERS b/MAINTAINERS
 index 1fa922a..6a99fe5 100644
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
 @@ -3790,6 +3790,8 @@ P:  Ron Mercer
  M:   [EMAIL PROTECTED]
  L:   netdev@vger.kernel.org
  S:   Supported
 +F:   Documentation/networking/LICENSE.qla3xxx
 +F:   drivers/net/qla3xxx.*
  
  QNX4 FILESYSTEM
  P:   Anders Larsen

Acked-by: Ron Mercer [EMAIL PROTECTED]
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] netfilter : xt_u32 bug correction

2007-08-14 Thread Patrick McHardy
Eric Dumazet wrote:
 [PATCH] netfilter : xt_u32 bug correction


Applied, thanks Eric.
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/6] e1000e: remove namespace collisions with e1000

2007-08-14 Thread Rick Jones
if you grep around this effort was already started using the 'e1e_' 
prefix.  I like the shorter prefix, but your call ultimately.  Either 
way, make sure to make the driver consistent there too.


should it then be consistent with the overall driver name too? 
certainly calling things e1e or e1ke  or heck, even elke if one wanted 
to be a triffle playful would certainly help distinguish this driver 
from its grandfather.


rick jones
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 6/24] make atomic_read() behave consistently on frv

2007-08-14 Thread Paul E. McKenney
On Tue, Aug 14, 2007 at 03:34:25PM +1000, Nick Piggin wrote:
 Paul E. McKenney wrote:
 On Mon, Aug 13, 2007 at 01:15:52PM +0800, Herbert Xu wrote:
 
 Paul E. McKenney [EMAIL PROTECTED] wrote:
 
 On Sat, Aug 11, 2007 at 08:54:46AM +0800, Herbert Xu wrote:
 
 Chris Snook [EMAIL PROTECTED] wrote:
 
 cpu_relax() contains a barrier, so it should do the right thing.  For 
 non-smp architectures, I'm concerned about interacting with interrupt 
 handlers.  Some drivers do use atomic_* operations.
 
 What problems with interrupt handlers? Access to int/long must
 be atomic or we're in big trouble anyway.
 
 Reordering due to compiler optimizations.  CPU reordering does not
 affect interactions with interrupt handlers on a given CPU, but
 reordering due to compiler code-movement optimization does.  Since
 volatile can in some cases suppress code-movement optimizations,
 it can affect interactions with interrupt handlers.
 
 If such reordering matters, then you should use one of the
 *mb macros or barrier() rather than relying on possibly
 hidden volatile cast.
 
 
 If communicating among CPUs, sure.  However, when communicating between
 mainline and interrupt/NMI handlers on the same CPU, the barrier() and
 most expecially the *mb() macros are gross overkill.  So there really
 truly is a place for volatile -- not a large place, to be sure, but a
 place nonetheless.
 
 I really would like all volatile users to go away and be replaced
 by explicit barriers. It makes things nicer and more explicit... for
 atomic_t type there probably aren't many optimisations that can be
 made which volatile would disallow (in actual kernel code), but for
 others (eg. bitops, maybe atomic ops in UP kernels), there would be.
 
 Maybe it is the safe way to go, but it does obscure cases where there
 is a real need for barriers.

I prefer burying barriers into other primitives.

 Many atomic operations are allowed to be reordered between CPUs, so
 I don't have a good idea for the rationale to order them within the
 CPU (also loads and stores to long and ptr types are not ordered like
 this, although we do consider those to be atomic operations too).
 
 barrier() in a way is like enforcing sequential memory ordering
 between process and interrupt context, wheras volatile is just
 enforcing coherency of a single memory location (and as such is
 cheaper).

barrier() is useful, but it has the very painful side-effect of forcing
the compiler to dump temporaries.  So we do need something that is
not quite so global in effect.

 What do you think of this crazy idea?
 
 /* Enforce a compiler barrier for only operations to location X.
  * Call multiple times to provide an ordering between multiple
  * memory locations. Other memory operations can be assumed by
  * the compiler to remain unchanged and may be reordered
  */
 #define order(x) asm volatile( : +m (x))

There was something very similar discussed earlier in this thread,
with quite a bit of debate as to exactly what the m flag should
look like.  I suggested something similar named ACCESS_ONCE in the
context of RCU (http://lkml.org/lkml/2007/7/11/664):

#define ACCESS_ONCE(x) (*(volatile typeof(x) *)(x))

The nice thing about this is that it works for both loads and stores.
Not clear that order() above does this -- I get compiler errors when
I try something like b = order(a) or order(a) = 1 using gcc 4.1.2.

Thanx, Paul
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Distributed storage. Mirroring to any number of devices.

2007-08-14 Thread Jan Engelhardt

On Aug 14 2007 20:29, Evgeniy Polyakov wrote:

I'm pleased to announce second release of the distributed storage
subsystem, which allows to form a storage on top of remote and local
nodes, which in turn can be exported to another storage as a node to
form tree-like storages.

I'll be quick: what is it good for, are there any users, and what could
it have to do with DRBD and all the other distribution storage talk
that has come up lately (namely NBD w/Raid1)?


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


Re: [net-2.6.24] forcedeth does not compile without CONFIG_FORCEDETH_NAPI set

2007-08-14 Thread Oliver Hartkopp
Samuel Ortiz wrote:
 Hi Oliver,

 On Fri, Aug 10, 2007 at 07:34:03PM +0200, Oliver Hartkopp wrote:
   
 Checking some other source with the current net-2.6.24 GIT, i just
 discovered this:

   CC  drivers/net/mii.o
   CC  drivers/net/Space.o
   CC  drivers/net/loopback.o
   CC  drivers/net/b44.o
   CC  drivers/net/forcedeth.o
 drivers/net/forcedeth.c: In function nv_nic_irq:
 drivers/net/forcedeth.c:3017: error: RX_WORK_PER_LOOP undeclared (first
 use in this function)
 drivers/net/forcedeth.c:3017: error: (Each undeclared identifier is
 reported only once
 drivers/net/forcedeth.c:3017: error: for each function it appears in.)
 make[2]: *** [drivers/net/forcedeth.o] Error 1
 make[1]: *** [drivers/net] Error 2
 make: *** [drivers] Error 2

 This only occurs the CONFIG_FORCEDETH_NAPI is _disabled_.
 
 This fixes the build:

 --
 Signed-off-by: Samuel Ortiz [EMAIL PROTECTED]

  drivers/net/forcedeth.c |4 ++--
  1 files changed, 2 insertions(+), 2 deletions(-)

 diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c
 index 37732f9..90eef4a 100644
 --- a/drivers/net/forcedeth.c
 +++ b/drivers/net/forcedeth.c
 @@ -2973,6 +2973,8 @@ static void nv_link_irq(struct net_device *dev)
   dprintk(KERN_DEBUG %s: link change notification done.\n, dev-name);
  }
  
 +#define TX_WORK_PER_LOOP  64
 +#define RX_WORK_PER_LOOP  64
  static irqreturn_t nv_nic_irq(int foo, void *data)
  {
   struct net_device *dev = (struct net_device *) data;
 @@ -3083,8 +3085,6 @@ static irqreturn_t nv_nic_irq(int foo, void *data)
   return IRQ_RETVAL(i);
  }
  
 -#define TX_WORK_PER_LOOP  64
 -#define RX_WORK_PER_LOOP  64
  /**
   * All _optimized functions are used to help increase performance
   * (reduce CPU and increase throughput). They use descripter version 3,



   

Hi Samuel,

indeed a small thing that fixed the build problem :-)
Thanks for your patch  best regards,

Oliver

Acked-by: Oliver Hartkopp [EMAIL PROTECTED]



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


Re: Distributed storage. Mirroring to any number of devices.

2007-08-14 Thread Evgeniy Polyakov
On Tue, Aug 14, 2007 at 07:20:49PM +0200, Jan Engelhardt ([EMAIL PROTECTED]) 
wrote:
 I'm pleased to announce second release of the distributed storage
 subsystem, which allows to form a storage on top of remote and local
 nodes, which in turn can be exported to another storage as a node to
 form tree-like storages.
 
 I'll be quick: what is it good for, are there any users, and what could
 it have to do with DRBD and all the other distribution storage talk
 that has come up lately (namely NBD w/Raid1)?

It has number of advantages, outlined in the first release and on the
project homepage, namely:
* non-blocking processing without busy loops (compared to iSCSI and NBD)
* small, plugable architecture
* failover recovery (reconnect to remote target)
* autoconfiguration
* no additional allocatins (not including network  part) - at least two 
in device mapper for fast path
* very simple - try to compare with iSCSI
* works with different network protocols
* storage can be formed on top of remote nodes and be exported 
simultaneously (iSCSI is peer-to-peer only, NBD
requires device mapper, is synchronous and wants special
userspace thread)

Compared to DRBD, which is a mirroring of the local requests to remote
node, and raid on top of NBD, DST supports multiple remote nodes, it allows 
to remove any of them and then turn it back into the storage without
breaking the dataflow, dst core will reconnect automatically to the
failed remote nodes, it allows to work with detouched devices just like 
with usual filesystems (in case it was not formed as a part of linear 
storage, since in that case meta information is spreaded between nodes).
It does not require special processes on behalf of network connection,
everything will be performed automatically on behalf of DST core
workers, it allows to export new device, created on top of mirror or
linear combination of the others, which in turn can be formed on top of
another and so on...

This was designed to allow to create a distributed storage with
completely transparent failover recovery, with ability to detouch remote
nodes from mirror array to became standalone realtime backups (or
snapshots) and turn it back into the storage without stopping main 
device node.

-- 
Evgeniy Polyakov
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] b44-ssb: Powerup the bus before using the device.

2007-08-14 Thread Michael Buesch
We must turn on buspower before poking with the device

Signed-off-by: Michael Buesch [EMAIL PROTECTED]

Index: wireless-dev-new/drivers/net/b44.c
===
--- wireless-dev-new.orig/drivers/net/b44.c 2007-08-11 00:45:55.0 
+0200
+++ wireless-dev-new/drivers/net/b44.c  2007-08-12 22:18:34.0 +0200
@@ -2154,17 +2154,23 @@ static int __devinit b44_init_one(struct
 
netif_carrier_off(dev);
 
+   err = ssb_bus_powerup(sdev-bus, 0);
+   if (err) {
+   dev_err(sdev-dev,
+   Failed to powerup the bus\n);
+   goto err_out_free_dev;
+   }
err = ssb_dma_set_mask(sdev, DMA_30BIT_MASK);
if (err) {
dev_err(sdev-dev,
Required 30BIT DMA mask unsupported by the system.\n);
-   goto err_out_free_dev;
+   goto err_out_powerdown;
}
err = b44_get_invariants(bp);
if (err) {
dev_err(sdev-dev,
Problem fetching invariants of chip, aborting.\n);
-   goto err_out_free_dev;
+   goto err_out_powerdown;
}
 
bp-mii_if.dev = dev;
@@ -2184,7 +2190,7 @@ static int __devinit b44_init_one(struct
err = register_netdev(dev);
if (err) {
dev_err(sdev-dev, Cannot register net device, aborting.\n);
-   goto out;
+   goto err_out_powerdown;
}
 
ssb_set_drvdata(sdev, dev);
@@ -2201,6 +2207,9 @@ static int __devinit b44_init_one(struct
 
return 0;
 
+err_out_powerdown:
+   ssb_bus_may_powerdown(sdev-bus);
+
 err_out_free_dev:
free_netdev(dev);
 
@@ -2208,13 +2217,14 @@ out:
return err;
 }
 
-static void __devexit b44_remove_one(struct ssb_device *pdev)
+static void __devexit b44_remove_one(struct ssb_device *sdev)
 {
-   struct net_device *dev = ssb_get_drvdata(pdev);
+   struct net_device *dev = ssb_get_drvdata(sdev);
 
unregister_netdev(dev);
+   ssb_bus_may_powerdown(sdev-bus);
free_netdev(dev);
-   ssb_set_drvdata(pdev, NULL);
+   ssb_set_drvdata(sdev, NULL);
 }
 
 static int b44_suspend(struct ssb_device *sdev, pm_message_t state)
@@ -2251,6 +2261,13 @@ static int b44_resume(struct ssb_device 
struct b44 *bp = netdev_priv(dev);
int rc = 0;
 
+   rc = ssb_bus_powerup(sdev-bus, 0);
+   if (rc) {
+   dev_err(sdev-dev,
+   Failed to powerup the bus\n);
+   return rc;
+   }
+
if (!netif_running(dev))
return 0;
 
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] xen-netfront: Avoid deref'ing skbafter it is potentially freed.

2007-08-14 Thread Jeremy Fitzhardinge
Jesper Juhl wrote:
 This moves the updating of both tx_bytes and tx_packets inside the 
 spinlock, but as far as I can see we only _really_ need to move the 
 tx_bytes update. Considering that we generally want to do as little 
 work as possible while holding a lock, wouldn't the following be 
 slightly better?
   

Hm, I think it would be better to keep them together.  The second add is
going to be pretty much free, particularly since the tx_bytes add will
probably pull tx_packets into cache.

I have a followup patch to convert it to using the netdevice stats
structure, which will definitely put them in the same cacheline (though
perhaps the stats structure should group tx and rx members together?).

J

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


Re: troubles with r8169

2007-08-14 Thread Alistair John Strachan
On Sunday 12 August 2007 21:06:43 Vadim Dyadkin wrote:
 Robert Hancock пишет:
  This could well be a problem with the nvidia driver as it shares the
  same IRQ. The first step would be to see if the problem still shows up
  without the nvidia binary module loaded.

 Thank for your answer. This problem never shows up if I use only nvidia
 driver (the work without network), or if I use only r8169 (without
 x.org). If I use both of them I have the hang. Usually the hang appears
 if OpenGL is used or network rate is maximal. I tested this regimes many
 times before.

If you haven't already, I'd drop [EMAIL PROTECTED] an email to see if they 
have any insight. Not that this can't be a kernel bug, just that it's a bit 
difficult for kernel developers to debug when you're using a driver for which 
we don't have the sources.

As for changing the IRQ assignments, I don't have any immediate suggestions. I 
notice that this laptop has a dual core processor, so I'm guessing disabling 
APIC isn't an option. Have you tried that anyway, just to see if the IRQ 
assignment differs?

-- 
Cheers,
Alistair.

137/1 Warrender Park Road, Edinburgh, UK.

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


[PATCH] iproute2: sch_rr support in tc

2007-08-14 Thread PJ Waskiewicz
Stephen,

These patches are resubmissions of patches that were approved, but didn't
get merged.  The first patch is Patrick McHardy's nested compat attribute
patch to the netlink libraries.  The second patch adds multiqueue and sch_rr
functionality to tc.  The multiqueue features have been merged to 2.6.23, so
we'll need these patches to manage the new kernel features.

These patches are unmodified from the version that was approved.  They've been
applied to the latest iproute2 commit.

-- 
PJ Waskiewicz [EMAIL PROTECTED]
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 1/2] IPROUTE2: RTNETLINK nested attributes

2007-08-14 Thread PJ Waskiewicz
From: Patrick McHardy [EMAIL PROTECTED]

This adds capability for iproute2 to send nested attributes to the
kernel, while maintaining backwards compatibility.

Signed-off-by: Patrick McHardy [EMAIL PROTECTED]
---

 include/libnetlink.h |9 +
 lib/libnetlink.c |   46 ++
 2 files changed, 55 insertions(+), 0 deletions(-)

diff --git a/include/libnetlink.h b/include/libnetlink.h
index 49e248e..b67c5a5 100644
--- a/include/libnetlink.h
+++ b/include/libnetlink.h
@@ -39,15 +39,24 @@ extern int rtnl_send(struct rtnl_handle *rth, const char 
*buf, int);
 extern int addattr32(struct nlmsghdr *n, int maxlen, int type, __u32 data);
 extern int addattr_l(struct nlmsghdr *n, int maxlen, int type, const void 
*data, int alen);
 extern int addraw_l(struct nlmsghdr *n, int maxlen, const void *data, int len);
+extern struct rtattr *addattr_nest(struct nlmsghdr *n, int maxlen, int type);
+extern int addattr_nest_end(struct nlmsghdr *n, struct rtattr *nest);
+extern struct rtattr *addattr_nest_compat(struct nlmsghdr *n, int maxlen, int 
type, const void *data, int len);
+extern int addattr_nest_compat_end(struct nlmsghdr *n, struct rtattr *nest);
 extern int rta_addattr32(struct rtattr *rta, int maxlen, int type, __u32 data);
 extern int rta_addattr_l(struct rtattr *rta, int maxlen, int type, const void 
*data, int alen);
 
 extern int parse_rtattr(struct rtattr *tb[], int max, struct rtattr *rta, int 
len);
 extern int parse_rtattr_byindex(struct rtattr *tb[], int max, struct rtattr 
*rta, int len);
+extern int __parse_rtattr_nested_compat(struct rtattr *tb[], int max, struct 
rtattr *rta, int len);
 
 #define parse_rtattr_nested(tb, max, rta) \
(parse_rtattr((tb), (max), RTA_DATA(rta), RTA_PAYLOAD(rta)))
 
+#define parse_rtattr_nested_compat(tb, max, rta, data, len) \
+({ data = RTA_PAYLOAD(rta) = len ? RTA_DATA(rta) : NULL; \
+   __parse_rtattr_nested_compat(tb, max, rta, len); })
+
 extern int rtnl_listen(struct rtnl_handle *, rtnl_filter_t handler,
   void *jarg);
 extern int rtnl_from_file(FILE *, rtnl_filter_t handler,
diff --git a/lib/libnetlink.c b/lib/libnetlink.c
index 555dd5c..12883fe 100644
--- a/lib/libnetlink.c
+++ b/lib/libnetlink.c
@@ -527,6 +527,39 @@ int addraw_l(struct nlmsghdr *n, int maxlen, const void 
*data, int len)
return 0;
 }
 
+struct rtattr *addattr_nest(struct nlmsghdr *n, int maxlen, int type)
+{
+   struct rtattr *nest = NLMSG_TAIL(n);
+
+   addattr_l(n, maxlen, type, NULL, 0);
+   return nest;
+}
+
+int addattr_nest_end(struct nlmsghdr *n, struct rtattr *nest)
+{
+   nest-rta_len = (void *)NLMSG_TAIL(n) - (void *)nest;
+   return n-nlmsg_len;
+}
+
+struct rtattr *addattr_nest_compat(struct nlmsghdr *n, int maxlen, int type,
+  const void *data, int len)
+{
+   struct rtattr *start = NLMSG_TAIL(n);
+
+   addattr_l(n, maxlen, type, data, len);
+   addattr_nest(n, maxlen, type);
+   return start;
+}
+
+int addattr_nest_compat_end(struct nlmsghdr *n, struct rtattr *start)
+{
+   struct rtattr *nest = (void *)start + NLMSG_ALIGN(start-rta_len);
+
+   start-rta_len = (void *)NLMSG_TAIL(n) - (void *)start;
+   addattr_nest_end(n, nest);
+   return n-nlmsg_len;
+}
+
 int rta_addattr32(struct rtattr *rta, int maxlen, int type, __u32 data)
 {
int len = RTA_LENGTH(4);
@@ -589,3 +622,16 @@ int parse_rtattr_byindex(struct rtattr *tb[], int max, 
struct rtattr *rta, int l
fprintf(stderr, !!!Deficit %d, rta_len=%d\n, len, 
rta-rta_len);
return i;
 }
+
+int __parse_rtattr_nested_compat(struct rtattr *tb[], int max, struct rtattr 
*rta,
+int len)
+{
+   if (RTA_PAYLOAD(rta)  len)
+   return -1;
+   if (RTA_PAYLOAD(rta) = RTA_ALIGN(len) + sizeof(struct rtattr)) {
+   rta = RTA_DATA(rta) + RTA_ALIGN(len);
+   return parse_rtattr_nested(tb, max, rta);
+   }
+   memset(tb, 0, sizeof(struct rtattr *) * max);
+   return 0;
+}
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 2/2] iproute2: sch_rr support in tc

2007-08-14 Thread PJ Waskiewicz
This patch applies on top of Patrick McHardy's RTNETLINK
patches to add nested compat attributes.  This is needed to maintain
ABI for sch_{rr|prio} in the kernel with respect to tc.  A new option,
namely multiqueue, was added to sch_prio and sch_rr.  This will allow
a user to turn multiqueue support on for sch_prio or sch_rr at loadtime.
Also, tc qdisc ls will display whether or not multiqueue is enabled on
that qdisc.  When in multiqueue mode, a user can specify a value of 0 for
bands, and the number of bands will be created to match the number of
queues on the device.

This patch is to support the new sch_rr (round-robin) qdisc being proposed
in NET for multiqueue network device support in the Linux network stack.
It uses q_prio.c as the template, since the qdiscs are nearly identical,
outside of the -dequeue() routine.

Signed-off-by: Peter P Waskiewicz Jr [EMAIL PROTECTED]
---

 include/linux/pkt_sched.h |9 +++
 tc/q_prio.c   |   24 +++--
 tc/q_rr.c |  127 +
 3 files changed, 155 insertions(+), 5 deletions(-)

diff --git a/include/linux/pkt_sched.h b/include/linux/pkt_sched.h
index d10f353..4f1531b 100644
--- a/include/linux/pkt_sched.h
+++ b/include/linux/pkt_sched.h
@@ -101,6 +101,15 @@ struct tc_prio_qopt
__u8priomap[TC_PRIO_MAX+1]; /* Map: logical priority - PRIO band */
 };
 
+enum
+{
+TCA_PRIO_UNSPEC,
+TCA_PRIO_MQ,
+__TCA_PRIO_MAX
+};
+
+#define TCA_PRIO_MAX(__TCA_PRIO_MAX - 1)
+
 /* TBF section */
 
 struct tc_tbf_qopt
diff --git a/tc/q_prio.c b/tc/q_prio.c
index d696e1b..6883edb 100644
--- a/tc/q_prio.c
+++ b/tc/q_prio.c
@@ -29,7 +29,7 @@
 
 static void explain(void)
 {
-   fprintf(stderr, Usage: ... prio bands NUMBER priomap P1 P2...\n);
+   fprintf(stderr, Usage: ... prio bands NUMBER priomap P1 
P2...[multiqueue]\n);
 }
 
 #define usage() return(-1)
@@ -40,6 +40,8 @@ static int prio_parse_opt(struct qdisc_util *qu, int argc, 
char **argv, struct n
int pmap_mode = 0;
int idx = 0;
struct tc_prio_qopt opt={3,{ 1, 2, 2, 2, 1, 2, 0, 0, 1, 1, 1, 1, 1, 1, 
1, 1 }};
+   struct rtattr *nest;
+   unsigned char mq = 0;
 
while (argc  0) {
if (strcmp(*argv, bands) == 0) {
@@ -57,6 +59,8 @@ static int prio_parse_opt(struct qdisc_util *qu, int argc, 
char **argv, struct n
return -1;
}
pmap_mode = 1;
+   } else if (strcmp(*argv, multiqueue) == 0) {
+   mq = 1;
} else if (strcmp(*argv, help) == 0) {
explain();
return -1;
@@ -90,7 +94,10 @@ static int prio_parse_opt(struct qdisc_util *qu, int argc, 
char **argv, struct n
opt.priomap[idx] = opt.priomap[TC_PRIO_BESTEFFORT];
}
 */
-   addattr_l(n, 1024, TCA_OPTIONS, opt, sizeof(opt));
+   nest = addattr_nest_compat(n, 1024, TCA_OPTIONS, opt, sizeof(opt));
+   if (mq)
+   addattr_l(n, 1024, TCA_PRIO_MQ, NULL, 0);
+   addattr_nest_compat_end(n, nest);
return 0;
 }
 
@@ -98,16 +105,23 @@ int prio_print_opt(struct qdisc_util *qu, FILE *f, struct 
rtattr *opt)
 {
int i;
struct tc_prio_qopt *qopt;
+   struct rtattr *tb[TCA_PRIO_MAX+1];
 
if (opt == NULL)
return 0;
 
-   if (RTA_PAYLOAD(opt)   sizeof(*qopt))
-   return -1;
-   qopt = RTA_DATA(opt);
+   if (parse_rtattr_nested_compat(tb, TCA_PRIO_MAX, opt, qopt,
+   sizeof(*qopt)))
+return -1;
+
fprintf(f, bands %u priomap , qopt-bands);
for (i=0; i=TC_PRIO_MAX; i++)
fprintf(f,  %d, qopt-priomap[i]);
+
+   if (tb[TCA_PRIO_MQ])
+   fprintf(f,  multiqueue: %s ,
+   *(unsigned char *)RTA_DATA(tb[TCA_PRIO_MQ]) ? on : off);
+
return 0;
 }
 
diff --git a/tc/q_rr.c b/tc/q_rr.c
new file mode 100644
index 000..9335c47
--- /dev/null
+++ b/tc/q_rr.c
@@ -0,0 +1,127 @@
+/*
+ * q_rr.c  RR.
+ *
+ * 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.
+ *
+ * Authors:PJ Waskiewicz, [EMAIL PROTECTED]
+ * Original Authors:   Alexey Kuznetsov, [EMAIL PROTECTED] (from PRIO)
+ *
+ * Changes:
+ *
+ * Ole Husgaard [EMAIL PROTECTED]: 990513: prio2band map was always reset.
+ * J Hadi Salim [EMAIL PROTECTED]: 990609: priomap fix.
+ */
+
+#include stdio.h
+#include stdlib.h
+#include unistd.h
+#include syslog.h
+#include fcntl.h
+#include sys/socket.h
+#include netinet/in.h
+#include arpa/inet.h
+#include string.h
+
+#include utils.h
+#include tc_util.h
+
+static void 

Re: [PATCH] [DM9000] Add support for big-endian hosts

2007-08-14 Thread Ben Dooks
On Tue, Aug 14, 2007 at 01:22:32PM +0200, Laurent Pinchart wrote:
 This patch splits the receive status in 8bit wide fields and convert the
 packet length from little endian to CPU byte order.

Which version of the the kernel was this against, it applies with
fuzz to 2.6.23-rc3:

$ patch -p1  ~/dm9000-fix-endianness.patch 
patching file drivers/net/dm9000.c
Hunk #1 succeeded at 894 (offset 15 lines).
Hunk #2 succeeded at 936 (offset 15 lines).
Hunk #3 succeeded at 948 (offset 15 lines).

 Signed-off-by: Laurent Pinchart [EMAIL PROTECTED]
 ---
  drivers/net/dm9000.c |   13 +++--
  1 files changed, 7 insertions(+), 6 deletions(-)
 
 diff --git a/drivers/net/dm9000.c b/drivers/net/dm9000.c
 index 264fa0e..ee578d9 100644
 --- a/drivers/net/dm9000.c
 +++ b/drivers/net/dm9000.c
 @@ -879,7 +879,8 @@ dm9000_timer(unsigned long data)
  }
  
  struct dm9000_rxhdr {
 - u16 RxStatus;
 + u8  RxPktReady;
 + u8  RxStatus;
   u16 RxLen;
  } __attribute__((__packed__));
  
 @@ -920,7 +921,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) {
 @@ -932,17 +933,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);
   db-stats.rx_fifo_errors++;
   }
 - if (rxhdr.RxStatus  0x200) {
 + if (rxhdr.RxStatus  0x02) {
   PRINTK1(crc error\n);
   db-stats.rx_crc_errors++;
   }
 - if (rxhdr.RxStatus  0x8000) {
 + if (rxhdr.RxStatus  0x80) {
   PRINTK1(length error\n);
   db-stats.rx_length_errors++;
   }
 -- 
 1.5.0


-- 
Ben ([EMAIL PROTECTED], http://www.fluff.org/)

  'a smiley only costs 4 bytes'
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] [DM9000] External PHY support

2007-08-14 Thread Ben Dooks
On Tue, Aug 14, 2007 at 01:29:35PM +0200, Laurent Pinchart wrote:
 This patch adds a flag to the DM9000 platform data which, when set,
 configures the device to use an external PHY.

This patch applies with fuzz:

$ patch -p1  ~/dm9000-external-phy.patch   
patching file drivers/net/dm9000.c
Hunk #1 succeeded at 136 (offset 12 lines).
Hunk #2 succeeded at 529 (offset 15 lines).
Hunk #3 succeeded at 673 (offset 15 lines).
patching file include/linux/dm9000.h

 Signed-off-by: Laurent Pinchart [EMAIL PROTECTED]
 ---
  drivers/net/dm9000.c   |6 ++
  include/linux/dm9000.h |1 +
  2 files changed, 7 insertions(+), 0 deletions(-)
 
 diff --git a/drivers/net/dm9000.c b/drivers/net/dm9000.c
 index ee578d9..820f0d3 100644
 --- a/drivers/net/dm9000.c
 +++ b/drivers/net/dm9000.c
 @@ -124,6 +124,7 @@ typedef struct board_info {
   u16 dbug_cnt;
   u8 io_mode; /* 0:word, 2:byte */
   u8 phy_addr;
 + unsigned int flags;
  
   void (*inblk)(void __iomem *port, void *data, int length);
   void (*outblk)(void __iomem *port, void *data, int length);
 @@ -513,6 +514,8 @@ dm9000_probe(struct platform_device *pdev)
  
   if (pdata-dumpblk != NULL)
   db-dumpblk = pdata-dumpblk;
 +
 + db-flags = pdata-flags;
   }
  
   dm9000_reset(db);
 @@ -655,6 +658,9 @@ dm9000_init_dm9000(struct net_device *dev)
   iow(db, DM9000_GPCR, GPCR_GEP_CNTL);/* Let GPIO0 output */
   iow(db, DM9000_GPR, 0); /* Enable PHY */
  
 + if (db-flags  DM9000_PLATF_EXT_PHY)
 + iow(db, DM9000_NCR, NCR_EXT_PHY);
 +
   /* Program operating register */
   iow(db, DM9000_TCR, 0); /* TX Polling clear */
   iow(db, DM9000_BPTR, 0x3f); /* Less 3Kb, 200us */
 diff --git a/include/linux/dm9000.h b/include/linux/dm9000.h
 index 0008e2a..ea530fd 100644
 --- a/include/linux/dm9000.h
 +++ b/include/linux/dm9000.h
 @@ -19,6 +19,7 @@
  #define DM9000_PLATF_8BITONLY(0x0001)
  #define DM9000_PLATF_16BITONLY   (0x0002)
  #define DM9000_PLATF_32BITONLY   (0x0004)
 +#define DM9000_PLATF_EXT_PHY (0x0008)
  
  /* platfrom data for platfrom device structure's platfrom_data field */

-- 
Ben ([EMAIL PROTECTED], http://www.fluff.org/)

  'a smiley only costs 4 bytes'
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] ax25: don't free pointers to statically allocated data

2007-08-14 Thread Alexey Dobriyan
commit 8d5cf596d10d740b69b5f4bbdb54b85abf75810d started to add statically
allocated ax25_protocol's to list. However kfree() was still in place waiting
for unsuspecting ones on module removal.

Steps to reproduce:

modprobe netrom
rmmod netrom

P.S.: code would benefit greatly from list_add/list_del usage

kernel BUG at mm/slab.c:592!
invalid opcode:  [1] PREEMPT SMP 
CPU 0 
Modules linked in: netrom ax25 af_packet usbcore rtc_cmos rtc_core rtc_lib
Pid: 4477, comm: rmmod Not tainted 2.6.23-rc3-bloat #2
RIP: 0010:[802ac646]  [802ac646] kfree+0x1c6/0x260
RSP: :810079a05e48  EFLAGS: 00010046
RAX:  RBX:  RCX: 8100c000
RDX: 81007e552458 RSI:  RDI: 805d
RBP: 810079a05e88 R08: 0001 R09: 
R10: 0001 R11:  R12: 8805d080
R13: 8805d080 R14:  R15: 0282
FS:  2b73fc98aae0() GS:805dc000() knlGS:
CS:  0010 DS:  ES:  CR0: 8005003b
CR2: 0053f3b8 CR3: 79ff2000 CR4: 06e0
DR0:  DR1:  DR2: 
DR3:  DR6: 0ff0 DR7: 0400
Process rmmod (pid: 4477, threadinfo 810079a04000, task 8100775aa480)
Stack:  810079a05e68 0246 8804eca0 
 8805d080 00cf  0880
 810079a05eb8 8803ec90 810079a05eb8 
Call Trace:
 [8803ec90] :ax25:ax25_protocol_release+0xa0/0xb0
 [88056ecb] :netrom:nr_exit+0x6b/0xf0
 [80268bf0] sys_delete_module+0x170/0x1f0
 [8025da35] trace_hardirqs_on+0xd5/0x170
 [804835aa] trace_hardirqs_on_thunk+0x35/0x37
 [8020c13e] system_call+0x7e/0x83


Code: 0f 0b eb fe 66 66 90 66 66 90 48 8b 52 10 48 8b 02 25 00 40 
RIP  [802ac646] kfree+0x1c6/0x260
 RSP 810079a05e48
Kernel panic - not syncing: Fatal exception

Signed-off-by: Alexey Dobriyan [EMAIL PROTECTED]
---

 net/ax25/ax25_iface.c |2 --
 1 file changed, 2 deletions(-)

--- a/net/ax25/ax25_iface.c
+++ b/net/ax25/ax25_iface.c
@@ -69,7 +69,6 @@ void ax25_protocol_release(unsigned int pid)
if (protocol-pid == pid) {
protocol_list = protocol-next;
write_unlock_bh(protocol_list_lock);
-   kfree(protocol);
return;
}
 
@@ -78,7 +77,6 @@ void ax25_protocol_release(unsigned int pid)
s = protocol-next;
protocol-next = protocol-next-next;
write_unlock_bh(protocol_list_lock);
-   kfree(s);
return;
}
 

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


Re: [PATCH] [459/2many] MAINTAINERS - SPIDERNET NETWORK DRIVER for CELL

2007-08-14 Thread Linas Vepstas
On Mon, Aug 13, 2007 at 10:07:25AM -0700, Joe Perches wrote:
 On Mon, 2007-08-13 at 10:45 -0500, Linas Vepstas wrote:
  Note quite right. spider-pic is not part of spider_net.
 
 SPIDERNET NETWORK DRIVER for CELL
 P:Linas Vepstas
 M:[EMAIL PROTECTED]
 L:netdev@vger.kernel.org
 S:Supported
 F:Documentation/networking/spider_net.txt
 F:drivers/net/spider_net*

Works for me.

Acked-by: Linas Vepstas [EMAIL PROTECTED]
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] bridge: sysfs locking fix.

2007-08-14 Thread David Miller
From: Stephen Hemminger [EMAIL PROTECTED]
Date: Tue, 14 Aug 2007 14:50:52 +0100

 Forget earlier patch, it is wrong...
 
 The stp change code generates sleeping function called from invalid context
 because rtnl_lock() called with BH disabled. This fixes it by not acquiring 
 then
 dropping the bridge lock.
 
 Signed-off-by: Stephen Hemminger [EMAIL PROTECTED]

Applied, thanks Stephen.
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/4] Add ETHTOOL_[GS]FLAGS sub-ioctls

2007-08-14 Thread Kok, Auke

Rick Jones wrote:

David Miller wrote:

From: Ben Greear [EMAIL PROTECTED]
Date: Fri, 10 Aug 2007 15:40:02 -0700



For GSO on output, is there a generic fallback for any driver that
does not specifically implement GSO?


Absolutely, in fact that's mainly what it's there for.

I don't think there is any issue.  The knob is there via
ethtool for people who really want to disable it.


Just to be paranoid (who me?) we are then at a point where what happened 
a couple months ago with forwarding between 10G and IPoIB won't happen 
again - where things failed because a 10G NIC had LRO enabled by default?


we still have the NETIF_F_LRO flag which Jeff will keep around. Perhaps the 
IPoIB code can force this to _off_ when setting it up? (or at least warn about it).


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


Re: [patch 07/18] PCI-X/PCI-Express read control interfaces: use them in e1000

2007-08-14 Thread Kok, Auke

[EMAIL PROTECTED] wrote:

From: Peter Oruba [EMAIL PROTECTED]

These driver changes incorporate the proposed PCI-X / PCI-Express read byte
count interface.  Reading and setting those valuse doesn't take place
manually, instead wrapping functions are called to allow quirks for some
PCI bridges.

Signed-off by: Peter Oruba [EMAIL PROTECTED]
Based on work by Stephen Hemminger [EMAIL PROTECTED]
Cc: Auke Kok [EMAIL PROTECTED]
Cc: Jeff Garzik [EMAIL PROTECTED]
Signed-off-by: Andrew Morton [EMAIL PROTECTED]
---

 drivers/net/e1000/e1000_hw.c   |   25 +++--
 drivers/net/e1000/e1000_hw.h   |2 ++
 drivers/net/e1000/e1000_main.c |   14 ++
 3 files changed, 19 insertions(+), 22 deletions(-)

diff -puN 
drivers/net/e1000/e1000_hw.c~pci-x-pci-express-read-control-interfaces-e1000 
drivers/net/e1000/e1000_hw.c
--- 
a/drivers/net/e1000/e1000_hw.c~pci-x-pci-express-read-control-interfaces-e1000
+++ a/drivers/net/e1000/e1000_hw.c
@@ -865,10 +865,6 @@ e1000_init_hw(struct e1000_hw *hw)
 uint32_t ctrl;
 uint32_t i;
 int32_t ret_val;
-uint16_t pcix_cmd_word;
-uint16_t pcix_stat_hi_word;
-uint16_t cmd_mmrbc;
-uint16_t stat_mmrbc;
 uint32_t mta_size;
 uint32_t reg_data;
 uint32_t ctrl_ext;
@@ -958,24 +954,9 @@ e1000_init_hw(struct e1000_hw *hw)
 break;
 default:
 /* Workaround for PCI-X problem when BIOS sets MMRBC incorrectly. */
-if (hw-bus_type == e1000_bus_type_pcix) {
-e1000_read_pci_cfg(hw, PCIX_COMMAND_REGISTER, pcix_cmd_word);
-e1000_read_pci_cfg(hw, PCIX_STATUS_REGISTER_HI,
-pcix_stat_hi_word);
-cmd_mmrbc = (pcix_cmd_word  PCIX_COMMAND_MMRBC_MASK) 
-PCIX_COMMAND_MMRBC_SHIFT;
-stat_mmrbc = (pcix_stat_hi_word  PCIX_STATUS_HI_MMRBC_MASK) 
-PCIX_STATUS_HI_MMRBC_SHIFT;
-if (stat_mmrbc == PCIX_STATUS_HI_MMRBC_4K)
-stat_mmrbc = PCIX_STATUS_HI_MMRBC_2K;
-if (cmd_mmrbc  stat_mmrbc) {
-pcix_cmd_word = ~PCIX_COMMAND_MMRBC_MASK;
-pcix_cmd_word |= stat_mmrbc  PCIX_COMMAND_MMRBC_SHIFT;
-e1000_write_pci_cfg(hw, PCIX_COMMAND_REGISTER,
-pcix_cmd_word);
-}
-}
-break;
+   if (hw-bus_type == e1000_bus_type_pcix  e1000_pcix_get_mmrbc(hw)  
2048)
+   e1000_pcix_set_mmrbc(hw, 2048);
+   break;
 }
 
 /* More time needed for PHY to initialize */

diff -puN 
drivers/net/e1000/e1000_hw.h~pci-x-pci-express-read-control-interfaces-e1000 
drivers/net/e1000/e1000_hw.h
--- 
a/drivers/net/e1000/e1000_hw.h~pci-x-pci-express-read-control-interfaces-e1000
+++ a/drivers/net/e1000/e1000_hw.h
@@ -424,6 +424,8 @@ void e1000_pci_clear_mwi(struct e1000_hw
 void e1000_read_pci_cfg(struct e1000_hw *hw, uint32_t reg, uint16_t * value);
 void e1000_write_pci_cfg(struct e1000_hw *hw, uint32_t reg, uint16_t * value);
 int32_t e1000_read_pcie_cap_reg(struct e1000_hw *hw, uint32_t reg, uint16_t 
*value);
+void e1000_pcix_set_mmrbc(struct e1000_hw *hw, int mmrbc);
+int e1000_pcix_get_mmrbc(struct e1000_hw *hw);
 /* Port I/O is only supported on 82544 and newer */
 void e1000_io_write(struct e1000_hw *hw, unsigned long port, uint32_t value);
 int32_t e1000_disable_pciex_master(struct e1000_hw *hw);
diff -puN 
drivers/net/e1000/e1000_main.c~pci-x-pci-express-read-control-interfaces-e1000 
drivers/net/e1000/e1000_main.c
--- 
a/drivers/net/e1000/e1000_main.c~pci-x-pci-express-read-control-interfaces-e1000
+++ a/drivers/net/e1000/e1000_main.c
@@ -4906,6 +4906,20 @@ e1000_write_pci_cfg(struct e1000_hw *hw,
pci_write_config_word(adapter-pdev, reg, *value);
 }
 
+int

+e1000_pcix_get_mmrbc(struct e1000_hw *hw)
+{
+   struct e1000_adapter *adapter = hw-back;
+   return pcix_get_mmrbc(adapter-pdev);
+}
+
+void
+e1000_pcix_set_mmrbc(struct e1000_hw *hw, int mmrbc)
+{
+   struct e1000_adapter *adapter = hw-back;
+   pcix_set_mmrbc(adapter-pdev, mmrbc);
+}
+
 int32_t
 e1000_read_pcie_cap_reg(struct e1000_hw *hw, uint32_t reg, uint16_t *value)
 {
_



Jeff,

This has been sitting in -mm long enough I think. Please merge in upstream.

Acked-by: Auke Kok [EMAIL PROTECTED]
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [patch 12/18] e1000: #if 0 two functions

2007-08-14 Thread Kok, Auke

Jeff Garzik wrote:

[EMAIL PROTECTED] wrote:

From: Adrian Bunk [EMAIL PROTECTED]

e1000_{read,write}_pci_cfg() are no longer used.

Signed-off-by: Adrian Bunk [EMAIL PROTECTED]
Cc: Auke Kok [EMAIL PROTECTED]
Signed-off-by: Andrew Morton [EMAIL PROTECTED]
---

 drivers/net/e1000/e1000_hw.h   |2 --
 drivers/net/e1000/e1000_main.c |4 
 2 files changed, 4 insertions(+), 2 deletions(-)


if it's truly dead code in upstream, we should just remove it from e1000


if I apply this to #master and compile, it blows up: the two functions are still 
in use there. I also don't see any difference with current #upstream


so, I don't know what is in -mm at the moment, but we do not want this in jeff's 
tree.


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


Re: [patch 12/18] e1000: #if 0 two functions

2007-08-14 Thread Kok, Auke

Kok, Auke wrote:

Jeff Garzik wrote:

[EMAIL PROTECTED] wrote:

From: Adrian Bunk [EMAIL PROTECTED]

e1000_{read,write}_pci_cfg() are no longer used.

Signed-off-by: Adrian Bunk [EMAIL PROTECTED]
Cc: Auke Kok [EMAIL PROTECTED]
Signed-off-by: Andrew Morton [EMAIL PROTECTED]
---

 drivers/net/e1000/e1000_hw.h   |2 --
 drivers/net/e1000/e1000_main.c |4 
 2 files changed, 4 insertions(+), 2 deletions(-)

if it's truly dead code in upstream, we should just remove it from e1000


if I apply this to #master and compile, it blows up: the two functions are still 
in use there. I also don't see any difference with current #upstream


so, I don't know what is in -mm at the moment, but we do not want this in jeff's 
tree.


whoops, I fail to correlate this with the mmrbc patch I just acked 5 minutes 
ago, which removes the need for these functions.


I'll push a patch to remove these functions once I hear what the plan is for the 
mmrbc patch.


Cheers,

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


[PATCH] IOAT: Fix ioatdma descriptor cache miss

2007-08-14 Thread Nelson, Shannon
 
(copying from linux-kernel to net-dev)

The layout for struct ioat_desc_sw is non-optimal and causes an extra
cache hit for every descriptor processed.  By tightening up the struct
layout and removing one item, we pull in the fields that get used in
the speedpath and get a little better performance.


Before:
---
struct ioat_desc_sw {
struct ioat_dma_descriptor * hw; /* 0 8
*/
struct list_head   node; /* 816
*/
inttx_cnt;   /*24 4
*/

/* XXX 4 bytes hole, try to pack */

dma_addr_t src;  /*32 8
*/
__u32  src_len;  /*40 4
*/

/* XXX 4 bytes hole, try to pack */

dma_addr_t dst;  /*48 8
*/
__u32  dst_len;  /*56 4
*/

/* XXX 4 bytes hole, try to pack */

/* --- cacheline 1 boundary (64 bytes) --- */
struct dma_async_tx_descriptor async_tx; /*64   144
*/
/* --- cacheline 3 boundary (192 bytes) was 16 bytes ago --- */

/* size: 208, cachelines: 4 */
/* sum members: 196, holes: 3, sum holes: 12 */
/* last cacheline: 16 bytes */
};  /* definitions: 1 */


After:
--

struct ioat_desc_sw {
struct ioat_dma_descriptor * hw; /* 0 8
*/
struct list_head   node; /* 816
*/
inttx_cnt;   /*24 4
*/
__u32  len;  /*28 4
*/
dma_addr_t src;  /*32 8
*/
dma_addr_t dst;  /*40 8
*/
struct dma_async_tx_descriptor async_tx; /*48   144
*/
/* --- cacheline 3 boundary (192 bytes) --- */

/* size: 192, cachelines: 3 */
};  /* definitions: 1 */


Signed-off-by: Shannon Nelson [EMAIL PROTECTED]
---

 drivers/dma/ioatdma.c |7 +++
 drivers/dma/ioatdma.h |3 +--
 2 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/drivers/dma/ioatdma.c b/drivers/dma/ioatdma.c
index 5fbe56b..2d1f178 100644
--- a/drivers/dma/ioatdma.c
+++ b/drivers/dma/ioatdma.c
@@ -347,8 +347,7 @@ ioat_dma_prep_memcpy(struct dma_chan *chan, size_t
len, int int_en)
new-async_tx.ack = 0; /* client is in control of this ack */
new-async_tx.cookie = -EBUSY;
 
-   pci_unmap_len_set(new, src_len, orig_len);
-   pci_unmap_len_set(new, dst_len, orig_len);
+   pci_unmap_len_set(new, len, orig_len);
spin_unlock_bh(ioat_chan-desc_lock);
 
return new ? new-async_tx : NULL;
@@ -423,11 +422,11 @@ static void ioat_dma_memcpy_cleanup(struct
ioat_dma_chan *chan)
*/
pci_unmap_page(chan-device-pdev,
pci_unmap_addr(desc, dst),
-   pci_unmap_len(desc, dst_len),
+   pci_unmap_len(desc, len),
PCI_DMA_FROMDEVICE);
pci_unmap_page(chan-device-pdev,
pci_unmap_addr(desc, src),
-   pci_unmap_len(desc, src_len),
+   pci_unmap_len(desc, len),
PCI_DMA_TODEVICE);
}
 
diff --git a/drivers/dma/ioatdma.h b/drivers/dma/ioatdma.h
index d372647..bf4dad7 100644
--- a/drivers/dma/ioatdma.h
+++ b/drivers/dma/ioatdma.h
@@ -111,10 +111,9 @@ struct ioat_desc_sw {
struct ioat_dma_descriptor *hw;
struct list_head node;
int tx_cnt;
+   DECLARE_PCI_UNMAP_LEN(len)
DECLARE_PCI_UNMAP_ADDR(src)
-   DECLARE_PCI_UNMAP_LEN(src_len)
DECLARE_PCI_UNMAP_ADDR(dst)
-   DECLARE_PCI_UNMAP_LEN(dst_len)
struct dma_async_tx_descriptor async_tx;
 };
 
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Realtek r8168 slow outbound transfer - potential fix/workaround

2007-08-14 Thread Francois Romieu
Bruce Cole [EMAIL PROTECTED] :
[...]
 What's the status of this fix?  It (or something more refined) seems 
 necessary to correct the current performance problems with this driver.

An explanation or something more refined would be welcome.

[...]
 I can troubleshoot in more detail if that would help get a proper fix
 developed.

Can you try 2.6.23-rc3 with NAPI enabled and send a complete dmesg +
/proc/interrupts + ethtool -S output ?

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


[2.6 patch] unexport dev_ethtool

2007-08-14 Thread Adrian Bunk
This patch removes the no longer used EXPORT_SYMBOL(dev_ethtool).

Signed-off-by: Adrian Bunk [EMAIL PROTECTED]

---
37bcb29c1a1fefe6da0ea9e54a5cde09a82318f0 
diff --git a/net/core/ethtool.c b/net/core/ethtool.c
index 2ab0a60..c5e0593 100644
--- a/net/core/ethtool.c
+++ b/net/core/ethtool.c
@@ -948,7 +948,6 @@ int dev_ethtool(struct ifreq *ifr)
return rc;
 }
 
-EXPORT_SYMBOL(dev_ethtool);
 EXPORT_SYMBOL(ethtool_op_get_link);
 EXPORT_SYMBOL(ethtool_op_get_sg);
 EXPORT_SYMBOL(ethtool_op_get_tso);

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


Re: [PATCH 2/6] e1000e: remove namespace collisions with e1000

2007-08-14 Thread Kok, Auke

Rick Jones wrote:
if you grep around this effort was already started using the 'e1e_' 
prefix.  I like the shorter prefix, but your call ultimately.  Either 
way, make sure to make the driver consistent there too.


should it then be consistent with the overall driver name too? 
certainly calling things e1e or e1ke  or heck, even elke if one wanted 
to be a triffle playful would certainly help distinguish this driver 
from its grandfather.


I think we are passed the time for the name-a-driver raffle now. We've informed 
a lot of people that the name will be e1000e, so I definately prefer using 
this internally as well.


As for the e1000_get_speed_and_duplex_fiber_serdes long names, those are an 
eyesore to me as well...


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


[2.6 patch] net/8021q/vlanproc.c: fix check-after-use

2007-08-14 Thread Adrian Bunk
The Coverity checker spotted that we'd have already oops'ed if vlandev
was NULL.

Signed-off-by: Adrian Bunk [EMAIL PROTECTED]

---
--- linux-2.6.23-rc1-mm2/net/8021q/vlanproc.c.old   2007-08-08 
06:22:40.0 +0200
+++ linux-2.6.23-rc1-mm2/net/8021q/vlanproc.c   2007-08-08 06:23:13.0 
+0200
@@ -314,17 +314,17 @@
 static int vlandev_seq_show(struct seq_file *seq, void *offset)
 {
struct net_device *vlandev = (struct net_device *) seq-private;
const struct vlan_dev_info *dev_info = VLAN_DEV_INFO(vlandev);
struct net_device_stats *stats;
static const char fmt[] = %30s %12lu\n;
int i;
 
-   if ((vlandev == NULL) || (!(vlandev-priv_flags  IFF_802_1Q_VLAN)))
+   if (!(vlandev-priv_flags  IFF_802_1Q_VLAN))
return 0;
 
seq_printf(seq, %s  VID: %d REORDER_HDR: %i  dev-priv_flags: 
%hx\n,
   vlandev-name, dev_info-vlan_id,
   (int)(dev_info-flags  1), vlandev-priv_flags);
 
 
stats = vlan_dev_get_stats(vlandev);

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


Re: [2.6 patch] unexport dev_ethtool

2007-08-14 Thread Matthew Wilcox
On Tue, Aug 14, 2007 at 11:22:03PM +0200, Adrian Bunk wrote:
 This patch removes the no longer used EXPORT_SYMBOL(dev_ethtool).
 
 Signed-off-by: Adrian Bunk [EMAIL PROTECTED]
Acked-by: Matthew Wilcox [EMAIL PROTECTED]

-- 
Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours.  We can't possibly take such
a retrograde step.
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] econet: remove econet_packet_type on unload

2007-08-14 Thread Alexey Dobriyan
Steps to reproduce:

modprobe econet
rmmod econet
modprobe econet

Unable to handle kernel paging request at 8870a098 RIP: 
 [8040bfb8] dev_add_pack+0x48/0x90
PGD 203067 PUD 207063 PMD 7817f067 PTE 0
Oops: 0002 [1] PREEMPT SMP 
CPU 1 
Modules linked in: econet [mny]
Pid: 10671, comm: modprobe Not tainted 2.6.23-rc3-bloat #6
RIP: 0010:[8040bfb8]  [8040bfb8] dev_add_pack+0x48/0x90
RSP: :810076293df8  EFLAGS: 00010202
RAX: 88659090 RBX: 88659060 RCX: 8870a090
RDX: 0080 RSI: 805ec660 RDI: 810078ce4680
RBP: 810076293e08 R08: 0002 R09: 
R10: 8040bf88 R11: 0001 R12: 810076293e18
R13: 001b R14: 810076dd06b0 R15: 886590c0
FS:  2b96a525dae0() GS:81007e0e2138() knlGS:
CS:  0010 DS:  ES:  CR0: 8005003b
CR2: 8870a098 CR3: 7bb67000 CR4: 26e0
DR0:  DR1:  DR2: 
DR3:  DR6: 0ff0 DR7: 0400
Process modprobe (pid: 10671, threadinfo 810076292000, task 
810078ce4680)
Stack:  810076dd06b0  810076293e38 8865b180
 0080  886590c0 810076dd01c8
 810076293f78 8026723c 810076293e48 886590d8
Call Trace:
 [8865b180] :econet:econet_proto_init+0x180/0x1da
 [8026723c] sys_init_module+0x15c/0x19e0
 [8020c13e] system_call+0x7e/0x83


Code: 48 89 41 08 48 89 82 e0 c5 5e 80 48 c7 c7 a0 08 5d 80 e8 f1 
RIP  [8040bfb8] dev_add_pack+0x48/0x90
 RSP 810076293df8
CR2: 8870a098

Signed-off-by: Alexey Dobriyan [EMAIL PROTECTED]
---

 net/econet/af_econet.c |3 +++
 1 file changed, 3 insertions(+)

--- a/net/econet/af_econet.c
+++ b/net/econet/af_econet.c
@@ -1146,6 +1146,9 @@ static void __exit econet_proto_exit(void)
sock_release(udpsock);
 #endif
unregister_netdevice_notifier(econet_netdev_notifier);
+#ifdef CONFIG_ECONET_NATIVE
+   dev_remove_pack(econet_packet_type);
+#endif
sock_unregister(econet_family_ops.family);
proto_unregister(econet_proto);
 }

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


[2.6 patch] remove Documentation/networking/net-modules.txt

2007-08-14 Thread Adrian Bunk
According to git, the only one who touched this file during the last
5 years was me when removing drivers...

modinfo offers less ancient information.

Signed-off-by: Adrian Bunk [EMAIL PROTECTED]

---

This patch has been sent on:
- 23 Jul 2007

 Documentation/networking/00-INDEX|2 
 Documentation/networking/net-modules.txt |  315 ---
 2 files changed, 317 deletions(-)

--- linux-2.6.22-rc6-mm1/Documentation/networking/00-INDEX.old  2007-07-23 
20:28:51.0 +0200
+++ linux-2.6.22-rc6-mm1/Documentation/networking/00-INDEX  2007-07-23 
20:28:59.0 +0200
@@ -80,8 +80,6 @@
- Behaviour of cards under Multicast
 ncsa-telnet
- notes on how NCSA telnet (DOS) breaks with MTU discovery enabled.
-net-modules.txt
-   - info and insmod parameters for all network driver modules.
 netdevices.txt
- info on network device driver functions exported to the kernel.
 olympic.txt
--- linux-2.6.22-rc6-mm1/Documentation/networking/net-modules.txt   
2007-07-12 20:43:37.0 +0200
+++ /dev/null   2006-09-19 00:45:31.0 +0200
@@ -1,315 +0,0 @@
-Wed 2-Aug-95  [EMAIL PROTECTED]
-
-   Linux network driver modules
-
-   Do not mistake this for README.modules at the top-level
-   directory!  That document tells about modules in general, while
-   this one tells only about network device driver modules.
-
-   This is a potpourri of INSMOD-time(*) configuration options
-   (if such exists) and their default values of various modules
-   in the Linux network drivers collection.
-
-   Some modules have also hidden (= non-documented) tunable values.
-   The choice of not documenting them is based on general belief, that
-   the less the user needs to know, the better.  (There are things that
-   driver developers can use, others should not confuse themselves.)
-
-   In many cases it is highly preferred that insmod:ing is done
-   ONLY with defining an explicit address for the card, AND BY
-   NOT USING AUTO-PROBING!
-
-   Now most cards have some explicitly defined base address that they
-   are compiled with (to avoid auto-probing, among other things).
-   If that compiled value does not match your actual configuration,
-   do use the io=0xXXX -parameter for the insmod, and give there
-   a value matching your environment.
-
-   If you are adventurous, you can ask the driver to autoprobe
-   by using the io=0 parameter, however it is a potentially dangerous
-   thing to do in a live system.  (If you don't know where the
-   card is located, you can try autoprobing, and after possible
-   crash recovery, insmod with proper IO-address..)
-
-   --
-   (*) INSMOD-time means when you load module with
-   /sbin/insmod  you can feed it optional parameters.
-   See man insmod.
-   --
-
-
-   8390 based Network Modules  (Paul Gortmaker, Nov 12, 1995)
-   --
-
-(Includes: smc-ultra, ne, wd, 3c503, hp, hp-plus, e2100 and ac3200)
-
-The 8390 series of network drivers now support multiple card systems without 
-reloading the same module multiple times (memory efficient!) This is done by 
-specifying multiple comma separated values, such as:
-
-   insmod 3c503.o io=0x280,0x300,0x330,0x350  xcvr=0,1,0,1
-
-The above would have the one module controlling four 3c503 cards, with card 2
-and 4 using external transceivers. The insmod manual describes the usage
-of comma separated value lists.
-
-It is *STRONGLY RECOMMENDED* that you supply io= instead of autoprobing.
-If an io= argument is not supplied, then the ISA drivers will complain
-about autoprobing being not recommended, and begrudgingly autoprobe for
-a *SINGLE CARD ONLY* -- if you want to use multiple cards you *have* to 
-supply an io=0xNNN,0xQQQ,... argument.
-
-The ne module is an exception to the above. A NE2000 is essentially an
-8390 chip, some bus glue and some RAM. Because of this, the ne probe is
-more invasive than the rest, and so at boot we make sure the ne probe is 
-done last of all the 8390 cards (so that it won't trip over other 8390 based
-cards) With modules we can't ensure that all other non-ne 8390 cards have
-already been found. Because of this, the ne module REQUIRES an io=0xNNN 
-argument passed in via insmod. It will refuse to autoprobe.
-
-It is also worth noting that auto-IRQ probably isn't as reliable during 
-the flurry of interrupt activity on a running machine. Cards such as the 
-ne2000 that can't get the IRQ setting from an EEPROM or configuration
-register are probably best supplied with an irq=M argument as well.
-
-
---
-Card/Module List - Configurable Parameters and Default Values
---
-
-3c501.c:
-  

Re: [PATCH 6/24] make atomic_read() behave consistently on frv

2007-08-14 Thread Arnd Bergmann
On Tuesday 14 August 2007, Paul E. McKenney wrote:
  #define order(x) asm volatile( : +m (x))
 
 There was something very similar discussed earlier in this thread,
 with quite a bit of debate as to exactly what the m flag should
 look like.  I suggested something similar named ACCESS_ONCE in the
 context of RCU (http://lkml.org/lkml/2007/7/11/664):
 
 #define ACCESS_ONCE(x) (*(volatile typeof(x) *)(x))
 
 The nice thing about this is that it works for both loads and stores.
 Not clear that order() above does this -- I get compiler errors when
 I try something like b = order(a) or order(a) = 1 using gcc 4.1.2.

Well, it serves a different purpose: While your ACCESS_ONCE() macro is
an lvalue, the order() macro is a statement that can be used in place
of the barrier() macro. order() is the most lightweight barrier as it
only enforces ordering on a single variable in the compiler, but does
not have any side-effects visible to other threads, like the cache
line access in ACCESS_ONCE has.

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


Re: [2.6 patch] remove Documentation/networking/net-modules.txt

2007-08-14 Thread Jeff Garzik

Adrian Bunk wrote:

According to git, the only one who touched this file during the last
5 years was me when removing drivers...

modinfo offers less ancient information.

Signed-off-by: Adrian Bunk [EMAIL PROTECTED]

---

This patch has been sent on:
- 23 Jul 2007

 Documentation/networking/00-INDEX|2 
 Documentation/networking/net-modules.txt |  315 ---

 2 files changed, 317 deletions(-)


NAK, IMO it's still use for ancient drivers


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


Re: [3/4] 2.6.23-rc3: known regressions

2007-08-14 Thread Francois Romieu
Michal Piotrowski [EMAIL PROTECTED] :
[...]
 Networking
 
 Subject : NETDEV WATCHDOG: eth0: transmit timed out
 References  : http://lkml.org/lkml/2007/8/13/737
 Last known good : ?
 Submitter   : Karl Meyer [EMAIL PROTECTED]
 Caused-By   : ?
 Handled-By  : ?

  Handled-By  : [EMAIL PROTECTED]

 Status  : unknown

 Subject : Weird network problems with 2.6.23-rc2
 References  : http://lkml.org/lkml/2007/8/11/40
 Last known good : ?
 Submitter   : Shish [EMAIL PROTECTED]
 Caused-By   : ?
 Handled-By  : ?
 Status  : unknown

The PR does not give any driver nor hardware detail. :o/

 Subject : BUG: when using 'brctl stp'
 References  : http://lkml.org/lkml/2007/8/10/441
 Last known good : 2.6.23-rc1
 Submitter   : Daniel K. [EMAIL PROTECTED]
 Caused-By   : ?
 Handled-By  : ?

  Handled-By  : [EMAIL PROTECTED]

 Status  : unknown

  Status  : fix applied by David Miller

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


Re: [2.6 patch] remove Documentation/networking/net-modules.txt

2007-08-14 Thread Adrian Bunk
On Tue, Aug 14, 2007 at 06:04:01PM -0400, Jeff Garzik wrote:
 Adrian Bunk wrote:
 According to git, the only one who touched this file during the last
 5 years was me when removing drivers...
 modinfo offers less ancient information.
 Signed-off-by: Adrian Bunk [EMAIL PROTECTED]
 ---
 This patch has been sent on:
 - 23 Jul 2007
  Documentation/networking/00-INDEX|2  
 Documentation/networking/net-modules.txt |  315 ---
  2 files changed, 317 deletions(-)

 NAK, IMO it's still use for ancient drivers

Is there any that lacks a MODULE_PARM_DESC()?
If yes, shouln't we fix such drivers instead?

Even for ancient drivers net-modules.txt is outdated and sometimes lists 
no longer existing or doesn't document more recent parameters.

cu
Adrian

-- 

   Is there not promise of rain? Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
   Only a promise, Lao Er said.
   Pearl S. Buck - Dragon Seed

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


Re: [PATCH 0/24] make atomic_read() behave consistently across all architectures

2007-08-14 Thread Christoph Lameter
On Thu, 9 Aug 2007, Chris Snook wrote:

 This patchset makes the behavior of atomic_read uniform by removing the
 volatile keyword from all atomic_t and atomic64_t definitions that currently
 have it, and instead explicitly casts the variable as volatile in
 atomic_read().  This leaves little room for creative optimization by the
 compiler, and is in keeping with the principles behind volatile considered
 harmful.

volatile is generally harmful even in atomic_read(). Barriers control
visibility and AFAICT things are fine.
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 6/24] make atomic_read() behave consistently on frv

2007-08-14 Thread Paul E. McKenney
On Wed, Aug 15, 2007 at 12:01:54AM +0200, Arnd Bergmann wrote:
 On Tuesday 14 August 2007, Paul E. McKenney wrote:
   #define order(x) asm volatile( : +m (x))
  
  There was something very similar discussed earlier in this thread,
  with quite a bit of debate as to exactly what the m flag should
  look like.  I suggested something similar named ACCESS_ONCE in the
  context of RCU (http://lkml.org/lkml/2007/7/11/664):
  
  #define ACCESS_ONCE(x) (*(volatile typeof(x) *)(x))
  
  The nice thing about this is that it works for both loads and stores.
  Not clear that order() above does this -- I get compiler errors when
  I try something like b = order(a) or order(a) = 1 using gcc 4.1.2.
 
 Well, it serves a different purpose: While your ACCESS_ONCE() macro is
 an lvalue, the order() macro is a statement that can be used in place
 of the barrier() macro. order() is the most lightweight barrier as it
 only enforces ordering on a single variable in the compiler, but does
 not have any side-effects visible to other threads, like the cache
 line access in ACCESS_ONCE has.

ACCESS_ONCE() is indeed intended to be used when actually loading or
storing the variable.  That said, I must admit that it is not clear to me
why you would want to add an extra order() rather than ACCESS_ONCE()ing
one or both of the adjacent accesses to that same variable.

So, what am I missing?

Thanx, Paul
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 0/24] make atomic_read() behave consistently across all architectures

2007-08-14 Thread Chris Snook

Christoph Lameter wrote:

On Thu, 9 Aug 2007, Chris Snook wrote:


This patchset makes the behavior of atomic_read uniform by removing the
volatile keyword from all atomic_t and atomic64_t definitions that currently
have it, and instead explicitly casts the variable as volatile in
atomic_read().  This leaves little room for creative optimization by the
compiler, and is in keeping with the principles behind volatile considered
harmful.


volatile is generally harmful even in atomic_read(). Barriers control
visibility and AFAICT things are fine.


But barriers force a flush of *everything* in scope, which we generally don't 
want.  On the other hand, we pretty much always want to flush atomic_* 
operations.  One way or another, we should be restricting the volatile behavior 
to the thing that needs it.  On most architectures, this patch set just moves 
that from the declaration, where it is considered harmful, to the use, where it 
is considered an occasional necessary evil.


See the resubmitted patchset, which also puts a cast in the atomic[64]_set 
operations.


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


Re: [PATCH 0/24] make atomic_read() behave consistently across all architectures

2007-08-14 Thread Christoph Lameter
On Tue, 14 Aug 2007, Chris Snook wrote:

 But barriers force a flush of *everything* in scope, which we generally don't
 want.  On the other hand, we pretty much always want to flush atomic_*
 operations.  One way or another, we should be restricting the volatile
 behavior to the thing that needs it.  On most architectures, this patch set
 just moves that from the declaration, where it is considered harmful, to the
 use, where it is considered an occasional necessary evil.

Then we would need

atomic_read()

and

atomic_read_volatile()

atomic_read_volatile() would imply an object sized memory barrier before 
and after?
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 0/24] make atomic_read() behave consistently across all architectures

2007-08-14 Thread Satyam Sharma


On Tue, 14 Aug 2007, Christoph Lameter wrote:

 On Thu, 9 Aug 2007, Chris Snook wrote:
 
  This patchset makes the behavior of atomic_read uniform by removing the
  volatile keyword from all atomic_t and atomic64_t definitions that currently
  have it, and instead explicitly casts the variable as volatile in
  atomic_read().  This leaves little room for creative optimization by the
  compiler, and is in keeping with the principles behind volatile considered
  harmful.
 
 volatile is generally harmful even in atomic_read(). Barriers control
 visibility and AFAICT things are fine.

Frankly, I don't see the need for this series myself either. Personal
opinion (others may differ), but I consider volatile to be a sad /
unfortunate wart in C (numerous threads on this list and on the gcc
lists/bugzilla over the years stand testimony to this) and if we _can_
steer clear of it, then why not -- why use this ill-defined primitive
whose implementation has often differed over compiler versions and
platforms? Granted, barrier() _is_ heavy-handed in that it makes the
optimizer forget _everything_, but then somebody did post a forget()
macro on this thread itself ...

[ BTW, why do we want the compiler to not optimize atomic_read()'s in
  the first place? Atomic ops guarantee atomicity, which has nothing
  to do with volatility -- users that expect volatility from
  atomic ops are the ones who must be fixed instead, IMHO. ]
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 0/24] make atomic_read() behave consistently across all architectures

2007-08-14 Thread Chris Snook

Satyam Sharma wrote:


On Tue, 14 Aug 2007, Christoph Lameter wrote:


On Thu, 9 Aug 2007, Chris Snook wrote:


This patchset makes the behavior of atomic_read uniform by removing the
volatile keyword from all atomic_t and atomic64_t definitions that currently
have it, and instead explicitly casts the variable as volatile in
atomic_read().  This leaves little room for creative optimization by the
compiler, and is in keeping with the principles behind volatile considered
harmful.

volatile is generally harmful even in atomic_read(). Barriers control
visibility and AFAICT things are fine.


Frankly, I don't see the need for this series myself either. Personal
opinion (others may differ), but I consider volatile to be a sad /
unfortunate wart in C (numerous threads on this list and on the gcc
lists/bugzilla over the years stand testimony to this) and if we _can_
steer clear of it, then why not -- why use this ill-defined primitive
whose implementation has often differed over compiler versions and
platforms? Granted, barrier() _is_ heavy-handed in that it makes the
optimizer forget _everything_, but then somebody did post a forget()
macro on this thread itself ...

[ BTW, why do we want the compiler to not optimize atomic_read()'s in
  the first place? Atomic ops guarantee atomicity, which has nothing
  to do with volatility -- users that expect volatility from
  atomic ops are the ones who must be fixed instead, IMHO. ]


Because atomic operations are generally used for synchronization, which requires 
volatile behavior.  Most such codepaths currently use an inefficient barrier(). 
 Some forget to and we get bugs, because people assume that atomic_read() 
actually reads something, and atomic_write() actually writes something.  Worse, 
these are architecture-specific, even compiler version-specific bugs that are 
often difficult to track down.


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


[PATCH] pcnet32: add suspend and resume capability

2007-08-14 Thread Don Fry
Add suspend and resume capability to the driver.
Tested both to ram and to disk on x86_64 platform.

Signed-off-by:  Don Fry [EMAIL PROTECTED]
---
--- linux-2.6.23-rc3/drivers/net/pcnet32.c.orig 2007-08-14 13:52:24.0 
-0700
+++ linux-2.6.23-rc3/drivers/net/pcnet32.c  2007-08-14 14:16:55.0 
-0700
@@ -23,11 +23,11 @@
 
 #define DRV_NAME   pcnet32
 #ifdef CONFIG_PCNET32_NAPI
-#define DRV_VERSION1.33-NAPI
+#define DRV_VERSION1.34-NAPI
 #else
-#define DRV_VERSION1.33
+#define DRV_VERSION1.34
 #endif
-#define DRV_RELDATE27.Jun.2006
+#define DRV_RELDATE14.Aug.2007
 #define PFXDRV_NAME : 
 
 static const char *const version =
@@ -2943,6 +2943,33 @@ static void pcnet32_watchdog(struct net_
mod_timer((lp-watchdog_timer), PCNET32_WATCHDOG_TIMEOUT);
 }
 
+static int pcnet32_pm_suspend(struct pci_dev *pdev, pm_message_t state)
+{
+   struct net_device *dev = pci_get_drvdata(pdev);
+
+   if (netif_running(dev)) {
+   netif_device_detach(dev);
+   pcnet32_close(dev);
+   }
+   pci_save_state(pdev);
+   pci_set_power_state(pdev, pci_choose_state(pdev, state));
+   return 0;
+}
+
+static int pcnet32_pm_resume(struct pci_dev *pdev)
+{
+   struct net_device *dev = pci_get_drvdata(pdev);
+
+   pci_set_power_state(pdev, PCI_D0);
+   pci_restore_state(pdev);
+
+   if (netif_running(dev)) {
+   pcnet32_open(dev);
+   netif_device_attach(dev);
+   }
+   return 0;
+}
+
 static void __devexit pcnet32_remove_one(struct pci_dev *pdev)
 {
struct net_device *dev = pci_get_drvdata(pdev);
@@ -2966,6 +2993,8 @@ static struct pci_driver pcnet32_driver 
.probe = pcnet32_probe_pci,
.remove = __devexit_p(pcnet32_remove_one),
.id_table = pcnet32_pci_tbl,
+   .suspend = pcnet32_pm_suspend,
+   .resume = pcnet32_pm_resume,
 };
 
 /* An additional parameter that may be passed in... */
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 0/24] make atomic_read() behave consistently across all architectures

2007-08-14 Thread Christoph Lameter
On Tue, 14 Aug 2007, Chris Snook wrote:

 Because atomic operations are generally used for synchronization, which
 requires volatile behavior.  Most such codepaths currently use an inefficient
 barrier().  Some forget to and we get bugs, because people assume that
 atomic_read() actually reads something, and atomic_write() actually writes
 something.  Worse, these are architecture-specific, even compiler
 version-specific bugs that are often difficult to track down.

Looks like we need to have lock and unlock semantics?

atomic_read()

which has no barrier or volatile implications.

atomic_read_for_lock

Acquire semantics?


atomic_read_for_unlock

Release semantics?

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


Re: [PATCH 2/13] cxgb3 - Update rx coalescing length

2007-08-14 Thread Divy Le Ray

Jeff Garzik wrote:


Divy Le Ray wrote:
 From: Divy Le Ray [EMAIL PROTECTED]

 Set max Rx coalescing length to 12288

 Signed-off-by: Divy Le Ray [EMAIL PROTECTED]
 ---

  drivers/net/cxgb3/common.h |2 +-
  1 files changed, 1 insertions(+), 1 deletions(-)

 diff --git a/drivers/net/cxgb3/common.h b/drivers/net/cxgb3/common.h
 index c46c249..55922ed 100644
 --- a/drivers/net/cxgb3/common.h
 +++ b/drivers/net/cxgb3/common.h
 @@ -104,7 +104,7 @@ enum {
   PROTO_SRAM_LINES = 128, /* size of TP sram */
  };
 
 -#define MAX_RX_COALESCING_LEN 16224U

 +#define MAX_RX_COALESCING_LEN 12288U

neither the patch nor description explains -why-



We're seeing back pressure from PCIe with large bursts, this patch 
allows to cut down on the burst size.


Divy

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


Re: [PATCH 4/13] cxgb3 - use immediate data for offload Tx

2007-08-14 Thread Divy Le Ray

Jeff Garzik wrote:


Divy Le Ray wrote:
 From: Divy Le Ray [EMAIL PROTECTED]

 Send small TX_DATA work requests as immediate data even when
 there are fragments.

 Signed-off-by: Divy Le Ray [EMAIL PROTECTED]
 ---

  drivers/net/cxgb3/sge.c |   17 +++--
  1 files changed, 11 insertions(+), 6 deletions(-)

needs additional explanation.  don't just describe the new post-change
behavior, describe why this change is needed.


It's an optimization avoiding doing multiple DMAs for small fragmented 
packets.
The driver already implements this optimization for small contiguous 
packets.


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


Re: [PATCH 0/24] make atomic_read() behave consistently across all architectures

2007-08-14 Thread Paul E. McKenney
On Wed, Aug 15, 2007 at 04:38:54AM +0530, Satyam Sharma wrote:
 
 
 On Tue, 14 Aug 2007, Christoph Lameter wrote:
 
  On Thu, 9 Aug 2007, Chris Snook wrote:
  
   This patchset makes the behavior of atomic_read uniform by removing the
   volatile keyword from all atomic_t and atomic64_t definitions that 
   currently
   have it, and instead explicitly casts the variable as volatile in
   atomic_read().  This leaves little room for creative optimization by the
   compiler, and is in keeping with the principles behind volatile 
   considered
   harmful.
  
  volatile is generally harmful even in atomic_read(). Barriers control
  visibility and AFAICT things are fine.
 
 Frankly, I don't see the need for this series myself either. Personal
 opinion (others may differ), but I consider volatile to be a sad /
 unfortunate wart in C (numerous threads on this list and on the gcc
 lists/bugzilla over the years stand testimony to this) and if we _can_
 steer clear of it, then why not -- why use this ill-defined primitive
 whose implementation has often differed over compiler versions and
 platforms? Granted, barrier() _is_ heavy-handed in that it makes the
 optimizer forget _everything_, but then somebody did post a forget()
 macro on this thread itself ...
 
 [ BTW, why do we want the compiler to not optimize atomic_read()'s in
   the first place? Atomic ops guarantee atomicity, which has nothing
   to do with volatility -- users that expect volatility from
   atomic ops are the ones who must be fixed instead, IMHO. ]

Interactions between mainline code and interrupt/NMI handlers on the same
CPU (for example, when both are using per-CPU variables.  See examples
previously posted in this thread, or look at the rcu_read_lock() and
rcu_read_unlock() implementations in http://lkml.org/lkml/2007/8/7/280.

Thanx, Paul
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 5/13] cxgb3 - Expose HW memory page info

2007-08-14 Thread Divy Le Ray

Jeff Garzik wrote:

Divy Le Ray wrote:

From: Divy Le Ray [EMAIL PROTECTED]

Let the RDMA driver get HW page info to work around HW issues.
Assign explicit enum values.

Signed-off-by: Divy Le Ray [EMAIL PROTECTED]


HW issues -- you need to go into far more detail, when adding a new 
interface.  what hw issues?  why was this the best/only solution?





A HW issue requires limiting the receive window size to 23 pages of 
internal memory.
These pages can be configured to different sizes, thus the RDMA driver 
needs to know the

page size to enforce the upper limit.

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


Re: [PATCH 9/13] cxgb3 - Update internal memory management

2007-08-14 Thread Divy Le Ray

Jeff Garzik wrote:


Divy Le Ray wrote:
 From: Divy Le Ray [EMAIL PROTECTED]

 Set PM1 internal memory to round robin mode

 Signed-off-by: Divy Le Ray [EMAIL PROTECTED]

why?


For multiport adapters, it balances access to this internal memory.

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


Re: [PATCH] econet: remove econet_packet_type on unload

2007-08-14 Thread David Miller
From: Alexey Dobriyan [EMAIL PROTECTED]
Date: Wed, 15 Aug 2007 01:25:53 +0400

 Steps to reproduce:
 
   modprobe econet
   rmmod econet
   modprobe econet
 
 Unable to handle kernel paging request at 8870a098 RIP: 
  [8040bfb8] dev_add_pack+0x48/0x90
 ...
 Signed-off-by: Alexey Dobriyan [EMAIL PROTECTED]

Patch applied, thanks a lot Alexey.
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] ax25: don't free pointers to statically allocated data

2007-08-14 Thread David Miller
From: Alexey Dobriyan [EMAIL PROTECTED]
Date: Tue, 14 Aug 2007 23:30:38 +0400

 commit 8d5cf596d10d740b69b5f4bbdb54b85abf75810d started to add statically
 allocated ax25_protocol's to list. However kfree() was still in place waiting
 for unsuspecting ones on module removal.
 
 Steps to reproduce:
 
   modprobe netrom
   rmmod netrom
 
 P.S.: code would benefit greatly from list_add/list_del usage
 
 kernel BUG at mm/slab.c:592!
 invalid opcode:  [1] PREEMPT SMP 
 ...
 Signed-off-by: Alexey Dobriyan [EMAIL PROTECTED]

Also applied, thanks a lot.
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] IOAT: Fix ioatdma descriptor cache miss

2007-08-14 Thread David Miller
From: Nelson, Shannon [EMAIL PROTECTED]
Date: Tue, 14 Aug 2007 14:20:02 -0700

 The layout for struct ioat_desc_sw is non-optimal and causes an extra
 cache hit for every descriptor processed.  By tightening up the struct
 layout and removing one item, we pull in the fields that get used in
 the speedpath and get a little better performance.
...
 Signed-off-by: Shannon Nelson [EMAIL PROTECTED]

Patch applied, thanks.

 @@ -347,8 +347,7 @@ ioat_dma_prep_memcpy(struct dma_chan *chan, size_t
 len, int int_en)

Your email client is wrapping long lines in patches, corrupting
them.

I fixed it up this time, but please take care of this in the
future.
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [2.6 patch] unexport dev_ethtool

2007-08-14 Thread David Miller
From: Matthew Wilcox [EMAIL PROTECTED]
Date: Tue, 14 Aug 2007 15:23:26 -0600

 On Tue, Aug 14, 2007 at 11:22:03PM +0200, Adrian Bunk wrote:
  This patch removes the no longer used EXPORT_SYMBOL(dev_ethtool).
  
  Signed-off-by: Adrian Bunk [EMAIL PROTECTED]
 Acked-by: Matthew Wilcox [EMAIL PROTECTED]

Applied, thanks.
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [2.6 patch] net/8021q/vlanproc.c: fix check-after-use

2007-08-14 Thread David Miller
From: Adrian Bunk [EMAIL PROTECTED]
Date: Tue, 14 Aug 2007 23:22:44 +0200

 The Coverity checker spotted that we'd have already oops'ed if vlandev
 was NULL.
 
 Signed-off-by: Adrian Bunk [EMAIL PROTECTED]

Fair enough, applied, thanks Adrian.
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Please pull 'fixes-davem' branch of wireless-2.6

2007-08-14 Thread John W. Linville
These are a few more items intended for 2.6.23.

Individual patches available here:


http://www.kernel.org/pub/linux/kernel/people/linville/wireless-2.6/fixes-davem

Thanks!

John

---

The following changes since commit 39d3520c92cf7a28c07229ca00cc35a1e8026c77:
  Linus Torvalds (1):
Linux 2.6.23-rc3

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6.git 
fixes-davem

Johannes Berg (1):
  mac80211: fix tx status frame code

John W. Linville (1):
  mac80211: probe for hidden SSIDs in pre-auth scan

 net/mac80211/ieee80211.c |1 -
 net/mac80211/ieee80211_sta.c |6 +-
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/net/mac80211/ieee80211.c b/net/mac80211/ieee80211.c
index 8ec5ed1..7286c38 100644
--- a/net/mac80211/ieee80211.c
+++ b/net/mac80211/ieee80211.c
@@ -4678,7 +4678,6 @@ void ieee80211_tx_status(struct ieee80211_hw *hw, struct 
sk_buff *skb,
memset(skb-cb, 0, sizeof(skb-cb));
netif_rx(skb);
skb = skb2;
-   break;
}
}
  out:
diff --git a/net/mac80211/ieee80211_sta.c b/net/mac80211/ieee80211_sta.c
index 7ba352e..0d99b68 100644
--- a/net/mac80211/ieee80211_sta.c
+++ b/net/mac80211/ieee80211_sta.c
@@ -2154,7 +2154,11 @@ static int ieee80211_sta_config_auth(struct net_device 
*dev,
return 0;
} else {
if (ifsta-state != IEEE80211_AUTHENTICATE) {
-   ieee80211_sta_start_scan(dev, NULL, 0);
+   if (ifsta-auto_ssid_sel)
+   ieee80211_sta_start_scan(dev, NULL, 0);
+   else
+   ieee80211_sta_start_scan(dev, ifsta-ssid,
+ifsta-ssid_len);
ifsta-state = IEEE80211_AUTHENTICATE;
set_bit(IEEE80211_STA_REQ_AUTH, ifsta-request);
} else
-- 
John W. Linville
[EMAIL PROTECTED]
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Please pull 'upstream-davem' branch of wireless-2.6

2007-08-14 Thread John W. Linville
More items intended for 2.6.24, based-off the preceding fixes-davem
request.

Individual patches available here:


http://www.kernel.org/pub/linux/kernel/people/linville/wireless-2.6/upstream-davem

Thanks!

John

---

The following changes since commit b9bf1e60a294fc7795d5198f94a917290e52865b:
  John W. Linville (1):
mac80211: probe for hidden SSIDs in pre-auth scan

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6.git 
upstream-davem

Johannes Berg (1):
  radiotap parser: accept all other fields

Larry Finger (1):
  mac80211: Add SIOCGIWTXPOWER routine

 net/mac80211/ieee80211_ioctl.c |   16 +++-
 net/wireless/radiotap.c|6 +-
 2 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/net/mac80211/ieee80211_ioctl.c b/net/mac80211/ieee80211_ioctl.c
index e7904db..f459d89 100644
--- a/net/mac80211/ieee80211_ioctl.c
+++ b/net/mac80211/ieee80211_ioctl.c
@@ -798,6 +798,20 @@ static int ieee80211_ioctl_giwrate(struct net_device *dev,
return 0;
 }
 
+static int ieee80211_ioctl_giwtxpower(struct net_device *dev,
+  struct iw_request_info *info,
+  union iwreq_data *data, char *extra)
+{
+   struct ieee80211_local *local = wdev_priv(dev-ieee80211_ptr);
+
+   data-txpower.fixed = 1;
+   data-txpower.disabled = !(local-hw.conf.radio_enabled);
+   data-txpower.value = local-hw.conf.power_level;
+   data-txpower.flags = IW_TXPOW_DBM;
+
+   return 0;
+}
+
 static int ieee80211_ioctl_siwrts(struct net_device *dev,
  struct iw_request_info *info,
  struct iw_param *rts, char *extra)
@@ -1580,7 +1594,7 @@ static const iw_handler ieee80211_handler[] =
(iw_handler) ieee80211_ioctl_siwfrag,   /* SIOCSIWFRAG */
(iw_handler) ieee80211_ioctl_giwfrag,   /* SIOCGIWFRAG */
(iw_handler) NULL,  /* SIOCSIWTXPOW */
-   (iw_handler) NULL,  /* SIOCGIWTXPOW */
+   (iw_handler) ieee80211_ioctl_giwtxpower,/* SIOCGIWTXPOW */
(iw_handler) ieee80211_ioctl_siwretry,  /* SIOCSIWRETRY */
(iw_handler) ieee80211_ioctl_giwretry,  /* SIOCGIWRETRY */
(iw_handler) ieee80211_ioctl_siwencode, /* SIOCSIWENCODE */
diff --git a/net/wireless/radiotap.c b/net/wireless/radiotap.c
index 68c11d0..28fbd0b 100644
--- a/net/wireless/radiotap.c
+++ b/net/wireless/radiotap.c
@@ -161,7 +161,11 @@ int ieee80211_radiotap_iterator_next(
[IEEE80211_RADIOTAP_DBM_TX_POWER] = 0x11,
[IEEE80211_RADIOTAP_ANTENNA] = 0x11,
[IEEE80211_RADIOTAP_DB_ANTSIGNAL] = 0x11,
-   [IEEE80211_RADIOTAP_DB_ANTNOISE] = 0x11
+   [IEEE80211_RADIOTAP_DB_ANTNOISE] = 0x11,
+   [IEEE80211_RADIOTAP_RX_FLAGS] = 0x22,
+   [IEEE80211_RADIOTAP_TX_FLAGS] = 0x22,
+   [IEEE80211_RADIOTAP_RTS_RETRIES] = 0x11,
+   [IEEE80211_RADIOTAP_DATA_RETRIES] = 0x11,
/*
 * add more here as they are defined in
 * include/net/ieee80211_radiotap.h
-- 
John W. Linville
[EMAIL PROTECTED]
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Please pull 'upstream-jgarzik' branch of wireless-2.6

2007-08-14 Thread John W. Linville
A few items intended for 2.6.24.

Individual patches here:


http://www.kernel.org/pub/linux/kernel/people/linville/wireless-2.6/upstream-jgarzik/

Thanks!

John

---

The following changes since commit 39d3520c92cf7a28c07229ca00cc35a1e8026c77:
  Linus Torvalds (1):
Linux 2.6.23-rc3

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6.git 
upstream-jgarzik

Daniel Drake (2):
  zd1211rw: Add ID for Sitecom WL-162
  zd1211rw: Add ID for ZyXEL M-202 XtremeMIMO

Mariusz Kozlowski (1):
  drivers/net/wireless/wl3501_cs.c: remove redundant memset

Ulrich Kunitz (2):
  zd1211rw: removed noisy debug messages
  zd1211rw: consistent handling of ZD1211 specific rates

 drivers/net/wireless/wl3501_cs.c |1 -
 drivers/net/wireless/zd1211rw/zd_chip.c  |   69 +++---
 drivers/net/wireless/zd1211rw/zd_ieee80211.h |   43 +++
 drivers/net/wireless/zd1211rw/zd_mac.c   |   99 +++---
 drivers/net/wireless/zd1211rw/zd_mac.h   |   65 +++--
 drivers/net/wireless/zd1211rw/zd_usb.c   |2 +
 6 files changed, 128 insertions(+), 151 deletions(-)

diff --git a/drivers/net/wireless/wl3501_cs.c b/drivers/net/wireless/wl3501_cs.c
index c8b5c22..62b8669 100644
--- a/drivers/net/wireless/wl3501_cs.c
+++ b/drivers/net/wireless/wl3501_cs.c
@@ -1841,7 +1841,6 @@ static int wl3501_get_encode(struct net_device *dev,
tocopy = min_t(u8, len_keys, wrqu-encoding.length);
tocopy = min_t(u8, tocopy, 100);
wrqu-encoding.length = tocopy;
-   memset(extra, 0, tocopy);
memcpy(extra, keys, tocopy);
 out:
return rc;
diff --git a/drivers/net/wireless/zd1211rw/zd_chip.c 
b/drivers/net/wireless/zd1211rw/zd_chip.c
index c39f198..4959042 100644
--- a/drivers/net/wireless/zd1211rw/zd_chip.c
+++ b/drivers/net/wireless/zd1211rw/zd_chip.c
@@ -500,8 +500,6 @@ int zd_chip_lock_phy_regs(struct zd_chip *chip)
return r;
}
 
-   dev_dbg_f(zd_chip_dev(chip),
-   CR_REG1: 0x%02x - 0x%02x\n, tmp, tmp  ~UNLOCK_PHY_REGS);
tmp = ~UNLOCK_PHY_REGS;
 
r = zd_iowrite32_locked(chip, tmp, CR_REG1);
@@ -523,8 +521,6 @@ int zd_chip_unlock_phy_regs(struct zd_chip *chip)
return r;
}
 
-   dev_dbg_f(zd_chip_dev(chip),
-   CR_REG1: 0x%02x - 0x%02x\n, tmp, tmp | UNLOCK_PHY_REGS);
tmp |= UNLOCK_PHY_REGS;
 
r = zd_iowrite32_locked(chip, tmp, CR_REG1);
@@ -841,8 +837,6 @@ static int get_aw_pt_bi(struct zd_chip *chip, struct 
aw_pt_bi *s)
s-atim_wnd_period = values[0];
s-pre_tbtt = values[1];
s-beacon_interval = values[2];
-   dev_dbg_f(zd_chip_dev(chip), aw %u pt %u bi %u\n,
-   s-atim_wnd_period, s-pre_tbtt, s-beacon_interval);
return 0;
 }
 
@@ -864,9 +858,6 @@ static int set_aw_pt_bi(struct zd_chip *chip, struct 
aw_pt_bi *s)
reqs[2].addr = CR_BCN_INTERVAL;
reqs[2].value = s-beacon_interval;
 
-   dev_dbg_f(zd_chip_dev(chip),
-   aw %u pt %u bi %u\n, s-atim_wnd_period, s-pre_tbtt,
-  s-beacon_interval);
return zd_iowrite32a_locked(chip, reqs, ARRAY_SIZE(reqs));
 }
 
@@ -1018,19 +1009,19 @@ int zd_chip_set_rts_cts_rate_locked(struct zd_chip 
*chip,
u32 value = 0;
 
/* Modulation bit */
-   if (ZD_CS_TYPE(rts_rate) == ZD_CS_OFDM)
+   if (ZD_MODULATION_TYPE(rts_rate) == ZD_OFDM)
rts_mod = ZD_RX_OFDM;
 
dev_dbg_f(zd_chip_dev(chip), rts_rate=%x preamble=%x\n,
rts_rate, preamble);
 
-   value |= rts_rate  RTSCTS_SH_RTS_RATE;
+   value |= ZD_PURE_RATE(rts_rate)  RTSCTS_SH_RTS_RATE;
value |= rts_mod  RTSCTS_SH_RTS_MOD_TYPE;
value |= preamble  RTSCTS_SH_RTS_PMB_TYPE;
value |= preamble  RTSCTS_SH_CTS_PMB_TYPE;
 
/* We always send 11M self-CTS messages, like the vendor driver. */
-   value |= ZD_CCK_RATE_11M  RTSCTS_SH_CTS_RATE;
+   value |= ZD_PURE_RATE(ZD_CCK_RATE_11M)  RTSCTS_SH_CTS_RATE;
value |= ZD_RX_CCK  RTSCTS_SH_CTS_MOD_TYPE;
 
return zd_iowrite32_locked(chip, value, CR_RTS_CTS_RATE);
@@ -1160,16 +1151,12 @@ out:
 static int update_pwr_int(struct zd_chip *chip, u8 channel)
 {
u8 value = chip-pwr_int_values[channel - 1];
-   dev_dbg_f(zd_chip_dev(chip), channel %d pwr_int %#04x\n,
-channel, value);
return zd_iowrite16_locked(chip, value, CR31);
 }
 
 static int update_pwr_cal(struct zd_chip *chip, u8 channel)
 {
u8 value = chip-pwr_cal_values[channel-1];
-   dev_dbg_f(zd_chip_dev(chip), channel %d pwr_cal %#04x\n,
-channel, value);
return zd_iowrite16_locked(chip, value, CR68);
 }
 
@@ -1184,9 +1171,6 @@ static int update_ofdm_cal(struct zd_chip *chip, u8 
channel)
ioreqs[2].addr = CR65;
ioreqs[2].value = 

Re: [RFC: -mm patch] improve the SSB dependencies

2007-08-14 Thread John W. Linville
On Mon, Aug 13, 2007 at 12:44:02AM +0200, Adrian Bunk wrote:
 On Sun, Aug 12, 2007 at 02:00:26PM +0200, Michael Buesch wrote:
  Ok, I'll give it a try, with small modifications.
 
 Thanks.
 
  On Sunday 12 August 2007, Adrian Bunk wrote:
   Additional changes in this patch:
   - small help text changes
   - B44_PCI is no longer usr visible (automatically enabled when possible)
  
  I think we want that to be selectable, as it's not needed
  on some embedded devices. And we need to save memory there.
 ...
 
 Makes sense, but then:
 
 config B44_PCI
   bool Broadcom 440x PCI device support if EMBEDDED
   ...
   default y
   ...
 
 I don't care about how many options we present if CONFIG_EMBEDDED=y, but 
 for the normal CONFIG_EMBEDDED=n case we should not bother the user with 
 this option.

Was all this resolved?  Was there another patch?  If so, I missed it...

John
-- 
John W. Linville
[EMAIL PROTECTED]
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Please pull 'fixes-davem' branch of wireless-2.6

2007-08-14 Thread David Miller
From: John W. Linville [EMAIL PROTECTED]
Date: Tue, 14 Aug 2007 20:32:34 -0400

 These are a few more items intended for 2.6.23.
 ...
 The following changes since commit 39d3520c92cf7a28c07229ca00cc35a1e8026c77:
   Linus Torvalds (1):
 Linux 2.6.23-rc3
 
 are available in the git repository at:
 
   git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6.git 
 fixes-davem
 
 Johannes Berg (1):
   mac80211: fix tx status frame code
 
 John W. Linville (1):
   mac80211: probe for hidden SSIDs in pre-auth scan

Pulled, thanks John.
-
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/1] bonding: eliminate RTNL assertion spew

2007-08-14 Thread Mike Snitzer
Andy,

Is there an updated version of this patch?

Please advise, thanks.


On 1/10/07, Andy Gospodarek [EMAIL PROTECTED] wrote:
 On Tue, Jan 09, 2007 at 03:09:35PM -0800, Stephen Hemminger wrote:
  On Tue, 9 Jan 2007 17:59:01 -0500
  Andy Gospodarek [EMAIL PROTECTED] wrote:
 
  
   These changes eliminate the messages indicating that the rtnetlink lock
   isn't held when bonding tries to change the MAC address of an interface.
   These calls generally come from timer-pops, but also from sysfs events
   since neither hold the rtnl lock.
  
   The spew generally looks something like this:
  
   RTNL: assertion failed at net/core/fib_rules.c (391)
[c028d12e] fib_rules_event+0x3a/0xeb
[c02da576] notifier_call_chain+0x19/0x29
[c0280ce6] dev_set_mac_address+0x46/0x4b
[f8a2a686] alb_set_slave_mac_addr+0x5d/0x88 [bonding]
[f8a2aa7e] alb_swap_mac_addr+0x88/0x134 [bonding]
[f8a25ed9] bond_change_active_slave+0x1a1/0x2c5 [bonding]
[f8a262e8] bond_select_active_slave+0xa8/0xe1 [bonding]
[f8a27ecb] bond_mii_monitor+0x3af/0x3fd [bonding]
[c0121896] run_workqueue+0x85/0xc5
[f8a27b1c] bond_mii_monitor+0x0/0x3fd [bonding]
[c0121d83] worker_thread+0xe8/0x119
[c079] default_wake_function+0x0/0xc
[c0121c9b] worker_thread+0x0/0x119
[c0124099] kthread+0xad/0xd8
[c0123fec] kthread+0x0/0xd8
.
  
   This patch was mostly inspired from parts of some potential bonding
   updates Jay Vosburgh [EMAIL PROTECTED] and I discussed in December, so
   he deserves most of the credit for the idea.
  
   I've tested it on several systems and it works as I expect.  Deadlocks
   between the rtnl and global bond lock are avoided since we drop the
   global bond lock before taking the rtnl lock.
  
 
 
  This seems like the ugly way to do it. Couldn't you just change figure out
  how to acquire RTNL first. It wouldn't hurt to acquire it in the monitor
  routine even if you don't need it.
 
  Conditional locking is a bad road to start down.


 Stephen and Jeff,

 Does this seem like a better alternative?  Taking the rtnetlink lock
 before the global bond luck should avoid deadlocks since it is done that
 way throughout the bonding code.  I didn't notice any immediate problems,
 but it was by no means and exhaustive stress test.

 Thanks,

 -andy


 Signed-off-by: Andy Gospodarek [EMAIL PROTECTED]
 ---

  bond_main.c  |   15 +++
  bond_sysfs.c |6 ++
  2 files changed, 21 insertions(+)

 diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
 index 6482aed..e324235 100644
 --- a/drivers/net/bonding/bond_main.c
 +++ b/drivers/net/bonding/bond_main.c
 @@ -2024,6 +2024,9 @@ void bond_mii_monitor(struct net_device
 int delta_in_ticks;
 int i;

 +   /* grab rtnl lock before taking bond lock*/
 +   rtnl_lock();
 +
 read_lock(bond-lock);

 delta_in_ticks = (bond-params.miimon * HZ) / 1000;
 @@ -2252,6 +2255,8 @@ re_arm:
 }
  out:
 read_unlock(bond-lock);
 +
 +   rtnl_unlock();
  }


 @@ -2557,6 +2562,9 @@ void bond_loadbalance_arp_mon(struct net
 int delta_in_ticks;
 int i;

 +   /* grab rtnl lock before taking bond lock*/
 +   rtnl_lock();
 +
 read_lock(bond-lock);

 delta_in_ticks = (bond-params.arp_interval * HZ) / 1000;
 @@ -2663,6 +2671,8 @@ re_arm:
 }
  out:
 read_unlock(bond-lock);
 +
 +   rtnl_unlock();
  }

  /*
 @@ -2687,6 +2697,9 @@ void bond_activebackup_arp_mon(struct ne
 int delta_in_ticks;
 int i;

 +   /* grab rtnl lock before taking bond lock*/
 +   rtnl_lock();
 +
 read_lock(bond-lock);

 delta_in_ticks = (bond-params.arp_interval * HZ) / 1000;
 @@ -2911,6 +2924,8 @@ re_arm:
 }
  out:
 read_unlock(bond-lock);
 +
 +   rtnl_unlock();
  }

  /*-- 
 proc/seq_file---*/
 diff --git a/drivers/net/bonding/bond_sysfs.c 
 b/drivers/net/bonding/bond_sysfs.c
 index ced9ed8..d23057a 100644
 --- a/drivers/net/bonding/bond_sysfs.c
 +++ b/drivers/net/bonding/bond_sysfs.c
 @@ -1028,6 +1028,8 @@ static ssize_t bonding_store_primary(str
 struct slave *slave;
 struct bonding *bond = to_bond(cd);

 +   /* grab rtnl lock before taking bond lock*/
 +   rtnl_lock();
 write_lock_bh(bond-lock);
 if (!USES_PRIMARY(bond-params.mode)) {
 printk(KERN_INFO DRV_NAME
 @@ -1063,6 +1065,7 @@ static ssize_t bonding_store_primary(str
 }
  out:
 write_unlock_bh(bond-lock);
 +   rtnl_unlock();
 return count;
  }
  static CLASS_DEVICE_ATTR(primary, S_IRUGO | S_IWUSR, bonding_show_primary, 
 bonding_store_primary);
 @@ -1134,6 +1137,8 @@ static ssize_t bonding_store_active_slav
  struct slave *new_active = NULL;
 struct bonding *bond = to_bond(cd);

 +   /* grab rtnl lock before taking bond lock*/
 +   rtnl_lock();
 

Re: [PATCH 1/1] bonding: eliminate RTNL assertion spew

2007-08-14 Thread Andy Gospodarek
On 8/14/07, Mike Snitzer [EMAIL PROTECTED] wrote:
 Andy,

 Is there an updated version of this patch?

 Please advise, thanks.



Mike,

There is a version that Jay and I have been testing and if you would
like to help out, we could probably send you some patches.

Jay has split the entire patch into smaller chunks, and we hope to
post the entire thing quite soon (days not months).

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


Re: Realtek r8168 slow outbound transfer - potential fix/workaround

2007-08-14 Thread Bruce Cole

[EMAIL PROTECTED] wrote:

Bruce,

I settled on using ndelay(10) rather than udelay(25) in the end..  
it's probably a bit safer  less likely to cause problems with higher 
throughputs.
Yes, I saw that you later recommended the change but opted to try it the 
way you tested first. 


When I was diagnosing the problem I used 2 machines.  One machine was 
running Samba on linux (the 'problem' machine), and one was a windows 
XP machine.

Likewise, tho I also tested vista.


I used tcpdump to capture the traffic on the Samba machine, and used 
wireshark to capture the traffic on the windows machine.  What i found 
was happening was that samba was attempting to send two packets to the 
windows machine in quick succession (ie. something in the order of a 
1/10,000th or less of a second apart).  Although both packets showed 
up in the tcpdump output from the linux machine, only the first packet 
appeared to be making it to the windows machine.   Because the second 
packet was 'lost', it had to be retried after a delay and this is what 
was causing the abysmal performance.


The reasoning behind my patch was that I figured the TxPoll register 
wasn't being given enough time to reset itself after sending the 
previous packet.   I may or may not have been correct with that 
assumption, but as you noticed the delay does seem to make it behave a 
bit better.
Disclaimer: I haven't seen the definition for that register so I'm just 
guessing here.
I suppose the danger is that your fix may just be changing the timing 
around such that the time-dependent bug does not occur as readily, yet a 
bug remains.  Does anyone have the programming spec for this chip from 
realtek, or are we all just forced to guess :)?


I understand that Francios came up with a similar patch that he said 
also worked, and that he thought was a bit more robust than my 
method.  I'd check with him on what the status of that particular 
patch is.
Thanks, I don't see that patch in 2.6.23-rc3 but I'll try Francios' 
recommendations first and if that doesn't work I'll test out things with 
the shorter ndelay().


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