summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBala Shanmugam Kamatchi <bkamatch@qti.qualcomm.com>2013-11-30 20:31:55 +0530
committerPrakash Dhavali <pdhavali@qca.qualcomm.com>2013-12-03 14:39:41 -0800
commitc4ee61c338c9b46773bb1968adb79a0252b06b2e (patch)
tree2f19c8228f7f589904d9b4823294369e6d21dfd2
parent0368a8ebfe0e5c3bb1e96199177ae1bcb015324d (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.c36
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",