[PATCH 3/4] ath10k: WMI: get wmi init parameter values from hw params
Sebastian Gottschall
s.gottschall at dd-wrt.com
Wed Nov 29 14:39:27 PST 2017
your code is not endian safe
see.
cfg->num_peers = ar->hw_params.num_peers;
you forgot to use __cpu_to_le32
Am 29.11.2017 um 10:51 schrieb Rakesh Pillai:
> The parameter values for skid limit, number of peers and wds
> entries values which are sent in wmi init cmd are hardware
> specific.
>
> Add support to obtain skid limit, number of peers and wds entries
> values from hw params which will have the hw specific values
> for these parameters.
>
> Signed-off-by: Rakesh Pillai <pillair at qti.qualcomm.com>
> Signed-off-by: Govind Singh <govinds at qti.qualcomm.com>
> ---
> drivers/net/wireless/ath/ath10k/core.c | 36 +++++++++++++++++++++++++++++++
> drivers/net/wireless/ath/ath10k/hw.h | 4 ++++
> drivers/net/wireless/ath/ath10k/wmi-tlv.c | 7 +++---
> 3 files changed, 44 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath10k/core.c b/drivers/net/wireless/ath/ath10k/core.c
> index 1e4e18e..be18913 100644
> --- a/drivers/net/wireless/ath/ath10k/core.c
> +++ b/drivers/net/wireless/ath/ath10k/core.c
> @@ -75,6 +75,9 @@
> .vht160_mcs_rx_highest = 0,
> .vht160_mcs_tx_highest = 0,
> .n_cipher_suites = 8,
> + .num_peers = TARGET_TLV_NUM_PEERS,
> + .ast_skid_limit = 0x10,
> + .num_wds_entries = 0x20,
> },
> {
> .id = QCA9887_HW_1_0_VERSION,
> @@ -99,6 +102,9 @@
> .vht160_mcs_rx_highest = 0,
> .vht160_mcs_tx_highest = 0,
> .n_cipher_suites = 8,
> + .num_peers = TARGET_TLV_NUM_PEERS,
> + .ast_skid_limit = 0x10,
> + .num_wds_entries = 0x20,
> },
> {
> .id = QCA6174_HW_2_1_VERSION,
> @@ -122,6 +128,9 @@
> .vht160_mcs_rx_highest = 0,
> .vht160_mcs_tx_highest = 0,
> .n_cipher_suites = 8,
> + .num_peers = TARGET_TLV_NUM_PEERS,
> + .ast_skid_limit = 0x10,
> + .num_wds_entries = 0x20,
> },
> {
> .id = QCA6174_HW_2_1_VERSION,
> @@ -145,6 +154,9 @@
> .vht160_mcs_rx_highest = 0,
> .vht160_mcs_tx_highest = 0,
> .n_cipher_suites = 8,
> + .num_peers = TARGET_TLV_NUM_PEERS,
> + .ast_skid_limit = 0x10,
> + .num_wds_entries = 0x20,
> },
> {
> .id = QCA6174_HW_3_0_VERSION,
> @@ -168,6 +180,9 @@
> .vht160_mcs_rx_highest = 0,
> .vht160_mcs_tx_highest = 0,
> .n_cipher_suites = 8,
> + .num_peers = TARGET_TLV_NUM_PEERS,
> + .ast_skid_limit = 0x10,
> + .num_wds_entries = 0x20,
> },
> {
> .id = QCA6174_HW_3_2_VERSION,
> @@ -194,6 +209,9 @@
> .vht160_mcs_rx_highest = 0,
> .vht160_mcs_tx_highest = 0,
> .n_cipher_suites = 8,
> + .num_peers = TARGET_TLV_NUM_PEERS,
> + .ast_skid_limit = 0x10,
> + .num_wds_entries = 0x20,
> },
> {
> .id = QCA99X0_HW_2_0_DEV_VERSION,
> @@ -223,6 +241,9 @@
> .vht160_mcs_rx_highest = 0,
> .vht160_mcs_tx_highest = 0,
> .n_cipher_suites = 11,
> + .num_peers = TARGET_TLV_NUM_PEERS,
> + .ast_skid_limit = 0x10,
> + .num_wds_entries = 0x20,
> },
> {
> .id = QCA9984_HW_1_0_DEV_VERSION,
> @@ -257,6 +278,9 @@
> .vht160_mcs_rx_highest = 1560,
> .vht160_mcs_tx_highest = 1560,
> .n_cipher_suites = 11,
> + .num_peers = TARGET_TLV_NUM_PEERS,
> + .ast_skid_limit = 0x10,
> + .num_wds_entries = 0x20,
> },
> {
> .id = QCA9888_HW_2_0_DEV_VERSION,
> @@ -290,6 +314,9 @@
> .vht160_mcs_rx_highest = 780,
> .vht160_mcs_tx_highest = 780,
> .n_cipher_suites = 11,
> + .num_peers = TARGET_TLV_NUM_PEERS,
> + .ast_skid_limit = 0x10,
> + .num_wds_entries = 0x20,
> },
> {
> .id = QCA9377_HW_1_0_DEV_VERSION,
> @@ -313,6 +340,9 @@
> .vht160_mcs_rx_highest = 0,
> .vht160_mcs_tx_highest = 0,
> .n_cipher_suites = 8,
> + .num_peers = TARGET_TLV_NUM_PEERS,
> + .ast_skid_limit = 0x10,
> + .num_wds_entries = 0x20,
> },
> {
> .id = QCA9377_HW_1_1_DEV_VERSION,
> @@ -338,6 +368,9 @@
> .vht160_mcs_rx_highest = 0,
> .vht160_mcs_tx_highest = 0,
> .n_cipher_suites = 8,
> + .num_peers = TARGET_TLV_NUM_PEERS,
> + .ast_skid_limit = 0x10,
> + .num_wds_entries = 0x20,
> },
> {
> .id = QCA4019_HW_1_0_DEV_VERSION,
> @@ -368,6 +401,9 @@
> .vht160_mcs_rx_highest = 0,
> .vht160_mcs_tx_highest = 0,
> .n_cipher_suites = 11,
> + .num_peers = TARGET_TLV_NUM_PEERS,
> + .ast_skid_limit = 0x10,
> + .num_wds_entries = 0x20,
> },
> };
>
> diff --git a/drivers/net/wireless/ath/ath10k/hw.h b/drivers/net/wireless/ath/ath10k/hw.h
> index 05f26e5..fedb6c7 100644
> --- a/drivers/net/wireless/ath/ath10k/hw.h
> +++ b/drivers/net/wireless/ath/ath10k/hw.h
> @@ -553,6 +553,10 @@ struct ath10k_hw_params {
>
> /* Number of ciphers supported (i.e First N) in cipher_suites array */
> int n_cipher_suites;
> +
> + u32 num_peers;
> + u32 ast_skid_limit;
> + u32 num_wds_entries;
> };
>
> struct htt_rx_desc;
> diff --git a/drivers/net/wireless/ath/ath10k/wmi-tlv.c b/drivers/net/wireless/ath/ath10k/wmi-tlv.c
> index 452846c..0183d01 100644
> --- a/drivers/net/wireless/ath/ath10k/wmi-tlv.c
> +++ b/drivers/net/wireless/ath/ath10k/wmi-tlv.c
> @@ -1440,7 +1440,10 @@ static struct sk_buff *ath10k_wmi_tlv_op_gen_init(struct ath10k *ar)
> cmd->num_host_mem_chunks = __cpu_to_le32(ar->wmi.num_mem_chunks);
>
> cfg->num_vdevs = __cpu_to_le32(TARGET_TLV_NUM_VDEVS);
> - cfg->num_peers = __cpu_to_le32(TARGET_TLV_NUM_PEERS);
> +
> + cfg->num_peers = ar->hw_params.num_peers;
> + cfg->ast_skid_limit = ar->hw_params.ast_skid_limit;
> + cfg->num_wds_entries = ar->hw_params.num_wds_entries;
>
> if (test_bit(WMI_SERVICE_RX_FULL_REORDER, ar->wmi.svc_map)) {
> cfg->num_offload_peers = __cpu_to_le32(TARGET_TLV_NUM_VDEVS);
> @@ -1452,7 +1455,6 @@ static struct sk_buff *ath10k_wmi_tlv_op_gen_init(struct ath10k *ar)
>
> cfg->num_peer_keys = __cpu_to_le32(2);
> cfg->num_tids = __cpu_to_le32(TARGET_TLV_NUM_TIDS);
> - cfg->ast_skid_limit = __cpu_to_le32(0x10);
> cfg->tx_chain_mask = __cpu_to_le32(0x7);
> cfg->rx_chain_mask = __cpu_to_le32(0x7);
> cfg->rx_timeout_pri[0] = __cpu_to_le32(0x64);
> @@ -1468,7 +1470,6 @@ static struct sk_buff *ath10k_wmi_tlv_op_gen_init(struct ath10k *ar)
> cfg->num_mcast_table_elems = __cpu_to_le32(0);
> cfg->mcast2ucast_mode = __cpu_to_le32(0);
> cfg->tx_dbg_log_size = __cpu_to_le32(0x400);
> - cfg->num_wds_entries = __cpu_to_le32(0x20);
> cfg->dma_burst_size = __cpu_to_le32(0);
> cfg->mac_aggr_delim = __cpu_to_le32(0);
> cfg->rx_skip_defrag_timeout_dup_detection_check = __cpu_to_le32(0);
--
Mit freundlichen Grüssen / Regards
Sebastian Gottschall / CTO
NewMedia-NET GmbH - DD-WRT
Firmensitz: Stubenwaldallee 21a, 64625 Bensheim
Registergericht: Amtsgericht Darmstadt, HRB 25473
Geschäftsführer: Peter Steinhäuser, Christian Scheele
http://www.dd-wrt.com
email: s.gottschall at dd-wrt.com
Tel.: +496251-582650 / Fax: +496251-5826565
More information about the ath10k
mailing list