Bruno Randolf <b...@einfach.org> writes:
> mac80211 documentation says, the ieee80211_ops.start callback "must turn on
> frame reception (for possibly enabled monitor interfaces.)". If not a single
> monitor interface does not receive data frames.
>
> Similarly we should not change the data reception based on the association
> state.
>
> Signed-off-by: Bruno Randolf <b...@einfach.org>
> ---
>  drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c | 12 ++----------
>  1 file changed, 2 insertions(+), 10 deletions(-)

Bruno,

Thanks - I am not 100% convinced about this one. I don't think we should
tell the firmware to pass up data frames before we have negotiated the
connection.

It's true that for monitor mode, we need to enable it if all packets
are requested. Looking at iw there is an option where it only requests
control packets, and one for all, etc. However for non monitor mode, we
shouldn't pass all data packets up to the stack, resulting and have
mac80211 parse them all.

Cheers,
Jes


>
> diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c 
> b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
> index 0399b1e..ae490e7 100644
> --- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
> +++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
> @@ -4475,9 +4475,6 @@ rtl8xxxu_bss_info_changed(struct ieee80211_hw *hw, 
> struct ieee80211_vif *vif,
>  
>                       rtl8xxxu_update_rate_mask(priv, ramask, sgi);
>  
> -                     /* Enable RX of data frames */
> -                     rtl8xxxu_write16(priv, REG_RXFLTMAP2, 0xffff);
> -
>                       rtl8xxxu_write8(priv, REG_BCN_MAX_ERR, 0xff);
>  
>                       rtl8723a_stop_tx_beacon(priv);
> @@ -4492,8 +4489,6 @@ rtl8xxxu_bss_info_changed(struct ieee80211_hw *hw, 
> struct ieee80211_vif *vif,
>                       val8 |= BEACON_DISABLE_TSF_UPDATE;
>                       rtl8xxxu_write8(priv, REG_BEACON_CTRL, val8);
>  
> -                     /* Disable RX of data frames */
> -                     rtl8xxxu_write16(priv, REG_RXFLTMAP2, 0x0000);
>                       h2c.joinbss.data = H2C_JOIN_BSS_DISCONNECT;
>               }
>               h2c.joinbss.cmd = H2C_JOIN_BSS_REPORT;
> @@ -5495,12 +5490,9 @@ static int rtl8xxxu_start(struct ieee80211_hw *hw)
>       }
>  exit:
>       /*
> -      * Disable all data frames
> -      */
> -     rtl8xxxu_write16(priv, REG_RXFLTMAP2, 0x0000);
> -     /*
> -      * Accept all mgmt frames
> +      * Accept all data and mgmt frames
>        */
> +     rtl8xxxu_write16(priv, REG_RXFLTMAP2, 0xffff);
>       rtl8xxxu_write16(priv, REG_RXFLTMAP0, 0xffff);
>  
>       rtl8xxxu_write32(priv, REG_OFDM0_XA_AGC_CORE1, 0x6954341e);
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to