wifi: rtw88: Constify some arrays and structs
PATCH 1/2 wifi: rtw88: Constify some arrays and structs
These are never modified, so make them const:
card_enable_flow_8703bcard_disable_flow_8703brtw8703b_ops
rtw8723d_opscard_enable_flow_8723dcard_disable_flow_8723d
trans_carddis_to_cardemu_8821ctrans_cardemu_to_act_8821ctrans_act_to_cardemu_8821ctrans_cardemu_to_carddis_8821ccard_enable_flow_8821ccard_disable_flow_8821crtw8821c_digpage_table_8821crqpn_table_8821cprioq_addrs_8821crtw8821c_ops
card_enable_flow_8822bcard_disable_flow_8822bprioq_addrs_8822brtw8822b_opsrtw8822b_edcca_th
card_enable_flow_8822ccard_disable_flow_8822cprioq_addrs_8822crtw8822c_opsrtw8822c_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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
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
@@ -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
@@ -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
@@ -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
@@ -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
Ping-Ke Shih
maintainerRE: [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(), andrtw8822c_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
__le32members andle32_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.
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(), andrtw8822c_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
__le32members andle32_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_8703Bisn'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.
Quoted 28 lines · Bitterblue Smith
These are never modified, so make them const:
card_enable_flow_8703bcard_disable_flow_8703brtw8703b_ops
rtw8723d_opscard_enable_flow_8723dcard_disable_flow_8723d
trans_carddis_to_cardemu_8821ctrans_cardemu_to_act_8821ctrans_act_to_cardemu_8821ctrans_cardemu_to_carddis_8821ccard_enable_flow_8821ccard_disable_flow_8821crtw8821c_digpage_table_8821crqpn_table_8821cprioq_addrs_8821crtw8821c_ops
card_enable_flow_8822bcard_disable_flow_8822bprioq_addrs_8822brtw8822b_opsrtw8822b_edcca_th
Quoted 7 lines
card_enable_flow_8822ccard_disable_flow_8822cprioq_addrs_8822crtw8822c_opsrtw8822c_edcca_thSigned-off-by Bitterblue Smith <[email protected]>
Ping-Ke Shih
maintainerQuoted 28 lines · Bitterblue Smith
These are never modified, so make them const:
card_enable_flow_8703bcard_disable_flow_8703brtw8703b_ops
rtw8723d_opscard_enable_flow_8723dcard_disable_flow_8723d
trans_carddis_to_cardemu_8821ctrans_cardemu_to_act_8821ctrans_act_to_cardemu_8821ctrans_cardemu_to_carddis_8821ccard_enable_flow_8821ccard_disable_flow_8821crtw8821c_digpage_table_8821crqpn_table_8821cprioq_addrs_8821crtw8821c_ops
card_enable_flow_8822bcard_disable_flow_8822bprioq_addrs_8822brtw8822b_opsrtw8822b_edcca_th
Quoted 8 lines
card_enable_flow_8822ccard_disable_flow_8822cprioq_addrs_8822crtw8822c_opsrtw8822c_edcca_thSigned-off-by Bitterblue Smith <[email protected]>Acked-by Ping-Ke Shih <[email protected]>
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
PATCH v2 1/1 wifi: rtw88: Parse the RX descriptor with a single function
In reply to Bitterblue Smithrtw8703b_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
@@ -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
@@ -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
@@ -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
@@ -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
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(), andrtw8822c_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
__le32members andle32_get_bits().Tested with RTL8811CU, RTL8811AU, and RTL8812AU.
I also tested with RTL8723DE and RTL8822CE, so
Quoted 2 lines
Signed-off-by Bitterblue Smith <[email protected]>
Ping-Ke Shih
maintainerRe: [PATCH v2] wifi: rtw88: Parse the RX descriptor with a single function
In reply to Bitterblue SmithQuoted 5 lines · Bitterblue Smith
rtw8703b_query_rx_desc(),rtw8723d_query_rx_desc(),rtw8821c_query_rx_desc(),rtw8822b_query_rx_desc(), andrtw8822c_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
__le32members andle32_get_bits().Tested with RTL8811CU, RTL8811AU, and RTL8812AU.
Signed-off-by Bitterblue Smith <[email protected]>Acked-by Ping-Ke Shih <[email protected]>
1 patch(es) applied to rtw-next branch of rtw.git, thanks.
bbb6f9be7f99 wifi: rtw88: Parse the RX descriptor with a single function