Skip to contentSkip to conversation

wifi: rtw88: Constify some arrays and structs

PATCH In review Bitterblue Smith 2 participants 9 messages Sep 17, 2024 – Sep 26, 2024 Realtek wireless driver (rtw88)

lore
Share & tools
lore
#0 lore raw

PATCH 1/2 wifi: rtw88: Constify some arrays and structs

These are never modified, so make them const:

card_enable_flow_8703b
card_disable_flow_8703b
rtw8703b_ops

rtw8723d_ops
card_enable_flow_8723d
card_disable_flow_8723d

trans_carddis_to_cardemu_8821c
trans_cardemu_to_act_8821c
trans_act_to_cardemu_8821c
trans_cardemu_to_carddis_8821c
card_enable_flow_8821c
card_disable_flow_8821c
rtw8821c_dig
page_table_8821c
rqpn_table_8821c
prioq_addrs_8821c
rtw8821c_ops

card_enable_flow_8822b
card_disable_flow_8822b
prioq_addrs_8822b
rtw8822b_ops
rtw8822b_edcca_th

card_enable_flow_8822c
card_disable_flow_8822c
prioq_addrs_8822c
rtw8822c_ops
rtw8822c_edcca_th

---
These two patches will be required for the upcoming v2 of the RTL8821AU/RTL8812AU patches. (Those are still in progress.)

---
 drivers/net/wireless/realtek/rtw88/fw.c       |  2 +-
 drivers/net/wireless/realtek/rtw88/mac.c      |  4 ++--
 drivers/net/wireless/realtek/rtw88/main.h     |  8 +++----
 drivers/net/wireless/realtek/rtw88/phy.c      |  2 +-
 drivers/net/wireless/realtek/rtw88/rtw8703b.c |  6 ++---
 drivers/net/wireless/realtek/rtw88/rtw8723d.c |  6 ++---
 drivers/net/wireless/realtek/rtw88/rtw8821c.c | 22 +++++++++----------
 drivers/net/wireless/realtek/rtw88/rtw8822b.c | 10 ++++-----
 drivers/net/wireless/realtek/rtw88/rtw8822c.c | 10 ++++-----
 9 files changed, 35 insertions(+), 35 deletions(-)
