[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240620175703.605111-13-yury.norov@gmail.com>
Date: Thu, 20 Jun 2024 10:56:35 -0700
From: Yury Norov <yury.norov@...il.com>
To: linux-kernel@...r.kernel.org,
Ping-Ke Shih <pkshih@...ltek.com>,
Kalle Valo <kvalo@...nel.org>,
linux-wireless@...r.kernel.org
Cc: Yury Norov <yury.norov@...il.com>,
Alexey Klimov <alexey.klimov@...aro.org>,
Bart Van Assche <bvanassche@....org>,
Jan Kara <jack@...e.cz>,
Linus Torvalds <torvalds@...ux-foundation.org>,
Matthew Wilcox <willy@...radead.org>,
Mirsad Todorovac <mirsad.todorovac@....unizg.hr>,
Rasmus Villemoes <linux@...musvillemoes.dk>,
Sergey Shtylyov <s.shtylyov@....ru>
Subject: [PATCH v4 12/40] wifi: rtw88: optimize the driver by using atomic iterator
rtw_pci_tx_kick_off() and rtw89_pci_tx_kick_off_pending() traverse bitmaps
bit by bit. Simplify it by using atomic for_each_test_and_clear_bit()
iterator.
Signed-off-by: Yury Norov <yury.norov@...il.com>
---
drivers/net/wireless/realtek/rtw88/pci.c | 6 +++---
drivers/net/wireless/realtek/rtw89/pci.c | 6 ++----
2 files changed, 5 insertions(+), 7 deletions(-)
diff --git a/drivers/net/wireless/realtek/rtw88/pci.c b/drivers/net/wireless/realtek/rtw88/pci.c
index 30232f7e3ec5..28c0f4c99cf8 100644
--- a/drivers/net/wireless/realtek/rtw88/pci.c
+++ b/drivers/net/wireless/realtek/rtw88/pci.c
@@ -2,6 +2,7 @@
/* Copyright(c) 2018-2019 Realtek Corporation
*/
+#include <linux/find_atomic.h>
#include <linux/module.h>
#include <linux/pci.h>
#include "main.h"
@@ -790,9 +791,8 @@ static void rtw_pci_tx_kick_off(struct rtw_dev *rtwdev)
struct rtw_pci *rtwpci = (struct rtw_pci *)rtwdev->priv;
enum rtw_tx_queue_type queue;
- for (queue = 0; queue < RTK_MAX_TX_QUEUE_NUM; queue++)
- if (test_and_clear_bit(queue, rtwpci->tx_queued))
- rtw_pci_tx_kick_off_queue(rtwdev, queue);
+ for_each_test_and_clear_bit(queue, rtwpci->tx_queued, RTK_MAX_TX_QUEUE_NUM)
+ rtw_pci_tx_kick_off_queue(rtwdev, queue);
}
static int rtw_pci_tx_write_data(struct rtw_dev *rtwdev,
diff --git a/drivers/net/wireless/realtek/rtw89/pci.c b/drivers/net/wireless/realtek/rtw89/pci.c
index 03bbcf9b6737..deb06cab5974 100644
--- a/drivers/net/wireless/realtek/rtw89/pci.c
+++ b/drivers/net/wireless/realtek/rtw89/pci.c
@@ -2,6 +2,7 @@
/* Copyright(c) 2020 Realtek Corporation
*/
+#include <linux/find_atomic.h>
#include <linux/pci.h>
#include "mac.h"
@@ -1234,10 +1235,7 @@ static void rtw89_pci_tx_kick_off_pending(struct rtw89_dev *rtwdev)
struct rtw89_pci_tx_ring *tx_ring;
int txch;
- for (txch = 0; txch < RTW89_TXCH_NUM; txch++) {
- if (!test_and_clear_bit(txch, rtwpci->kick_map))
- continue;
-
+ for_each_test_and_clear_bit(txch, rtwpci->kick_map, RTW89_TXCH_NUM) {
tx_ring = &rtwpci->tx_rings[txch];
__rtw89_pci_tx_kick_off(rtwdev, tx_ring);
}
--
2.43.0
Powered by blists - more mailing lists