netfilter tables config problem

2006-12-22 Thread Randy Dunlap

(on 2.6.20-rc1-git8)

It's possible to have
CONFIG_NETFILTER_XTABLES=y
and
CONFIG_IP6_NF_MATCH_IPV6HEADER=m,

which causes this build error:
net/built-in.o: In function `hashlimit_match':
xt_hashlimit.c:(.text+0x1c887): undefined reference to `ipv6_find_hdr'
make: *** [.tmp_vmlinux1] Error 1

Clean build if I set
CONFIG_IP6_NF_MATCH_IPV6HEADER=y.

.config (for i386) attached.
---
~Randy


config-netfilt2-ipv6-hdr
Description: Binary data


d80211 and SMP issues

2006-12-22 Thread mohamed Abbas

Hi
Sorry if you receive this email twice, my email is acting a little weird.
I was looking at SMP issues in d80211 stack, below in my finding.
I  did  change the d80211 stack to  add SMP safety code. I will email
these patches later after I update them with what ever feedback I will
get back.

The D80211 stack has many entry points; this could leads to race
conditions and use of invalid pointers. This document will point out
the shared data between all threads which can run concurrently.

D80211 threads and entry points.
1- Wireless handler callback functions. We don't need to protect these
  functions from each other since each function touches different data.

2- net_device callback functions. The only one we have to worry about
  is hard_start_xmit which runs in software interrupt context.

3- timers, d80211 uses three timers. Below is a list of all function
  names of these timers:
* ieee80211_stat_refresh timer function. It is SMP safe and appropriate
 locks are used to protect shared data.
* sta_info_cleanup timer function. It is SMP safe and appropriate locks
 are used to protect shared data.
* ieee80211_scan_start timer function. N/A

4- Work queue. Below is a list of all callback functions used by work
  queues.
* ieee80211_sta_work function. This function is the heart beat that
 monitors the state of the connection. It uses shared data with other
 threads that need to be protected.  Inside this function it calls the
 appropriate function according to the state.  These functions are
 supposed to be mutually exclusive, however they are also called from
 other threads. We need partial locking in these function to keep a
 valid state across concurrent execution. A new spinlock called
 local->ifsta_state_lock was added to protect state's shared data.
* ieee80211_sta_scan_work. This function is SMP safe.
* sta_info_proc_add_task, this function is SMP safe.

5- export functions of d80211. Most of these functions are SMP safe
  except ieee80211_beacon_get which shares data that can be touched by
  other threads concurrently.

6- tasklet functions. There are two tasklet functions used by D80211.
  These are:
* ieee80211_tx_pending tasklet is used to transfer pending Tx frames.
 It uses the same route as hard_start_xmit, so any fix in
 hard_start_xmit should apply to it.
* ieee80211_tasklet_handler tasklet is used as the Rx route. It uses
 shared data with other threads.

Data to protect
We have two types of shared data to protect. Shared pointers need to be
protected. The thread that is going to set a pointer needs to lock the
access, change or allocate pointer then unlock. The thread that is going
to access this pointer needs to lock it first, check pointer if it is a
valid to use, use the pointer.  It must keep the lock for as long as it
is using the pointer, then unlock.  The other shared data type is
groups of data that are used together, like essid and essid_length.
These groupings must be locked any time any part of that data is
used or changed by any thread.


Shared data
The only shared data we need to protect are the members of these
structures:

* local, ifdata bss and sta.

We use ifsta_data_lock to protect these shared data.

ifsta->assocreq_ies
ifsta->assocreq_ies_len
ifsta->assocresp_ies
ifsta->assocresp_ies_len
ifsta->bssid
ifsta->auth_alg
ifsta->ssid_len
ifsta->ssid
ifsta->assocresp_ies
ifsta->probe_resp
ifsta->auth_algs
ifsta->extra_ie
ifsta->extra_ie_len
sdata->u.ap.generic_elem
sdata->u.ap.beacon_head
sdata->u.ap.beacon_tail
ifsta->auth_transaction
local->curr_rates
local->phymode

local->sta_scanning
This shared data is touched by two functions:
* ieee80211_sta_req_scan and ieee80211_scan_completed

These functions are called from different threads. The lock in these
functions is to protect from two scan requests invoked at the same time
(protecting the scan state from a race condition)

Data we did not protect:
sdata->fragments
sdata->fragment_next
pending_packet

We don't need to lock these because the data is only used and changed
from the one Rx thread.

State shared data.
We use ifsta_state_lock to protect state shared data which is used to
identify the state of the connection and association steps. This is also
used to prevent mutual exclusive functions to run at the same time in
these sections.

The sections where state shared data are changed:
ifsta->auth_alg
ifsta->auth_tries
ifsta->assoc_tries;
sdata->u.sta.associated
sdata->u.sta.authenticated

Shared data of ieee80211_sta_bss structure is protected by using
local->sta_bss_lock lock. We needed to add a lock in
ieee80211_rx_bss_info function where we change and allocate its
members. The same lock is used to protect reader thread of this data
in ieee80211_sta_scan_result function.

Is anything above incorrect? What other locking issues are people
looking to have resolved before merging?

Thanks
Mohamed
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majord

Fwd: d80211 and SMP

2006-12-22 Thread mohamed Abbas

Hi
I was looking at SMP issues in d80211 stack, below in my finding.
I  did  change the d80211 stack to  add SMP safety code. I will email
these patches later after I update them with what ever feedback I will
get back.

The D80211 stack has many entry points; this could leads to race
conditions and use of invalid pointers. This document will point out
the shared data between all threads which can run concurrently.

D80211 threads and entry points.
1- Wireless handler callback functions. We don't need to protect these
  functions from each other since each function touches different data.

2- net_device callback functions. The only one we have to worry about
  is hard_start_xmit which runs in software interrupt context.

3- timers, d80211 uses three timers. Below is a list of all function
  names of these timers:
* ieee80211_stat_refresh timer function. It is SMP safe and appropriate
 locks are used to protect shared data.
* sta_info_cleanup timer function. It is SMP safe and appropriate locks
 are used to protect shared data.
* ieee80211_scan_start timer function. N/A

4- Work queue. Below is a list of all callback functions used by work
  queues.