drivers/net/wireless/realtek/rtw88/fw.c +1 -1
index b9b0114e253b..813c12148819 100644
@@ -267,7 +267,7 @@ static void rtw_fw_scan_result(struct rtw_dev *rtwdev, u8 *payload,
 static void rtw_fw_adaptivity_result(struct rtw_dev *rtwdev, u8 *payload,
 				     u8 length)
 {
-	struct rtw_hw_reg_offset *edcca_th = rtwdev->chip->edcca_th;
+	const struct rtw_hw_reg_offset *edcca_th = rtwdev->chip->edcca_th;
 	struct rtw_c2h_adaptivity *result = (struct rtw_c2h_adaptivity *)payload;
 
 	rtw_dbg(rtwdev, RTW_DBG_ADAPTIVITY,
drivers/net/wireless/realtek/rtw88/mac.c +2 -2
index 564f5988ee82..e5abcc20b63c 100644
@@ -228,7 +228,7 @@ static int rtw_sub_pwr_seq_parser(struct rtw_dev *rtwdev, u8 intf_mask,
 }
 
 static int rtw_pwr_seq_parser(struct rtw_dev *rtwdev,
-			      const struct rtw_pwr_seq_cmd **cmd_seq)
+			      const struct rtw_pwr_seq_cmd * const *cmd_seq)
 {
 	u8 cut_mask;
 	u8 intf_mask;
@@ -271,7 +271,7 @@ static int rtw_pwr_seq_parser(struct rtw_dev *rtwdev,
 static int rtw_mac_power_switch(struct rtw_dev *rtwdev, bool pwr_on)
 {
 	const struct rtw_chip_info *chip = rtwdev->chip;
-	const struct rtw_pwr_seq_cmd **pwr_seq;
+	const struct rtw_pwr_seq_cmd * const *pwr_seq;
 	u32 imr = 0;
 	u8 rpwm;
 	bool cur_pwr;
drivers/net/wireless/realtek/rtw88/main.h +4 -4
index 945117afe143..83180c488c37 100644
@@ -1167,7 +1167,7 @@ enum rtw_fwcd_item {
 
 /* hardware configuration for each IC */
 struct rtw_chip_info {
-	struct rtw_chip_ops *ops;
+	const struct rtw_chip_ops *ops;
 	u8 id;
 
 	const char *fw_name;
@@ -1209,8 +1209,8 @@ struct rtw_chip_info {
 
 	/* init values */
 	u8 sys_func_en;
-	const struct rtw_pwr_seq_cmd **pwr_on_seq;
-	const struct rtw_pwr_seq_cmd **pwr_off_seq;
+	const struct rtw_pwr_seq_cmd * const *pwr_on_seq;
+	const struct rtw_pwr_seq_cmd * const *pwr_off_seq;
 	const struct rtw_rqpn *rqpn_table;
 	const struct rtw_prioq_addrs *prioq_addrs;
 	const struct rtw_page_table *page_table;
@@ -1242,7 +1242,7 @@ struct rtw_chip_info {
 	u8 bfer_su_max_num;
 	u8 bfer_mu_max_num;
 
-	struct rtw_hw_reg_offset *edcca_th;
+	const struct rtw_hw_reg_offset *edcca_th;
 	s8 l2h_th_ini_cs;
 	s8 l2h_th_ini_ad;
 
drivers/net/wireless/realtek/rtw88/phy.c +1 -1
index 37ef80c9091d..d57a2aabd89b 100644
@@ -123,7 +123,7 @@ static void rtw_phy_cck_pd_init(struct rtw_dev *rtwdev)
 
 void rtw_phy_set_edcca_th(struct rtw_dev *rtwdev, u8 l2h, u8 h2l)
 {
-	struct rtw_hw_reg_offset *edcca_th = rtwdev->chip->edcca_th;
+	const struct rtw_hw_reg_offset *edcca_th = rtwdev->chip->edcca_th;
 
 	rtw_write32_mask(rtwdev,
 			 edcca_th[EDCCA_TH_L2H_IDX].hw_reg.addr,
drivers/net/wireless/realtek/rtw88/rtw8703b.c +3 -3
index 222608de33cd..e3ac748ad646 100644
@@ -481,14 +481,14 @@ static const struct rtw_pwr_seq_cmd trans_act_to_lps_8703b[] = {
 	{TRANS_SEQ_END},
 };
 
-static const struct rtw_pwr_seq_cmd *card_enable_flow_8703b[] = {
+static const struct rtw_pwr_seq_cmd * const card_enable_flow_8703b[] = {
 	trans_pre_enable_8703b,
 	trans_carddis_to_cardemu_8703b,
 	trans_cardemu_to_act_8703b,
 	NULL
 };
 
-static const struct rtw_pwr_seq_cmd *card_disable_flow_8703b[] = {
+static const struct rtw_pwr_seq_cmd * const card_disable_flow_8703b[] = {
 	trans_act_to_lps_8703b,
 	trans_act_to_reset_mcu_8703b,
 	trans_act_to_cardemu_8703b,
@@ -1941,7 +1941,7 @@ static const struct coex_tdma_para tdma_sant_8703b[] = {
 	{ {0x61, 0x08, 0x03, 0x11, 0x11} },
 };
 
-static struct rtw_chip_ops rtw8703b_ops = {
+static const struct rtw_chip_ops rtw8703b_ops = {
 	.mac_init		= rtw8723x_mac_init,
 	.dump_fw_crash		= NULL,
 	.shutdown		= NULL,
drivers/net/wireless/realtek/rtw88/rtw8723d.c +3 -3
index 3fba4054d45f..7f33e141e646 100644
@@ -1430,7 +1430,7 @@ static void rtw8723d_pwr_track(struct rtw_dev *rtwdev)
 	dm_info->pwr_trk_triggered = false;
 }
 
-static struct rtw_chip_ops rtw8723d_ops = {
+static const struct rtw_chip_ops rtw8723d_ops = {
 	.phy_set_param		= rtw8723d_phy_set_param,
 	.read_efuse		= rtw8723x_read_efuse,
 	.query_rx_desc		= rtw8723d_query_rx_desc,
@@ -1788,7 +1788,7 @@ static const struct rtw_pwr_seq_cmd trans_cardemu_to_act_8723d[] = {
 	 RTW_PWR_CMD_END, 0, 0},
 };
 
-static const struct rtw_pwr_seq_cmd *card_enable_flow_8723d[] = {
+static const struct rtw_pwr_seq_cmd * const card_enable_flow_8723d[] = {
 	trans_carddis_to_cardemu_8723d,
 	trans_cardemu_to_act_8723d,
 	NULL
@@ -2004,7 +2004,7 @@ static const struct rtw_pwr_seq_cmd trans_act_to_post_carddis_8723d[] = {
 	 RTW_PWR_CMD_END, 0, 0},
 };
 
-static const struct rtw_pwr_seq_cmd *card_disable_flow_8723d[] = {
+static const struct rtw_pwr_seq_cmd * const card_disable_flow_8723d[] = {
 	trans_act_to_lps_8723d,
 	trans_act_to_pre_carddis_8723d,
 	trans_act_to_cardemu_8723d,
drivers/net/wireless/realtek/rtw88/rtw8821c.c +11 -11
index 526e8de77b3e..9d21c4b1450e 100644
@@ -1254,7 +1254,7 @@ static void rtw8821c_fill_txdesc_checksum(struct rtw_dev *rtwdev,
 	fill_txdesc_checksum_common(txdesc, 16);
 }
 
-static struct rtw_pwr_seq_cmd trans_carddis_to_cardemu_8821c[] = {
+static const struct rtw_pwr_seq_cmd trans_carddis_to_cardemu_8821c[] = {
 	{0x0086,
 	 RTW_PWR_CUT_ALL_MSK,
 	 RTW_PWR_INTF_SDIO_MSK,
@@ -1292,7 +1292,7 @@ static struct rtw_pwr_seq_cmd trans_carddis_to_cardemu_8821c[] = {
 	 RTW_PWR_CMD_END, 0, 0},
 };
 
-static struct rtw_pwr_seq_cmd trans_cardemu_to_act_8821c[] = {
+static const struct rtw_pwr_seq_cmd trans_cardemu_to_act_8821c[] = {
 	{0x0020,
 	 RTW_PWR_CUT_ALL_MSK,
 	 RTW_PWR_INTF_USB_MSK | RTW_PWR_INTF_SDIO_MSK,
@@ -1396,7 +1396,7 @@ static struct rtw_pwr_seq_cmd trans_cardemu_to_act_8821c[] = {
 	 RTW_PWR_CMD_END, 0, 0},
 };
 
-static struct rtw_pwr_seq_cmd trans_act_to_cardemu_8821c[] = {
+static const struct rtw_pwr_seq_cmd trans_act_to_cardemu_8821c[] = {
 	{0x0093,
 	 RTW_PWR_CUT_ALL_MSK,
 	 RTW_PWR_INTF_ALL_MSK,
@@ -1454,7 +1454,7 @@ static struct rtw_pwr_seq_cmd trans_act_to_cardemu_8821c[] = {
 	 RTW_PWR_CMD_END, 0, 0},
 };
 
-static struct rtw_pwr_seq_cmd trans_cardemu_to_carddis_8821c[] = {
+static const struct rtw_pwr_seq_cmd trans_cardemu_to_carddis_8821c[] = {
 	{0x0007,
 	 RTW_PWR_CUT_ALL_MSK,
 	 RTW_PWR_INTF_USB_MSK | RTW_PWR_INTF_SDIO_MSK,
@@ -1567,13 +1567,13 @@ static struct rtw_pwr_seq_cmd trans_cardemu_to_carddis_8821c[] = {
 	 RTW_PWR_CMD_END, 0, 0},
 };
 
-static const struct rtw_pwr_seq_cmd *card_enable_flow_8821c[] = {
+static const struct rtw_pwr_seq_cmd * const card_enable_flow_8821c[] = {
 	trans_carddis_to_cardemu_8821c,
 	trans_cardemu_to_act_8821c,
 	NULL
 };
 
-static const struct rtw_pwr_seq_cmd *card_disable_flow_8821c[] = {
+static const struct rtw_pwr_seq_cmd * const card_disable_flow_8821c[] = {
 	trans_act_to_cardemu_8821c,
 	trans_cardemu_to_carddis_8821c,
 	NULL
@@ -1629,7 +1629,7 @@ static const struct rtw_rfe_def rtw8821c_rfe_defs[] = {
 	[6] = RTW_DEF_RFE(8821c, 0, 0),
 };
 
-static struct rtw_hw_reg rtw8821c_dig[] = {
+static const struct rtw_hw_reg rtw8821c_dig[] = {
 	[0] = { .addr = 0xc50, .mask = 0x7f },
 };
 
@@ -1639,7 +1639,7 @@ static const struct rtw_ltecoex_addr rtw8821c_ltecoex_addr = {
 	.rdata = LTECOEX_READ_DATA,
 };
 
-static struct rtw_page_table page_table_8821c[] = {
+static const struct rtw_page_table page_table_8821c[] = {
 	/* not sure what [0] stands for */
 	{16, 16, 16, 14, 1},
 	{16, 16, 16, 14, 1},
@@ -1648,7 +1648,7 @@ static struct rtw_page_table page_table_8821c[] = {
 	{16, 16, 16, 14, 1},
 };
 
-static struct rtw_rqpn rqpn_table_8821c[] = {
+static const struct rtw_rqpn rqpn_table_8821c[] = {
 	/* not sure what [0] stands for */
 	{RTW_DMA_MAPPING_NORMAL, RTW_DMA_MAPPING_NORMAL,
 	 RTW_DMA_MAPPING_LOW, RTW_DMA_MAPPING_LOW,
@@ -1667,7 +1667,7 @@ static struct rtw_rqpn rqpn_table_8821c[] = {
 	 RTW_DMA_MAPPING_EXTRA, RTW_DMA_MAPPING_HIGH},
 };
 
-static struct rtw_prioq_addrs prioq_addrs_8821c = {
+static const struct rtw_prioq_addrs prioq_addrs_8821c = {
 	.prio[RTW_DMA_MAPPING_EXTRA] = {
 		.rsvd = REG_FIFOPAGE_INFO_4, .avail = REG_FIFOPAGE_INFO_4 + 2,
 	},
@@ -1683,7 +1683,7 @@ static struct rtw_prioq_addrs prioq_addrs_8821c = {
 	.wsize = true,
 };
 
-static struct rtw_chip_ops rtw8821c_ops = {
+static const struct rtw_chip_ops rtw8821c_ops = {
 	.phy_set_param		= rtw8821c_phy_set_param,
 	.read_efuse		= rtw8821c_read_efuse,
 	.query_rx_desc		= rtw8821c_query_rx_desc,
drivers/net/wireless/realtek/rtw88/rtw8822b.c +5 -5
index 6edb17aea90e..650585086e8f 100644
@@ -1978,13 +1978,13 @@ static const struct rtw_pwr_seq_cmd trans_cardemu_to_carddis_8822b[] = {
 	 RTW_PWR_CMD_END, 0, 0},
 };
 
-static const struct rtw_pwr_seq_cmd *card_enable_flow_8822b[] = {
+static const struct rtw_pwr_seq_cmd * const card_enable_flow_8822b[] = {
 	trans_carddis_to_cardemu_8822b,
 	trans_cardemu_to_act_8822b,
 	NULL
 };
 
-static const struct rtw_pwr_seq_cmd *card_disable_flow_8822b[] = {
+static const struct rtw_pwr_seq_cmd * const card_disable_flow_8822b[] = {
 	trans_act_to_cardemu_8822b,
 	trans_cardemu_to_carddis_8822b,
 	NULL
@@ -2156,7 +2156,7 @@ static const struct rtw_rqpn rqpn_table_8822b[] = {
 	 RTW_DMA_MAPPING_EXTRA, RTW_DMA_MAPPING_HIGH},
 };
 
-static struct rtw_prioq_addrs prioq_addrs_8822b = {
+static const struct rtw_prioq_addrs prioq_addrs_8822b = {
 	.prio[RTW_DMA_MAPPING_EXTRA] = {
 		.rsvd = REG_FIFOPAGE_INFO_4, .avail = REG_FIFOPAGE_INFO_4 + 2,
 	},
@@ -2172,7 +2172,7 @@ static struct rtw_prioq_addrs prioq_addrs_8822b = {
 	.wsize = true,
 };
 
-static struct rtw_chip_ops rtw8822b_ops = {
+static const struct rtw_chip_ops rtw8822b_ops = {
 	.phy_set_param		= rtw8822b_phy_set_param,
 	.read_efuse		= rtw8822b_read_efuse,
 	.query_rx_desc		= rtw8822b_query_rx_desc,
@@ -2521,7 +2521,7 @@ static const struct rtw_reg_domain coex_info_hw_regs_8822b[] = {
 	{0xc50,  MASKBYTE0, RTW_REG_DOMAIN_MAC8},
 };
 
-static struct rtw_hw_reg_offset rtw8822b_edcca_th[] = {
+static const struct rtw_hw_reg_offset rtw8822b_edcca_th[] = {
 	[EDCCA_TH_L2H_IDX] = {{.addr = 0x8a4, .mask = MASKBYTE0}, .offset = 0},
 	[EDCCA_TH_H2L_IDX] = {{.addr = 0x8a4, .mask = MASKBYTE1}, .offset = 0},
 };
drivers/net/wireless/realtek/rtw88/rtw8822c.c +5 -5
index 1dbe1cdbc3fd..a5531e663dde 100644
@@ -4874,13 +4874,13 @@ static const struct rtw_pwr_seq_cmd trans_cardemu_to_carddis_8822c[] = {
 	 RTW_PWR_CMD_END, 0, 0},
 };
 
-static const struct rtw_pwr_seq_cmd *card_enable_flow_8822c[] = {
+static const struct rtw_pwr_seq_cmd * const card_enable_flow_8822c[] = {
 	trans_carddis_to_cardemu_8822c,
 	trans_cardemu_to_act_8822c,
 	NULL
 };
 
-static const struct rtw_pwr_seq_cmd *card_disable_flow_8822c[] = {
+static const struct rtw_pwr_seq_cmd * const card_disable_flow_8822c[] = {
 	trans_act_to_cardemu_8822c,
 	trans_cardemu_to_carddis_8822c,
 	NULL
@@ -4972,7 +4972,7 @@ static const struct rtw_rqpn rqpn_table_8822c[] = {
 	 RTW_DMA_MAPPING_EXTRA, RTW_DMA_MAPPING_HIGH},
 };
 
-static struct rtw_prioq_addrs prioq_addrs_8822c = {
+static const struct rtw_prioq_addrs prioq_addrs_8822c = {
 	.prio[RTW_DMA_MAPPING_EXTRA] = {
 		.rsvd = REG_FIFOPAGE_INFO_4, .avail = REG_FIFOPAGE_INFO_4 + 2,
 	},
@@ -4988,7 +4988,7 @@ static struct rtw_prioq_addrs prioq_addrs_8822c = {
 	.wsize = true,
 };
 
-static struct rtw_chip_ops rtw8822c_ops = {
+static const struct rtw_chip_ops rtw8822c_ops = {
 	.phy_set_param		= rtw8822c_phy_set_param,
 	.read_efuse		= rtw8822c_read_efuse,
 	.query_rx_desc		= rtw8822c_query_rx_desc,
@@ -5301,7 +5301,7 @@ static const struct rtw_pwr_track_tbl rtw8822c_rtw_pwr_track_tbl = {
 	.pwrtrk_2g_ccka_p = rtw8822c_pwrtrk_2g_cck_a_p,
 };
 
-static struct rtw_hw_reg_offset rtw8822c_edcca_th[] = {
+static const struct rtw_hw_reg_offset rtw8822c_edcca_th[] = {
 	[EDCCA_TH_L2H_IDX] = {
 		{.addr = 0x84c, .mask = MASKBYTE2}, .offset = 0x80
 	},
Signature · 1 line
2.46.0
#1 lore raw

PATCH 2/2 wifi: rtw88: Parse the RX descriptor with a single function

rtw8703b_query_rx_desc(), rtw8723d_query_rx_desc(), rtw8821c_query_rx_desc(), rtw8822b_query_rx_desc(), and rtw8822c_query_rx_desc() are almost identical, so replace them all with a single function, rtw_rx_query_rx_desc().

Also, access the RX descriptor using a struct with __le32 members and le32_get_bits().

---
 drivers/net/wireless/realtek/rtw88/main.h     |  5 +-
 drivers/net/wireless/realtek/rtw88/pci.c      |  2 +-
 drivers/net/wireless/realtek/rtw88/rtw8703b.c | 53 +-------------
 drivers/net/wireless/realtek/rtw88/rtw8723d.c | 43 +-----------
 drivers/net/wireless/realtek/rtw88/rtw8821c.c | 43 +-----------
 drivers/net/wireless/realtek/rtw88/rtw8822b.c | 43 +-----------
 drivers/net/wireless/realtek/rtw88/rtw8822c.c | 44 +-----------
 drivers/net/wireless/realtek/rtw88/rx.c       | 70 +++++++++++++++++--
 drivers/net/wireless/realtek/rtw88/rx.h       | 64 ++++++++---------
 drivers/net/wireless/realtek/rtw88/sdio.c     |  3 +-
 drivers/net/wireless/realtek/rtw88/usb.c      |  4 +-
 11 files changed, 106 insertions(+), 268 deletions(-)
drivers/net/wireless/realtek/rtw88/main.h +2 -3
index 83180c488c37..05cfb235f272 100644
@@ -848,9 +848,8 @@ struct rtw_chip_ops {
 	void (*phy_set_param)(struct rtw_dev *rtwdev);
 	void (*set_channel)(struct rtw_dev *rtwdev, u8 channel,
 			    u8 bandwidth, u8 primary_chan_idx);
-	void (*query_rx_desc)(struct rtw_dev *rtwdev, u8 *rx_desc,
-			      struct rtw_rx_pkt_stat *pkt_stat,
-			      struct ieee80211_rx_status *rx_status);
+	void (*query_phy_status)(struct rtw_dev *rtwdev, u8 *phy_status,
+				 struct rtw_rx_pkt_stat *pkt_stat);
 	u32 (*read_rf)(struct rtw_dev *rtwdev, enum rtw_rf_path rf_path,
 		       u32 addr, u32 mask);
 	bool (*write_rf)(struct rtw_dev *rtwdev, enum rtw_rf_path rf_path,
drivers/net/wireless/realtek/rtw88/pci.c +1 -1
index 0b9b8807af2c..f71e41d6f97c 100644
@@ -1065,7 +1065,7 @@ static u32 rtw_pci_rx_napi(struct rtw_dev *rtwdev, struct rtw_pci *rtwpci,
 		dma_sync_single_for_cpu(rtwdev->dev, dma, RTK_PCI_RX_BUF_SIZE,
 					DMA_FROM_DEVICE);
 		rx_desc = skb->data;
-		chip->ops->query_rx_desc(rtwdev, rx_desc, &pkt_stat, &rx_status);
+		rtw_rx_query_rx_desc(rtwdev, rx_desc, &pkt_stat, &rx_status);
 
 		/* offset from rx_desc to payload */
 		pkt_offset = pkt_desc_sz + pkt_stat.drv_info_sz +
drivers/net/wireless/realtek/rtw88/rtw8703b.c +1 -52

65 lines not on this page · raw message

drivers/net/wireless/realtek/rtw88/rtw8723d.c +1 -42

55 lines not on this page · raw message

drivers/net/wireless/realtek/rtw88/rtw8821c.c +1 -42

55 lines not on this page · raw message

drivers/net/wireless/realtek/rtw88/rtw8822b.c +1 -42

55 lines not on this page · raw message

drivers/net/wireless/realtek/rtw88/rtw8822c.c +1 -43

56 lines not on this page · raw message

drivers/net/wireless/realtek/rtw88/rx.c +64 -6

80 lines not on this page · raw message

drivers/net/wireless/realtek/rtw88/rx.h +31 -33

73 lines not on this page · raw message

drivers/net/wireless/realtek/rtw88/sdio.c +1 -2
index 21d0754dd7f6..601b30070f53 100644
@@ -981,8 +981,7 @@ static void rtw_sdio_rxfifo_recv(struct rtw_dev *rtwdev, u32 rx_len)
 
 	while (true) {
 		rx_desc = skb->data;
-		chip->ops->query_rx_desc(rtwdev, rx_desc, &pkt_stat,
-					 &rx_status);
+		rtw_rx_query_rx_desc(rtwdev, rx_desc, &pkt_stat, &rx_status);
 		pkt_offset = pkt_desc_sz + pkt_stat.drv_info_sz +
 			     pkt_stat.shift;
 
drivers/net/wireless/realtek/rtw88/usb.c +2 -2
index e83ab6fb83f5..2641059d3561 100644
@@ -570,8 +570,8 @@ static void rtw_usb_rx_handler(struct work_struct *work)
 
 		do {
 			rx_desc = skb->data;
-			chip->ops->query_rx_desc(rtwdev, rx_desc, &pkt_stat,
-						 &rx_status);
+			rtw_rx_query_rx_desc(rtwdev, rx_desc, &pkt_stat,
+					     &rx_status);
 			pkt_offset = pkt_desc_sz + pkt_stat.drv_info_sz +
 				     pkt_stat.shift;
 
Signature · 1 line
2.46.0
maintainer
#2 lore raw

RE: [PATCH 2/2] wifi: rtw88: Parse the RX descriptor with a single function

Quoted 7 lines · Bitterblue Smith

rtw8703b_query_rx_desc(), rtw8723d_query_rx_desc(), rtw8821c_query_rx_desc(), rtw8822b_query_rx_desc(), and rtw8822c_query_rx_desc() are almost identical, so replace them all with a single function, rtw_rx_query_rx_desc().

Also, access the RX descriptor using a struct with __le32 members and le32_get_bits().

I have tested this patch with RTL8723DE and RTL8822CE, and looks good. Please also describe which chips you tested.

[...]

Review

Quoted 2 lines
(quoted diff) +0 -2
-
-       pkt_stat->drv_info_sz *= RX_DRV_INFO_SZ_UNIT_8703B;

For now, RX_DRV_INFO_SZ_UNIT_8703B isn't used anymore. We can remove it.

[...]

Quoted 1 line

+ .query_phy_status = query_phy_status,

All existing chips use the same callback. Will it be different for coming chips?

[...]

Review

Quoted 2 lines
(quoted diff) +2 -0
+
+void rtw_rx_query_rx_desc(struct rtw_dev *rtwdev, u8 *rx_desc8,

If you use 'void *' as type of rx_desc8, we can avoid most casting.

drivers/net/wireless/realtek/rtw88/rx.c void rtw_rx_fill_rx_status(struct rtw_dev *rtwdev, · line 258

Quoted 4 lines
drivers/net/wireless/realtek/rtw88/rx.c +4 -0
+                         struct rtw_rx_pkt_stat *pkt_stat,
+                         struct ieee80211_rx_status *rx_status)
+{
+       struct rtw_rx_desc *rx_desc = (struct rtw_rx_desc *)rx_desc8;

like here.

drivers/net/wireless/realtek/rtw88/rx.c void rtw_rx_fill_rx_status(struct rtw_dev *rtwdev, · line 296

Quoted 3 lines
drivers/net/wireless/realtek/rtw88/rx.c +3 -0
+
+       phy_status = rx_desc8 + desc_sz + pkt_stat->shift;
+       hdr = (struct ieee80211_hdr *)(phy_status + pkt_stat->drv_info_sz);

and here.

#3 lore raw

Re: [PATCH 2/2] wifi: rtw88: Parse the RX descriptor with a single function

Quoted 17 lines · Ping-Ke Shih
Quoted 7 lines · Bitterblue Smith

rtw8703b_query_rx_desc(), rtw8723d_query_rx_desc(), rtw8821c_query_rx_desc(), rtw8822b_query_rx_desc(), and rtw8822c_query_rx_desc() are almost identical, so replace them all with a single function, rtw_rx_query_rx_desc().

Also, access the RX descriptor using a struct with __le32 members and le32_get_bits().

I have tested this patch with RTL8723DE and RTL8822CE, and looks good. Please also describe which chips you tested.

[...]

Review

Quoted 2 lines
(quoted diff) +0 -2
-
-       pkt_stat->drv_info_sz *= RX_DRV_INFO_SZ_UNIT_8703B;
Quoted 8 lines

For now, RX_DRV_INFO_SZ_UNIT_8703B isn't used anymore. We can remove it.

[...]

Quoted 1 line

+ .query_phy_status = query_phy_status,

All existing chips use the same callback. Will it be different for coming chips?

Yes, it will be different for the upcoming chips. (The existing chips also use different code, only the function name is the same.)

Quoted 23 lines

[...]

Review

Quoted 2 lines
(quoted diff) +2 -0
+
+void rtw_rx_query_rx_desc(struct rtw_dev *rtwdev, u8 *rx_desc8,

If you use 'void *' as type of rx_desc8, we can avoid most casting.

drivers/net/wireless/realtek/rtw88/rx.c void rtw_rx_fill_rx_status(struct rtw_dev *rtwdev, · line 258

Quoted 4 lines
drivers/net/wireless/realtek/rtw88/rx.c +4 -0
+                         struct rtw_rx_pkt_stat *pkt_stat,
+                         struct ieee80211_rx_status *rx_status)
+{
+       struct rtw_rx_desc *rx_desc = (struct rtw_rx_desc *)rx_desc8;

like here.

drivers/net/wireless/realtek/rtw88/rx.c void rtw_rx_fill_rx_status(struct rtw_dev *rtwdev, · line 296

Quoted 3 lines
drivers/net/wireless/realtek/rtw88/rx.c +3 -0
+
+       phy_status = rx_desc8 + desc_sz + pkt_stat->shift;
+       hdr = (struct ieee80211_hdr *)(phy_status + pkt_stat->drv_info_sz);

and here.

maintainer Acked-by on v1 1/2
#4 lore raw
In reply to Bitterblue Smith
Quoted 28 lines · Bitterblue Smith

These are never modified, so make them const:

card_enable_flow_8703b
card_disable_flow_8703b
rtw8703b_ops

rtw8723d_ops
card_enable_flow_8723d
card_disable_flow_8723d

trans_carddis_to_cardemu_8821c
trans_cardemu_to_act_8821c
trans_act_to_cardemu_8821c
trans_cardemu_to_carddis_8821c
card_enable_flow_8821c
card_disable_flow_8821c
rtw8821c_dig
page_table_8821c
rqpn_table_8821c
prioq_addrs_8821c
rtw8821c_ops

card_enable_flow_8822b
card_disable_flow_8822b
prioq_addrs_8822b
rtw8822b_ops
rtw8822b_edcca_th

Quoted 7 lines

card_enable_flow_8822c
card_disable_flow_8822c
prioq_addrs_8822c
rtw8822c_ops
rtw8822c_edcca_th

maintainer
#5 lore raw
In reply to Bitterblue Smith
Quoted 28 lines · Bitterblue Smith

These are never modified, so make them const:

card_enable_flow_8703b
card_disable_flow_8703b
rtw8703b_ops

rtw8723d_ops
card_enable_flow_8723d
card_disable_flow_8723d

trans_carddis_to_cardemu_8821c
trans_cardemu_to_act_8821c
trans_act_to_cardemu_8821c
trans_cardemu_to_carddis_8821c
card_enable_flow_8821c
card_disable_flow_8821c
rtw8821c_dig
page_table_8821c
rqpn_table_8821c
prioq_addrs_8821c
rtw8821c_ops

card_enable_flow_8822b
card_disable_flow_8822b
prioq_addrs_8822b
rtw8822b_ops
rtw8822b_edcca_th

Quoted 8 lines

card_enable_flow_8822c
card_disable_flow_8822c
prioq_addrs_8822c
rtw8822c_ops
rtw8822c_edcca_th

Note: only partially apply patch 1/2 of original patchset.

1 patch applied to rtw-next branch of rtw.git, thanks.

140403599b74 wifi: rtw88: Constify some arrays and structs

---
https://github.com/pkshih/rtw.git

#6 lore raw

PATCH v2 1/1 wifi: rtw88: Parse the RX descriptor with a single function

In reply to Bitterblue Smith

rtw8703b_query_rx_desc(), rtw8723d_query_rx_desc(), rtw8821c_query_rx_desc(), rtw8822b_query_rx_desc(), and rtw8822c_query_rx_desc() are almost identical, so replace them all with a single function, rtw_rx_query_rx_desc().

Also, access the RX descriptor using a struct with __le32 members and le32_get_bits().

Tested with RTL8811CU, RTL8811AU, and RTL8812AU.

---
v2:
- Delete RX_DRV_INFO_SZ_UNIT_8703B, it's unused now.
- Change the type of rx_desc8 and phy_status to void* to avoid casting.
- Mention the tested chips.

---
 drivers/net/wireless/realtek/rtw88/main.h     |  5 +-
 drivers/net/wireless/realtek/rtw88/pci.c      |  2 +-
 drivers/net/wireless/realtek/rtw88/rtw8703b.c | 56 +--------------
 drivers/net/wireless/realtek/rtw88/rtw8723d.c | 43 +-----------
 drivers/net/wireless/realtek/rtw88/rtw8821c.c | 43 +-----------
 drivers/net/wireless/realtek/rtw88/rtw8822b.c | 43 +-----------
 drivers/net/wireless/realtek/rtw88/rtw8822c.c | 44 +-----------
 drivers/net/wireless/realtek/rtw88/rx.c       | 70 +++++++++++++++++--
 drivers/net/wireless/realtek/rtw88/rx.h       | 64 ++++++++---------
 drivers/net/wireless/realtek/rtw88/sdio.c     |  3 +-
 drivers/net/wireless/realtek/rtw88/usb.c      |  4 +-
 11 files changed, 106 insertions(+), 271 deletions(-)
drivers/net/wireless/realtek/rtw88/main.h +2 -3
index 83180c488c37..05cfb235f272 100644
@@ -848,9 +848,8 @@ struct rtw_chip_ops {
 	void (*phy_set_param)(struct rtw_dev *rtwdev);
 	void (*set_channel)(struct rtw_dev *rtwdev, u8 channel,
 			    u8 bandwidth, u8 primary_chan_idx);
-	void (*query_rx_desc)(struct rtw_dev *rtwdev, u8 *rx_desc,
-			      struct rtw_rx_pkt_stat *pkt_stat,
-			      struct ieee80211_rx_status *rx_status);
+	void (*query_phy_status)(struct rtw_dev *rtwdev, u8 *phy_status,
+				 struct rtw_rx_pkt_stat *pkt_stat);
 	u32 (*read_rf)(struct rtw_dev *rtwdev, enum rtw_rf_path rf_path,
 		       u32 addr, u32 mask);
 	bool (*write_rf)(struct rtw_dev *rtwdev, enum rtw_rf_path rf_path,
drivers/net/wireless/realtek/rtw88/pci.c +1 -1
index 0b9b8807af2c..f71e41d6f97c 100644
@@ -1065,7 +1065,7 @@ static u32 rtw_pci_rx_napi(struct rtw_dev *rtwdev, struct rtw_pci *rtwpci,
 		dma_sync_single_for_cpu(rtwdev->dev, dma, RTK_PCI_RX_BUF_SIZE,
 					DMA_FROM_DEVICE);
 		rx_desc = skb->data;
-		chip->ops->query_rx_desc(rtwdev, rx_desc, &pkt_stat, &rx_status);
+		rtw_rx_query_rx_desc(rtwdev, rx_desc, &pkt_stat, &rx_status);
 
 		/* offset from rx_desc to payload */
 		pkt_offset = pkt_desc_sz + pkt_stat.drv_info_sz +
drivers/net/wireless/realtek/rtw88/rtw8703b.c +1 -55

74 lines not on this page · raw message

drivers/net/wireless/realtek/rtw88/rtw8723d.c +1 -42

55 lines not on this page · raw message

drivers/net/wireless/realtek/rtw88/rtw8821c.c +1 -42

55 lines not on this page · raw message

drivers/net/wireless/realtek/rtw88/rtw8822b.c +1 -42

55 lines not on this page · raw message

drivers/net/wireless/realtek/rtw88/rtw8822c.c +1 -43

56 lines not on this page · raw message

drivers/net/wireless/realtek/rtw88/rx.c +64 -6

80 lines not on this page · raw message

drivers/net/wireless/realtek/rtw88/rx.h +31 -33

73 lines not on this page · raw message

drivers/net/wireless/realtek/rtw88/sdio.c +1 -2
index b67e551fcee3..f0b06ed8f76d 100644
@@ -981,8 +981,7 @@ static void rtw_sdio_rxfifo_recv(struct rtw_dev *rtwdev, u32 rx_len)
 
 	while (true) {
 		rx_desc = skb->data;
-		chip->ops->query_rx_desc(rtwdev, rx_desc, &pkt_stat,
-					 &rx_status);
+		rtw_rx_query_rx_desc(rtwdev, rx_desc, &pkt_stat, &rx_status);
 		pkt_offset = pkt_desc_sz + pkt_stat.drv_info_sz +
 			     pkt_stat.shift;
 
drivers/net/wireless/realtek/rtw88/usb.c +2 -2
index dbc7d8d73494..ba314d90ab3f 100644
@@ -571,8 +571,8 @@ static void rtw_usb_rx_handler(struct work_struct *work)
 
 		do {
 			rx_desc = skb->data;
-			chip->ops->query_rx_desc(rtwdev, rx_desc, &pkt_stat,
-						 &rx_status);
+			rtw_rx_query_rx_desc(rtwdev, rx_desc, &pkt_stat,
+					     &rx_status);
 			pkt_offset = pkt_desc_sz + pkt_stat.drv_info_sz +
 				     pkt_stat.shift;
 
Signature · 1 line
2.46.0
maintainer Tested-by Acked-by on v2 1/1
#7 lore raw

RE: [PATCH v2] wifi: rtw88: Parse the RX descriptor with a single function

Quoted 9 lines · Bitterblue Smith

rtw8703b_query_rx_desc(), rtw8723d_query_rx_desc(), rtw8821c_query_rx_desc(), rtw8822b_query_rx_desc(), and rtw8822c_query_rx_desc() are almost identical, so replace them all with a single function, rtw_rx_query_rx_desc().

Also, access the RX descriptor using a struct with __le32 members and le32_get_bits().

Tested with RTL8811CU, RTL8811AU, and RTL8812AU.

I also tested with RTL8723DE and RTL8822CE, so

Quoted 2 lines
maintainer
#8 lore raw

Re: [PATCH v2] wifi: rtw88: Parse the RX descriptor with a single function

In reply to Bitterblue Smith
Quoted 5 lines · Bitterblue Smith

rtw8703b_query_rx_desc(), rtw8723d_query_rx_desc(), rtw8821c_query_rx_desc(), rtw8822b_query_rx_desc(), and rtw8822c_query_rx_desc() are almost identical, so replace them all with a single function, rtw_rx_query_rx_desc().

Quoted 8 lines

Also, access the RX descriptor using a struct with __le32 members and le32_get_bits().

Tested with RTL8811CU, RTL8811AU, and RTL8812AU.

1 patch(es) applied to rtw-next branch of rtw.git, thanks.

bbb6f9be7f99 wifi: rtw88: Parse the RX descriptor with a single function

---
https://github.com/pkshih/rtw.git