Previously, the unicast variable was only initialized once during the function execution. Therefore, if unicast was set to true in the (n-1)th iteration, it would affect the nth iteration. This patch resolves the issue by reinitializing unicast to false at the start of each iteration. CHANGE: 1. Fix indention 2. Use a better way recommanded by maintainer to solve original problem 3. Fix subject 4. Remove useless if and TODO comment (added CC this time) Signed-off-by: LBLaiSiNanHai ---  drivers/net/wireless/realtek/rtlwifi/pci.c | 11 ++++-------  1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/drivers/net/wireless/realtek/rtlwifi/pci.c b/drivers/net/wireless/realtek/rtlwifi/pci.c index fe7140328..a07de6b57 100644 --- a/drivers/net/wireless/realtek/rtlwifi/pci.c +++ b/drivers/net/wireless/realtek/rtlwifi/pci.c @@ -752,16 +752,13 @@ static void _rtl_pci_rx_interrupt(struct ieee80211_hw *hw)                         memcpy(IEEE80211_SKB_RXCB(skb), &rx_status,                                sizeof(rx_status)); -      unicast = false; - -                       if (is_broadcast_ether_addr(hdr->addr1)) { -                               ;/*TODO*/ -                       } else if (is_multicast_ether_addr(hdr->addr1)) { -                               ;/*TODO*/ -                       } else { +                       if (is_unicast_ether_addr(hdr->addr1)) {                                 unicast = true;                                 rtlpriv->stats.rxbytesunicast += skb->len; +                       } else { +                               unicast = false;                         } +                         rtl_is_special_data(hw, skb, false, true);                         if (ieee80211_is_data(fc)) { -- 2.44.0