소스 검색

qcacld-3.0: Enhance logging in address change notifiers

Currently an issue is being observed where UMAC is not correctly
responding to Link Measurement Request action frames. The logic in
UMAC is dependent upon sme_dhcp_done_ind() being called from the HDD
address change notifiers. Unfortunately neither HDD nor SME log when
this occurs, so it is impossible to tell from the logs whether or not
this has occurred.

Add appropriate logging to the HDD address change notifiers so that
it is clear when sme_dhcp_done_ind() is invoked, and upon which
interface.

Change-Id: I35f80af382df4ff118bf426d12dc47ef7bbbc080
CRs-Fixed: 1084151
Jeff Johnson 8 년 전
부모
커밋
158c8d0c48
1개의 변경된 파일23개의 추가작업 그리고 18개의 파일을 삭제
  1. 23 18
      core/hdd/src/wlan_hdd_power.c

+ 23 - 18
core/hdd/src/wlan_hdd_power.c

@@ -233,29 +233,31 @@ static int __wlan_hdd_ipv6_changed(struct notifier_block *nb,
 	struct net_device *ndev = ifa->idev->dev;
 	hdd_adapter_t *pAdapter = WLAN_HDD_GET_PRIV_PTR(ndev);
 	hdd_context_t *pHddCtx;
+	hdd_station_ctx_t *sta_ctx;
 	int status;
 
-	ENTER();
+	ENTER_DEV(ndev);
 
 	if ((pAdapter == NULL) || (WLAN_HDD_ADAPTER_MAGIC != pAdapter->magic)) {
 		hdd_err("Adapter context is invalid %p", pAdapter);
-		return -EINVAL;
+		return NOTIFY_DONE;
 	}
 
 	if ((pAdapter->dev == ndev) &&
-		(pAdapter->device_mode == QDF_STA_MODE ||
-		pAdapter->device_mode == QDF_P2P_CLIENT_MODE ||
-		pAdapter->device_mode == QDF_NDI_MODE)) {
+	    (pAdapter->device_mode == QDF_STA_MODE ||
+	     pAdapter->device_mode == QDF_P2P_CLIENT_MODE ||
+	     pAdapter->device_mode == QDF_NDI_MODE)) {
 		pHddCtx = WLAN_HDD_GET_CTX(pAdapter);
 		status = wlan_hdd_validate_context(pHddCtx);
 		if (0 != status)
 			return NOTIFY_DONE;
+		sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(pAdapter);
 		if (eConnectionState_Associated ==
-		   WLAN_HDD_GET_STATION_CTX_PTR(
-		   pAdapter)->conn_info.connState)
+						sta_ctx->conn_info.connState) {
+			hdd_info("invoking sme_dhcp_done_ind");
 			sme_dhcp_done_ind(pHddCtx->hHal,
-				pAdapter->sessionId);
-
+					  pAdapter->sessionId);
+		}
 		schedule_work(&pAdapter->ipv6NotifierWorkQueue);
 	}
 	EXIT();
@@ -751,30 +753,33 @@ static int __wlan_hdd_ipv4_changed(struct notifier_block *nb,
 	struct net_device *ndev = ifa->ifa_dev->dev;
 	hdd_adapter_t *pAdapter = WLAN_HDD_GET_PRIV_PTR(ndev);
 	hdd_context_t *pHddCtx;
+	hdd_station_ctx_t *sta_ctx;
 	int status;
 
-	ENTER();
+	ENTER_DEV(ndev);
 
 	if ((pAdapter == NULL) || (WLAN_HDD_ADAPTER_MAGIC != pAdapter->magic)) {
 		hdd_err("Adapter context is invalid %p", pAdapter);
-		return -EINVAL;
+		return NOTIFY_DONE;
 	}
 
-	if ((pAdapter && pAdapter->dev == ndev) &&
-		(pAdapter->device_mode == QDF_STA_MODE ||
-		pAdapter->device_mode == QDF_P2P_CLIENT_MODE ||
-		pAdapter->device_mode == QDF_NDI_MODE)) {
+	if ((pAdapter->dev == ndev) &&
+	    (pAdapter->device_mode == QDF_STA_MODE ||
+	     pAdapter->device_mode == QDF_P2P_CLIENT_MODE ||
+	     pAdapter->device_mode == QDF_NDI_MODE)) {
 
 		pHddCtx = WLAN_HDD_GET_CTX(pAdapter);
 		status = wlan_hdd_validate_context(pHddCtx);
 		if (0 != status)
 			return NOTIFY_DONE;
 
+		sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(pAdapter);
 		if (eConnectionState_Associated ==
-		   WLAN_HDD_GET_STATION_CTX_PTR(
-		   pAdapter)->conn_info.connState)
+						sta_ctx->conn_info.connState) {
+			hdd_info("invoking sme_dhcp_done_ind");
 			sme_dhcp_done_ind(pHddCtx->hHal,
-				pAdapter->sessionId);
+					  pAdapter->sessionId);
+		}
 
 		if (!pHddCtx->config->fhostArpOffload) {
 			hdd_notice("Offload not enabled ARPOffload=%d",