Message ID | 1459545132-11295-3-git-send-email-greearb@candelatech.com (mailing list archive) |
---|---|
State | Accepted |
Commit | c5ace87a886d8ae35a7fc75a8140c2a7b3ff79b1 |
Delegated to: | Kalle Valo |
Headers | show |
Hi Ben, On Fri, Apr 01, 2016 at 02:12:10PM -0700, greearb@candelatech.com wrote: > From: Ben Greear <greearb@candelatech.com> > > Not sure this can happen, but seems like a reasonable sanity > check. [shafi] possibly if the peer is removed and the bit is not cleared in the driver ? when the new peer occupies the slot > > Signed-off-by: Ben Greear <greearb@candelatech.com> > --- > drivers/net/wireless/ath/ath10k/txrx.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/net/wireless/ath/ath10k/txrx.c b/drivers/net/wireless/ath/ath10k/txrx.c > index a779a4e..2edef8a 100644 > --- a/drivers/net/wireless/ath/ath10k/txrx.c > +++ b/drivers/net/wireless/ath/ath10k/txrx.c > @@ -309,6 +309,7 @@ void ath10k_peer_map_event(struct ath10k_htt *htt, > ath10k_warn(ar, /*ATH10K_DBG_HTT,*/ "htt peer map vdev %d peer %pM id %d\n", > ev->vdev_id, ev->addr, ev->peer_id); > > + WARN_ON(ar->peer_map[ev->peer_id] && (ar->peer_map[ev->peer_id] != peer)); > ar->peer_map[ev->peer_id] = peer; > set_bit(ev->peer_id, peer->peer_ids); > exit: > -- > 2.4.3 regards, shafi > > > _______________________________________________ > ath10k mailing list > ath10k@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/ath10k
On 05/10/2016 12:12 AM, Mohammed Shafi Shajakhan wrote: > Hi Ben, > > On Fri, Apr 01, 2016 at 02:12:10PM -0700, greearb@candelatech.com wrote: >> From: Ben Greear <greearb@candelatech.com> >> >> Not sure this can happen, but seems like a reasonable sanity >> check. > > [shafi] possibly if the peer is removed and the bit is not cleared in the driver > ? when the new peer occupies the slot A firmware bug could cause this, but I never saw this WARN hit. Still seems like a good sanity check to me, though...it would be quite hard to debug this sort of bug if it actually did happen. Thanks, Ben > >> >> Signed-off-by: Ben Greear <greearb@candelatech.com> >> --- >> drivers/net/wireless/ath/ath10k/txrx.c | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/drivers/net/wireless/ath/ath10k/txrx.c b/drivers/net/wireless/ath/ath10k/txrx.c >> index a779a4e..2edef8a 100644 >> --- a/drivers/net/wireless/ath/ath10k/txrx.c >> +++ b/drivers/net/wireless/ath/ath10k/txrx.c >> @@ -309,6 +309,7 @@ void ath10k_peer_map_event(struct ath10k_htt *htt, >> ath10k_warn(ar, /*ATH10K_DBG_HTT,*/ "htt peer map vdev %d peer %pM id %d\n", >> ev->vdev_id, ev->addr, ev->peer_id); >> >> + WARN_ON(ar->peer_map[ev->peer_id] && (ar->peer_map[ev->peer_id] != peer)); >> ar->peer_map[ev->peer_id] = peer; >> set_bit(ev->peer_id, peer->peer_ids); >> exit: >> -- >> 2.4.3 > > regards, > shafi > >> >> >> _______________________________________________ >> ath10k mailing list >> ath10k@lists.infradead.org >> http://lists.infradead.org/mailman/listinfo/ath10k > > _______________________________________________ > ath10k mailing list > ath10k@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/ath10k >
On Tue, May 10, 2016 at 07:41:44AM -0700, Ben Greear wrote: > > > On 05/10/2016 12:12 AM, Mohammed Shafi Shajakhan wrote: > >Hi Ben, > > > >On Fri, Apr 01, 2016 at 02:12:10PM -0700, greearb@candelatech.com wrote: > >>From: Ben Greear <greearb@candelatech.com> > >> > >>Not sure this can happen, but seems like a reasonable sanity > >>check. > > > >[shafi] possibly if the peer is removed and the bit is not cleared in the driver > >? when the new peer occupies the slot > > A firmware bug could cause this, but I never saw this WARN hit. Still seems like > a good sanity check to me, though...it would be quite hard to debug this sort of bug > if it actually did happen. [shafi] yeah its good to have, in one of the case i saw a duplicate event (though its harmless ) > > > > >> > >>Signed-off-by: Ben Greear <greearb@candelatech.com> > >>--- > >> drivers/net/wireless/ath/ath10k/txrx.c | 1 + > >> 1 file changed, 1 insertion(+) > >> > >>diff --git a/drivers/net/wireless/ath/ath10k/txrx.c b/drivers/net/wireless/ath/ath10k/txrx.c > >>index a779a4e..2edef8a 100644 > >>--- a/drivers/net/wireless/ath/ath10k/txrx.c > >>+++ b/drivers/net/wireless/ath/ath10k/txrx.c > >>@@ -309,6 +309,7 @@ void ath10k_peer_map_event(struct ath10k_htt *htt, > >> ath10k_warn(ar, /*ATH10K_DBG_HTT,*/ "htt peer map vdev %d peer %pM id %d\n", > >> ev->vdev_id, ev->addr, ev->peer_id); > >> > >>+ WARN_ON(ar->peer_map[ev->peer_id] && (ar->peer_map[ev->peer_id] != peer)); > >> ar->peer_map[ev->peer_id] = peer; > >> set_bit(ev->peer_id, peer->peer_ids); > >> exit: > >>-- > >>2.4.3 > > > >regards, > >shafi > > > >> > >> > >>_______________________________________________ > >>ath10k mailing list > >>ath10k@lists.infradead.org > >>http://lists.infradead.org/mailman/listinfo/ath10k > > > >_______________________________________________ > >ath10k mailing list > >ath10k@lists.infradead.org > >http://lists.infradead.org/mailman/listinfo/ath10k > > > > -- > Ben Greear <greearb@candelatech.com> > Candela Technologies Inc http://www.candelatech.com > > _______________________________________________ > ath10k mailing list > ath10k@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/ath10k
Ben Greear <greearb@candelatech.com> wrote: > From: Ben Greear <greearb@candelatech.com> > > Not sure this can happen, but seems like a reasonable sanity > check. > > Signed-off-by: Ben Greear <greearb@candelatech.com> Thanks, 2 patches applied to ath-next branch of ath.git: c5ace87a886d ath10k: Add WARN_ON if we over-write peer-map pointer. d0eeafad1189 ath10k: Clean up peer when sta goes away.
diff --git a/drivers/net/wireless/ath/ath10k/txrx.c b/drivers/net/wireless/ath/ath10k/txrx.c index a779a4e..2edef8a 100644 --- a/drivers/net/wireless/ath/ath10k/txrx.c +++ b/drivers/net/wireless/ath/ath10k/txrx.c @@ -309,6 +309,7 @@ void ath10k_peer_map_event(struct ath10k_htt *htt, ath10k_warn(ar, /*ATH10K_DBG_HTT,*/ "htt peer map vdev %d peer %pM id %d\n", ev->vdev_id, ev->addr, ev->peer_id); + WARN_ON(ar->peer_map[ev->peer_id] && (ar->peer_map[ev->peer_id] != peer)); ar->peer_map[ev->peer_id] = peer; set_bit(ev->peer_id, peer->peer_ids); exit: