Ver código fonte

qcacmn: Fix DFS kernel panic

Problem:
During DFS attach the DFS related timers are initialized only if
the DFS is not offloaded.
When user issues a bangradar command for full offload where DFS is
offloaded to FW, HOST is trying to set a un-initialized timer and
leads to a crash.

Solution:
Handle bangradar command in HOST only if the DFS is not offloaded.

Change-Id: I8d23d450ff1941890fdc81cef1425fae8b55ce56
CRs-Fixed: 2108874
Shashikala Prabhu 7 anos atrás
pai
commit
bb8b274815
1 arquivos alterados com 12 adições e 8 exclusões
  1. 12 8
      umac/dfs/core/src/misc/dfs.c

+ 12 - 8
umac/dfs/core/src/misc/dfs.c

@@ -924,10 +924,12 @@ int dfs_control(struct wlan_dfs *dfs,
 		dfs_print_nolhistory(dfs);
 		break;
 	case DFS_BANGRADAR:
-		dfs->dfs_bangradar = 1;
-		dfs->wlan_radar_tasksched = 1;
-		qdf_timer_mod(&dfs->wlan_dfs_task_timer, 0);
-		error = 0;
+		if (!dfs->dfs_is_offload_enabled) {
+			dfs->dfs_bangradar = 1;
+			dfs->wlan_radar_tasksched = 1;
+			qdf_timer_mod(&dfs->wlan_dfs_task_timer, 0);
+			error = 0;
+		}
 		break;
 	case DFS_SHOW_PRECAC_LISTS:
 		dfs_print_precaclists(dfs);
@@ -936,10 +938,12 @@ int dfs_control(struct wlan_dfs *dfs,
 		dfs_reset_precac_lists(dfs);
 		break;
 	case DFS_SECOND_SEGMENT_BANGRADAR:
-		dfs->dfs_second_segment_bangradar = 1;
-		dfs->wlan_radar_tasksched = 1;
-		qdf_timer_mod(&dfs->wlan_dfs_task_timer, 0);
-		error = 0;
+		if (!dfs->dfs_is_offload_enabled) {
+			dfs->dfs_second_segment_bangradar = 1;
+			dfs->wlan_radar_tasksched = 1;
+			qdf_timer_mod(&dfs->wlan_dfs_task_timer, 0);
+			error = 0;
+		}
 		break;
 	default:
 		error = -EINVAL;