On Tue, Apr 22, 2008 at 10:50:27AM -0700, Luis R. Rodriguez wrote: > On Tue, Apr 22, 2008 at 7:56 AM, Patrick McHardy <kaber@xxxxxxxxx> wrote: > > > > Dan Williams wrote: > > > > > On Tue, 2008-04-22 at 06:42 +0200, Patrick McHardy wrote: > > > > > > > The patch "prism54: set carrier flags correctly" makes my > > > > prism54 device in AP mode come up without a carrier, which > > > > in causes IPv6 to not add a link-local address, which in > > > > turn causes radvd (configured to announce routes on that > > > > device) to refuse to start, breaking IPv6 for the entire > > > > network. > > > > > > > > I didn't check whether a carrier is detected once a client > > > > associates, but in any case it seems to me that a device > > > > in AP mode should always indicate a carrier. > > > > > > > > > > Should always indicate a carrier _when it's configured and up_. If you > > > just go 'iwconfig eth1 mode master' it shouldn't, but if you do: > > > > > > ifconfig eth1 up > > > iwconfig eth1 mode master essid foobar > > > > > > then it should. > > > > > > > Yes, it was up and running of course. No carrier though. > > Good catch. The carrier is set upon a firmware trigger so it is > possible that when in AP mode we don't hit the trigger in firmware. I > left open the possibility for this happening and go figure it happens. > Even if we had docs this probably wouldn't be documented :) I'll try > to cook up an exception patch now. Let me know if this fixes it. Signed-off-by: Luis R. Rodriguez <lrodriguez@xxxxxxxxxxx> diff --git a/drivers/net/wireless/prism54/islpci_dev.c b/drivers/net/wireless/prism54/islpci_dev.c index 04c2638..9196825 100644 --- a/drivers/net/wireless/prism54/islpci_dev.c +++ b/drivers/net/wireless/prism54/islpci_dev.c @@ -388,8 +388,15 @@ islpci_open(struct net_device *ndev) netif_start_queue(ndev); - /* Turn off carrier unless we know we have associated */ - netif_carrier_off(ndev); + /* Turn off carrier if in STA or Ad-hoc mode. It will be turned on + * once the firmware receives a trap of being associated + * (GEN_OID_LINKSTATE). In other modes (AP or WDS or monitor) we + * should just leave the carrier on as its expected the firmware + * won't send us a trigger. */ + if (priv->iw_mode == IW_MODE_INFRA || priv->iw_mode == IW_MODE_ADHOC) + netif_carrier_off(ndev); + else + netif_carrier_on(ndev); return 0; } -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html