qcacld-3.0: Add vendor ID and fix WMI command parameters
For P2P listen offload feature, add vendor ID information in wiphy vendor command structure, also add missing data length assignment when sending WMI command to FW. Change-Id: Ia889d794cae156814056aeefdfdf339429bf1401 CRs-fixed: 1040310
This commit is contained in:

committed by
Vishwajith Upendra

parent
d222096dc8
commit
4225c15300
@@ -6759,6 +6759,7 @@ const struct wiphy_vendor_command hdd_wiphy_vendor_commands[] = {
|
|||||||
.doit = wlan_hdd_cfg80211_sap_configuration_set
|
.doit = wlan_hdd_cfg80211_sap_configuration_set
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
.info.vendor_id = QCA_NL80211_VENDOR_ID,
|
||||||
.info.subcmd =
|
.info.subcmd =
|
||||||
QCA_NL80211_VENDOR_SUBCMD_P2P_LISTEN_OFFLOAD_START,
|
QCA_NL80211_VENDOR_SUBCMD_P2P_LISTEN_OFFLOAD_START,
|
||||||
.flags = WIPHY_VENDOR_CMD_NEED_WDEV |
|
.flags = WIPHY_VENDOR_CMD_NEED_WDEV |
|
||||||
|
@@ -7493,15 +7493,20 @@ QDF_STATUS wma_p2p_lo_start(struct sir_p2p_lo_start *params)
|
|||||||
tp_wma_handle wma = cds_get_context(QDF_MODULE_ID_WMA);
|
tp_wma_handle wma = cds_get_context(QDF_MODULE_ID_WMA);
|
||||||
uint8_t *buf_ptr;
|
uint8_t *buf_ptr;
|
||||||
int ret;
|
int ret;
|
||||||
|
int device_types_len_aligned, probe_resp_len_aligned;
|
||||||
|
|
||||||
if (NULL == wma) {
|
if (NULL == wma) {
|
||||||
WMA_LOGE("%s: wma context is NULL", __func__);
|
WMA_LOGE("%s: wma context is NULL", __func__);
|
||||||
return QDF_STATUS_E_INVAL;
|
return QDF_STATUS_E_INVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
len += 2 * WMI_TLV_HDR_SIZE +
|
device_types_len_aligned = qdf_roundup(params->dev_types_len,
|
||||||
qdf_roundup(params->dev_types_len, sizeof(A_UINT32)) +
|
sizeof(A_UINT32));
|
||||||
qdf_roundup(params->probe_resp_len, sizeof(A_UINT32));
|
probe_resp_len_aligned = qdf_roundup(params->probe_resp_len,
|
||||||
|
sizeof(A_UINT32));
|
||||||
|
|
||||||
|
len += 2 * WMI_TLV_HDR_SIZE + device_types_len_aligned +
|
||||||
|
probe_resp_len_aligned;
|
||||||
|
|
||||||
buf = wmi_buf_alloc(wma->wmi_handle, len);
|
buf = wmi_buf_alloc(wma->wmi_handle, len);
|
||||||
if (!buf) {
|
if (!buf) {
|
||||||
@@ -7524,16 +7529,17 @@ QDF_STATUS wma_p2p_lo_start(struct sir_p2p_lo_start *params)
|
|||||||
cmd->period = params->period;
|
cmd->period = params->period;
|
||||||
cmd->interval = params->interval;
|
cmd->interval = params->interval;
|
||||||
cmd->count = params->count;
|
cmd->count = params->count;
|
||||||
|
cmd->device_types_len = params->dev_types_len;
|
||||||
|
cmd->prob_resp_len = params->probe_resp_len;
|
||||||
|
|
||||||
buf_ptr += sizeof(wmi_p2p_lo_start_cmd_fixed_param);
|
buf_ptr += sizeof(wmi_p2p_lo_start_cmd_fixed_param);
|
||||||
WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_BYTE,
|
WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_BYTE,
|
||||||
qdf_roundup(params->dev_types_len, sizeof(A_UINT32)));
|
device_types_len_aligned);
|
||||||
buf_ptr += WMI_TLV_HDR_SIZE;
|
buf_ptr += WMI_TLV_HDR_SIZE;
|
||||||
qdf_mem_copy(buf_ptr, params->device_types, params->dev_types_len);
|
qdf_mem_copy(buf_ptr, params->device_types, params->dev_types_len);
|
||||||
|
|
||||||
buf_ptr += qdf_roundup(params->dev_types_len, sizeof(A_UINT32));
|
buf_ptr += device_types_len_aligned;
|
||||||
WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_BYTE,
|
WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_BYTE, probe_resp_len_aligned);
|
||||||
qdf_roundup(params->probe_resp_len, sizeof(A_UINT32)));
|
|
||||||
buf_ptr += WMI_TLV_HDR_SIZE;
|
buf_ptr += WMI_TLV_HDR_SIZE;
|
||||||
qdf_mem_copy(buf_ptr, params->probe_resp_tmplt, params->probe_resp_len);
|
qdf_mem_copy(buf_ptr, params->probe_resp_tmplt, params->probe_resp_len);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user