lkml.org 
[lkml]   [2018]   [Apr]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL for 4.9 127/293] iwlwifi: mvm: track and report IBSS manager status to mac80211
    Date
    From: Johannes Berg <johannes.berg@intel.com>

    [ Upstream commit 2f0282db41194c0099a019b2761911d6c69cbdb9 ]

    Shaul reported that when iwlmvm was sending beacons, it didn't properly
    also take ownership of the probe responses. This is because the whole
    mac80211 callback (tx_last_beacon) wasn't implemented. Fix that to make
    IBSS discovery work better.

    Reported-by: Shaul Triebitz <shaul.triebitz@intel.com>
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    ---
    drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c | 1 +
    drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | 9 +++++++++
    drivers/net/wireless/intel/iwlwifi/mvm/mvm.h | 3 +++
    3 files changed, 13 insertions(+)

    diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c b/drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c
    index 6b962d6b067a..ee8b12424d03 100644
    --- a/drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c
    +++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c
    @@ -1434,6 +1434,7 @@ void iwl_mvm_rx_beacon_notif(struct iwl_mvm *mvm,

    beacon_notify_hdr = &beacon->beacon_notify_hdr;
    mvm->ap_last_beacon_gp2 = le32_to_cpu(beacon->gp2);
    + mvm->ibss_manager = beacon->ibss_mgr_status != 0;

    status = le16_to_cpu(beacon_notify_hdr->status.status) & TX_STATUS_MSK;
    IWL_DEBUG_RX(mvm,
    diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
    index f1231c0ea336..3d6401eafe52 100644
    --- a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
    +++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
    @@ -3621,6 +3621,13 @@ static int iwl_mvm_switch_vif_chanctx(struct ieee80211_hw *hw,
    return ret;
    }

    +static int iwl_mvm_tx_last_beacon(struct ieee80211_hw *hw)
    +{
    + struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw);
    +
    + return mvm->ibss_manager;
    +}
    +
    static int iwl_mvm_set_tim(struct ieee80211_hw *hw,
    struct ieee80211_sta *sta,
    bool set)
    @@ -4218,6 +4225,8 @@ const struct ieee80211_ops iwl_mvm_hw_ops = {
    .join_ibss = iwl_mvm_start_ap_ibss,
    .leave_ibss = iwl_mvm_stop_ap_ibss,

    + .tx_last_beacon = iwl_mvm_tx_last_beacon,
    +
    .set_tim = iwl_mvm_set_tim,

    .channel_switch = iwl_mvm_channel_switch,
    diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h b/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h
    index c60703e0c246..49e84efbbb0e 100644
    --- a/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h
    +++ b/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h
    @@ -989,6 +989,9 @@ struct iwl_mvm {
    /* system time of last beacon (for AP/GO interface) */
    u32 ap_last_beacon_gp2;

    + /* indicates that we transmitted the last beacon */
    + bool ibss_manager;
    +
    bool lar_regdom_set;
    enum iwl_mcc_source mcc_src;

    --
    2.15.1
    \
     
     \ /
      Last update: 2018-04-09 04:20    [W:4.103 / U:0.272 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site