Переглянути джерело

qcacld-3.0: Allow NDI creation in all concurrent cases

Currently, NDI and NDP creation is happening only if the
corresponding concurrency is allowed. But NDI should be allowed
to create/delete in all concurrent scenarios. So, don't validate
the other interfaces present on device for NDI creation/deletion
and validate only for NDP requests.

Change-Id: I8e8817ac63f1f94b48fe71a30ddf1d49183d263a
CRs-Fixed: 2552623
Srinivas Dasari 5 роки тому
батько
коміт
0610cc4041

+ 2 - 7
core/hdd/src/wlan_hdd_nan_datapath.c

@@ -411,14 +411,9 @@ static int __wlan_hdd_cfg80211_process_ndp_cmd(struct wiphy *wiphy,
 		hdd_err_rl("NAN datapath is not enabled");
 		return -EPERM;
 	}
-	/* NAN data path coexists only with STA interface */
-	if (false == hdd_is_ndp_allowed(hdd_ctx)) {
-		hdd_err_rl("Unsupported concurrency for NAN datapath");
-		return -EPERM;
-	}
 
-	return os_if_nan_process_ndp_cmd(hdd_ctx->psoc,
-					 data, data_len);
+	return os_if_nan_process_ndp_cmd(hdd_ctx->psoc, data, data_len,
+					 hdd_is_ndp_allowed(hdd_ctx));
 }
 
 /**

+ 4 - 1
os_if/nan/inc/os_if_nan.h

@@ -43,11 +43,14 @@ struct ndi_find_vdev_filter {
  * @psoc: pointer to psoc object
  * @data: request data. contains vendor cmd tlvs
  * @data_len: length of data
+ * @is_ndp_allowed: Indicates whether to allow NDP creation.
+ *		    NDI creation is always allowed.
  *
  * Return: status of operation
  */
 int os_if_nan_process_ndp_cmd(struct wlan_objmgr_psoc *psoc,
-				const void *data, int data_len);
+			      const void *data, int data_len,
+			      bool is_ndp_allowed);
 
 /**
  * os_if_nan_register_hdd_callbacks: os_if api to register hdd callbacks

+ 14 - 1
os_if/nan/src/os_if_nan.c

@@ -1015,7 +1015,8 @@ static int os_if_nan_process_ndp_end_req(struct wlan_objmgr_psoc *psoc,
 }
 
 int os_if_nan_process_ndp_cmd(struct wlan_objmgr_psoc *psoc,
-			      const void *data, int data_len)
+			      const void *data, int data_len,
+			      bool is_ndp_allowed)
 {
 	uint32_t ndp_cmd_type;
 	uint16_t transaction_id;
@@ -1058,10 +1059,22 @@ int os_if_nan_process_ndp_cmd(struct wlan_objmgr_psoc *psoc,
 	case QCA_WLAN_VENDOR_ATTR_NDP_INTERFACE_DELETE:
 		return os_if_nan_process_ndi_delete(psoc, tb);
 	case QCA_WLAN_VENDOR_ATTR_NDP_INITIATOR_REQUEST:
+		if (!is_ndp_allowed) {
+			osif_err("Unsupported concurrency for NAN datapath");
+			return -EOPNOTSUPP;
+		}
 		return os_if_nan_process_ndp_initiator_req(psoc, tb);
 	case QCA_WLAN_VENDOR_ATTR_NDP_RESPONDER_REQUEST:
+		if (!is_ndp_allowed) {
+			osif_err("Unsupported concurrency for NAN datapath");
+			return -EOPNOTSUPP;
+		}
 		return os_if_nan_process_ndp_responder_req(psoc, tb);
 	case QCA_WLAN_VENDOR_ATTR_NDP_END_REQUEST:
+		if (!is_ndp_allowed) {
+			osif_err("Unsupported concurrency for NAN datapath");
+			return -EOPNOTSUPP;
+		}
 		return os_if_nan_process_ndp_end_req(psoc, tb);
 	default:
 		osif_err("Unrecognized NDP vendor cmd %d", ndp_cmd_type);