* ieee80211_sta_work function. This function is the heart beat that
 monitors the state of the connection. It uses shared data with other
 threads that need to be protected.  Inside this function it calls the
 appropriate function according to the state.  These functions are
 supposed to be mutually exclusive, however they are also called from
 other threads. We need partial locking in these function to keep a
  valid state across concurrent execution. A new spinlock called
 local->ifsta_state_lock was added to protect state's shared data.
* ieee80211_sta_scan_work. This function is SMP safe.
* sta_info_proc_add_task, this function is SMP safe.

5- export functions of d80211. Most of these functions are SMP safe
  except ieee80211_beacon_get which shares data that can be touched by
  other threads concurrently.

6- tasklet functions. There are two tasklet functions used by D80211.
  These are:
* ieee80211_tx_pending tasklet is used to transfer pending Tx frames.
 It uses the same route as hard_start_xmit, so any fix in
 hard_start_xmit should apply to it.
* ieee80211_tasklet_handler tasklet is used as the Rx route. It uses
 shared data with other threads.

Data to protect
We have two types of shared data to protect. Shared pointers need to be
protected. The thread that is going to set a pointer needs to lock the
access, change or allocate pointer then unlock. The thread that is going
to access this pointer needs to lock it first, check pointer if it is a
valid to use, use the pointer.  It must keep the lock for as long as it
is using the pointer, then unlock.  The other shared data type is
 groups of data that are used together, like essid and essid_length.
These groupings must be locked any time any part of that data is
used or changed by any thread.


Shared data
The only shared data we need to protect are the members of these
structures:

* local, ifdata bss and sta.

We use ifsta_data_lock to protect these shared data.

ifsta->assocreq_ies
ifsta->assocreq_ies_len
ifsta->assocresp_ies
ifsta->assocresp_ies_len
ifsta->bssid
ifsta->auth_alg
ifsta->ssid_len
ifsta->ssid
ifsta->assocresp_ies
ifsta->probe_resp
ifsta->auth_algs
ifsta->extra_ie
ifsta->extra_ie_len
sdata->u.ap.generic_elem
sdata->u.ap.beacon_head
sdata->u.ap.beacon_tail
ifsta->auth_transaction
local->curr_rates
local->phymode

local->sta_scanning
This shared data is touched by two functions:
* ieee80211_sta_req_scan and ieee80211_scan_completed

These functions are called from different threads. The lock in these
functions is to protect from two scan requests invoked at the same time
(protecting the scan state from a race condition)

Data we did not protect:
sdata->fragments
sdata->fragment_next
pending_packet

We don't need to lock these because the data is only used and changed
from the one Rx thread.

State shared data.
We use ifsta_state_lock to protect state shared data which is used to
identify the state of the connection and association steps. This is also
used to prevent mutual exclusive functions to run at the same time in
these sections.

The sections where state shared data are changed:
ifsta->auth_alg
ifsta->auth_tries
ifsta->assoc_tries;
sdata->u.sta.associated
sdata->u.sta.authenticated

Shared data of ieee80211_sta_bss structure is protected by using
local->sta_bss_lock lock. We needed to add a lock in
ieee80211_rx_bss_info function where we change and allocate its
members. The same lock is used to protect reader thread of this data
in ieee80211_sta_scan_result function.

Is anything above incorrect? What other locking issues are people
looking to have resolved before merging?

Thanks
Mohamed
-
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: removing gotos considered harmful...

2006-12-22 Thread Arnaldo Carvalho de Melo

On 12/22/06, David Miller <[EMAIL PROTECTED]> wrote:


Because of massively painful regressions like the following,
I absolutely refuse to apply "cleanup" patches to remove gotos
for "clarity".  All such patches do is change the code and
potentially add bugs, they don't help in any way at all.

Gerrit, please be more careful next time, and resist the urge to "fix"
stuff that isn't broken just to satisfy your own personal coding
tastes during a conversion.  This is a locally exploitable hole,
all someone has to do is open a few hundred UDP sockets to a
particular destination port and then nobody, not even root, can
so much as run ping successfully.

Arnaldo, sorry I originally thought this bug was added by you, you're
totally innocent this time :-)))


Was so fast I wasn't even able to plead "not guilty!" :-)

- Arnaldo
-
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: Generic PHY lib vs. locking

2006-12-22 Thread Benjamin Herrenschmidt
On Fri, 2006-12-22 at 10:24 -0500, David Hollis wrote:
> On Fri, 2006-12-22 at 15:07 +1100, Benjamin Herrenschmidt wrote:
> > Hi Andy !
> > 
> > I've been looking at porting various drivers (EMAC, sungem,
> > spider_net, ...) to the generic PHY stuff. However, I have one
> > significant problem here.
> > 
> 
> > One solution would be to change it to use a mutex instead of a lock as
> > well, though that would change the requirements of where phy_start/stop
> > can be called, and use a delayed work queue instead of a timer.
> 
> Wouldn't this change also allow it to be used with USB Ethernet devices?
> I was looking at porting the asix.c drive to use the PHY layer but the
> locking killed that effort since USB devices can't do spinlocks without
> hosing things up.

Yes, possibly. At the end of the day, I get the locking in the driver
down to something like:

 - All rx/tx operatations are done between the NAPI poll and the
hard_start_xmit() routine. Locking here is done with the netif_tx_lock
if needed (depends on the driver). Those can't sleep.

 - Everything else is task level and locks against the fast path above
with stopping NAPI poll and stopping tx. I have my
driver_netif_stop/start routines doing that and a bit more (see below).

 - There is at least one issue with set_multicast which is called with
the lock held. What I do here is that my driver_netif_stop above also
take the lock, set a flag tellign set-mcast to say away, release the
lock. start() on the other hand take the lock, clears that flag, checks
if another flag was set by set-mcast telling it was here, and does the
mcast setting if that was the case.

I much prefer that than having most of the driver operations locked with
the tx lock or some other or run at softirq. Some of the reset/recovery
operations can be slow, PHY operations too, and thus it's all better run
at task level. In addition, MDIO access might be able to sleep waiting
on an interrupt signaling the completion of the access.

Ben.
 

-
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


removing gotos considered harmful...

2006-12-22 Thread David Miller

Because of massively painful regressions like the following,
I absolutely refuse to apply "cleanup" patches to remove gotos
for "clarity".  All such patches do is change the code and
potentially add bugs, they don't help in any way at all.

