Netdev List
 help / color / mirror / Atom feed
* [PATCH] wiznet: Add missing #include <linux/irq.h>
From: Geert Uytterhoeven @ 2012-04-12 19:19 UTC (permalink / raw)
  To: Mike Sinkovsky, David S. Miller
  Cc: Paul Gortmaker, netdev, linux-kernel, Geert Uytterhoeven

m68k/allmodconfig:

drivers/net/ethernet/wiznet/w5100.c: In function ‘w5100_hw_probe’:
drivers/net/ethernet/wiznet/w5100.c:680: error: ‘IRQ_TYPE_LEVEL_LOW’ undeclared (first use in this function)
drivers/net/ethernet/wiznet/w5300.c: In function ‘w5300_hw_probe’:
drivers/net/ethernet/wiznet/w5300.c:594: error: ‘IRQ_TYPE_LEVEL_LOW’ undeclared (first use in this function)

Include <linux/irq.h>, which provides the declaration for IRQ_TYPE_LEVEL_LOW.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
--
Or should these drivers use IRQF_TRIGGER_LOW (from <linux/interrupt.h>)
instead?

http://kisskb.ellerman.id.au/kisskb/buildresult/6095757/
---
 drivers/net/ethernet/wiznet/w5100.c |    1 +
 drivers/net/ethernet/wiznet/w5300.c |    1 +
 2 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/drivers/net/ethernet/wiznet/w5100.c b/drivers/net/ethernet/wiznet/w5100.c
index c28e1d5..ecc6820 100644
--- a/drivers/net/ethernet/wiznet/w5100.c
+++ b/drivers/net/ethernet/wiznet/w5100.c
@@ -24,6 +24,7 @@
 #include <linux/io.h>
 #include <linux/ioport.h>
 #include <linux/interrupt.h>
+#include <linux/irq.h>
 #include <linux/gpio.h>
 
 #define DRV_NAME	"w5100"
diff --git a/drivers/net/ethernet/wiznet/w5300.c b/drivers/net/ethernet/wiznet/w5300.c
index 88afde9..0a20797 100644
--- a/drivers/net/ethernet/wiznet/w5300.c
+++ b/drivers/net/ethernet/wiznet/w5300.c
@@ -25,6 +25,7 @@
 #include <linux/io.h>
 #include <linux/ioport.h>
 #include <linux/interrupt.h>
+#include <linux/irq.h>
 #include <linux/gpio.h>
 
 #define DRV_NAME	"w5300"
-- 
1.7.0.4

^ permalink raw reply related

* Re: [PATCH] Fix missing mutex_lock/unlock
From: Flavio Leitner @ 2012-04-12 19:23 UTC (permalink / raw)
  To: mjr; +Cc: davem, sboyd, ben, netdev
In-Reply-To: <1334244396-6978-1-git-send-email-mjr@cs.wisc.edu>

On Thu, 12 Apr 2012 10:26:36 -0500 mjr@cs.wisc.edu wrote:

> From: Matt Renzelmann <mjr@cs.wisc.edu>
> 
> All calls to ks8851_rdreg* and ks8851_wrreg* should be protected
> with the driver's lock mutex.  A spurious interrupt may otherwise cause a
> crash.
> 
> Signed-off-by: Matt Renzelmann <mjr@cs.wisc.edu>
> ---
> Hello,
> 
> I'm new to the kernel development process so I hope I've not screwed
> this up with this extra text.  We found a potential issue using a new
> driver testing tool called SymDrive.  It looks legitimate to me, so
> I'm reporting it.  We hope to make this tool available in the future.
> Please let me know if I should modify the patch or re-send without
> this commentary.  Thanks in advance for your patience.
> 

It is recommended to put the driver name in the subject,
for instance: 

[PATCH] ks8851: Fix missing mutex_lock/unlock

See the driver log for more examples.

>  drivers/net/ethernet/micrel/ks8851.c |    4 ++++
>  1 files changed, 4 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/net/ethernet/micrel/ks8851.c b/drivers/net/ethernet/micrel/ks8851.c
> index c722aa6..fa2001a 100644
> --- a/drivers/net/ethernet/micrel/ks8851.c
> +++ b/drivers/net/ethernet/micrel/ks8851.c
> @@ -1515,11 +1515,15 @@ static int __devinit ks8851_probe(struct spi_device *spi)
>  		goto err_netdev;
>  	}
>  
> +	mutex_lock(&ks->lock);
> +
>  	netdev_info(ndev, "revision %d, MAC %pM, IRQ %d, %s EEPROM\n",
>  		    CIDER_REV_GET(ks8851_rdreg16(ks, KS_CIDER)),
>  		    ndev->dev_addr, ndev->irq,
>  		    ks->rc_ccr & CCR_EEPROM ? "has" : "no");
>  
> +	mutex_unlock(&ks->lock);
> +
>  	return 0;


It's weird to look a mutex being hold to call netdev_info().
Perhaps change it to look like below as the netdev_info()
does a lot more things and holding the lock during that
seems to be a waste.

diff --git a/drivers/net/ethernet/micrel/ks8851.c b/drivers/net/ethernet/micrel/ks8851.c
index c722aa6..20237dc 100644
--- a/drivers/net/ethernet/micrel/ks8851.c
+++ b/drivers/net/ethernet/micrel/ks8851.c
@@ -1417,6 +1417,7 @@ static int __devinit ks8851_probe(struct spi_device *spi)
 {
 	struct net_device *ndev;
 	struct ks8851_net *ks;
+	int result;
 	int ret;
 
 	ndev = alloc_etherdev(sizeof(struct ks8851_net));
@@ -1515,9 +1516,12 @@ static int __devinit ks8851_probe(struct spi_device *spi)
 		goto err_netdev;
 	}
 
+	mutex_lock(&ks->lock);
+	result = CIDER_REV_GET(ks8851_rdreg16(ks, KS_CIDER));
+	mutex_unlock(&ks->lock);
+
 	netdev_info(ndev, "revision %d, MAC %pM, IRQ %d, %s EEPROM\n",
-		    CIDER_REV_GET(ks8851_rdreg16(ks, KS_CIDER)),
-		    ndev->dev_addr, ndev->irq,
+		    result, ndev->dev_addr, ndev->irq,
 		    ks->rc_ccr & CCR_EEPROM ? "has" : "no");
 
 	return 0;

fbl

^ permalink raw reply related

* [PATCH] net/core: simple_strtoul cleanup
From: Shuah Khan @ 2012-04-12 19:28 UTC (permalink / raw)
  To: davem; +Cc: shuahkhan, netdev, LKML

Changed net/core/net-sysfs.c: netdev_store() to use kstrtoul() 
instead of obsolete simple_strtoul().

>From 84371b0ed8b277ec8005fd0efbc73165a8bd72b9 Mon Sep 17 00:00:00 2001
From: Shuah Khan <shuahkhan@gmail.com>
Date: Thu, 12 Apr 2012 10:36:10 -0600
Subject: [PATCH] net/core: simple_strtoul cleanup


Signed-off-by: Shuah Khan <shuahkhan@gmail.com>
---
 net/core/net-sysfs.c |    5 ++---
 1 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c
index 4955862..97d0f24 100644
--- a/net/core/net-sysfs.c
+++ b/net/core/net-sysfs.c
@@ -74,15 +74,14 @@ static ssize_t netdev_store(struct device *dev, struct device_attribute *attr,
 			    int (*set)(struct net_device *, unsigned long))
 {
 	struct net_device *net = to_net_dev(dev);
-	char *endp;
 	unsigned long new;
 	int ret = -EINVAL;
 
 	if (!capable(CAP_NET_ADMIN))
 		return -EPERM;
 
-	new = simple_strtoul(buf, &endp, 0);
-	if (endp == buf)
+	ret = kstrtoul(buf, 0, &new);
+	if (ret)
 		goto err;
 
 	if (!rtnl_trylock())
-- 
1.7.5.4

^ permalink raw reply related

* Re: [PATCH 4/5] mac80211: Add more ethtools stats: survey, rates, etc
From: Ben Hutchings @ 2012-04-12 19:30 UTC (permalink / raw)
  To: Ben Greear
  Cc: Florian Fainelli, linux-wireless-u79uwXL29TY76Z2rM5mHXA,
	netdev-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <4F870828.4020708-my8/4N5VtI7c+919tysfdA@public.gmane.org>

On Thu, 2012-04-12 at 09:51 -0700, Ben Greear wrote:
> On 04/12/2012 09:42 AM, Florian Fainelli wrote:
> > Hi,
> >
> > Le 04/12/12 18:32, greearb-my8/4N5VtI7c+919tysfdA@public.gmane.org a écrit :
> >> From: Ben Greear<greearb-my8/4N5VtI7c+919tysfdA@public.gmane.org>
> >>
> >> The signal and noise are forced to be positive since ethtool
> >> deals in unsigned 64-bit values and this number should be human
> >> readable. This gives easy access to some of the data formerly
> >> exposed in the deprecated /proc/net/wireless file.
> >
> > Uh, that's misleading, the signal and noise values are typically negative, so one needs to think about mentally adding a minus sign if he/she wants to
> > understand it. Does not ethtool know about 32-bits signed integers?
> 
> Ethtool stats only supports u64.  I think it's easy enough for
> humans or programs to add the negative sign.  Can signal or noise
> ever be > 0?  If so, that could actually break something that depends
> on flipping the value to negative....

So far as I can see, the ethtool stats were expected to be counters,
which obviously cannot become negative (or fractional).  Maybe it's time
to define another command and string-set to cover other types of status
information.  The ethtool utility could ask for those typed statistics
as well, so 'ethtool -S' would get all of them.

Ben.

-- 
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.

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

^ permalink raw reply

* [GIT] Networking
From: David Miller @ 2012-04-12 19:39 UTC (permalink / raw)
  To: torvalds; +Cc: akpm, netdev, linux-kernel


1) Fix bluetooth userland regression reported by Keith Packard,
   from Gustavo Padovan.

