Jelajahi Sumber

qcacld-3.0: Disable ARP_NS and GTK offload for NaN mode

arp_ns_offload and gtk offload command are being issued for NaN mode
vdev. NaN mode vdev does not support ARP_NS and GTK off load features,
so disable them when in NaN mode.

Change-Id: Iab11c92bb5da4004b62e642342a386f532832509
CRs-Fixed: 2608618
Alan Chen 5 tahun lalu
induk
melakukan
4ea561fa80
2 mengubah file dengan 17 tambahan dan 5 penghapusan
  1. 15 1
      components/pmo/core/src/wlan_pmo_gtk.c
  2. 2 4
      core/hdd/src/wlan_hdd_power.c

+ 15 - 1
components/pmo/core/src/wlan_pmo_gtk.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017-2019 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2017-2020 The Linux Foundation. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for
  * any purpose with or without fee is hereby granted, provided that the
@@ -72,6 +72,13 @@ static QDF_STATUS pmo_core_do_enable_gtk_offload(
 {
 	QDF_STATUS status = QDF_STATUS_SUCCESS;
 	uint8_t vdev_id;
+	enum QDF_OPMODE op_mode;
+
+	op_mode = pmo_get_vdev_opmode(vdev);
+	if (QDF_NDI_MODE == op_mode) {
+		pmo_debug("gtk offload is not supported in NaN mode");
+		return QDF_STATUS_E_INVAL;
+	}
 
 	if (!pmo_core_is_vdev_supports_offload(vdev)) {
 		pmo_debug("vdev in invalid opmode for gtk offload %d",
@@ -156,6 +163,13 @@ static QDF_STATUS pmo_core_do_disable_gtk_offload(
 			struct pmo_gtk_req *op_gtk_req)
 {
 	QDF_STATUS status = QDF_STATUS_SUCCESS;
+	enum QDF_OPMODE op_mode;
+
+	op_mode = pmo_get_vdev_opmode(vdev);
+	if (QDF_NDI_MODE == op_mode) {
+		pmo_debug("gtk offload is not supported in NaN mode");
+		return QDF_STATUS_E_INVAL;
+	}
 
 	status = pmo_core_is_gtk_enabled_in_fwr(vdev, vdev_ctx);
 	if (status != QDF_STATUS_SUCCESS)

+ 2 - 4
core/hdd/src/wlan_hdd_power.c

@@ -281,8 +281,7 @@ static void __wlan_hdd_ipv6_changed(struct net_device *net_dev)
 		goto exit;
 
 	if (adapter->device_mode == QDF_STA_MODE ||
-	    adapter->device_mode == QDF_P2P_CLIENT_MODE ||
-	    adapter->device_mode == QDF_NDI_MODE) {
+	    adapter->device_mode == QDF_P2P_CLIENT_MODE) {
 		hdd_debug("invoking sme_dhcp_done_ind");
 		sme_dhcp_done_ind(hdd_ctx->mac_handle, adapter->vdev_id);
 		schedule_work(&adapter->ipv6_notifier_work);
@@ -910,8 +909,7 @@ static void __wlan_hdd_ipv4_changed(struct net_device *net_dev)
 		goto exit;
 
 	if (adapter->device_mode == QDF_STA_MODE ||
-	    adapter->device_mode == QDF_P2P_CLIENT_MODE ||
-	    adapter->device_mode == QDF_NDI_MODE) {
+	    adapter->device_mode == QDF_P2P_CLIENT_MODE) {
 		hdd_debug("invoking sme_dhcp_done_ind");
 		sme_dhcp_done_ind(hdd_ctx->mac_handle, adapter->vdev_id);