Gerrit, please be more careful next time, and resist the urge to "fix"
stuff that isn't broken just to satisfy your own personal coding
tastes during a conversion.  This is a locally exploitable hole,
all someone has to do is open a few hundred UDP sockets to a
particular destination port and then nobody, not even root, can
so much as run ping successfully.

Arnaldo, sorry I originally thought this bug was added by you, you're
totally innocent this time :-)))

I've submitted this fix to Linus and 2.6.19-stable.

Thanks.

[UDP]: Fix reversed logic in udp_get_port().

When this code was converted to use sk_for_each() the
logic for the "best hash chain length" code was reversed,
breaking everything.

The original code was of the form:

size = 0;
do {
if (++size >= best_size_so_far)
goto next;
} while ((sk = sk->next) != NULL);
best_size_so_far = size;
best = result;
next:;

and this got converted into:

sk_for_each(sk2, node, head)
if (++size < best_size_so_far) {
best_size_so_far = size;
best = result;
}

Which does something very very different from the original.

Signed-off-by: David S. Miller <[EMAIL PROTECTED]>

diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
index 9e1bd37..404dd21 100644
--- a/net/ipv4/udp.c
+++ b/net/ipv4/udp.c
@@ -167,11 +167,14 @@ int udp_get_port(struct sock *sk, unsigned short snum,
goto gotit;
}
size = 0;
-   sk_for_each(sk2, node, head)
-   if (++size < best_size_so_far) {
-   best_size_so_far = size;
-   best = result;
-   }
+   sk_for_each(sk2, node, head) {
+   if (++size >= best_size_so_far)
+   goto next;
+   }
+   best_size_so_far = size;
+   best = result;
+   next:
+   ;
}
result = best;
for(i = 0; i < (1 << 16) / UDP_HTABLE_SIZE; i++, result += 
UDP_HTABLE_SIZE) {
-
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: [RFC][PATCH -mm 0/5] proposal for dynamic configurable netconsole

2006-12-22 Thread Stephen Hemminger
On Fri, 22 Dec 2006 21:01:09 +0900
Keiichi KII <[EMAIL PROTECTED]> wrote:

> From: Keiichi KII <[EMAIL PROTECTED]>
> 
> The netconsole is a very useful module for collecting kernel message under
> certain circumstances(e.g. disk logging fails, serial port is unavailable).
> 
> But current netconsole is not flexible. For example, if you want to change ip
> address for logging agent, in the case of built-in netconsole, you can't 
> change
> config except for changing boot parameter and rebooting your system, or in the
> case of module netconsole, you need to reload netconsole module.

If netconsole is a module, you should be able to remove it and reload
with different parameters.

> So, I propose the following extended features for netconsole.
> 
> 1) support for multiple logging agents.
> 2) add interface to access each parameter of netconsole
>using sysfs.
> 
> This patch is for linux-2.6.20-rc1-mm1 and is divided to each function.
> Your comments are very welcome.

Rather than extending the existing kludge with module parameter, to
sysfs. I would rather see a better API for this. Please build think
about doing a better API with a basic set of ioctl's. Some additional
things:
- shouldn't just be IPV4 specific, should handle IPV6 as well
- shouldn't specify MAC address, it can do network discovery/arp to
  find that when adding addresses
-
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


bcm43xx from 2.6.20-rc1-mm1 on HPC nx6325 (x86_64)

2006-12-22 Thread Larry Finger

