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.12 436/700] 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 ce4eae7f1e44..39be2e396269 100644
    --- a/drivers/net/wireless/mediatek/mt76/mt7921/mac.c
    +++ b/drivers/net/wireless/mediatek/mt76/mt7921/mac.c
    @@ -420,16 +420,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:10    [W:2.497 / U:0.768 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site