lkml.org 
[lkml]   [2021]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.13 495/800] mt76: mt7921: consider the invalid value for to_rssi
    Date
    From: Sean Wang <sean.wang@mediatek.com>

    [ Upstream commit edb5aebc1c3db312e74e1dcf75b8626ee5300596 ]

    It is possible the RCPI from the certain antenna is an invalid value,
    especially packets are receiving while the system is frequently entering
    deep sleep mode, so consider calculating RSSI with the reasonable upper
    bound to avoid report the wrong value to the mac80211 layer.

    Fixes: 163f4d22c118 ("mt76: mt7921: add MAC support")
    Reviewed-by: Lorenzo Bianconi <lorenzo@kernel.org>
    Signed-off-by: Sean Wang <sean.wang@mediatek.com>
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/wireless/mediatek/mt76/mt7921/mac.c | 11 +++++++----
    1 file changed, 7 insertions(+), 4 deletions(-)

    diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/mac.c b/drivers/net/wireless/mediatek/mt76/mt7921/mac.c
    index decf2d5f0ce3..9bb88b2e28a9 100644
    --- a/drivers/net/wireless/mediatek/mt76/mt7921/mac.c
    +++ b/drivers/net/wireless/mediatek/mt76/mt7921/mac.c
    @@ -444,16 +444,19 @@ int mt7921_mac_fill_rx(struct mt7921_dev *dev, struct sk_buff *skb)
    status->chain_signal[1] = to_rssi(MT_PRXV_RCPI1, v1);
    status->chain_signal[2] = to_rssi(MT_PRXV_RCPI2, v1);
    status->chain_signal[3] = to_rssi(MT_PRXV_RCPI3, v1);
    - status->signal = status->chain_signal[0];
    -
    - for (i = 1; i < hweight8(mphy->antenna_mask); i++) {
    - if (!(status->chains & BIT(i)))
    + status->signal = -128;
    + for (i = 0; i < hweight8(mphy->antenna_mask); i++) {
    + if (!(status->chains & BIT(i)) ||
    + status->chain_signal[i] >= 0)
    continue;

    status->signal = max(status->signal,
    status->chain_signal[i]);
    }

    + if (status->signal == -128)
    + status->flag |= RX_FLAG_NO_SIGNAL_VAL;
    +
    stbc = FIELD_GET(MT_PRXV_STBC, v0);
    gi = FIELD_GET(MT_PRXV_SGI, v0);
    cck = false;
    --
    2.30.2


    \
     
     \ /
      Last update: 2021-07-12 10:41    [W:2.876 / U:0.136 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site