Browse Source

qcacld-3.0: Add Vendor command response for low latency power save

Add vendor response for green ap low latency power save.

Change-Id: I82f53a3255a6550c9195aa225fbd4e99e371973b
CRs-Fixed: 3357283
Vijay Raj 2 years ago
parent
commit
f67a8ebc9a
1 changed files with 28 additions and 2 deletions
  1. 28 2
      core/hdd/src/wlan_hdd_green_ap.c

+ 28 - 2
core/hdd/src/wlan_hdd_green_ap.c

@@ -214,11 +214,13 @@ __wlan_hdd_enter_sap_low_pwr_mode(struct wiphy *wiphy,
 				  struct wireless_dev *wdev,
 				  const void *data, int data_len)
 {
-	uint8_t lp_flags;
+	uint8_t lp_flags, len;
+	uint64_t cookie_id;
 	QDF_STATUS status;
 	struct hdd_context *hdd_ctx = wiphy_priv(wiphy);
 	struct hdd_adapter *adapter = WLAN_HDD_GET_PRIV_PTR(wdev->netdev);
 	struct nlattr *tb[QCA_WLAN_VENDOR_ATTR_DOZED_AP_MAX + 1];
+	struct sk_buff *skb;
 
 	hdd_enter_dev(wdev->netdev);
 
@@ -247,14 +249,38 @@ __wlan_hdd_enter_sap_low_pwr_mode(struct wiphy *wiphy,
 		  lp_flags == QCA_WLAN_DOZED_AP_ENABLE ? "ENABLE" : "DISABLE");
 
 	status = ucfg_green_ap_ll_ps(hdd_ctx->pdev, adapter->vdev, lp_flags,
-				     adapter->session.ap.sap_config.beacon_int);
+				     adapter->session.ap.sap_config.beacon_int,
+				     &cookie_id);
 	if (status != QDF_STATUS_SUCCESS) {
 		hdd_err("unable to send low latency power save cmd");
 		return -EINVAL;
 	}
 
+	hdd_debug("Cookie id received : %u", cookie_id);
+
+	len = NLMSG_HDRLEN;
+	/*QCA_WLAN_VENDOR_ATTR_DOZED_AP_COOKIE*/
+	len += nla_total_size(sizeof(u64));
+
+	skb = cfg80211_vendor_cmd_alloc_reply_skb(wiphy, len);
+	if (!skb) {
+		hdd_err("skb allocation failed");
+		return -ENOMEM;
+	}
+
+	if (wlan_cfg80211_nla_put_u64(skb, QCA_WLAN_VENDOR_ATTR_DOZED_AP_COOKIE,
+				      cookie_id)) {
+		hdd_err("nla_put for cookie id failed");
+		goto fail;
+	}
+
+	cfg80211_vendor_cmd_reply(skb);
+
 	hdd_exit();
 
+	return 0;
+fail:
+	wlan_cfg80211_vendor_free_skb(skb);
 	return 0;
 }