diff options
| author | Bala Shanmugam Kamatchi <bkamatch@qti.qualcomm.com> | 2013-11-30 20:31:55 +0530 |
|---|---|---|
| committer | Prakash Dhavali <pdhavali@qca.qualcomm.com> | 2013-12-03 14:39:41 -0800 |
| commit | c4ee61c338c9b46773bb1968adb79a0252b06b2e (patch) | |
| tree | 2f19c8228f7f589904d9b4823294369e6d21dfd2 | |
| parent | 0368a8ebfe0e5c3bb1e96199177ae1bcb015324d (diff) | |
cld: wma: Send NAT keepalive enable command
Send NAT keepalive enable WMI command if the service
bit is set.
Change-Id: I41b601ff404f47ce1ba3b9853a1528ff4c85377d
CRs-Fixed: 583249
| -rw-r--r-- | CORE/SERVICES/WMA/wma.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c index 4784ff2a3120..9119643d2284 100644 --- a/CORE/SERVICES/WMA/wma.c +++ b/CORE/SERVICES/WMA/wma.c @@ -5040,6 +5040,34 @@ send_rsp: wma_send_msg(wma, WDA_ADD_STA_RSP, (void *)add_sta, 0); } +static int wmi_unified_nat_keepalive_enable(tp_wma_handle wma, + u_int8_t vdev_id) +{ + WMI_VDEV_IPSEC_NATKEEPALIVE_FILTER_CMD_fixed_param *cmd; + wmi_buf_t buf; + int32_t len = sizeof(*cmd); + + WMA_LOGD("%s: vdev_id %d", __func__, vdev_id); + buf = wmi_buf_alloc(wma->wmi_handle, len); + if (!buf) { + WMA_LOGP("%s:wmi_buf_alloc failed\n", __func__); + return -ENOMEM; + } + cmd = (WMI_VDEV_IPSEC_NATKEEPALIVE_FILTER_CMD_fixed_param *) wmi_buf_data(buf); + WMITLV_SET_HDR(&cmd->tlv_header, + WMITLV_TAG_STRUC_WMI_VDEV_IPSEC_NATKEEPALIVE_FILTER_CMD_fixed_param, + WMITLV_GET_STRUCT_TLVLEN(WMI_VDEV_IPSEC_NATKEEPALIVE_FILTER_CMD_fixed_param)); + cmd->vdev_id = vdev_id; + cmd->action = IPSEC_NATKEEPALIVE_FILTER_ENABLE; + if (wmi_unified_cmd_send(wma->wmi_handle, buf, len, + WMI_VDEV_IPSEC_NATKEEPALIVE_FILTER_CMDID)) { + WMA_LOGP("Failed to send NAT keepalive enable command"); + wmi_buf_free(buf); + return -EIO; + } + return 0; +} + static int wmi_unified_csa_offload_enable(tp_wma_handle wma, u_int8_t vdev_id) { @@ -5135,6 +5163,14 @@ static void wma_add_sta_req_sta_mode(tp_wma_handle wma, tpAddStaParams params) } } + if (WMI_SERVICE_IS_ENABLED(wma->wmi_service_bitmap, + WMI_SERVICE_FILTER_IPSEC_NATKEEPALIVE)) { + if (wmi_unified_nat_keepalive_enable(wma, params->smesessionId) < 0) { + WMA_LOGE("Unable to enable NAT keepalive for vdev_id:%d", + params->smesessionId); + } + } + if (wmi_unified_vdev_up_send(wma->wmi_handle, params->smesessionId, params->assocId, params->bssId) < 0) { WMA_LOGP("Failed to send vdev up cmd: vdev %d bssid %pM\n", |
