Message ID | 1433912583-15918-1-git-send-email-janusz.dziedzic@tieto.com (mailing list archive) |
---|---|
State | RFC |
Delegated to: | Kalle Valo |
Headers | show |
adding Sujith correct mail On 10 June 2015 at 07:03, Janusz Dziedzic <janusz.dziedzic@tieto.com> wrote: > This fix problem that p2p group negotiation didn't work > correctly when chanctx used, because we didn't receive > probe requests when offchannel and use_chanctx=1 > > Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com> > --- > @Felix, Sujith could you review? I am not sure I put this in correct place. > > drivers/net/wireless/ath/ath9k/channel.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/net/wireless/ath/ath9k/channel.c b/drivers/net/wireless/ath/ath9k/channel.c > index 2066650..6301d44 100644 > --- a/drivers/net/wireless/ath/ath9k/channel.c > +++ b/drivers/net/wireless/ath/ath9k/channel.c > @@ -1157,6 +1157,7 @@ static bool ath_chanctx_defer_switch(struct ath_softc *sc) > static void ath_offchannel_channel_change(struct ath_softc *sc) > { > struct ath_common *common = ath9k_hw_common(sc->sc_ah); > + u32 rfilt; > > ath_dbg(common, CHAN_CTX, "%s: offchannel state: %s\n", > __func__, offchannel_state_string(sc->offchannel.state)); > @@ -1179,6 +1180,11 @@ static void ath_offchannel_channel_change(struct ath_softc *sc) > ath_scan_complete(sc, false); > break; > case ATH_OFFCHANNEL_ROC_START: > + /* Allow to receive probe requests */ > + rfilt = ath_calcrxfilter(sc); > + rfilt |= ATH9K_RX_FILTER_PROBEREQ; > + ath9k_hw_setrxfilter(sc->sc_ah, rfilt); > + > if (sc->cur_chan != &sc->offchannel.chan) > break; > > -- > 1.9.1 > -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 2015-06-10 07:03, Janusz Dziedzic wrote: > This fix problem that p2p group negotiation didn't work > correctly when chanctx used, because we didn't receive > probe requests when offchannel and use_chanctx=1 > > Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com> > --- > @Felix, Sujith could you review? I am not sure I put this in correct place. > > drivers/net/wireless/ath/ath9k/channel.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/net/wireless/ath/ath9k/channel.c b/drivers/net/wireless/ath/ath9k/channel.c > index 2066650..6301d44 100644 > --- a/drivers/net/wireless/ath/ath9k/channel.c > +++ b/drivers/net/wireless/ath/ath9k/channel.c > @@ -1157,6 +1157,7 @@ static bool ath_chanctx_defer_switch(struct ath_softc *sc) > static void ath_offchannel_channel_change(struct ath_softc *sc) > { > struct ath_common *common = ath9k_hw_common(sc->sc_ah); > + u32 rfilt; > > ath_dbg(common, CHAN_CTX, "%s: offchannel state: %s\n", > __func__, offchannel_state_string(sc->offchannel.state)); > @@ -1179,6 +1180,11 @@ static void ath_offchannel_channel_change(struct ath_softc *sc) > ath_scan_complete(sc, false); > break; > case ATH_OFFCHANNEL_ROC_START: > + /* Allow to receive probe requests */ > + rfilt = ath_calcrxfilter(sc); > + rfilt |= ATH9K_RX_FILTER_PROBEREQ; I think ath_calcrxfilter should set this, otherwise it might be overwritten, e.g. on BB watchdog reset. - Felix -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Janusz Dziedzic wrote: > > case ATH_OFFCHANNEL_ROC_START: > > + /* Allow to receive probe requests */ > > + rfilt = ath_calcrxfilter(sc); > > + rfilt |= ATH9K_RX_FILTER_PROBEREQ; > > + ath9k_hw_setrxfilter(sc->sc_ah, rfilt); > > + ath9k_set_offchannel_state() would be a better place to do this, since setting up various bits in the HW for offchannel operation is done there. Also, it would make sure that the HW state is retained when a chip reset is done for some reason. Sujith -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/wireless/ath/ath9k/channel.c b/drivers/net/wireless/ath/ath9k/channel.c index 2066650..6301d44 100644 --- a/drivers/net/wireless/ath/ath9k/channel.c +++ b/drivers/net/wireless/ath/ath9k/channel.c @@ -1157,6 +1157,7 @@ static bool ath_chanctx_defer_switch(struct ath_softc *sc) static void ath_offchannel_channel_change(struct ath_softc *sc) { struct ath_common *common = ath9k_hw_common(sc->sc_ah); + u32 rfilt; ath_dbg(common, CHAN_CTX, "%s: offchannel state: %s\n", __func__, offchannel_state_string(sc->offchannel.state)); @@ -1179,6 +1180,11 @@ static void ath_offchannel_channel_change(struct ath_softc *sc) ath_scan_complete(sc, false); break; case ATH_OFFCHANNEL_ROC_START: + /* Allow to receive probe requests */ + rfilt = ath_calcrxfilter(sc); + rfilt |= ATH9K_RX_FILTER_PROBEREQ; + ath9k_hw_setrxfilter(sc->sc_ah, rfilt); + if (sc->cur_chan != &sc->offchannel.chan) break;
This fix problem that p2p group negotiation didn't work correctly when chanctx used, because we didn't receive probe requests when offchannel and use_chanctx=1 Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com> --- @Felix, Sujith could you review? I am not sure I put this in correct place. drivers/net/wireless/ath/ath9k/channel.c | 6 ++++++ 1 file changed, 6 insertions(+)