Search Linux Wireless

Re: prism54 regression in current -git

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux