Răsfoiți Sursa

qcacld-3.0: Enable/Disable NS offload in FW as per user space request

When coniguring NS Offload via Cfg80211, configure firmware NS Offload
to match via HDD.

Change-Id: I8d95be773ff29512ebb72a8eb5e9dddbc9e675dd
CRs-Fixed: 1064168
Dustin Brown 8 ani în urmă
părinte
comite
d8279d2d24

+ 1 - 0
core/hdd/inc/wlan_hdd_power.h

@@ -167,6 +167,7 @@ int wlan_hdd_cfg80211_resume_wlan(struct wiphy *wiphy);
 
 void hdd_ipv4_notifier_work_queue(struct work_struct *work);
 #ifdef WLAN_NS_OFFLOAD
+void hdd_conf_ns_offload(hdd_adapter_t *adapter, bool fenable);
 void hdd_ipv6_notifier_work_queue(struct work_struct *work);
 #endif
 

+ 5 - 0
core/hdd/src/wlan_hdd_cfg80211.c

@@ -4849,6 +4849,8 @@ __wlan_hdd_cfg80211_set_ns_offload(struct wiphy *wiphy,
 	int status;
 	struct nlattr *tb[QCA_WLAN_VENDOR_ATTR_ND_OFFLOAD_MAX + 1];
 	hdd_context_t *pHddCtx = wiphy_priv(wiphy);
+	struct net_device *dev = wdev->netdev;
+	hdd_adapter_t *adapter =  WLAN_HDD_GET_PRIV_PTR(dev);
 
 	ENTER_DEV(wdev->netdev);
 
@@ -4875,6 +4877,9 @@ __wlan_hdd_cfg80211_set_ns_offload(struct wiphy *wiphy,
 	pHddCtx->ns_offload_enable =
 		nla_get_u8(tb[QCA_WLAN_VENDOR_ATTR_ND_OFFLOAD_FLAG]);
 
+	/* update ns offload in case it is already enabled/disabled */
+	hdd_conf_ns_offload(adapter, pHddCtx->ns_offload_enable);
+
 	return 0;
 }
 

+ 1 - 1
core/hdd/src/wlan_hdd_power.c

@@ -508,7 +508,7 @@ static void hdd_enable_ns_offload(hdd_adapter_t *adapter)
  *
  * Return: nothing
  */
-static void hdd_conf_ns_offload(hdd_adapter_t *adapter, bool fenable)
+void hdd_conf_ns_offload(hdd_adapter_t *adapter, bool fenable)
 {
 	hdd_context_t *hdd_ctx;