[PATCH v3] ath10k: Add support to provide higher range mem chunks in wmi init command

2019-02-25 Thread Surabhi Vishnoi
With the current implementation of wmi init command,
there is no provision for the host driver to provide mem
chunks addresses with more than 32-bit, to the firmware.
WCN3990 is a 35-bit target and can accept mem chunks addresses
which are above 32-bit.

If firmware supports address range more than 32 bit, it
advertises the support by setting the WMI_SERVICE_EXTEND_ADDRESS
service. Based on this service fill the upper bits of paddr while
providing the mem chunks in the wmi init command.

Tested HW: WCN3990
Tested FW: WLAN.HL.3.1-00784-QCAHLSWMTPLZ-1

Signed-off-by: Surabhi Vishnoi 
---
This patch is dependent on following patch:
ath10k: correct the format of host memory chunks in wmi init command 
(https://patchwork.kernel.org/patch/10811669/)
---
 drivers/net/wireless/ath/ath10k/wmi-tlv.c | 10 ++--
 drivers/net/wireless/ath/ath10k/wmi-tlv.h | 42 +++
 drivers/net/wireless/ath/ath10k/wmi.h |  1 +
 3 files changed, 51 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/ath/ath10k/wmi-tlv.c 
b/drivers/net/wireless/ath/ath10k/wmi-tlv.c
index 554000c..4978299 100644
--- a/drivers/net/wireless/ath/ath10k/wmi-tlv.c
+++ b/drivers/net/wireless/ath/ath10k/wmi-tlv.c
@@ -1572,7 +1572,7 @@ static enum wmi_txbf_conf 
ath10k_wmi_tlv_txbf_conf_scheme(struct ath10k *ar)
 static void
 ath10k_wmi_tlv_put_host_mem_chunks(struct ath10k *ar, void *host_mem_chunks)
 {
-   struct host_memory_chunk *chunk;
+   struct host_memory_chunk_tlv *chunk;
struct wmi_tlv *tlv;
int i;
__le16 tlv_len, tlv_tag;
@@ -1589,6 +1589,12 @@ static enum wmi_txbf_conf 
ath10k_wmi_tlv_txbf_conf_scheme(struct ath10k *ar)
chunk->size = __cpu_to_le32(ar->wmi.mem_chunks[i].len);
chunk->req_id = __cpu_to_le32(ar->wmi.mem_chunks[i].req_id);
 
+   if (test_bit(WMI_SERVICE_SUPPORT_EXTEND_ADDRESS,
+ar->wmi.svc_map))
+   chunk->ptr_high = __cpu_to_le32
+(upper_32_bits
+(ar->wmi.mem_chunks[i].paddr));
+
ath10k_dbg(ar, ATH10K_DBG_WMI,
   "wmi-tlv chunk %d len %d, addr 0x%llx, id 0x%x\n",
   i,
@@ -1612,7 +1618,7 @@ static struct sk_buff *ath10k_wmi_tlv_op_gen_init(struct 
ath10k *ar)
void *ptr;
 
chunks_len = ar->wmi.num_mem_chunks *
-(sizeof(struct host_memory_chunk) + sizeof(*tlv));
+(sizeof(struct host_memory_chunk_tlv) + sizeof(*tlv));
len = (sizeof(*tlv) + sizeof(*cmd)) +
  (sizeof(*tlv) + sizeof(*cfg)) +
  (sizeof(*tlv) + chunks_len);
diff --git a/drivers/net/wireless/ath/ath10k/wmi-tlv.h 
b/drivers/net/wireless/ath/ath10k/wmi-tlv.h
index af4cb0e..b57522b 100644
--- a/drivers/net/wireless/ath/ath10k/wmi-tlv.h
+++ b/drivers/net/wireless/ath/ath10k/wmi-tlv.h
@@ -1384,6 +1384,30 @@ enum wmi_tlv_service {
WMI_TLV_SERVICE_AP_TWT = 153,
WMI_TLV_SERVICE_GMAC_OFFLOAD_SUPPORT = 154,
WMI_TLV_SERVICE_SPOOF_MAC_SUPPORT = 155,
+   WMI_TLV_SERVICE_PEER_TID_CONFIGS_SUPPORT = 156,
+   WMI_TLV_SERVICE_VDEV_SWRETRY_PER_AC_CONFIG_SUPPORT = 157,
+   WMI_TLV_SERVICE_DUAL_BEACON_ON_SINGLE_MAC_SCC_SUPPORT = 158,
+   WMI_TLV_SERVICE_DUAL_BEACON_ON_SINGLE_MAC_MCC_SUPPORT = 159,
+   WMI_TLV_SERVICE_MOTION_DET = 160,
+   WMI_TLV_SERVICE_INFRA_MBSSID = 161,
+   WMI_TLV_SERVICE_OBSS_SPATIAL_REUSE = 162,
+   WMI_TLV_SERVICE_VDEV_DIFFERENT_BEACON_INTERVAL_SUPPORT = 163,
+   WMI_TLV_SERVICE_NAN_DBS_SUPPORT = 164,
+   WMI_TLV_SERVICE_NDI_DBS_SUPPORT = 165,
+   WMI_TLV_SERVICE_NAN_SAP_SUPPORT = 166,
+   WMI_TLV_SERVICE_NDI_SAP_SUPPORT = 167,
+   WMI_TLV_SERVICE_CFR_CAPTURE_SUPPORT = 168,
+   WMI_TLV_SERVICE_CFR_CAPTURE_IND_MSG_TYPE_1 = 169,
+   WMI_TLV_SERVICE_ESP_SUPPORT = 170,
+   WMI_TLV_SERVICE_PEER_CHWIDTH_CHANGE = 171,
+   WMI_TLV_SERVICE_WLAN_HPCS_PULSE = 172,
+   WMI_TLV_SERVICE_PER_VDEV_CHAINMASK_CONFIG_SUPPORT = 173,
+   WMI_TLV_SERVICE_TX_DATA_MGMT_ACK_RSSI = 174,
+   WMI_TLV_SERVICE_NAN_DISABLE_SUPPORT = 175,
+   WMI_TLV_SERVICE_HTT_H2T_NO_HTC_HDR_LEN_IN_MSG_LEN = 176,
+   WMI_TLV_SERVICE_COEX_SUPPORT_UNEQUAL_ISOLATION = 177,
+   WMI_TLV_SERVICE_HW_DB2DBM_CONVERSION_SUPPORT = 178,
+   WMI_TLV_SERVICE_SUPPORT_EXTEND_ADDRESS = 179,
 
WMI_TLV_MAX_EXT_SERVICE = 256,
 };
@@ -1557,6 +1581,9 @@ enum wmi_tlv_service {
SVCMAP(WMI_TLV_SERVICE_THERM_THROT,
   WMI_SERVICE_THERM_THROT,
   WMI_TLV_MAX_SERVICE);
+   SVCMAP(WMI_TLV_SERVICE_SUPPORT_EXTEND_ADDRESS,
+  WMI_SERVICE_SUPPORT_EXTEND_ADDRESS,
+  WMI_TLV_MAX_SERVICE);
 }
 
 #undef SVCMAP
@@ -1694,6 +1721,21 @@ struct wmi_tlv_resource_config {
__le32 host_capab;
 } __packed;
 
+/* structure describing host memory chunk. */
+struct host_memory_chunk_t

Re: [PATCH v3] ath10k: Add support to provide higher range mem chunks in wmi init command

2019-09-23 Thread Kalle Valo
Surabhi Vishnoi  wrote:

> With the current implementation of wmi init command,
> there is no provision for the host driver to provide mem
> chunks addresses with more than 32-bit, to the firmware.
> WCN3990 is a 35-bit target and can accept mem chunks addresses
> which are above 32-bit.
> 
> If firmware supports address range more than 32 bit, it
> advertises the support by setting the WMI_SERVICE_EXTEND_ADDRESS
> service. Based on this service fill the upper bits of paddr while
> providing the mem chunks in the wmi init command.
> 
> Tested HW: WCN3990
> Tested FW: WLAN.HL.3.1-00784-QCAHLSWMTPLZ-1
> 
> Signed-off-by: Surabhi Vishnoi 
> Signed-off-by: Kalle Valo 

Patch applied to ath-next branch of ath.git, thanks.

40f4ef5e9232 ath10k: Add support to provide higher range mem chunks in wmi init 
command

-- 
https://patchwork.kernel.org/patch/10828535/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches



Re: [PATCH v3] ath10k: Add support to provide higher range mem chunks in wmi init command

2019-09-23 Thread Kalle Valo
Surabhi Vishnoi  wrote:

> With the current implementation of wmi init command,
> there is no provision for the host driver to provide mem
> chunks addresses with more than 32-bit, to the firmware.
> WCN3990 is a 35-bit target and can accept mem chunks addresses
> which are above 32-bit.
> 
> If firmware supports address range more than 32 bit, it
> advertises the support by setting the WMI_SERVICE_EXTEND_ADDRESS
> service. Based on this service fill the upper bits of paddr while
> providing the mem chunks in the wmi init command.
> 
> Tested HW: WCN3990
> Tested FW: WLAN.HL.3.1-00784-QCAHLSWMTPLZ-1
> 
> Signed-off-by: Surabhi Vishnoi 
> Signed-off-by: Kalle Valo 

Patch applied to ath-next branch of ath.git, thanks.

40f4ef5e9232 ath10k: Add support to provide higher range mem chunks in wmi init 
command

-- 
https://patchwork.kernel.org/patch/10828535/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches


___
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k