Jelajahi Sumber

qcacld-3.0: Read dp cfg values at start_adptr instead of open_adptr

Stop modules is done and datapath context is cleared as part of
CDS dp close. But, as part of add virtual interface, the following
sequence is followed:
 1) hdd_open_adapter
 2) start_ modules from hdd_psoc_idle_restart
 3) hdd_start adapter.

hdd_open_adapter accesses the dp_soc to read TCP UDP checksum ini
value which is invalid access as dp_soc is not initialized.

Move the ini access logic to hdd_start adapter from hdd_open_adapter
as dp context is initialized in start_modules called as part of
hdd_psoc_idle_restart.

Change-Id: I1fbbcc7f8faf3d461c5625ee8cfb60a01c4f94d2
CRs-Fixed: 2393342
Rakshith Suresh Patkar 6 tahun lalu
induk
melakukan
9f5c586e08
2 mengubah file dengan 14 tambahan dan 14 penghapusan
  1. 7 6
      core/hdd/src/wlan_hdd_hostapd.c
  2. 7 8
      core/hdd/src/wlan_hdd_main.c

+ 7 - 6
core/hdd/src/wlan_hdd_hostapd.c

@@ -3194,6 +3194,13 @@ QDF_STATUS hdd_init_ap_mode(struct hdd_adapter *adapter, bool reinit)
 	if (0 != ret)
 		hdd_err("WMI_PDEV_PARAM_BURST_ENABLE set failed: %d", ret);
 
+	if (cdp_cfg_get(cds_get_context(QDF_MODULE_ID_SOC),
+			cfg_dp_enable_ip_tcp_udp_checksum_offload))
+		adapter->dev->features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
+	adapter->dev->features |= NETIF_F_RXCSUM;
+
+	hdd_set_tso_flags(hdd_ctx, adapter->dev);
+
 	if (!reinit) {
 		adapter->session.ap.sap_config.acs_cfg.acs_mode = false;
 		wlan_hdd_undo_acs(adapter);
@@ -3313,11 +3320,6 @@ struct hdd_adapter *hdd_wlan_create_ap_dev(struct hdd_context *hdd_ctx,
 	dev->mtu = HDD_DEFAULT_MTU;
 	dev->tx_queue_len = HDD_NETDEV_TX_QUEUE_LEN;
 
-	if (cdp_cfg_get(cds_get_context(QDF_MODULE_ID_SOC),
-			cfg_dp_enable_ip_tcp_udp_checksum_offload))
-		dev->features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
-	dev->features |= NETIF_F_RXCSUM;
-
 	qdf_mem_copy(dev->dev_addr, (void *)macAddr,
 		     sizeof(tSirMacAddr));
 	qdf_mem_copy(adapter->mac_addr.bytes,
@@ -3328,7 +3330,6 @@ struct hdd_adapter *hdd_wlan_create_ap_dev(struct hdd_context *hdd_ctx,
 	dev->ieee80211_ptr = &adapter->wdev;
 	adapter->wdev.wiphy = hdd_ctx->wiphy;
 	adapter->wdev.netdev = dev;
-	hdd_set_tso_flags(hdd_ctx, dev);
 
 	qdf_status = qdf_event_create(
 			&adapter->qdf_session_open_event);

+ 7 - 8
core/hdd/src/wlan_hdd_main.c

@@ -3794,9 +3794,7 @@ hdd_alloc_station_adapter(struct hdd_context *hdd_ctx, tSirMacAddr mac_addr,
 	struct hdd_adapter *adapter;
 	struct hdd_station_ctx *sta_ctx;
 	QDF_STATUS qdf_status;
-	void *soc;
 
-	soc = cds_get_context(QDF_MODULE_ID_SOC);
 	/* cfg80211 initialization and registration */
 	dev = alloc_netdev_mq(sizeof(*adapter), name,
 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 17, 0)) || defined(WITH_BACKPORTS)
@@ -3842,12 +3840,6 @@ hdd_alloc_station_adapter(struct hdd_context *hdd_ctx, tSirMacAddr mac_addr,
 	qdf_mem_copy(adapter->mac_addr.bytes, mac_addr, sizeof(tSirMacAddr));
 	dev->watchdog_timeo = HDD_TX_TIMEOUT;
 
-	if (cdp_cfg_get(soc,
-			cfg_dp_enable_ip_tcp_udp_checksum_offload))
-		dev->features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
-	dev->features |= NETIF_F_RXCSUM;
-
-	hdd_set_tso_flags(hdd_ctx, dev);
 	hdd_set_station_ops(adapter->dev);
 
 	hdd_dev_setup_destructor(dev);
@@ -4340,6 +4332,13 @@ QDF_STATUS hdd_init_station_mode(struct hdd_adapter *adapter)
 			!(qdf_atomic_read(&hdd_ctx->vendor_disable_lro_flag)))
 		adapter->dev->features |= NETIF_F_LRO;
 
+	if (cdp_cfg_get(cds_get_context(QDF_MODULE_ID_SOC),
+			cfg_dp_enable_ip_tcp_udp_checksum_offload))
+		adapter->dev->features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
+	adapter->dev->features |= NETIF_F_RXCSUM;
+
+	hdd_set_tso_flags(hdd_ctx, adapter->dev);
+
 	/* rcpi info initialization */
 	qdf_mem_zero(&adapter->rcpi, sizeof(adapter->rcpi));