From: Tony Chuang <yhchuang@realtek.com>
To: Joe Perches <joe@perches.com>, Kalle Valo <kvalo@codeaurora.org>
Cc: "David S. Miller" <davem@davemloft.net>,
"linux-wireless@vger.kernel.org" <linux-wireless@vger.kernel.org>,
"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
linux-kernel <linux-kernel@vger.kernel.org>
Subject: RE: [PATCH] rtw88: 8822[bc]: Make tables const, reduce data object size
Date: Wed, 12 Feb 2020 08:23:09 +0000 [thread overview]
Message-ID: <3a4ed67bbb1a4f85a7b0807bb5019675@realtek.com> (raw)
In-Reply-To: <4ba111ba18f14f0630cc550b58dbe5dbc82a48ac.camel@perches.com>
> Subject: [PATCH] rtw88: 8822[bc]: Make tables const, reduce data object size
>
> Reduce the data size 2kb or 3kb by making tables const.
> Add const to pointer declarations to make compilation work too.
>
> (x86-64 defconfig)
> $ size drivers/net/wireless/realtek/rtw88/rtw8822?.o*
> text data bss dec hex filename
> 25054 672 8 25734 6486
> drivers/net/wireless/realtek/rtw88/rtw8822b.o.new
> 23870 1872 8 25750 6496
> drivers/net/wireless/realtek/rtw88/rtw8822b.o.old
> 53646 828 0 54474 d4ca
> drivers/net/wireless/realtek/rtw88/rtw8822c.o.new
> 52846 1652 0 54498 d4e2
> drivers/net/wireless/realtek/rtw88/rtw8822c.o.old
>
> (x86-64 allyesconfig)
> $ size drivers/net/wireless/realtek/rtw88/rtw8822?.o*
> text data bss dec hex filename
> 45811 6280 128 52219 cbfb
> drivers/net/wireless/realtek/rtw88/rtw8822b.o.new
> 44211 7880 128 52219 cbfb
> drivers/net/wireless/realtek/rtw88/rtw8822b.o.old
> 100195 8128 0 108323 1a723
> drivers/net/wireless/realtek/rtw88/rtw8822c.o.new
> 98947 9376 0 108323 1a723
> drivers/net/wireless/realtek/rtw88/rtw8822c.o.old
>
> Signed-off-by: Joe Perches <joe@perches.com>
> ---
> drivers/net/wireless/realtek/rtw88/mac.c | 19 +++++++++---------
> drivers/net/wireless/realtek/rtw88/main.h | 22 ++++++++++-----------
> drivers/net/wireless/realtek/rtw88/pci.c | 2 +-
> drivers/net/wireless/realtek/rtw88/rtw8822b.c | 28
> +++++++++++++--------------
> drivers/net/wireless/realtek/rtw88/rtw8822c.c | 28
> +++++++++++++--------------
> 5 files changed, 50 insertions(+), 49 deletions(-)
>
> diff --git a/drivers/net/wireless/realtek/rtw88/mac.c
> b/drivers/net/wireless/realtek/rtw88/mac.c
> index cadf0a..0b98d3 100644
> --- a/drivers/net/wireless/realtek/rtw88/mac.c
> +++ b/drivers/net/wireless/realtek/rtw88/mac.c
> @@ -101,7 +101,7 @@ static int rtw_mac_pre_system_cfg(struct rtw_dev
> *rtwdev)
> }
>
> static int rtw_pwr_cmd_polling(struct rtw_dev *rtwdev,
> - struct rtw_pwr_seq_cmd *cmd)
> + const struct rtw_pwr_seq_cmd *cmd)
> {
> u8 value;
> u8 flag = 0;
> @@ -139,9 +139,10 @@ static int rtw_pwr_cmd_polling(struct rtw_dev
> *rtwdev,
> }
>
> static int rtw_sub_pwr_seq_parser(struct rtw_dev *rtwdev, u8 intf_mask,
> - u8 cut_mask, struct rtw_pwr_seq_cmd *cmd)
> + u8 cut_mask,
> + const struct rtw_pwr_seq_cmd *cmd)
> {
> - struct rtw_pwr_seq_cmd *cur_cmd;
> + const struct rtw_pwr_seq_cmd *cur_cmd;
> u32 offset;
> u8 value;
>
> @@ -183,13 +184,13 @@ static int rtw_sub_pwr_seq_parser(struct rtw_dev
> *rtwdev, u8 intf_mask,
> }
>
> static int rtw_pwr_seq_parser(struct rtw_dev *rtwdev,
> - struct rtw_pwr_seq_cmd **cmd_seq)
> + const struct rtw_pwr_seq_cmd **cmd_seq)
> {
> u8 cut_mask;
> u8 intf_mask;
> u8 cut;
> u32 idx = 0;
> - struct rtw_pwr_seq_cmd *cmd;
> + const struct rtw_pwr_seq_cmd *cmd;
> int ret;
>
> cut = rtwdev->hal.cut_version;
> @@ -223,7 +224,7 @@ static int rtw_pwr_seq_parser(struct rtw_dev
> *rtwdev,
> static int rtw_mac_power_switch(struct rtw_dev *rtwdev, bool pwr_on)
> {
> struct rtw_chip_info *chip = rtwdev->chip;
> - struct rtw_pwr_seq_cmd **pwr_seq;
> + const struct rtw_pwr_seq_cmd **pwr_seq;
> u8 rpwm;
> bool cur_pwr;
>
> @@ -705,7 +706,7 @@ int rtw_download_firmware(struct rtw_dev *rtwdev,
> struct rtw_fw_state *fw)
>
> static u32 get_priority_queues(struct rtw_dev *rtwdev, u32 queues)
> {
> - struct rtw_rqpn *rqpn = rtwdev->fifo.rqpn;
> + const struct rtw_rqpn *rqpn = rtwdev->fifo.rqpn;
> u32 prio_queues = 0;
>
> if (queues & BIT(IEEE80211_AC_VO))
> @@ -793,7 +794,7 @@ void rtw_mac_flush_queues(struct rtw_dev *rtwdev,
> u32 queues, bool drop)
> static int txdma_queue_mapping(struct rtw_dev *rtwdev)
> {
> struct rtw_chip_info *chip = rtwdev->chip;
> - struct rtw_rqpn *rqpn = NULL;
> + const struct rtw_rqpn *rqpn = NULL;
> u16 txdma_pq_map = 0;
>
> switch (rtw_hci_type(rtwdev)) {
> @@ -882,7 +883,7 @@ static int priority_queue_cfg(struct rtw_dev *rtwdev)
> {
> struct rtw_fifo_conf *fifo = &rtwdev->fifo;
> struct rtw_chip_info *chip = rtwdev->chip;
> - struct rtw_page_table *pg_tbl = NULL;
> + const struct rtw_page_table *pg_tbl = NULL;
> u16 pubq_num;
> int ret;
>
> diff --git a/drivers/net/wireless/realtek/rtw88/main.h
> b/drivers/net/wireless/realtek/rtw88/main.h
> index f334d2..a55635 100644
> --- a/drivers/net/wireless/realtek/rtw88/main.h
> +++ b/drivers/net/wireless/realtek/rtw88/main.h
> @@ -948,10 +948,10 @@ struct rtw_wow_param {
> };
>
> struct rtw_intf_phy_para_table {
> - struct rtw_intf_phy_para *usb2_para;
> - struct rtw_intf_phy_para *usb3_para;
> - struct rtw_intf_phy_para *gen1_para;
> - struct rtw_intf_phy_para *gen2_para;
> + const struct rtw_intf_phy_para *usb2_para;
> + const struct rtw_intf_phy_para *usb3_para;
> + const struct rtw_intf_phy_para *gen1_para;
> + const struct rtw_intf_phy_para *gen2_para;
> u8 n_usb2_para;
> u8 n_usb3_para;
> u8 n_gen1_para;
> @@ -1048,13 +1048,13 @@ struct rtw_chip_info {
>
> /* init values */
> u8 sys_func_en;
> - struct rtw_pwr_seq_cmd **pwr_on_seq;
> - struct rtw_pwr_seq_cmd **pwr_off_seq;
> - struct rtw_rqpn *rqpn_table;
> - struct rtw_page_table *page_table;
> - struct rtw_intf_phy_para_table *intf_table;
> + const struct rtw_pwr_seq_cmd **pwr_on_seq;
> + const struct rtw_pwr_seq_cmd **pwr_off_seq;
> + const struct rtw_rqpn *rqpn_table;
> + const struct rtw_page_table *page_table;
> + const struct rtw_intf_phy_para_table *intf_table;
>
> - struct rtw_hw_reg *dig;
> + const struct rtw_hw_reg *dig;
> u32 rf_base_addr[2];
> u32 rf_sipi_addr[2];
>
> @@ -1500,7 +1500,7 @@ struct rtw_fifo_conf {
> u16 rsvd_cpu_instr_addr;
> u16 rsvd_fw_txbuf_addr;
> u16 rsvd_csibuf_addr;
> - struct rtw_rqpn *rqpn;
> + const struct rtw_rqpn *rqpn;
> };
>
> struct rtw_fw_state {
> diff --git a/drivers/net/wireless/realtek/rtw88/pci.c
> b/drivers/net/wireless/realtek/rtw88/pci.c
> index 1fbc14..82b1f86 100644
> --- a/drivers/net/wireless/realtek/rtw88/pci.c
> +++ b/drivers/net/wireless/realtek/rtw88/pci.c
> @@ -1248,7 +1248,7 @@ static void rtw_pci_interface_cfg(struct rtw_dev
> *rtwdev)
> static void rtw_pci_phy_cfg(struct rtw_dev *rtwdev)
> {
> struct rtw_chip_info *chip = rtwdev->chip;
> - struct rtw_intf_phy_para *para;
> + const struct rtw_intf_phy_para *para;
> u16 cut;
> u16 value;
> u16 offset;
> diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822b.c
> b/drivers/net/wireless/realtek/rtw88/rtw8822b.c
> index 4bc14b..ded1e9f 100644
> --- a/drivers/net/wireless/realtek/rtw88/rtw8822b.c
> +++ b/drivers/net/wireless/realtek/rtw88/rtw8822b.c
> @@ -1543,7 +1543,7 @@ static void rtw8822b_bf_config_bfee(struct
> rtw_dev *rtwdev, struct rtw_vif *vif,
> rtw_warn(rtwdev, "wrong bfee role\n");
> }
>
> -static struct rtw_pwr_seq_cmd trans_carddis_to_cardemu_8822b[] = {
> +static const struct rtw_pwr_seq_cmd trans_carddis_to_cardemu_8822b[] =
> {
> {0x0086,
> RTW_PWR_CUT_ALL_MSK,
> RTW_PWR_INTF_SDIO_MSK,
> @@ -1581,7 +1581,7 @@ static struct rtw_pwr_seq_cmd
> trans_carddis_to_cardemu_8822b[] = {
> RTW_PWR_CMD_END, 0, 0},
> };
>
> -static struct rtw_pwr_seq_cmd trans_cardemu_to_act_8822b[] = {
> +static const struct rtw_pwr_seq_cmd trans_cardemu_to_act_8822b[] = {
> {0x0012,
> RTW_PWR_CUT_ALL_MSK,
> RTW_PWR_INTF_ALL_MSK,
> @@ -1714,7 +1714,7 @@ static struct rtw_pwr_seq_cmd
> trans_cardemu_to_act_8822b[] = {
> RTW_PWR_CMD_END, 0, 0},
> };
>
> -static struct rtw_pwr_seq_cmd trans_act_to_cardemu_8822b[] = {
> +static const struct rtw_pwr_seq_cmd trans_act_to_cardemu_8822b[] = {
> {0x0003,
> RTW_PWR_CUT_ALL_MSK,
> RTW_PWR_INTF_SDIO_MSK,
> @@ -1787,7 +1787,7 @@ static struct rtw_pwr_seq_cmd
> trans_act_to_cardemu_8822b[] = {
> RTW_PWR_CMD_END, 0, 0},
> };
>
> -static struct rtw_pwr_seq_cmd trans_cardemu_to_carddis_8822b[] = {
> +static const struct rtw_pwr_seq_cmd trans_cardemu_to_carddis_8822b[] =
> {
> {0x0005,
> RTW_PWR_CUT_ALL_MSK,
> RTW_PWR_INTF_SDIO_MSK,
> @@ -1905,26 +1905,26 @@ static struct rtw_pwr_seq_cmd
> trans_cardemu_to_carddis_8822b[] = {
> RTW_PWR_CMD_END, 0, 0},
> };
>
> -static struct rtw_pwr_seq_cmd *card_enable_flow_8822b[] = {
> +static const struct rtw_pwr_seq_cmd *card_enable_flow_8822b[] = {
> trans_carddis_to_cardemu_8822b,
> trans_cardemu_to_act_8822b,
> NULL
> };
>
> -static struct rtw_pwr_seq_cmd *card_disable_flow_8822b[] = {
> +static const struct rtw_pwr_seq_cmd *card_disable_flow_8822b[] = {
> trans_act_to_cardemu_8822b,
> trans_cardemu_to_carddis_8822b,
> NULL
> };
>
> -static struct rtw_intf_phy_para usb2_param_8822b[] = {
> +static const struct rtw_intf_phy_para usb2_param_8822b[] = {
> {0xFFFF, 0x00,
> RTW_IP_SEL_PHY,
> RTW_INTF_PHY_CUT_ALL,
> RTW_INTF_PHY_PLATFORM_ALL},
> };
>
> -static struct rtw_intf_phy_para usb3_param_8822b[] = {
> +static const struct rtw_intf_phy_para usb3_param_8822b[] = {
> {0x0001, 0xA841,
> RTW_IP_SEL_PHY,
> RTW_INTF_PHY_CUT_D,
> @@ -1935,7 +1935,7 @@ static struct rtw_intf_phy_para
> usb3_param_8822b[] = {
> RTW_INTF_PHY_PLATFORM_ALL},
> };
>
> -static struct rtw_intf_phy_para pcie_gen1_param_8822b[] = {
> +static const struct rtw_intf_phy_para pcie_gen1_param_8822b[] = {
> {0x0001, 0xA841,
> RTW_IP_SEL_PHY,
> RTW_INTF_PHY_CUT_C,
> @@ -1982,7 +1982,7 @@ static struct rtw_intf_phy_para
> pcie_gen1_param_8822b[] = {
> RTW_INTF_PHY_PLATFORM_ALL},
> };
>
> -static struct rtw_intf_phy_para pcie_gen2_param_8822b[] = {
> +static const struct rtw_intf_phy_para pcie_gen2_param_8822b[] = {
> {0x0001, 0xA841,
> RTW_IP_SEL_PHY,
> RTW_INTF_PHY_CUT_C,
> @@ -2029,7 +2029,7 @@ static struct rtw_intf_phy_para
> pcie_gen2_param_8822b[] = {
> RTW_INTF_PHY_PLATFORM_ALL},
> };
>
> -static struct rtw_intf_phy_para_table phy_para_table_8822b = {
> +static const struct rtw_intf_phy_para_table phy_para_table_8822b = {
> .usb2_para = usb2_param_8822b,
> .usb3_para = usb3_param_8822b,
> .gen1_para = pcie_gen1_param_8822b,
> @@ -2046,12 +2046,12 @@ static const struct rtw_rfe_def
> rtw8822b_rfe_defs[] = {
> [5] = RTW_DEF_RFE(8822b, 5, 5),
> };
>
> -static struct rtw_hw_reg rtw8822b_dig[] = {
> +static const struct rtw_hw_reg rtw8822b_dig[] = {
> [0] = { .addr = 0xc50, .mask = 0x7f },
> [1] = { .addr = 0xe50, .mask = 0x7f },
> };
>
> -static struct rtw_page_table page_table_8822b[] = {
> +static const struct rtw_page_table page_table_8822b[] = {
> {64, 64, 64, 64, 1},
> {64, 64, 64, 64, 1},
> {64, 64, 0, 0, 1},
> @@ -2059,7 +2059,7 @@ static struct rtw_page_table page_table_8822b[] =
> {
> {64, 64, 64, 64, 1},
> };
>
> -static struct rtw_rqpn rqpn_table_8822b[] = {
> +static const struct rtw_rqpn rqpn_table_8822b[] = {
> {RTW_DMA_MAPPING_NORMAL, RTW_DMA_MAPPING_NORMAL,
> RTW_DMA_MAPPING_LOW, RTW_DMA_MAPPING_LOW,
> RTW_DMA_MAPPING_EXTRA, RTW_DMA_MAPPING_HIGH},
> diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822c.c
> b/drivers/net/wireless/realtek/rtw88/rtw8822c.c
> index 386509..5b2f594 100644
> --- a/drivers/net/wireless/realtek/rtw88/rtw8822c.c
> +++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.c
> @@ -3399,7 +3399,7 @@ static void rtw8822c_pwr_track(struct rtw_dev
> *rtwdev)
> dm_info->pwr_trk_triggered = false;
> }
>
> -static struct rtw_pwr_seq_cmd trans_carddis_to_cardemu_8822c[] = {
> +static const struct rtw_pwr_seq_cmd trans_carddis_to_cardemu_8822c[] =
> {
> {0x0086,
> RTW_PWR_CUT_ALL_MSK,
> RTW_PWR_INTF_SDIO_MSK,
> @@ -3442,7 +3442,7 @@ static struct rtw_pwr_seq_cmd
> trans_carddis_to_cardemu_8822c[] = {
> RTW_PWR_CMD_END, 0, 0},
> };
>
> -static struct rtw_pwr_seq_cmd trans_cardemu_to_act_8822c[] = {
> +static const struct rtw_pwr_seq_cmd trans_cardemu_to_act_8822c[] = {
> {0x0000,
> RTW_PWR_CUT_ALL_MSK,
> RTW_PWR_INTF_USB_MSK | RTW_PWR_INTF_SDIO_MSK,
> @@ -3551,7 +3551,7 @@ static struct rtw_pwr_seq_cmd
> trans_cardemu_to_act_8822c[] = {
> RTW_PWR_CMD_END, 0, 0},
> };
>
> -static struct rtw_pwr_seq_cmd trans_act_to_cardemu_8822c[] = {
> +static const struct rtw_pwr_seq_cmd trans_act_to_cardemu_8822c[] = {
> {0x0093,
> RTW_PWR_CUT_ALL_MSK,
> RTW_PWR_INTF_ALL_MSK,
> @@ -3614,7 +3614,7 @@ static struct rtw_pwr_seq_cmd
> trans_act_to_cardemu_8822c[] = {
> RTW_PWR_CMD_END, 0, 0},
> };
>
> -static struct rtw_pwr_seq_cmd trans_cardemu_to_carddis_8822c[] = {
> +static const struct rtw_pwr_seq_cmd trans_cardemu_to_carddis_8822c[] =
> {
> {0x0005,
> RTW_PWR_CUT_ALL_MSK,
> RTW_PWR_INTF_SDIO_MSK,
> @@ -3677,47 +3677,47 @@ static struct rtw_pwr_seq_cmd
> trans_cardemu_to_carddis_8822c[] = {
> RTW_PWR_CMD_END, 0, 0},
> };
>
> -static struct rtw_pwr_seq_cmd *card_enable_flow_8822c[] = {
> +static const struct rtw_pwr_seq_cmd *card_enable_flow_8822c[] = {
> trans_carddis_to_cardemu_8822c,
> trans_cardemu_to_act_8822c,
> NULL
> };
>
> -static struct rtw_pwr_seq_cmd *card_disable_flow_8822c[] = {
> +static const struct rtw_pwr_seq_cmd *card_disable_flow_8822c[] = {
> trans_act_to_cardemu_8822c,
> trans_cardemu_to_carddis_8822c,
> NULL
> };
>
> -static struct rtw_intf_phy_para usb2_param_8822c[] = {
> +static const struct rtw_intf_phy_para usb2_param_8822c[] = {
> {0xFFFF, 0x00,
> RTW_IP_SEL_PHY,
> RTW_INTF_PHY_CUT_ALL,
> RTW_INTF_PHY_PLATFORM_ALL},
> };
>
> -static struct rtw_intf_phy_para usb3_param_8822c[] = {
> +static const struct rtw_intf_phy_para usb3_param_8822c[] = {
> {0xFFFF, 0x0000,
> RTW_IP_SEL_PHY,
> RTW_INTF_PHY_CUT_ALL,
> RTW_INTF_PHY_PLATFORM_ALL},
> };
>
> -static struct rtw_intf_phy_para pcie_gen1_param_8822c[] = {
> +static const struct rtw_intf_phy_para pcie_gen1_param_8822c[] = {
> {0xFFFF, 0x0000,
> RTW_IP_SEL_PHY,
> RTW_INTF_PHY_CUT_ALL,
> RTW_INTF_PHY_PLATFORM_ALL},
> };
>
> -static struct rtw_intf_phy_para pcie_gen2_param_8822c[] = {
> +static const struct rtw_intf_phy_para pcie_gen2_param_8822c[] = {
> {0xFFFF, 0x0000,
> RTW_IP_SEL_PHY,
> RTW_INTF_PHY_CUT_ALL,
> RTW_INTF_PHY_PLATFORM_ALL},
> };
>
> -static struct rtw_intf_phy_para_table phy_para_table_8822c = {
> +static const struct rtw_intf_phy_para_table phy_para_table_8822c = {
> .usb2_para = usb2_param_8822c,
> .usb3_para = usb3_param_8822c,
> .gen1_para = pcie_gen1_param_8822c,
> @@ -3734,12 +3734,12 @@ static const struct rtw_rfe_def
> rtw8822c_rfe_defs[] = {
> [2] = RTW_DEF_RFE(8822c, 0, 0),
> };
>
> -static struct rtw_hw_reg rtw8822c_dig[] = {
> +static const struct rtw_hw_reg rtw8822c_dig[] = {
> [0] = { .addr = 0x1d70, .mask = 0x7f },
> [1] = { .addr = 0x1d70, .mask = 0x7f00 },
> };
>
> -static struct rtw_page_table page_table_8822c[] = {
> +static const struct rtw_page_table page_table_8822c[] = {
> {64, 64, 64, 64, 1},
> {64, 64, 64, 64, 1},
> {64, 64, 0, 0, 1},
> @@ -3747,7 +3747,7 @@ static struct rtw_page_table page_table_8822c[] =
> {
> {64, 64, 64, 64, 1},
> };
>
> -static struct rtw_rqpn rqpn_table_8822c[] = {
> +static const struct rtw_rqpn rqpn_table_8822c[] = {
> {RTW_DMA_MAPPING_NORMAL, RTW_DMA_MAPPING_NORMAL,
> RTW_DMA_MAPPING_LOW, RTW_DMA_MAPPING_LOW,
> RTW_DMA_MAPPING_EXTRA, RTW_DMA_MAPPING_HIGH},
>
>
It looks good to me.
Acked-by: Yan-Hsuan Chuang <yhchuang@realtek.com>
Yan-Hsuan
next prev parent reply other threads:[~2020-02-12 8:23 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-06 10:54 [PATCH] rtw88: 8822[bc]: Make tables const, reduce data object size Joe Perches
2020-02-12 8:23 ` Tony Chuang [this message]
2020-02-12 16:23 ` Kalle Valo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3a4ed67bbb1a4f85a7b0807bb5019675@realtek.com \
--to=yhchuang@realtek.com \
--cc=davem@davemloft.net \
--cc=joe@perches.com \
--cc=kvalo@codeaurora.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-wireless@vger.kernel.org \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.