I'm trying to make the bcm43xx driver out of the 2.6.20-rc1-mm1 kernel work on
an HPC nx6325, with no luck, so far, although I'm using a firmware that has
been reported to work with these boxes
(http://gentoo-wiki.com/HARDWARE_Gentoo_on_HP_Compaq_nx6325#Onboard_Wireless_.28802.11.29).

The driver loads and seems to operate the hardware to some extent, but there
seems to be a problem with interrupts. Namely, the chip doesn't seem to
generate any.
Raphael J. Wysocki wrote:

> Right after a fresh 'modprobe bcm43xx' I get the following messages in dmesg:

> bcm43xx driver
> ACPI: PCI Interrupt :30:00.0[A] -> GSI 18 (level, low) -> IRQ 18
> PCI: Setting latency timer of device :30:00.0 to 64
> bcm43xx: Chip ID 0x4311, rev 0x1
> bcm43xx: Number of cores: 4
> bcm43xx: Core 0: ID 0x800, rev 0x11, vendor 0x4243
> bcm43xx: Core 1: ID 0x812, rev 0xa, vendor 0x4243
> bcm43xx: Core 2: ID 0x817, rev 0x3, vendor 0x4243
> bcm43xx: Core 3: ID 0x820, rev 0x1, vendor 0x4243
> bcm43xx: PHY connected
> bcm43xx: Detected PHY: Version: 4, Type 2, Revision 8
> bcm43xx: Detected Radio: ID: 2205017f (Manuf: 17f Ver: 2050 Rev: 2)
> bcm43xx: Radio turned off
> bcm43xx: Radio turned off
> PM: Adding info for No Bus:eth1
> printk: 3 messages suppressed.
> SoftMAC: ASSERTION FAILED (0) at: > 
net/ieee80211/softmac/ieee80211softmac_wx.c:306:ieee80211softmac_wx_get_rate()

>
> but, strangely enough, eth1 does not appear, but eth2 appears instead:
>

Usually the problem generates an oops, but I think your problem is due to the changes in the work 
struct in 2.6.20-rc1. There is a fix in the pipeline, but it has not propagated through the system.


You should apply the work_struct2 patch attached. If your computer has a switch to kill the RF, you 
may also wish to apply the radio_hwenable patch, which should cause the radio LED to be turned on.


The selection of eth2 rather than eth1 is probably due to the rules in 
/etc/udev/rules.d/30-net_persistent_names.rules. When I boot a softmac version, my bcm43xx device is 
wlan0, but when I boot the d80211 version, it is eth1. I have a second bcm43xx card, which becomes 
eth2 under softmac.


Larry
From: Ulrich Kunitz <[EMAIL PROTECTED]>

The signature of work functions changed recently from a context
pointer to the work structure pointer. This caused a problem in
the ieee80211softmac code, because the ieee80211softmac_assox_work
function has  been called directly with a parameter explicitly
casted to (void*). This compiled correctly but resulted in a
softlock, because mutex_lock was called with the wrong memory
address. The patch fixes the problem. Another issue was a wrong
call of the schedule_work function. Softmac works again and this
fixes the problem I mentioned earlier in the zd1211rw rx tasklet
patch. The patch is against Linus' tree (commit af1713e0).

Signed-off-by: Ulrich Kunitz <[EMAIL PROTECTED]>
Acked-by: Michael Buesch <[EMAIL PROTECTED]>
Signed-off-by: Larry Finger <[EMAIL PROTECTED]>
---

John,

This patch should be pushed upstream to 2.6.20. At the moment, the work
struct changes have not yet propagated to wireless-2.6. When they do,
it will be needed there as well.

Larry

 net/ieee80211/softmac/ieee80211softmac_assoc.c |6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/net/ieee80211/softmac/ieee80211softmac_assoc.c 
b/net/ieee80211/softmac/ieee80211softmac_assoc.c
index eec1a1d..a824852 100644
--- a/net/ieee80211/softmac/ieee80211softmac_assoc.c
+++ b/net/ieee80211/softmac/ieee80211softmac_assoc.c
@@ -167,7 +167,7 @@ static void
 ieee80211softmac_assoc_notify_scan(struct net_device *dev, int event_type, 
void *context)
 {
struct ieee80211softmac_device *mac = ieee80211_priv(dev);
-   ieee80211softmac_assoc_work((void*)mac);
+   ieee80211softmac_assoc_work(&mac->associnfo.work.work);
 }
 
 static void
@@ -177,7 +177,7 @@ ieee80211softmac_assoc_notify_auth(struc
 
switch (event_type) {
case IEEE80211SOFTMAC_EVENT_AUTHENTICATED:
-   ieee80211softmac_assoc_work((void*)mac);
+   ieee80211softmac_assoc_work(&mac->associnfo.work.work);
break;
case IEEE80211SOFTMAC_EVENT_AUTH_FAILED:
case IEEE80211SOFTMAC_EVENT_AUTH_TIMEOUT:

Index: linux-2.6/drivers/net/wireless/bcm43xx/bcm43xx_main.c
===
--- linux-2.6.orig/drivers/net/wireless/bcm43xx/bcm43xx_main.c
+++ linux-2.6/drivers/net/wireless/bcm43xx/bcm43xx_main.c
@@ -2441,6 +2441,9 @@ static int bcm43xx_chip_init(struct bcm4
if (err)
goto err_gpio_cleanup;
bcm43xx_radio_turn_on(bcm);
+   bcm->radio_hw_enable = bcm43xx_is_hw_radio_enabled(bcm);
+   printk(KERN_INFO PFX "Radio %s by hardware\n",
+   (bcm->radio_hw_enable == 0) ? "disabled" : "enabled");
 
bcm43xx_write16(bcm, 0x03E6, 0x);
err = bcm43xx_phy_init(bcm);
@@ -3172,9 +3175,24 @@ static void bcm43xx_periodic_every30sec(
 
 sta

Re: Generic PHY lib vs. locking

2006-12-22 Thread David Hollis
On Fri, 2006-12-22 at 15:07 +1100, Benjamin Herrenschmidt wrote:
> Hi Andy !
> 
> I've been looking at porting various drivers (EMAC, sungem,
> spider_net, ...) to the generic PHY stuff. However, I have one
> significant problem here.
> 

> One solution would be to change it to use a mutex instead of a lock as
> well, though that would change the requirements of where phy_start/stop
> can be called, and use a delayed work queue instead of a timer.

Wouldn't this change also allow it to be used with USB Ethernet devices?
I was looking at porting the asix.c drive to use the PHY layer but the
locking killed that effort since USB devices can't do spinlocks without
hosing things up.

-- 
David Hollis <[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] Fix up smc911x after work_struct changes

2006-12-22 Thread Peter Korsgaard
Fix up the smc911x driver after the work_struct changes.

Signed-off-by: Peter Korsgaard <[EMAIL PROTECTED]>

diff -urpN linux-2.6.20-rc1/drivers/net/smc911x.c 
linux-2.6.20-rc1.new/drivers/net/smc911x.c
--- linux-2.6.20-rc1/drivers/net/smc911x.c  2006-11-29 22:57:37.0 
+0100
+++ linux-2.6.20-rc1.new/drivers/net/smc911x.c  2006-12-22 15:13:15.0 
+0100
@@ -123,6 +123,9 @@ struct smc911x_local {
 */
struct net_device_stats stats;
 
+   /* parent net device for easy reference in _phy_configure */
+   struct net_device *dev;
+
/* version/revision of the SMC911x chip */
u16 version;
u16 revision;
@@ -948,10 +951,11 @@ static void smc911x_phy_check_media(stru
  * of autonegotiation.)  If the RPC ANEG bit is cleared, the selection
  * is controlled by the RPC SPEED and RPC DPLX bits.
  */
-static void smc911x_phy_configure(void *data)
+static void smc911x_phy_configure(struct work_struct *work)
 {
-   struct net_device *dev = data;
-   struct smc911x_local *lp = netdev_priv(dev);
+   struct smc911x_local *lp =
+ container_of(work, struct smc911x_local, phy_configure);
+   struct net_device *dev = lp->dev;
unsigned long ioaddr = dev->base_addr;
int phyaddr = lp->mii.phy_id;
int my_phy_caps; /* My PHY capabilities */
@@ -1495,6 +1499,8 @@ static void smc911x_set_multicast_list(s
 static int
 smc911x_open(struct net_device *dev)
 {
+   struct smc911x_local *lp = netdev_priv(dev);
+
DBG(SMC_DEBUG_FUNC, "%s: --> %s\n", dev->name, __FUNCTION__);
 
/*
@@ -1511,7 +1517,7 @@ smc911x_open(struct net_device *dev)
smc911x_reset(dev);
 
/* Configure the PHY, initialize the link state */
-   smc911x_phy_configure(dev);
+   smc911x_phy_configure(&lp->phy_configure);
 
/* Turn on Tx + Rx */
smc911x_enable(dev);
@@ -2060,7 +2066,8 @@ static int __init smc911x_probe(struct n
dev->poll_controller = smc911x_poll_controller;
 #endif
 
-   INIT_WORK(&lp->phy_configure, smc911x_phy_configure, dev);
+   INIT_WORK(&lp->phy_configure, smc911x_phy_configure);
+   lp->dev = dev;
lp->mii.phy_id_mask = 0x1f;
lp->mii.reg_num_mask = 0x1f;
lp->mii.force_media = 0;
@@ -2275,7 +2282,7 @@ static int smc911x_drv_resume(struct pla
smc911x_reset(ndev);
smc911x_enable(ndev);
if (lp->phy_type != 0)
-   smc911x_phy_configure(ndev);
+   smc911x_phy_configure(&lp->phy_configure);
netif_device_attach(ndev);
}
}

-- 
Bye, Peter Korsgaard
-
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] igmp: spin_lock_bh in timer (Re: BUG: soft lockup detected on CPU#0!)

2006-12-22 Thread Ben Greear

Jarek Poplawski wrote:

On Fri, Dec 22, 2006 at 08:13:08AM +0100, Jarek Poplawski wrote:

On 20-12-2006 03:13, Ben Greear wrote:
This is from 2.6.18.2 kernel with my patch set.  The MAC-VLANs are in 
active use.
 From the backtrace, I am thinking this might be a generic problem, 
however.


Any ideas about what this could be?  It seems to be reproducible every 
day or

...

If it doesn't help, I hope lockdep will be more
precise when you'll upgrade to 2.6.19 or higher.


... or when you enable lockdep in 2.6.18 (I've
forgotten it's there alredy!).


I got lucky..the system was available by ssh still.  I see this in the boot 
logs..I assume
this means lockdep is enabled?  Should I have expected to see a lockdep trace 
in the case of
his soft-lockup then?

.
Dec 19 04:33:48 localhost kernel: Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo MolnarDec 19 04:33:48 localhost kernel: ... 
MAX_LOCKDEP_SUBCLASSES:8

Dec 19 04:33:48 localhost kernel: ... MAX_LOCK_DEPTH:  30
Dec 19 04:33:48 localhost kernel: ... MAX_LOCKDEP_KEYS:2048
Dec 19 04:33:48 localhost kernel: ... CLASSHASH_SIZE:   1024
Dec 19 04:33:48 localhost kernel: ... MAX_LOCKDEP_ENTRIES: 8192
Dec 19 04:33:48 localhost kernel: ... MAX_LOCKDEP_CHAINS:  8192
Dec 19 04:33:48 localhost kernel: ... CHAINHASH_SIZE:  4096
Dec 19 04:33:48 localhost kernel:  memory used by lock dependency info: 696 kB
Dec 19 04:33:48 localhost kernel:  per task-struct memory footprint: 1200 bytes
Dec 19 04:33:48 localhost kernel: 
Dec 19 04:33:48 localhost kernel: | Locking API testsuite:





Jarek P.



--
Ben Greear <[EMAIL PROTECTED]>
Candela Technologies Inc  http://www.candelatech.com

-
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] igmp: spin_lock_bh in timer (Re: BUG: soft lockup detected on CPU#0!)

2006-12-22 Thread Ben Greear

Jarek Poplawski wrote:

On Fri, Dec 22, 2006 at 08:13:08AM +0100, Jarek Poplawski wrote:

On 20-12-2006 03:13, Ben Greear wrote:
This is from 2.6.18.2 kernel with my patch set.  The MAC-VLANs are in 
active use.
 From the backtrace, I am thinking this might be a generic problem, 
however.


Any ideas about what this could be?  It seems to be reproducible every 
day or

...

If it doesn't help, I hope lockdep will be more
precise when you'll upgrade to 2.6.19 or higher.


... or when you enable lockdep in 2.6.18 (I've
forgotten it's there alredy!).


I thought I had it enabled, but perhaps I do not.  I'll double check that
as soon as I'm back in the office after Christmas vacation.

Thanks for looking at this!

Ben



Jarek P.



--
Ben Greear <[EMAIL PROTECTED]>
Candela Technologies Inc  http://www.candelatech.com

-
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


The new SSB subsystem for bcm43xx (and others)

2006-12-22 Thread Michael Buesch
This is a development snapshot of the new Sonics Silicon Backplane
subsystem I am currently designing.
A port of the bcm43xx driver is included and it works (more or less).
There are still some things left and broken (most are marked with TODO
or FIXME).

This is just a snapshot for you to look at what it will look
like when it's done. The major API is done. There will be some
minor changes to it, but that's it.

Well, what is this, actually? This subsystem has the goal to make
it possible to drive the mainline kernel with bcm43xx on an
embedded system based on the sonics backplane natively and out of
the box. The Linksys WRT router is a good example for one of these
devices.
There is also a port of b44 available, so it can run on this,
but it's not included here.

In general it works like this:

[Host PCI bus]
  \
[Sonics Backplane]
   \  \ \
bcm43xx   b44   other devices...

The Host PCI bus does not need to be there. In fact, it is
not there for the embedded devices. So the Sonics Backplane is
the main system bus.

The ssb subsystem completely abstracts all these details,
so that we can run the same bcm43xx (and b44) driver on
a normal PCI machine and such an embedded device natively.

In previous implementations the normal bcm43xx PCI driver
was run on these devices, by emulating a PCI bus on top of
the real SSB Bus.

The Quilt series for all this can be downloaded here:
http://bu3sch.de/misc/new-ssb-20061222.tar.bz2

This series applies against my wireless development git tree.

-- 
Greetings Michael.
-
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] igmp: spin_lock_bh in timer (Re: BUG: soft lockup detected on CPU#0!)

2006-12-22 Thread Jarek Poplawski
On Fri, Dec 22, 2006 at 10:16:30PM +1100, Herbert Xu wrote:
> Jarek Poplawski <[EMAIL PROTECTED]> wrote:
> >
> > [PATCH] igmp: spin_lock_bh in timer
> > 
> > igmp_timer_expire() uses spin_lock(&im->lock)
> > but this lock is also taken by other igmp timers,
> > so it should be changed to bh version.
> 
> When you're in a timer BH is already disabled.  So this patch
> is redundant.

Yes, I recognized this "after the damage was done".

Thanks and regards,

Jarek P.
-
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


[RFC][PATCH -mm 5/5] add "add" element in /sys/class/misc/netconsole

2006-12-22 Thread Keiichi KII
From: Keiichi KII <[EMAIL PROTECTED]>

This patch contains the following changes.

To add port dynamically, create "add" element in /sys/class/misc/netconsole.

ex)
   echo "@/eth0,@192.168.0.1/" > /sys/class/misc/netconsole/add
   then the port is added with the settings sending kernel messages
   to 192.168.0.1 using eth0 device.

-+- /sys/class/misc/
 |-+- netconsole/
   |--- add   [-w---]  If you write parameter(network interface name
   |   or one config parameter of netconsole), The
   |port related its config is added
   |--- port1/
   |--- port2/
   ...

Signed-off-by: Keiichi KII <[EMAIL PROTECTED]>
---
[changes]
1. remove unneccesary cast.
2. change config parameter for "add" element.

--- linux-mm/drivers/net/netconsole.c   2006-12-22 20:54:54.531679750 +0900
+++ enhanced-netconsole/drivers/net/netconsole.c.add2006-12-22 
16:13:02.062716500 +0900
@@ -338,6 +338,30 @@ static struct miscdevice netconsole_misc
.name = "netconsole",
 };
 
+static ssize_t store_miscdev_add(struct class_device *cdev,
+   const char *buf, size_t count)
+{
+   char *target_param;
+
+   target_param = kmalloc(count+1, GFP_KERNEL);
+   if (!target_param) {
+   printk(KERN_ERR "netconsole: kmalloc() failed!\n");
+   return -ENOMEM;
+   }
+
+   strcpy(target_param, buf);
+   if (target_param[count - 1] == '\n')
+   target_param[count - 1] = '\0';
+
+   printk(KERN_INFO "netconsole: config = [%s]\n", target_param);
+   add_target(target_param);
+   kfree(target_param);
+
+   return count;
+}
+
+static CLASS_DEVICE_ATTR(add, S_IWUSR, NULL, store_miscdev_add);
+
 static struct netpoll np = {
.name = "netconsole",
.dev_name = "eth0",
@@ -467,6 +491,9 @@ static int __init init_netconsole(void)
 
register_console(&netconsole);
 
+   class_device_create_file(netconsole_miscdev.class,
+&class_device_attr_add);
+
if(!strlen(config)) {
printk(KERN_ERR "netconsole: not configured\n");
return 0;

-- 
Keiichi KII
NEC Corporation OSS Promotion Center
E-mail: [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


[RFC][PATCH -mm 4/5] switch function of netpoll

2006-12-22 Thread Keiichi KII
From: Keiichi KII <[EMAIL PROTECTED]>

This patch contains switch function of netpoll.

If "enabled" attribute of certain port is '1', this port is used
and the configurations of this port are uable to change.

If "enabled" attribute of certain port is '0', this port isn't used
and the configurations of this port are able to change.

-+- /sys/class/misc/
|-+- netconsole/
  |-+- port1/
  | |--- id  [r--r--r--]  id
  | |--- enabled [rw-r--r--]  0: disable 1: enable, writable
  | ...
  |--- port2/
  ...

Signed-off-by: Keiichi KII <[EMAIL PROTECTED]>
---
[changes]
1. change active/inactive netpoll from list management to flag management.
2. change the name of switch from "enable" to "enabled".
3. return proper error value.

--- linux-mm/drivers/net/netconsole.c   2006-12-22 20:54:54.495677500 +0900
+++ enhanced-netconsole/drivers/net/netconsole.c.switch 2006-12-22 
16:12:54.746259250 +0900
@@ -60,6 +60,7 @@ struct netconsole_target {
struct list_head list;
struct kobject obj;
int id;
+   int enabled;
struct netpoll np;
 };
 
@@ -131,10 +132,19 @@ static ssize_t show_remote_mac(struct ne
   nt->np.remote_mac[4], nt->np.remote_mac[5]);
 }
 
+static ssize_t show_enabled(struct netconsole_target *nt, char *buf)
+{
+   return sprintf(buf, "%d\n", nt->enabled);
+}
+
 static ssize_t store_local_port(struct netconsole_target *nt, const char *buf,
size_t count)
 {
spin_lock(&target_list_lock);
+   if (nt->enabled) {
+   spin_unlock(&target_list_lock);
+   return -EINVAL;
+   }
nt->np.local_port = simple_strtol(buf, NULL, 10);
spin_unlock(&target_list_lock);
 
@@ -145,6 +155,10 @@ static ssize_t store_remote_port(struct 
size_t count)
 {
spin_lock(&target_list_lock);
+   if (nt->enabled) {
+   spin_unlock(&target_list_lock);
+   return -EINVAL;
+   }
nt->np.remote_port = simple_strtol(buf, NULL, 10);
spin_unlock(&target_list_lock);
 
@@ -155,6 +169,10 @@ static ssize_t store_local_ip(struct net
  size_t count)
 {
spin_lock(&target_list_lock);
+   if (nt->enabled) {
+   spin_unlock(&target_list_lock);
+   return -EINVAL;
+   }
nt->np.local_ip = ntohl(in_aton(buf));
spin_unlock(&target_list_lock);
 
@@ -165,6 +183,10 @@ static ssize_t store_remote_ip(struct ne
   size_t count)
 {
spin_lock(&target_list_lock);
+   if (nt->enabled) {
+   spin_unlock(&target_list_lock);
+   return -EINVAL;
+   }
nt->np.remote_ip = ntohl(in_aton(buf));
spin_unlock(&target_list_lock);
 
@@ -189,12 +211,39 @@ static ssize_t store_remote_mac(struct n
cur = delim + 1;
}
spin_lock(&target_list_lock);
+   if (nt->enabled) {
+   spin_unlock(&target_list_lock);
+   return -EINVAL;
+   }
memcpy(nt->np.remote_mac, input_mac, MAC_ADDR_DIGIT);
spin_unlock(&target_list_lock);
 
return count;
 }
 
+static ssize_t store_enabled(struct netconsole_target *nt, const char *buf,
+   size_t count)
+{
+   int enabled = 0;
+
+   if (count >= 2 && (count != 2 || buf[count - 1] != '\n')) {
+   printk(KERN_ERR "netconsole: invalid argument: %s\n", buf);
+   return -EINVAL;
+   } else if (strncmp(buf, "1", 1) == 0) {
+   enabled = 1;
+   } else if(strncmp(buf, "0", 1) == 0) {
+   enabled = 0;
+   } else {
+   printk(KERN_ERR "netconsole: invalid argument: %s\n", buf);
+   return -EINVAL;
+   }
+   spin_lock(&target_list_lock);
+   nt->enabled = enabled;
+   spin_unlock(&target_list_lock);
+
+   return count;
+}
+
 static ssize_t store_remove(struct netconsole_target *nt, const char *buf,
size_t count)
 {
@@ -219,6 +268,8 @@ static NETCON_CLASS_ATTR(remote_ip, S_IR
 static NETCON_CLASS_ATTR(local_mac, S_IRUGO, show_local_mac, NULL);
 static NETCON_CLASS_ATTR(remote_mac, S_IRUGO | S_IWUSR,
 show_remote_mac, store_remote_mac);
+static NETCON_CLASS_ATTR(enabled, S_IRUGO | S_IWUSR,
+show_enabled, store_enabled);
 static NETCON_CLASS_ATTR(remove, S_IWUSR, NULL, store_remove);
 
 static struct attribute *target_attrs[] = {
@@ -230,6 +281,7 @@ static struct attribute *target_attrs[] 
&target_attr_remote_ip.attr,
&target_attr_local_mac.attr,
&target_attr_remote_mac.attr,
+   &target_attr_enabled.attr,
&target_attr_remove.attr,
NULL
 };
@@ -245,7 +297,7 @@ static ssize_t show_target_attr(struct k
if (na->show)
return na->show(nt, buffer);
else
-   return -EACCES;
+   return -EI

[RFC][PATCH -mm 3/5] add interface for netconsole using sysfs

2006-12-22 Thread Keiichi KII
From: Keiichi KII <[EMAIL PROTECTED]>

This patch contains the following changes.

create a sysfs entry for netconsole in /sys/class/misc.
This entry has elements related to netconsole as follows.
You can change configuration of netconsole(writable attributes such as IP
address, port number and so on) and check current configuration of netconsole.

-+- /sys/class/misc/
 |-+- netconsole/
   |-+- port1/
   | |--- id  [r--r--r--]  unique port id
   | |--- remove  [-w---]  if you write something to "remove",
   | | this port is removed.
   | |--- dev_name[r--r--r--]  network interface name
   | |--- local_ip[rw-r--r--]  source IP to use, writable
   | |--- local_port  [rw-r--r--]  source port number for UDP packets, writable
   | |--- local_mac   [r--r--r--]  source MAC address
   | |--- remote_ip   [rw-r--r--]  port number for logging agent, writable
   | |--- remote_port [rw-r--r--]  IP address for logging agent, writable
   |  remote_mac  [rw-r--r--]  MAC address for logging agent, writable
   |--- port2/
   |--- port3/
   ...

Signed-off-by: Keiichi KII <[EMAIL PROTECTED]>
---
[changes]
1. expand macro code as far as possible.
2. follow kernel coding style.
3. print proper output messeage.
4. attach proper label for printk.
5. integrate netpoll_lock and netcon_target_list_lock into common spinlock.
6. return proper error value.

--- linux-mm/drivers/net/netconsole.c   2006-12-22 20:54:54.431673500 +0900
+++ enhanced-netconsole/drivers/net/netconsole.c.sysfs  2006-12-22 
16:12:47.925833000 +0900
@@ -45,6 +45,8 @@
 #include 
 #include 
 #include 
+#include 
+#include 
 
 MODULE_AUTHOR("Maintainer: Matt Mackall <[EMAIL PROTECTED]>");
 MODULE_DESCRIPTION("Console driver for network interfaces");
@@ -56,18 +58,234 @@ MODULE_PARM_DESC(netconsole, " netconsol
 
 struct netconsole_target {
struct list_head list;
+   struct kobject obj;
int id;
struct netpoll np;
 };
 
+#define MAX_PRINT_CHUNK 1000
+#define CONFIG_SEPARATOR ":"
+#define MAC_ADDR_DIGIT 6
+
+struct target_attr {
+   struct attribute attr;
+   ssize_t (*show)(struct netconsole_target*, char*);
+   ssize_t (*store)(struct netconsole_target*, const char*,
+size_t count);
+};
+
 static int add_target(char* target_config);
+static void setup_target_sysfs(struct netconsole_target *nt);
 static void cleanup_netconsole(void);
 static void delete_target(struct netconsole_target *nt);
 
+static int miscdev_configured = 0;
+
 static LIST_HEAD(target_list);
 
 static DEFINE_SPINLOCK(target_list_lock);
 
+static ssize_t show_id(struct netconsole_target *nt, char *buf)
+{
+   return sprintf(buf, "%d\n", nt->id);
+}
+
+static ssize_t show_dev_name(struct netconsole_target *nt, char *buf)
+{
+   return sprintf(buf, "%s\n", nt->np.dev_name);
+}
+
+static ssize_t show_local_port(struct netconsole_target *nt, char *buf)
+{
+   return sprintf(buf, "%d\n", nt->np.local_port);
+}
+
+static ssize_t show_remote_port(struct netconsole_target *nt, char *buf)
+{
+   return sprintf(buf, "%d\n", nt->np.remote_port);
+}
+
+static ssize_t show_local_ip(struct netconsole_target *nt, char *buf)
+{
+   return sprintf(buf, "%d.%d.%d.%d\n", HIPQUAD(nt->np.local_ip));
+}
+
+static ssize_t show_remote_ip(struct netconsole_target *nt, char *buf)
+{
+   return sprintf(buf, "%d.%d.%d.%d\n", HIPQUAD(nt->np.remote_ip));
+}
+
+static ssize_t show_local_mac(struct netconsole_target *nt, char *buf)
+{
+   return sprintf(buf, "%02x:%02x:%02x:%02x:%02x:%02x\n",
+  nt->np.local_mac[0], nt->np.local_mac[1],
+  nt->np.local_mac[2], nt->np.local_mac[3],
+  nt->np.local_mac[4], nt->np.local_mac[5]);
+}
+
+static ssize_t show_remote_mac(struct netconsole_target *nt, char *buf)
+{
+   return sprintf(buf, "%02x:%02x:%02x:%02x:%02x:%02x\n",
+  nt->np.remote_mac[0], nt->np.remote_mac[1],
+  nt->np.remote_mac[2], nt->np.remote_mac[3],
+  nt->np.remote_mac[4], nt->np.remote_mac[5]);
+}
+
+static ssize_t store_local_port(struct netconsole_target *nt, const char *buf,
+   size_t count)
+{
+   spin_lock(&target_list_lock);
+   nt->np.local_port = simple_strtol(buf, NULL, 10);
+   spin_unlock(&target_list_lock);
+
+   return count;
+}
+
+static ssize_t store_remote_port(struct netconsole_target *nt, const char *buf,
+   size_t count)
+{
+   spin_lock(&target_list_lock);
+   nt->np.remote_port = simple_strtol(buf, NULL, 10);
+   spin_unlock(&target_list_lock);
+
+   return count;
+}
+
+static ssize_t store_local_ip(struct netconsole_target *nt, const char *buf,
+ size_t count)
+{
+   spin_lock(&target_list_lock);
+   nt->np.local_ip = ntohl(in_aton(buf));
+   spin_unlock(&target_list_lock);
+
+   return count;
+}
+
+s

[RFC][PATCH -mm 0/5] proposal for dynamic configurable netconsole

2006-12-22 Thread Keiichi KII
From: Keiichi KII <[EMAIL PROTECTED]>

The netconsole is a very useful module for collecting kernel message under
certain circumstances(e.g. disk logging fails, serial port is unavailable).

But current netconsole is not flexible. For example, if you want to change ip
address for logging agent, in the case of built-in netconsole, you can't change
config except for changing boot parameter and rebooting your system, or in the
case of module netconsole, you need to reload netconsole module.

So, I propose the following extended features for netconsole.

1) support for multiple logging agents.
2) add interface to access each parameter of netconsole
   using sysfs.

This patch is for linux-2.6.20-rc1-mm1 and is divided to each function.
Your comments are very welcome.

Signed-off-by: Keiichi KII <[EMAIL PROTECTED]>
---
[changes]
1. change kernel base from 2.6.19 to 2.6.20-rc1-mm1.
-- 
Keiichi KII
NEC Corporation OSS Promotion Center
E-mail: [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 2/10] cxgb3 - main source file

2006-12-22 Thread Arjan van de Ven

> Using request_firmware assumes that the driver knows the FW file name

no it knows an ALIAS for it.

> and the driver initiates the load. That's not our model where we work
> with different FWs, don't know what the names are,

you can have the user make a symlink to the one he wants. No Big Deal.


>  and the user 
> initiates the load.

that sounds broken, but you can have a sysfs parameter for "load now";
cpu microcode has something like that as well..

but are you really sure you don't want to just do the load at "up"
time ?


-- 
if you want to mail me at work (you don't), use arjan (at) linux.intel.com
Test the interaction between Linux and your BIOS via 
http://www.linuxfirmwarekit.org

-
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] igmp: spin_lock_bh in timer (Re: BUG: soft lockup detected on CPU#0!)

2006-12-22 Thread Herbert Xu
Jarek Poplawski <[EMAIL PROTECTED]> wrote:
>
> [PATCH] igmp: spin_lock_bh in timer
> 
> igmp_timer_expire() uses spin_lock(&im->lock)
> but this lock is also taken by other igmp timers,
> so it should be changed to bh version.

When you're in a timer BH is already disabled.  So this patch
is redundant.

Thanks,
-- 
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <[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: [PATCH] fix cfg80211 WE compat code

2006-12-22 Thread Johannes Berg
On Fri, 2006-12-22 at 00:30 -0500, Pavel Roskin wrote:

> Actually, iwpriv without arguments is still hosed.  In this case,
> cfg80211_wext_ioctl() returns -EOPNOTSUPP.

Ahrg, right, probably caused by me ripping out large chunks of code of
of the base function after copying it as the cfg80211 compat code...
I'll have to take a look.

> I also noticed that cfg80211_wext_ioctl() sometimes returns 0 although
> no drivers I'm using are cfg80211 capable.

Now that really shouldn't happen.

johannes


signature.asc
Description: This is a digitally signed message part


Re: [PATCH] igmp: spin_lock_bh in timer (Re: BUG: soft lockup detected on CPU#0!)

2006-12-22 Thread Jarek Poplawski
On Fri, Dec 22, 2006 at 08:13:08AM +0100, Jarek Poplawski wrote:
> [PATCH] igmp: spin_lock_bh in timer
> 
> igmp_timer_expire() uses spin_lock(&im->lock)
> but this lock is also taken by other igmp timers,
> so it should be changed to bh version.

... but according to theory this doesn't matter.
I was suggested by this other timers, which
probably use _bh unnecessarily.

Sorry for confusion - I withdraw this patch.

Jarek P.
-
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: [Netchannels take19] new netchannel release.

2006-12-22 Thread Evgeniy Polyakov
On Fri, Dec 22, 2006 at 01:40:33AM +0100, Hans Henrik Happe ([EMAIL PROTECTED]) 
wrote:
> > Code is in development state, but I would like to hear comments about
> > overall design, features, usefullness for the kernel and get feedback on
> > kernel side.
> 
> I follow your work with great interest, even though my kernel coding 
> experience isn't great. When I get the time I would like to actually try it 
> out and provide some feedback.
> 
> For now I only follow your progress by reading your web page to get the big 
> picture. I must admit it is not easy to get the overall picture from reading 
> that, because it is mostly about small details. I think you would get a lot 
> more enthusiasm from people, if you described your work top-down. Much of the 
> work is about new interfaces and it would be very helpfull with detailed 
> descriptions of these. 
> 
> I think kevent has arrived to a level of documentation, which makes it 
> possible to get the bigger picture before digging into the code.

Although kevent has documentation, it does not help it, as we can see :)

> I know documentation is boring, especially for people who actually put their 
> ideas into code (some people like to rant about their ideas forever, without 
> actually showing any results). So don't get me wrong; I like your work, but 
> if you want more people to get excited about it, I think you need to 
> communicate it better.

I will write some documentation about overall design and interfaces (it
is a bit easier than kevent, since there is only one syscall with
everyone-likes-it multiplexor inside, and one connector based interface
for netfilter (NAT)).

> Anyway, keep up the good work!

Thank you.

> Hans Henrik 

-- 
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