Search Linux Wireless

Re: ath5k oops (recent regression, I think)

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

 



On Dec 25, 2007 9:17 PM, bruno randolf <bruno@xxxxxxxxxxxxx> wrote:
>
> On Tuesday 25 December 2007 23:23:02 Nick Kossifidis wrote:
> > 2007/12/25, bruno randolf <bruno@xxxxxxxxxxxxx>:
> > > hello!
> > >
> > > i'm seeing the same oops, it seems to be a regression from
> > >
> > > commit fd640775bd16e1df50c867cc547af0787f9bd4ab
> > > Author: Johannes Berg <johannes@xxxxxxxxxxxxxxxx>
> > > Date:   Wed Dec 19 01:31:26 2007 +0100
> > >
> > >     mac80211: dont use interface indices in drivers
> > >
> > > seems ath5k likes to write some rate registers before vif is set up. i
> > > used the following as a stopgap fix. johannes, do you have any advice how
> > > to properly fix that?
> > >
> > > diff --git a/drivers/net/wireless/ath5k/hw.c
> > > b/drivers/net/wireless/ath5k/hw.c index f4478f6..2e9f5c5 100644
> > > --- a/drivers/net/wireless/ath5k/hw.c
> > > +++ b/drivers/net/wireless/ath5k/hw.c
> > > @@ -510,6 +510,11 @@ static inline void
> > > ath5k_hw_write_rate_duration(struct ath5k_hw *ah,
> > >         const struct ath5k_rate_table *rt;
> > >         unsigned int i;
> > >
> > > +       if (sc->vif == NULL) {
> > > +               printk("*** sc->vif NULL\n");
> > > +               return;
> > > +       }
> > > +
> > >         /* Get rate table for the current operating mode */
> > >         rt = ath5k_hw_get_rate_table(ah,
> > >                 driver_mode);
> > >
> > > bruno
> >
> > Seems right as it doesn't break reset, i was just thinking maybe we
> > should pass an "initial" argument on ath5k_hw_reset to also skip some
> > other step (eg. saving/restoring tsf/seqnum etc). What do you think ?
>
> sounds like a good idea.
> or/and maybe we can defer the first reset until the first interface is
> assigned? would that be possible?

NACK for that patch

Although it fixes the oops I do not think its the right solution.

We use ieee80211_generic_frame_duration() to compute what we believe
is the ACK timeout and set it on the rate duration registers, and we
need this value set during reset, as we up the interface. The *real*
problem here is we need mac80211 to provide an exported routine which
drivers can use even if they don't have an up'd interface yet IMHO.
This can be easily fixed by making ieee80211_generic_frame_duration()
not rely on sdata and letting the user pass manually if short preamble
is desired in the calculation as an arg. I have to go now but will try
to address this as soon as I have time unless someone beats me.

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