2) Revert ath9k PS idle change, from Sujith Manoharan.

3) Correct default TCP memory limits (again), from Eric
   Dumazet.

4) Fix tcp_rcv_rtt_update() accidental use of unscaled RTT, from
   Neal Cardwell.

5) We made a facility for layers like wireless to say how much
   tailroom they need in the SKB for link layer stuff such as
   wireless encryption etc., but TCP works hard to fill every SKB
   out to the end defeating this specification.

   This leads to every TCP packet getting reallocated by the wireless
   code in order to have the right amount of tailroom available.

   Fix TCP to only fill SKBs out to the real amount of data area it
   asked for during the allocation, this way it won't eat into the
   slack added for the device's tailroom needs.

   Reported by Marc Merlin and fixed by Eric Dumazet.

6) Leaks, endian bugs, and new device IDs in bluetooth from Santosh
   Nayak, João Paulo Rechi Vita, Cho, Yu-Chen, Andrei Emeltchenko,
   AceLan Kao, and Andrei Emeltchenko.

7) OOPS on tty_close fix in bluetooth's hci_ldisc from Johan Hovold.

8) netfilter erroneously scales TCP window twice, fix from Changli Gao.

9) Memleak fix in wext-core from Julia Lawall.

10) Consistently handle invalid TCP packets in ipv4 vs. ipv6 conntrack,
    from Jozsef Kadlecsik.

11) Validate IP header length properly in netfilter conntrack's
    ipv4_get_l4proto().

Please pull, thanks a lot!

The following changes since commit f68e556e23d1a4176b563bcb25d8baf2c5313f91:

  Make the "word-at-a-time" helper functions more commonly usable (2012-04-06 13:54:56 -0700)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git master

for you to fetch changes up to 5d949944229b0a08e218723be231731cd86b94f3:

  Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless into for-davem (2012-04-12 09:55:22 -0400)

----------------------------------------------------------------

AceLan Kao (1):
      Bluetooth: Add support for Atheros [04ca:3005]

Andrei Emeltchenko (3):
      Bluetooth: Fix memory leaks due to chan refcnt
      Bluetooth: mgmt: Add missing endian conversion
      Bluetooth: mgmt: Fix timeout type

Brian Gix (1):
      Bluetooth: mgmt: Fix corruption of device_connected pkt

Changli Gao (1):
      netfilter: nf_ct_tcp: don't scale the size of the window up twice

Chen, Chien-Chia (1):
      rt2x00: Fix rfkill_polling register function.

Cho, Yu-Chen (1):
      Bluetooth: Add Atheros maryann PIDVID support

David S. Miller (2):
      Merge branch 'master' of git://1984.lsi.us.es/net
      MAINTAINERS: Mark NATSEMI driver as orphan'd.

Don Zickus (1):
      Bluetooth: btusb: typo in Broadcom SoftSailing id

Eric Dumazet (3):
      tcp: restore correct limit
      net: allow pskb_expand_head() to get maximum tailroom
      tcp: avoid order-1 allocations on wifi and tx path

Gao feng (1):
      netfilter: nf_conntrack: fix incorrect logic in nf_conntrack_init_net

Gustavo Padovan (1):
      Bluetooth: Fix userspace compatibility issue with mgmt interface

Hemant Gupta (1):
      Bluetooth: Use correct flags for checking HCI_SSP_ENABLED bit

Herbert Xu (1):
      bridge: Do not send queries on multicast group leaves

Johan Hedberg (2):
      Bluetooth: Don't increment twice in eir_has_data_type()
      Bluetooth: Check for minimum data length in eir_has_data_type()

Johan Hovold (2):
      Bluetooth: hci_ldisc: fix NULL-pointer dereference on tty_close
      Bluetooth: hci_core: fix NULL-pointer dereference at unregister

Johannes Berg (2):
      mac80211: fix association beacon wait timeout
      nl80211: ensure interface is up in various APIs

John W. Linville (2):
      Merge branch 'master' of git://git.kernel.org/.../bluetooth/bluetooth
      Merge branch 'master' of git://git.kernel.org/.../linville/wireless into for-davem

Jozsef Kadlecsik (2):
      netfilter: nf_ct_ipv4: handle invalid IPv4 and IPv6 packets consistently
      netfilter: nf_ct_ipv4: packets with wrong ihl are invalid

João Paulo Rechi Vita (1):
      Bluetooth: btusb: Add USB device ID "0a5c 21e8"

Julia Lawall (1):
      net/wireless/wext-core.c: add missing kfree

Larry Finger (5):
      rtlwifi: rtl8192de: Fix firmware initialization
      mac80211: Convert WARN_ON to WARN_ON_ONCE
      rtlwifi: Fix oops on rate-control failure
      rtlwifi: Preallocate USB read buffers and eliminate kalloc in read routine
      rtlwifi: Add missing DMA buffer unmapping for PCI drivers

Marcel Holtmann (1):
      MAINTAINERS: update Bluetooth tree locations

Neal Cardwell (1):
      tcp: fix tcp_rcv_rtt_update() use of an unscaled RTT sample

Pablo Neira Ayuso (1):
      netfilter: ip6_tables: ip6t_ext_hdr is now static inline

Paul Gortmaker (1):
      bcma: fix build error on MIPS; implicit pcibios_enable_device

Samuel Ortiz (1):
      NFC: Fix the LLCP Tx fragmentation loop

Santosh Nayak (1):
      Bluetooth: Fix Endian Bug.

Sujith Manoharan (1):
      Revert "ath9k: fix going to full-sleep on PS idle"

 MAINTAINERS                                    |   11 ++++---
 drivers/bcma/Kconfig                           |    2 +-
 drivers/bcma/driver_pci_host.c                 |    1 +
 drivers/bluetooth/ath3k.c                      |    4 +++
 drivers/bluetooth/btusb.c                      |    5 +++-
 drivers/bluetooth/hci_ldisc.c                  |    2 +-
 drivers/net/wireless/ath/ath9k/main.c          |    8 ++----
 drivers/net/wireless/rt2x00/rt2x00dev.c        |    6 +---
 drivers/net/wireless/rtlwifi/base.c            |    5 +++-
 drivers/net/wireless/rtlwifi/pci.c             |    7 ++++-
 drivers/net/wireless/rtlwifi/rtl8192de/sw.c    |    6 ----
 drivers/net/wireless/rtlwifi/usb.c             |   34 +++++++++++-----------
 drivers/net/wireless/rtlwifi/wifi.h            |    6 +++-
 include/linux/netfilter_ipv6/ip6_tables.h      |   12 +++++++-
 include/linux/skbuff.h                         |   13 +++++++++
 include/net/bluetooth/hci.h                    |    3 +-
 include/net/bluetooth/hci_core.h               |   12 ++++----
 include/net/bluetooth/mgmt.h                   |    2 +-
 include/net/mac80211.h                         |    2 +-
 net/bluetooth/hci_core.c                       |    7 +++++
 net/bluetooth/l2cap_core.c                     |    3 ++
 net/bluetooth/l2cap_sock.c                     |    5 ++--
 net/bluetooth/mgmt.c                           |   13 ++++++---
 net/bridge/br_multicast.c                      |   81 ----------------------------------------------------
 net/bridge/br_private.h                        |    4 ---
 net/core/skbuff.c                              |    4 ++-
 net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c |   12 ++++++--
 net/ipv4/tcp.c                                 |   11 ++++---
 net/ipv4/tcp_input.c                           |    7 +++--
 net/ipv4/tcp_output.c                          |    2 +-
 net/ipv6/netfilter/ip6_tables.c                |   14 ---------
 net/mac80211/mlme.c                            |    3 +-
 net/netfilter/nf_conntrack_core.c              |    2 +-
 net/netfilter/nf_conntrack_proto_tcp.c         |    4 +--
 net/nfc/llcp/commands.c                        |    4 +--
 net/wireless/nl80211.c                         |   31 +++++++++++---------
 net/wireless/wext-core.c                       |    6 ++--
 37 files changed, 160 insertions(+), 194 deletions(-)

^ permalink raw reply

* Re: [PATCH] drivers/net: Remove CONFIG_WIZNET_TX_FLOW option
From: David Miller @ 2012-04-12 19:46 UTC (permalink / raw)
  To: msink; +Cc: netdev, linux-kernel
In-Reply-To: <1334211288-7682-1-git-send-email-msink@permonline.ru>

From: Mike Sinkovsky <msink@permonline.ru>
Date: Thu, 12 Apr 2012 12:14:48 +0600

> This option was there for debugging race conditions,
> just remove it, and assume TX_FLOW is always enabled.
> 
> Signed-off-by: Mike Sinkovsky <msink@permonline.ru>

