lkml.org 
[lkml]   [2021]   [Jul]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRE: [PATCH RFC v1 5/7] rtw88: Configure the registers from rtw_bf_assoc() outside the RCU lock
    Date

    > -----Original Message-----
    > From: Martin Blumenstingl [mailto:martin.blumenstingl@googlemail.com]
    > Sent: Sunday, July 18, 2021 4:41 AM
    > To: linux-wireless@vger.kernel.org
    > Cc: tony0620emma@gmail.com; kvalo@codeaurora.org; johannes@sipsolutions.net; netdev@vger.kernel.org;
    > linux-kernel@vger.kernel.org; Neo Jou; Jernej Skrabec; Martin Blumenstingl
    > Subject: [PATCH RFC v1 5/7] rtw88: Configure the registers from rtw_bf_assoc() outside the RCU lock
    >
    > Upcoming SDIO support may sleep in the read/write handlers. Configure
    > the chip's BFEE configuration set from rtw_bf_assoc() outside the
    > rcu_read_lock section to prevent a "scheduling while atomic" issue.
    >
    > Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    > ---
    > drivers/net/wireless/realtek/rtw88/bf.c | 8 ++++++--
    > 1 file changed, 6 insertions(+), 2 deletions(-)
    >
    > diff --git a/drivers/net/wireless/realtek/rtw88/bf.c b/drivers/net/wireless/realtek/rtw88/bf.c
    > index aff70e4ae028..06034d5d6f6c 100644
    > --- a/drivers/net/wireless/realtek/rtw88/bf.c
    > +++ b/drivers/net/wireless/realtek/rtw88/bf.c
    > @@ -39,6 +39,7 @@ void rtw_bf_assoc(struct rtw_dev *rtwdev, struct ieee80211_vif *vif,
    > struct ieee80211_sta_vht_cap *vht_cap;
    > struct ieee80211_sta_vht_cap *ic_vht_cap;
    > const u8 *bssid = bss_conf->bssid;
    > + bool config_bfee = false;
    > u32 sound_dim;
    > u8 i;
    >

    The rcu_read_lock() in this function is used to access ieee80211_find_sta() and protect 'sta'.
    A simple way is to shrink the critical section, like:

    rcu_read_lock();

    sta = ieee80211_find_sta(vif, bssid);
    if (!sta) {
    rtw_warn(rtwdev, "failed to find station entry for bss %pM\n",
    bssid);
    rcu_read_unlock();
    }

    vht_cap = &sta->vht_cap;

    rcu_read_unlock();


    --
    Ping-Ke


    \
     
     \ /
      Last update: 2021-07-19 07:48    [W:5.505 / U:0.380 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site