Applied.

^ permalink raw reply

* Re: [PATCH] wiznet: Add missing #include <linux/irq.h>
From: David Miller @ 2012-04-12 19:46 UTC (permalink / raw)
  To: geert; +Cc: msink, paul.gortmaker, netdev, linux-kernel
In-Reply-To: <1334258363-17617-1-git-send-email-geert@linux-m68k.org>

From: Geert Uytterhoeven <geert@linux-m68k.org>
Date: Thu, 12 Apr 2012 21:19:23 +0200

> m68k/allmodconfig:
> 
> drivers/net/ethernet/wiznet/w5100.c: In function ‘w5100_hw_probe’:
> drivers/net/ethernet/wiznet/w5100.c:680: error: ‘IRQ_TYPE_LEVEL_LOW’ undeclared (first use in this function)
> drivers/net/ethernet/wiznet/w5300.c: In function ‘w5300_hw_probe’:
> drivers/net/ethernet/wiznet/w5300.c:594: error: ‘IRQ_TYPE_LEVEL_LOW’ undeclared (first use in this function)
> 
> Include <linux/irq.h>, which provides the declaration for IRQ_TYPE_LEVEL_LOW.
> 
> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>

Applied.

^ permalink raw reply

* Re: [PATCH 4/5] mac80211: Add more ethtools stats: survey, rates, etc
From: Georgiewskiy Yuriy @ 2012-04-12 19:53 UTC (permalink / raw)
  To: Ben Greear
  Cc: Florian Fainelli, linux-wireless-u79uwXL29TY76Z2rM5mHXA,
	netdev-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <4F870828.4020708-my8/4N5VtI7c+919tysfdA@public.gmane.org>

[-- Attachment #1: Type: TEXT/PLAIN, Size: 2181 bytes --]

On 2012-04-12 09:51 -0700, Ben Greear wrote Florian Fainelli:

BG>On 04/12/2012 09:42 AM, Florian Fainelli wrote:
BG>> Hi,
BG>> 
BG>> Le 04/12/12 18:32, greearb-my8/4N5VtI7c+919tysfdA@public.gmane.org a ?crit :
BG>> > From: Ben Greear<greearb-my8/4N5VtI7c+919tysfdA@public.gmane.org>
BG>> > 
BG>> > The signal and noise are forced to be positive since ethtool
BG>> > deals in unsigned 64-bit values and this number should be human
BG>> > readable. This gives easy access to some of the data formerly
BG>> > exposed in the deprecated /proc/net/wireless file.
BG>> 
BG>> Uh, that's misleading, the signal and noise values are typically negative,
BG>> so one needs to think about mentally adding a minus sign if he/she wants to
BG>> understand it. Does not ethtool know about 32-bits signed integers?
BG>
BG>Ethtool stats only supports u64.  I think it's easy enough for
BG>humans or programs to add the negative sign.  Can signal or noise
BG>ever be > 0?  If so, that could actually break something that depends
BG>on flipping the value to negative....

Don't know is this is a bug or it's reaaly can be positive, but:

iw dev mp0 station dump
Station 00:02:6f:b8:94:d3 (on mp0)
    inactive time:	49 ms
    rx bytes:	36318341
    rx packets:	271741
    tx bytes:	4180152
    tx packets:	35445
    tx retries:	7724
    tx failed:	123
    signal:  	1 dBm
    signal avg:	-2 dBm
    tx bitrate:	240.0 MBit/s MCS 13 40Mhz short GI
    rx bitrate:	180.0 MBit/s MCS 12 40Mhz short GI
    mesh llid:	8349
    mesh plid:	49801
    mesh plink:	ESTAB
    authorized:	yes
    authenticated:	yes
    preamble:	long
    WMM/WME:	yes
    FP:		no
    TDLS peer:	no
										    

C уважением                       With Best Regards
Георгиевский Юрий.                Georgiewskiy Yuriy
+7 4872 711666                    +7 4872 711666
факс +7 4872 711143               fax +7 4872 711143
Компания ООО "Ай Ти Сервис"       IT Service Ltd
http://nkoort.ru                  http://nkoort.ru
JID: GHhost-k/kvQgNDeKovJsYlp49lxw@public.gmane.org            JID: GHhost-k/kvQgNDeKovJsYlp49lxw@public.gmane.org
YG129-RIPE                        YG129-RIPE

^ permalink raw reply

* Re: [PATCH] [IPv6]: Treat ND option 31 as userland (DNSSL support)
From: David Miller @ 2012-04-12 19:57 UTC (permalink / raw)
  To: raorn; +Cc: netdev
In-Reply-To: <1333727458-28438-1-git-send-email-raorn@raorn.name>

From: "Alexey I. Froloff" <raorn@raorn.name>
Date: Fri,  6 Apr 2012 19:50:58 +0400

> As specified in RFC6106, DNSSL option contains one or more domain names
> of DNS suffixes.  8-bit identifier of the DNSSL option type as assigned
> by the IANA is 31.  This option should also be treated as userland.
> 
> Signed-off-by: Alexey I. Froloff <raorn@raorn.name>

Applied to net-next, thanks.

^ permalink raw reply

* Re: [PATCH] net/ipv6/exthdrs.c et al: Optional strict PadN option checking
From: David Miller @ 2012-04-12 20:00 UTC (permalink / raw)
  To: eldad; +Cc: kuznet, jmorris, yoshfuji, kaber, netdev, linux-kernel
In-Reply-To: <1333811774-3219-1-git-send-email-eldad@fogrefinery.com>

From: Eldad Zack <eldad@fogrefinery.com>
Date: Sat,  7 Apr 2012 17:16:14 +0200

> Added strict checking of PadN. PadN can be used to increase header
> size and thus push the protocol header into the 2nd fragment.
> 
> PadN is used to align the options within the Hop-by-Hop or
> Destination Options header to 64-bit boundaries. The maximum valid
> size is thus 7 bytes.
> RFC 4942 recommends to actively check the "payload" itself and
> ensure that it contains only zeroes.
> 
> See also RFC 4942 section 2.1.9.5.
> 
> Signed-off-by: Eldad Zack <eldad@fogrefinery.com>

I think you should do away with the sysctl and always perform these
checks.

At the very leat, the optlen > 7 check should always be performed.
And frankly the pad byte being zero check makes sense to do all the
time as far as I can tell too.

^ permalink raw reply

* Re: [PATCH net-next] ixp4xx_eth: Fix up the get_ts_info ethtool method.
From: David Miller @ 2012-04-12 20:01 UTC (permalink / raw)
  To: richardcochran; +Cc: netdev
In-Reply-To: <1333814170-30940-1-git-send-email-richardcochran@gmail.com>

From: Richard Cochran <richardcochran@gmail.com>
Date: Sat,  7 Apr 2012 17:56:10 +0200

> Commit e77bd1ec121ee4163a6b42a44e87b2e382c39e04 added support for a
> new ethtool function, but that cannot compile due to a misnamed global
> variable. Not that it really matters (since the IXP4xx does compile
> either, as of about Linux 3.1) but just in case, this patch fixes the
> misnamed variable in the PHC driver.
> 
> Signed-off-by: Richard Cochran <richardcochran@gmail.com>

Applied, thanks Richard.

^ permalink raw reply

* [PATCH] bonding: start slaves with link down for ARP monitor
From: Michal Kubecek @ 2012-04-12 18:38 UTC (permalink / raw)
  To: netdev; +Cc: Jay Vosburgh, Andy Gospodarek

Initialize slave device link state as down if ARP monitor
is active. Also shift initial value of its last_arp_tx so that
it doesn't immediately cause fake detection of "up" state.

When ARP monitoring is used, initializing the slave device with
up link state can cause ARP monitor to detect link failure
before the device is really up (with igb driver, this can take
more than two seconds).

Signed-off-by: Michal Kubecek <mkubecek@suse.cz>
---

When MII monitoring is active for a bond, initial link state of slaves
is set according to real link state of the corresponding device,
otherwise it is always set to UP. This makes sense if no monitoring is
active but with ARP monitoring, it can lead to situations like this:

[ 1280.431383] bonding: bond0: setting mode to active-backup (1).
[ 1280.443305] bonding: bond0: adding ARP target 10.11.0.8.
[ 1280.454079] bonding: bond0: setting arp_validate to all (3).
[ 1280.465561] bonding: bond0: Setting ARP monitoring interval to 500.
[ 1280.480366] ADDRCONF(NETDEV_UP): bond0: link is not ready
[ 1280.491471] bonding: bond0: Adding slave eth1.
[ 1280.584158] bonding: bond0: making interface eth1 the new active one.
[ 1280.597274] bonding: bond0: first active interface up!
[ 1280.607675] bonding: bond0: enslaving eth1 as an active interface with an up link.
[ 1280.623567] ADDRCONF(NETDEV_CHANGE): bond0: link becomes ready
[ 1280.635511] bonding: bond0: Adding slave eth2.
[ 1280.726423] bonding: bond0: enslaving eth2 as a backup interface with an up link.
[ 1281.976030] bonding: bond0: link status definitely down for interface eth1, disabling it
[ 1281.992350] bonding: bond0: making interface eth2 the new active one.
[ 1282.639276] igb: eth1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
[ 1283.002282] bonding: bond0: link status definitely down for interface eth2, disabling it
[ 1283.018713] bonding: bond0: now running without any active interface !
[ 1283.529415] bonding: bond0: link status definitely up for interface eth1.
[ 1283.543075] bonding: bond0: making interface eth1 the new active one.
[ 1283.556614] bonding: bond0: first active interface up!

Here eth1 is enslaved with link state UP but before the device is really
UP, ARP monitor detects it is actually down (it takes more than two
seconds and arp_interval was set to 500). This causes a spurious failure
in logs and in statistics.

I propose to initialize slaves with DOWN link state if ARP monitor is
active so that the ARP monitor can switch it to UP when appropriate.
This also requires adjusting the initial value of last_arp_rx as setting
it to current jiffies would pretend a packet arrived when slave was
initialized, leading to DOWN -> UP -> DOWN -> UP sequence.

---
 drivers/net/bonding/bond_main.c |   36 ++++++++++++++++++++++--------------
 1 files changed, 22 insertions(+), 14 deletions(-)

diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index 62d2409..c1eda74 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -1727,6 +1727,9 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
 	read_lock(&bond->lock);
 
 	new_slave->last_arp_rx = jiffies;
+	if (bond->params.arp_interval)
+		new_slave->last_arp_rx -=
+			(msecs_to_jiffies(bond->params.arp_interval) + 1);
 
 	if (bond->params.miimon && !bond->params.use_carrier) {
 		link_reporting = bond_check_dev_link(bond, slave_dev, 1);
@@ -1751,21 +1754,26 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
 	}
 
 	/* check for initial state */
-	if (!bond->params.miimon ||
-	    (bond_check_dev_link(bond, slave_dev, 0) == BMSR_LSTATUS)) {
-		if (bond->params.updelay) {
-			pr_debug("Initial state of slave_dev is BOND_LINK_BACK\n");
-			new_slave->link  = BOND_LINK_BACK;
-			new_slave->delay = bond->params.updelay;
-		} else {
-			pr_debug("Initial state of slave_dev is BOND_LINK_UP\n");
-			new_slave->link  = BOND_LINK_UP;
-		}
-		new_slave->jiffies = jiffies;
-	} else {
-		pr_debug("Initial state of slave_dev is BOND_LINK_DOWN\n");
-		new_slave->link  = BOND_LINK_DOWN;
+	if (bond->params.miimon) {
+		if (bond_check_dev_link(bond, slave_dev, 0) == BMSR_LSTATUS) {
+			if (bond->params.updelay) {
+				new_slave->link = BOND_LINK_BACK;
+				new_slave->delay = bond->params.updelay;
+			} else
+				new_slave->link = BOND_LINK_UP;
+		} else
+			new_slave->link = BOND_LINK_DOWN;
 	}
+	else if (bond->params.arp_interval)
+		new_slave->link = BOND_LINK_DOWN;
+	else
+		new_slave->link = BOND_LINK_UP;
+
+	if (new_slave->link != BOND_LINK_DOWN)
+		new_slave->jiffies = jiffies;
+	pr_debug("Initial state of slave_dev is BOND_LINK_%s\n",
+		new_slave->link == BOND_LINK_DOWN ? "DOWN" :
+			(new_slave->link == BOND_LINK_UP ? "UP" : "BACK"));
 
 	bond_update_speed_duplex(new_slave);
 
-- 
1.7.7

^ permalink raw reply related

* pull request: wireless-next 2012-04-12
From: John W. Linville @ 2012-04-12 19:55 UTC (permalink / raw)
  To: davem; +Cc: linux-wireless, netdev

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

commit 7eab0f64a9eba5405222fdef0ede2468bf495efd

Dave,

Welcome to the first wireless pull request for the 3.5 era! :-)

Highlights of this batch include some mac80211 refactoring and
enhancements, a number of iwlwifi updates, some ath9k updates
(including a DFS pattern detector), and various other updates to
rtlwifi, mwifiex, and various other drivers.  Overall, nothing too
unusual...

Please let me know if there are problems!

Thanks,

John

P.S.  This also includes a pull from the wireless tree, to provide
a prerequisite fix for the NFC updates.

---

The following changes since commit cade455596504fae8e134a27189713ddf7c6d04d:

  team: add missed "statics" (2012-04-11 10:03:52 -0400)

are available in the git repository at:
  git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next.git for-davem

AceLan Kao (1):
      Bluetooth: Add support for Atheros [04ca:3005]

Amitkumar Karwar (5):
      mwifiex: update signal strength in mBm units
      mwifiex: add cfg80211 dump_station handler
      mwifiex: remove redundant signal handling code
      mwifiex: support STATION_INFO_SIGNAL_AVG
      mwifiex: add set_cqm_rssi_config handler support

Andrei Emeltchenko (3):
      Bluetooth: Fix memory leaks due to chan refcnt
      Bluetooth: mgmt: Add missing endian conversion
      Bluetooth: mgmt: Fix timeout type

Antonio Quartulli (1):
      b43: claim support for IBSS RSN

Ashok Nagarajan (4):
      mac80211: Use mandatory rates as basic rates when starting mesh
      mac80211: Indicate basic rates when adding rate IEs
      mac80211: Modify sta_get_rates to give basic rates
      mac80211: Check basic rates when peering

Ben Greear (3):
      mac80211: Add iface name when calling WARN-ON.
      ath9k: Add tx-failed counter.
      ath9k: Add more recv stats.

Brian Gix (1):
      Bluetooth: mgmt: Fix corruption of device_connected pkt

Chen, Chien-Chia (1):
      rt2x00: Fix rfkill_polling register function.

Cho, Yu-Chen (1):
      Bluetooth: Add Atheros maryann PIDVID support

Christian Lamparter (1):
      p54: only unregister ieee80211_hw when it has been registered

Chun-Yeow Yeoh (2):
      mac80211: fix the sparse warnings on endian handling in RANN propagation
      mac80211: fix the RANN propagation issues

David Spinadel (1):
      iwlwifi: phy_db structure

Don Fry (2):
      iwlwifi: move FW_ERROR to priv
      iwlwifi: split POWER_PMI status bit

Don Zickus (1):
      Bluetooth: btusb: typo in Broadcom SoftSailing id

Felix Fietkau (3):
      cfg80211: use compare_ether_addr on MAC addresses instead of memcmp
      mac80211: reduce code duplication in debugfs code
      mac80211: optimize aggregation session timeout handling

Gustavo Padovan (1):
      Bluetooth: Fix userspace compatibility issue with mgmt interface

Hemant Gupta (1):
      Bluetooth: Use correct flags for checking HCI_SSP_ENABLED bit

Jakub Kicinski (1):
      rt2x00: increase led's name buffer length

Javier Cardona (4):
      mac80211_hwsim: Fill timestamp beacon at the time it is transmitted
      mac80211: Allow tsf increments via debugfs
      mac80211: Implement mesh synchronization framework
      {nl,cfg}80211: Support for mesh synchronization

Joe Perches (6):
      rtlwifi: Use is_zero_ether_addr, remove line continuation
      rtlwifi: Simplify rtl_get/set inline functions
      ath: Add and use pr_fmt, convert printks to pr_<level>
      ath5k: Introduce _ath5k_printk to reduce code/text
      iwlwifi: Add pr_fmt
      wireless: Remove unnecessary ; from while (0) macros

Johan Hedberg (2):
      Bluetooth: Don't increment twice in eir_has_data_type()
      Bluetooth: Check for minimum data length in eir_has_data_type()

Johan Hovold (2):
      Bluetooth: hci_ldisc: fix NULL-pointer dereference on tty_close
      Bluetooth: hci_core: fix NULL-pointer dereference at unregister

Johannes Berg (37):
      mac80211: fix association beacon wait timeout
      nl80211: ensure interface is up in various APIs
      wireless: rename ht_info to ht_operation
      iwlwifi: process multiple frames per RXB
      iwlwifi: extend notification wait
      iwlwifi: simplify calibration collection
      iwlwifi: add trailing newline to various messages
      iwlwifi: clarify config struct comments
      iwlwifi: remove support_wimax_coexist
      iwlwifi: remove iq_invert config param
      iwlwifi: remove scan_rx_antennas
      iwlwifi: use scan while idle
      iwlwifi: move queue mapping out of transport
      iwlwifi: move valid_contexts to priv
      mac80211: don't always advertise remain-on-channel
      mwifiex: don't use IEEE80211_MAX_QUEUES
      mac80211: fix mesh TX coding style
      mac80211: clean up uAPSD TX code
      mac80211: make ieee80211_downgrade_queue static
      mac80211: inline ieee80211_add_pending_skbs
      mac80211: use AC constants
      mac80211: set HT channel before association
      mac80211: remove channel type argument from rate_update
      mac80211: remove queue stop on rate control update
      mac80211: notify driver of rate control updates
      mac80211: remove antenna_sel_tx TX info field
      cfg80211/nl80211: clarify TX queue API
      mac80211: refuse TX queue configuration on non-QoS HW
      mac80211: decouple # of netdev queues from HW queues
      mac80211: debounce queue stop/wake
      mac80211: lazily stop queues in add_pending
      mac80211: use IEEE80211_NUM_ACS
      mac80211: manage AP netdev carrier state
      mac80211: add explicit monitor interface if needed
      mac80211: add improved HW queue control
      mac80211: clean up an ieee80211_do_open error path
      cfg80211/mac80211: enable proper device_set_wakeup_enable handling

John W. Linville (3):
      Merge branch 'master' of git://git.kernel.org/.../bluetooth/bluetooth
      Merge branch 'master' of git://git.kernel.org/.../linville/wireless
      Merge branch 'master' into for-davem

João Paulo Rechi Vita (1):
      Bluetooth: btusb: Add USB device ID "0a5c 21e8"

Julia Lawall (1):
      net/wireless/wext-core.c: add missing kfree

Larry Finger (8):
      rtlwifi: rtl8192de: Fix firmware initialization
      mac80211: Convert WARN_ON to WARN_ON_ONCE
      rtlwifi: Fix oops on rate-control failure
      p54usb: Load firmware asynchronously
      rtlwifi: Preallocate USB read buffers and eliminate kalloc in read routine
      rtlwifi: Add missing DMA buffer unmapping for PCI drivers
      rtlwifi: Preallocate USB read buffers and eliminate kalloc in read routine
      rtlwifi: Add missing DMA buffer unmapping for PCI drivers

Luis R. Rodriguez (1):
      cfg80211: warn if db.txt is empty with CONFIG_CFG80211_INTERNAL_REGDB

Marcel Holtmann (1):
      MAINTAINERS: update Bluetooth tree locations

Marco Porsch (1):
      mac80211: end service period only after sending last buffered frame

Meenakshi Venkataraman (11):
      iwlwifi: use iwlagn_fw_error instead of iwl_nic_error
      iwlwifi: make iwl_nic_error static
      iwlwifi: move ucode error log reporting to op_mode
      iwlwifi: move ucode_type from shared to op_mode
      iwlwifi: move iwl_init_geos to iwl-agn.c
      iwlwifi: Move iwl_send_rxon_timing and make it static
      iwlwifi: move iwl_set_rxon_hwcrypto and mark it static
      iwlwifi: move iwl_check_rxon_cmd and mark it static
      iwlwifi: move iwl_full_rxon_required and mark it static
      iwlwifi: move iwl_get_single_channel_number and mark it static
      iwlwifi: remove firmware info from iwl_shared

Oliver Hartkopp (1):
      iwlwifi: fix unused variable warning

Paul Gortmaker (1):
      bcma: fix build error on MIPS; implicit pcibios_enable_device

Qasim Javed (1):
      ath5k: Remove extraneous statements from ath5k_hw_proc_4word_tx_status and ath5k_hw_proc_2word_status.

Rajkumar Manoharan (5):
      ath9k_hw: improve ANI processing and rx desensitizing parameters
      ath9k: recover ar9380 chips from rare stuck state
      mac80211: do not send pspoll when powersave is disabled
      mac80211: flush to get the tx status of nullfunc frame immediately
      ath9k_hw: Update rx gain initval to improve rx sensitivity

Ronald Wahl (1):
      mac80211: when receiving DTIM disable power-save mode only if it was enabled

Samuel Ortiz (1):
      NFC: Fix the LLCP Tx fragmentation loop

Santosh Nayak (1):
      Bluetooth: Fix Endian Bug.

Stanislav Yakovlev (2):
      net/wireless: ipw2x00: remove unused libipw_measurement_report struct
      net/wireless: ipw2x00: remove ssid_context struct

Stanislaw Gruszka (3):
      mac80211: sanity check for null SSID
      rt2x00: configure different txdesc parameters for non HT channel
      rt2x00: do not generate seqno in h/w if QOS is disabled

Sujith Manoharan (1):
      Revert "ath9k: fix going to full-sleep on PS idle"

Thomas Pedersen (1):
      cfg80211: add channel switch notify event

Wey-Yi Guy (1):
      iwlwifi: remove un-needed parameter

Zefir Kurtisi (3):
      ath9k: add DFS pattern detector
      ath9k: add DFS pattern detector instance to ath_softc
      ath9k: update to DFS pattern detector interface

 Documentation/DocBook/80211.tmpl                   |    2 +-
 .../networking/mac80211-auth-assoc-deauth.txt      |   10 +-
 MAINTAINERS                                        |    8 +-
 drivers/bcma/Kconfig                               |    2 +-
 drivers/bcma/driver_pci_host.c                     |    1 +
 drivers/bluetooth/ath3k.c                          |    4 +
 drivers/bluetooth/btusb.c                          |    5 +-
 drivers/bluetooth/hci_ldisc.c                      |    2 +-
 drivers/net/wireless/ath/ath5k/ani.c               |   44 +-
 drivers/net/wireless/ath/ath5k/ath5k.h             |   29 +-
 drivers/net/wireless/ath/ath5k/attach.c            |    2 +
 drivers/net/wireless/ath/ath5k/base.c              |   22 +
 drivers/net/wireless/ath/ath5k/debug.c             |   17 +-
 drivers/net/wireless/ath/ath5k/desc.c              |    6 +-
 drivers/net/wireless/ath/ath5k/dma.c               |    2 +
 drivers/net/wireless/ath/ath5k/eeprom.c            |    2 +
 drivers/net/wireless/ath/ath5k/initvals.c          |    5 +-
 drivers/net/wireless/ath/ath5k/led.c               |    2 +
 drivers/net/wireless/ath/ath5k/mac80211-ops.c      |    2 +
 drivers/net/wireless/ath/ath5k/pci.c               |    4 +-
 drivers/net/wireless/ath/ath5k/phy.c               |    2 +
 drivers/net/wireless/ath/ath5k/qcu.c               |    2 +
 drivers/net/wireless/ath/ath5k/reset.c             |    2 +
 drivers/net/wireless/ath/ath5k/sysfs.c             |    2 +
 drivers/net/wireless/ath/ath6kl/cfg80211.c         |    2 +
 drivers/net/wireless/ath/ath6kl/init.c             |    2 +
 drivers/net/wireless/ath/ath6kl/main.c             |    2 +
 drivers/net/wireless/ath/ath6kl/txrx.c             |    2 +
 drivers/net/wireless/ath/ath9k/Makefile            |    5 +-
 drivers/net/wireless/ath/ath9k/ani.c               |   49 +-
 drivers/net/wireless/ath/ath9k/ani.h               |    6 +-
 drivers/net/wireless/ath/ath9k/ar5008_phy.c        |   38 -
 .../net/wireless/ath/ath9k/ar9003_2p2_initvals.h   |   10 +-
 drivers/net/wireless/ath/ath9k/ar9003_phy.c        |   49 --
 drivers/net/wireless/ath/ath9k/ath9k.h             |    5 +
 drivers/net/wireless/ath/ath9k/debug.c             |   24 +-
 drivers/net/wireless/ath/ath9k/debug.h             |   21 +
 drivers/net/wireless/ath/ath9k/dfs.c               |   80 +--
 drivers/net/wireless/ath/ath9k/dfs.h               |    8 +-
 .../net/wireless/ath/ath9k/dfs_pattern_detector.c  |  300 ++++++++
 .../net/wireless/ath/ath9k/dfs_pattern_detector.h  |  104 +++
 drivers/net/wireless/ath/ath9k/dfs_pri_detector.c  |  390 ++++++++++
 drivers/net/wireless/ath/ath9k/dfs_pri_detector.h  |   52 ++
 drivers/net/wireless/ath/ath9k/htc_drv_init.c      |   11 +-
 drivers/net/wireless/ath/ath9k/htc_hst.c           |    4 +-
 drivers/net/wireless/ath/ath9k/hw.c                |   73 ++
 drivers/net/wireless/ath/ath9k/init.c              |   19 +-
 drivers/net/wireless/ath/ath9k/main.c              |   57 ++-
 drivers/net/wireless/ath/ath9k/pci.c               |    9 +-
 drivers/net/wireless/ath/ath9k/rc.c                |    7 +-
 drivers/net/wireless/ath/ath9k/recv.c              |   39 +-
 drivers/net/wireless/ath/carl9170/cmd.h            |    6 +-
 drivers/net/wireless/ath/carl9170/fw.c             |    2 +
 drivers/net/wireless/ath/main.c                    |    4 +-
 drivers/net/wireless/ath/regd.c                    |    4 +-
 drivers/net/wireless/b43/main.c                    |   16 +
 drivers/net/wireless/b43/xmit.c                    |    2 +-
 drivers/net/wireless/b43legacy/xmit.c              |   14 +-
 drivers/net/wireless/brcm80211/brcmsmac/d11.h      |    2 +-
 drivers/net/wireless/ipw2x00/ipw2100.h             |    9 -
 drivers/net/wireless/ipw2x00/libipw.h              |   55 --
 drivers/net/wireless/iwlegacy/4965-mac.c           |    4 +-
 drivers/net/wireless/iwlegacy/4965-rs.c            |    2 +-
 drivers/net/wireless/iwlwifi/Kconfig               |    8 +
 drivers/net/wireless/iwlwifi/Makefile              |    2 +
 drivers/net/wireless/iwlwifi/iwl-1000.c            |    1 -
 drivers/net/wireless/iwlwifi/iwl-2000.c            |   19 +-
 drivers/net/wireless/iwlwifi/iwl-5000.c            |    1 -
 drivers/net/wireless/iwlwifi/iwl-6000.c            |    3 -
 drivers/net/wireless/iwlwifi/iwl-agn-hw.h          |    3 -
 drivers/net/wireless/iwlwifi/iwl-agn-lib.c         |   24 +-
 drivers/net/wireless/iwlwifi/iwl-agn-rs.c          |    4 +-
 drivers/net/wireless/iwlwifi/iwl-agn-rx.c          |    7 +-
 drivers/net/wireless/iwlwifi/iwl-agn-rxon.c        |  261 +++++++-
 drivers/net/wireless/iwlwifi/iwl-agn-tx.c          |  144 +++-
 drivers/net/wireless/iwlwifi/iwl-agn.c             |  786 +++++++++++++++++++-
 drivers/net/wireless/iwlwifi/iwl-agn.h             |   23 +-
 drivers/net/wireless/iwlwifi/iwl-core.c            |  484 +------------
 drivers/net/wireless/iwlwifi/iwl-core.h            |   15 -
 drivers/net/wireless/iwlwifi/iwl-debugfs.c         |   58 ++-
 drivers/net/wireless/iwlwifi/iwl-dev.h             |   24 +-
 drivers/net/wireless/iwlwifi/iwl-mac80211.c        |   14 +-
 drivers/net/wireless/iwlwifi/iwl-notif-wait.c      |   44 +-
 drivers/net/wireless/iwlwifi/iwl-notif-wait.h      |   21 +-
 drivers/net/wireless/iwlwifi/iwl-op-mode.h         |   17 +-
 drivers/net/wireless/iwlwifi/iwl-pci.c             |    3 +
 drivers/net/wireless/iwlwifi/iwl-phy-db.c          |  273 +++++++
 drivers/net/wireless/iwlwifi/iwl-phy-db.h          |  123 +++
 drivers/net/wireless/iwlwifi/iwl-power.c           |    4 +-
 drivers/net/wireless/iwlwifi/iwl-scan.c            |   53 ++-
 drivers/net/wireless/iwlwifi/iwl-shared.h          |   32 +-
 drivers/net/wireless/iwlwifi/iwl-testmode.c        |    9 +-
 drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h  |  148 +----
 drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c   |  514 ++-----------
 drivers/net/wireless/iwlwifi/iwl-trans-pcie-tx.c   |  218 +-----
 drivers/net/wireless/iwlwifi/iwl-trans-pcie.c      |  270 ++------
 drivers/net/wireless/iwlwifi/iwl-trans.h           |   95 ++--
 drivers/net/wireless/iwlwifi/iwl-ucode.c           |  133 ++--
 drivers/net/wireless/mac80211_hwsim.c              |   32 +-
 drivers/net/wireless/mwifiex/11n.c                 |   17 +-
 drivers/net/wireless/mwifiex/cfg80211.c            |   81 ++-
 drivers/net/wireless/mwifiex/fw.h                  |   23 +-
 drivers/net/wireless/mwifiex/ioctl.h               |   49 +-
 drivers/net/wireless/mwifiex/join.c                |   14 +-
 drivers/net/wireless/mwifiex/main.h                |   14 +-
 drivers/net/wireless/mwifiex/scan.c                |   17 +-
 drivers/net/wireless/mwifiex/sdio.h                |    8 +-
 drivers/net/wireless/mwifiex/sta_cmd.c             |   98 +++
 drivers/net/wireless/mwifiex/sta_cmdresp.c         |   80 ++-
 drivers/net/wireless/mwifiex/sta_event.c           |   15 +-
 drivers/net/wireless/mwifiex/sta_ioctl.c           |   33 -
 drivers/net/wireless/p54/main.c                    |   11 +-
 drivers/net/wireless/p54/p54.h                     |    1 +
 drivers/net/wireless/p54/p54usb.c                  |  195 ++++--
 drivers/net/wireless/p54/p54usb.h                  |    3 +
 drivers/net/wireless/p54/txrx.c                    |    3 +-
 drivers/net/wireless/rt2x00/rt2x00.h               |    2 +
 drivers/net/wireless/rt2x00/rt2x00config.c         |    5 +
 drivers/net/wireless/rt2x00/rt2x00dev.c            |    6 +-
 drivers/net/wireless/rt2x00/rt2x00leds.c           |   16 +-
 drivers/net/wireless/rt2x00/rt2x00mac.c            |   10 +
 drivers/net/wireless/rt2x00/rt2x00queue.c          |   41 +-
 drivers/net/wireless/rtlwifi/base.c                |    5 +-
 drivers/net/wireless/rtlwifi/cam.c                 |    5 +-
 drivers/net/wireless/rtlwifi/pci.c                 |    7 +-
 drivers/net/wireless/rtlwifi/rc.c                  |    3 +-
 drivers/net/wireless/rtlwifi/rtl8192ce/trx.h       |    7 +-
 drivers/net/wireless/rtlwifi/rtl8192de/sw.c        |    6 -
 drivers/net/wireless/rtlwifi/rtl8192de/trx.h       |    8 +-
 drivers/net/wireless/rtlwifi/rtl8192se/def.h       |    7 +-
 drivers/net/wireless/rtlwifi/rtl8192se/fw.h        |    6 +-
 drivers/net/wireless/rtlwifi/usb.c                 |   34 +-
 drivers/net/wireless/rtlwifi/wifi.h                |   30 +-
 drivers/net/wireless/wl12xx/main.c                 |    5 +-
 include/linux/ieee80211.h                          |   32 +-
 include/linux/nl80211.h                            |   41 +-
 include/net/bluetooth/hci.h                        |    3 +-
 include/net/bluetooth/hci_core.h                   |   12 +-
 include/net/bluetooth/mgmt.h                       |    2 +-
 include/net/cfg80211.h                             |   33 +-
 include/net/mac80211.h                             |  144 +++-
 net/bluetooth/hci_core.c                           |    7 +
 net/bluetooth/l2cap_core.c                         |    3 +
 net/bluetooth/l2cap_sock.c                         |    5 +-
 net/bluetooth/mgmt.c                               |   13 +-
 net/mac80211/Kconfig                               |   11 +
 net/mac80211/Makefile                              |    3 +-
 net/mac80211/agg-rx.c                              |   18 +-
 net/mac80211/agg-tx.c                              |   57 +-
 net/mac80211/cfg.c                                 |   60 ++-
 net/mac80211/chan.c                                |   26 -
 net/mac80211/debugfs_netdev.c                      |   83 +--
 net/mac80211/debugfs_sta.c                         |    5 +-
 net/mac80211/driver-ops.h                          |   41 +-
 net/mac80211/driver-trace.h                        |   55 ++-
 net/mac80211/ht.c                                  |    9 -
 net/mac80211/ibss.c                                |   22 +-
 net/mac80211/ieee80211_i.h                         |   66 ++-
 net/mac80211/iface.c                               |  150 ++++-
 net/mac80211/main.c                                |   12 +-
 net/mac80211/mesh.c                                |   53 +-
 net/mac80211/mesh.h                                |   25 +-
 net/mac80211/mesh_hwmp.c                           |   28 +-
 net/mac80211/mesh_plink.c                          |   17 +-
 net/mac80211/mesh_sync.c                           |  296 ++++++++
 net/mac80211/mlme.c                                |  306 ++++----
 net/mac80211/pm.c                                  |    4 +
 net/mac80211/rate.h                                |    7 +-
 net/mac80211/rc80211_minstrel_ht.c                 |   15 +-
 net/mac80211/rx.c                                  |   10 +-
 net/mac80211/sta_info.c                            |   16 +-
 net/mac80211/sta_info.h                            |   11 +
 net/mac80211/tx.c                                  |   79 ++-
 net/mac80211/util.c                                |  193 ++++--
 net/mac80211/wme.c                                 |   46 +-
 net/mac80211/wme.h                                 |    3 -
 net/nfc/llcp/commands.c                            |    4 +-
 net/wireless/core.c                                |    5 +-
 net/wireless/mesh.c                                |    3 +
 net/wireless/mlme.c                                |   59 ++-
 net/wireless/nl80211.c                             |   92 ++-
 net/wireless/nl80211.h                             |    4 +
 net/wireless/reg.c                                 |   10 +
 net/wireless/scan.c                                |    2 +-
 net/wireless/wext-core.c                           |    6 +-
 185 files changed, 5524 insertions(+), 3085 deletions(-)
 create mode 100644 drivers/net/wireless/ath/ath9k/dfs_pattern_detector.c
 create mode 100644 drivers/net/wireless/ath/ath9k/dfs_pattern_detector.h
 create mode 100644 drivers/net/wireless/ath/ath9k/dfs_pri_detector.c
 create mode 100644 drivers/net/wireless/ath/ath9k/dfs_pri_detector.h
 create mode 100644 drivers/net/wireless/iwlwifi/iwl-phy-db.c
 create mode 100644 drivers/net/wireless/iwlwifi/iwl-phy-db.h
 create mode 100644 net/mac80211/mesh_sync.c
-- 
John W. Linville		Someday the world will need a hero, and you
linville@tuxdriver.com			might be all we have.  Be ready.

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

^ permalink raw reply

* Re: [PATCH 1/2] qlcnic: Add default swtich case in 'qlcnic_can_start_firmware()'
From: David Miller @ 2012-04-12 20:02 UTC (permalink / raw)
  To: santoshprasadnayak
  Cc: anirban.chakraborty, rajesh.borundia, sony.chacko, linux-driver,
	netdev, kernel-janitors
In-Reply-To: <1333951187-4395-1-git-send-email-santoshprasadnayak@gmail.com>


You haven't told me what tree these two patches should be applied to,
so I am dropping them both.

Resubmit with a proper destination tree indication.

Thanks.

^ permalink raw reply

* Re: [PATCH 0/8] r6040: misc cleanups
From: David Miller @ 2012-04-12 20:07 UTC (permalink / raw)
  To: florian; +Cc: netdev
In-Reply-To: <1334164723-9627-1-git-send-email-florian@openwrt.org>

From: Florian Fainelli <florian@openwrt.org>
Date: Wed, 11 Apr 2012 19:18:35 +0200

> This series contains some cleanups and one small fix, they are targetted
> at net-next.

All applied, thanks Florian.

^ permalink raw reply

* Re: [PATCH] net/core: simple_strtoul cleanup
From: David Miller @ 2012-04-12 20:09 UTC (permalink / raw)
  To: shuahkhan; +Cc: netdev, linux-kernel
In-Reply-To: <1334258893.3022.7.camel@lorien2>

From: Shuah Khan <shuahkhan@gmail.com>
Date: Thu, 12 Apr 2012 13:28:13 -0600

> Changed net/core/net-sysfs.c: netdev_store() to use kstrtoul() 
> instead of obsolete simple_strtoul().
> 
>>From 84371b0ed8b277ec8005fd0efbc73165a8bd72b9 Mon Sep 17 00:00:00 2001
> From: Shuah Khan <shuahkhan@gmail.com>
> Date: Thu, 12 Apr 2012 10:36:10 -0600
> Subject: [PATCH] net/core: simple_strtoul cleanup
> 
> 
> Signed-off-by: Shuah Khan <shuahkhan@gmail.com>

Applied, thanks.

^ permalink raw reply

* [PATCH] ks8851: Fix missing mutex_lock/unlock
From: mjr @ 2012-04-12 20:06 UTC (permalink / raw)
  To: fbl; +Cc: davem, sboyd, ben, netdev, Matt Renzelmann

From: Matt Renzelmann <mjr@cs.wisc.edu>

All calls to ks8851_rdreg* and ks8851_wrreg* should be protected with
the driver's lock mutex.  A spurious interrupt may otherwise cause a
crash.

Signed-off-by: Matt Renzelmann <mjr@cs.wisc.edu>
---

Thank you, Mr. Leitner, for providing feedback.  I agree with your
changes and have updated the patch to reflect them.  I apologize for
missing the driver name in the title -- I've updated the patch with
that information as well.  Please let me know if there is anything
else I should fix/change.

 drivers/net/ethernet/micrel/ks8851.c |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/micrel/ks8851.c b/drivers/net/ethernet/micrel/ks8851.c
index c722aa6..20237dc 100644
--- a/drivers/net/ethernet/micrel/ks8851.c
+++ b/drivers/net/ethernet/micrel/ks8851.c
@@ -1417,6 +1417,7 @@ static int __devinit ks8851_probe(struct spi_device *spi)
 {
 	struct net_device *ndev;
 	struct ks8851_net *ks;
+	int result;
 	int ret;
 
 	ndev = alloc_etherdev(sizeof(struct ks8851_net));
@@ -1515,9 +1516,12 @@ static int __devinit ks8851_probe(struct spi_device *spi)
 		goto err_netdev;
 	}
 
+	mutex_lock(&ks->lock);
+	result = CIDER_REV_GET(ks8851_rdreg16(ks, KS_CIDER));
+	mutex_unlock(&ks->lock);
+
 	netdev_info(ndev, "revision %d, MAC %pM, IRQ %d, %s EEPROM\n",
-		    CIDER_REV_GET(ks8851_rdreg16(ks, KS_CIDER)),
-		    ndev->dev_addr, ndev->irq,
+		    result, ndev->dev_addr, ndev->irq,
 		    ks->rc_ccr & CCR_EEPROM ? "has" : "no");
 
 	return 0;
-- 
1.7.5.4

^ permalink raw reply related

* Re: [PATCH] net/ipv6/ipv6_sockglue.c: Removed redundant extern
From: David Miller @ 2012-04-12 20:15 UTC (permalink / raw)
  To: eldad; +Cc: kuznet, jmorris, kaber, netdev, linux-kernel
In-Reply-To: <1334083887-5375-1-git-send-email-eldad@fogrefinery.com>

From: Eldad Zack <eldad@fogrefinery.com>
Date: Tue, 10 Apr 2012 20:51:27 +0200

> extern int sysctl_mld_max_msf is already defined in linux/ipv6.h.
> 
> Signed-off-by: Eldad Zack <eldad@fogrefinery.com>

Applied, thanks.

^ permalink raw reply

* Re: [PATCH] ks8851: Cancel any pending IRQ work
From: Stephen Boyd @ 2012-04-12 20:19 UTC (permalink / raw)
  To: mjr; +Cc: davem, ben, netdev
In-Reply-To: <1334249091-7605-1-git-send-email-mjr@cs.wisc.edu>

On 04/12/12 09:44, mjr@cs.wisc.edu wrote:
> From: Matt Renzelmann <mjr@cs.wisc.edu>
>
> An unexpected/spurious interrupt may cause the irq_work queue to
> execute during or after module unload, which can cause a crash.  It
> should be canceled.
>
> Signed-off-by: Matt Renzelmann <mjr@cs.wisc.edu>
> ---
>  drivers/net/ethernet/micrel/ks8851.c |    1 +
>  1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/net/ethernet/micrel/ks8851.c b/drivers/net/ethernet/micrel/ks8851.c
> index c722aa6..ab46953 100644
> --- a/drivers/net/ethernet/micrel/ks8851.c
> +++ b/drivers/net/ethernet/micrel/ks8851.c
> @@ -1540,6 +1540,7 @@ static int __devexit ks8851_remove(struct spi_device *spi)
>  		dev_info(&spi->dev, "remove\n");
>  
>  	unregister_netdev(priv->netdev);
> +	cancel_work_sync(&priv->irq_work);
>  	free_irq(spi->irq, priv);
>  	free_netdev(priv->netdev);
>  

Is this actually solving anything? Presumably cancel_work_sync() could
run and then another spurious interrupt could come in after that
function returns and we would have the same problem again. We should
probably free the irq before unregistering the netdev so that
ks8851_net_stop() would run after the interrupt is no longer registered,
and the flush_work() in there would finish the last work. But then we
have a problem where we're enabling the irq in the irq_work callback
after the irq has been freed. Ugh.

I also see a potential deadlock in ks8851_net_stop(). ks8851_net_stop()
holds the ks->lock while calling flush_work() which could deadlock if an
interrupt comes and schedules an irq_work between the time
ks8851_net_stop() grabs the mutex and calls flush_work().

-- 
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.

^ permalink raw reply

* Re: [net-next PATCH v3 3/8] net: add fdb generic dump routine
From: Ben Hutchings @ 2012-04-12 20:20 UTC (permalink / raw)
  To: John Fastabend
  Cc: shemminger, mst, davem, sri, hadi, jeffrey.t.kirsher, netdev,
	gregory.v.rose, krkumar2
In-Reply-To: <20120412170702.2717.81539.stgit@jf-dev1-dcblab>

On Thu, 2012-04-12 at 10:07 -0700, John Fastabend wrote:
> This adds a generic dump routine drivers can call. It
> should be sufficient to handle any bridging model that
> uses the unicast address list. This should be most SR-IOV
> enabled NICs.
> 
> v2: return error on nlmsg_put and use -EMSGSIZE instead
>     of -ENOMEM this is inline other usages

It's still not propagated up to ndo_dflt_fdb_dump() though:

[...]
> +static int nlmsg_populate_fdb(struct sk_buff *skb,
> +			      struct netlink_callback *cb,
> +			      struct net_device *dev,
> +			      int *idx,
> +			      struct netdev_hw_addr_list *list)
> +{
> +	struct netdev_hw_addr *ha;
> +	int err;
> +	u32 pid, seq;
> +
> +	pid = NETLINK_CB(cb->skb).pid;
> +	seq = cb->nlh->nlmsg_seq;
> +
> +	list_for_each_entry(ha, &list->list, list) {
> +		if (*idx < cb->args[0])
> +			goto skip;
> +
> +		err = nlmsg_populate_fdb_fill(skb, dev, ha->addr,
> +					      pid, seq, 0, NTF_SELF);
> +		if (err < 0)
> +			break;
			return err;
> +skip:
> +		*idx += 1;
> +	}
> +	return 0;
> +}
[...]

-- 
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.

^ permalink raw reply

* Re: [net-next PATCH v3 1/8] net: add generic PF_BRIDGE:RTM_ FDB hooks
From: Ben Hutchings @ 2012-04-12 20:27 UTC (permalink / raw)
  To: John Fastabend
  Cc: shemminger, mst, davem, sri, hadi, jeffrey.t.kirsher, netdev,
	gregory.v.rose, krkumar2
In-Reply-To: <20120412170650.2717.56467.stgit@jf-dev1-dcblab>

On Thu, 2012-04-12 at 10:06 -0700, John Fastabend wrote:
[...]
> There is a slight complication in the case with both flags set
> when an error occurs. To resolve this the rtnl handler clears
> the NTF_ flag in the netlink ack to indicate which sets completed
> successfully. The add/del handlers will abort as soon as any
> error occurs.
[...]

Yes, this should work nicely.  Presumably these new flags are completely
ignored by the current implementation of PF_BRIDGE, and new userland
will also be able to use the flags in the response to detect the old
implementation.

Ben.

-- 
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.

^ permalink raw reply

* Re: [net-next 3/4 (V3)] stmmac: add the Energy Efficient Ethernet support
From: David Miller @ 2012-04-12 20:32 UTC (permalink / raw)
  To: peppe.cavallaro; +Cc: netdev, bhutchings, rayagond
In-Reply-To: <1333704559-11251-4-git-send-email-peppe.cavallaro@st.com>

From: Giuseppe CAVALLARO <peppe.cavallaro@st.com>
Date: Fri,  6 Apr 2012 11:29:17 +0200

> +static int stmmac_ethtool_op_set_eee(struct net_device *dev,
> +				     struct ethtool_value *eee)
> +{
> +	struct stmmac_priv *priv = netdev_priv(dev);
> +
> +	if ((!eee->data) && (priv->eee_enabled)) {
> +		stmmac_disable_eee_mode(priv);
> +		priv->eee_enabled = eee->data;
> +	} else if ((eee->data) && (!priv->eee_enabled))
> +		/* We are asking for enabling the EEE but this
> +		 * has to be verified by invoking the eee_init function.
> +		 * For this reason we cannot set eee_enabled to
> +		 * eee->data, directly. */
> +		priv->eee_enabled = stmmac_eee_init(priv);
> +
> +	return 0;

If stmmac_eee_init() determines that it cannot enable eee, you should
return an appropriate error code here so that ethtool can report that
fact.

^ permalink raw reply

* Re: [PATCH] ks8851: Fix missing mutex_lock/unlock
From: Stephen Boyd @ 2012-04-12 20:34 UTC (permalink / raw)
  To: mjr; +Cc: fbl, davem, ben, netdev
In-Reply-To: <1334261204-8554-1-git-send-email-mjr@cs.wisc.edu>

On 04/12/12 13:06, mjr@cs.wisc.edu wrote:
> From: Matt Renzelmann <mjr@cs.wisc.edu>
>
> All calls to ks8851_rdreg* and ks8851_wrreg* should be protected with
> the driver's lock mutex.  A spurious interrupt may otherwise cause a
> crash.
>
> Signed-off-by: Matt Renzelmann <mjr@cs.wisc.edu>
> ---
>
> Thank you, Mr. Leitner, for providing feedback.  I agree with your
> changes and have updated the patch to reflect them.  I apologize for
> missing the driver name in the title -- I've updated the patch with
> that information as well.  Please let me know if there is anything
> else I should fix/change.
>
>  drivers/net/ethernet/micrel/ks8851.c |    8 ++++++--
>  1 files changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/ethernet/micrel/ks8851.c b/drivers/net/ethernet/micrel/ks8851.c
> index c722aa6..20237dc 100644
> --- a/drivers/net/ethernet/micrel/ks8851.c
> +++ b/drivers/net/ethernet/micrel/ks8851.c
> @@ -1417,6 +1417,7 @@ static int __devinit ks8851_probe(struct spi_device *spi)
>  {
>  	struct net_device *ndev;
>  	struct ks8851_net *ks;
> +	int result;
>  	int ret;
>  
>  	ndev = alloc_etherdev(sizeof(struct ks8851_net));
> @@ -1515,9 +1516,12 @@ static int __devinit ks8851_probe(struct spi_device *spi)
>  		goto err_netdev;
>  	}
>  
> +	mutex_lock(&ks->lock);
> +	result = CIDER_REV_GET(ks8851_rdreg16(ks, KS_CIDER));
> +	mutex_unlock(&ks->lock);
> +
>  	netdev_info(ndev, "revision %d, MAC %pM, IRQ %d, %s EEPROM\n",
> -		    CIDER_REV_GET(ks8851_rdreg16(ks, KS_CIDER)),
> -		    ndev->dev_addr, ndev->irq,
> +		    result, ndev->dev_addr, ndev->irq,
>  		    ks->rc_ccr & CCR_EEPROM ? "has" : "no");
>  
>  	return 0;

This register is already read in the probe function and the lock is not
held there so you seem to have missed a couple. I would guess it doesn't
really matter tha we don't grab the lock though because the device isn't
actively sending/receiving packets. How about this instead?

diff --git a/drivers/net/ethernet/micrel/ks8851.c b/drivers/net/ethernet/micrel/ks8851.c
index c722aa60..6f21fcd 100644
--- a/drivers/net/ethernet/micrel/ks8851.c
+++ b/drivers/net/ethernet/micrel/ks8851.c
@@ -1418,6 +1418,7 @@ static int __devinit ks8851_probe(struct spi_device *spi)
        struct net_device *ndev;
        struct ks8851_net *ks;
        int ret;
+       unsigned cider;
 
        ndev = alloc_etherdev(sizeof(struct ks8851_net));
        if (!ndev)
@@ -1484,8 +1485,9 @@ static int __devinit ks8851_probe(struct spi_device *spi)
        ks8851_soft_reset(ks, GRR_GSR);
 
        /* simple check for a valid chip being connected to the bus */
-
-       if ((ks8851_rdreg16(ks, KS_CIDER) & ~CIDER_REV_MASK) != CIDER_ID) {
+       mutex_lock(&ks->lock);
+       cider = ks8851_rdreg16(ks, KS_CIDER);
+       if ((cider & ~CIDER_REV_MASK) != CIDER_ID) {
                dev_err(&spi->dev, "failed to read device ID\n");
                ret = -ENODEV;
                goto err_id;
@@ -1493,6 +1495,7 @@ static int __devinit ks8851_probe(struct spi_device *spi)
 
        /* cache the contents of the CCR register for EEPROM, etc. */
        ks->rc_ccr = ks8851_rdreg16(ks, KS_CCR);
+       mutex_unlock(&ks->lock);
 
        if (ks->rc_ccr & CCR_EEPROM)
                ks->eeprom_size = 128;
@@ -1516,8 +1519,7 @@ static int __devinit ks8851_probe(struct spi_device *spi)
        }
 
        netdev_info(ndev, "revision %d, MAC %pM, IRQ %d, %s EEPROM\n",
-                   CIDER_REV_GET(ks8851_rdreg16(ks, KS_CIDER)),
-                   ndev->dev_addr, ndev->irq,
+                   CIDER_REV_GET(cider), ndev->dev_addr, ndev->irq,
                    ks->rc_ccr & CCR_EEPROM ? "has" : "no");
 
        return 0;


-- 
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.

^ permalink raw reply related

* [PATCH net-next] net: vxge: Add MODULE_FIRMWARE
From: Tim Gardner @ 2012-04-12 20:34 UTC (permalink / raw)
  To: linux-kernel; +Cc: Tim Gardner, Jon Mason, netdev

Cc: Jon Mason <jdmason@kudzu.us>
Cc: netdev@vger.kernel.org
Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
---
 drivers/net/ethernet/neterion/vxge/vxge-main.c |    2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/ethernet/neterion/vxge/vxge-main.c b/drivers/net/ethernet/neterion/vxge/vxge-main.c
index 51387c3..dcef72d 100644
--- a/drivers/net/ethernet/neterion/vxge/vxge-main.c
+++ b/drivers/net/ethernet/neterion/vxge/vxge-main.c
@@ -4856,3 +4856,5 @@ vxge_closer(void)
 }
 module_init(vxge_starter);
 module_exit(vxge_closer);
+MODULE_FIRMWARE("vxge/X3fw-pxe.ncf");
+MODULE_FIRMWARE("vxge/X3fw.ncf");
-- 
1.7.9.5

^ permalink raw reply related

* RE: [PATCH] ks8851: Cancel any pending IRQ work
From: Matt Renzelmann @ 2012-04-12 20:34 UTC (permalink / raw)
  To: 'Stephen Boyd'; +Cc: davem, ben, netdev, Matt Renzelmann
In-Reply-To: <4F8738EB.2060806@codeaurora.org>

> 
> Is this actually solving anything? Presumably cancel_work_sync() could
> run and then another spurious interrupt could come in after that
> function returns and we would have the same problem again. We should
> probably free the irq before unregistering the netdev so that
> ks8851_net_stop() would run after the interrupt is no longer registered,
> and the flush_work() in there would finish the last work. But then we
> have a problem where we're enabling the irq in the irq_work callback
> after the irq has been freed. Ugh.
> 
> I also see a potential deadlock in ks8851_net_stop(). ks8851_net_stop()
> holds the ks->lock while calling flush_work() which could deadlock if an
> interrupt comes and schedules an irq_work between the time
> ks8851_net_stop() grabs the mutex and calls flush_work().
> 

I agree on all counts -- the patch is buggy, though it does at least "shrink"
the window of vulnerability.  Frankly, I don't believe I'm qualified to write an
appropriate patch for this driver, at least without spending considerably more
time on it.

FWIW, I found this problem with a new driver-testing tool we've developed called
SymDrive, and my goal is primarily to determine if the bug is real or not.  The
tool is imperfect and we are trying to validate its operation.

That said, if there is an issue here, and we can come up with an appropriate
fix, then I'd be happy to write a patch for it.

^ permalink raw reply


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