Browse Source

qcacmn: Stop replenish timer during recovery

During recovery, when this timer is started, there is no
stop operation. If the timer is triggered and SSR is not
completed, it will visit re-inited data structure and lead
kernel crash.

Change-Id: I44a31d70ee80d59076e4121f6924faa470ce7575
CRs-Fixed: 3102029
Yu Tian 3 năm trước cách đây
mục cha
commit
9e61eb4514
2 tập tin đã thay đổi với 19 bổ sung2 xóa
  1. 9 0
      qdf/inc/qdf_nbuf.h
  2. 10 2
      qdf/linux/src/qdf_nbuf.c

+ 9 - 0
qdf/inc/qdf_nbuf.h

@@ -4257,4 +4257,13 @@ static inline void qdf_set_smmu_fault_state(bool smmu_fault_state)
 #else
 #include <i_qdf_nbuf_api_m.h>
 #endif
+
+/**
+ * qdf_nbuf_stop_replenish_timer - Stop alloc fail replenish timer
+ *
+ * This function stops the alloc fail replenish timer.
+ *
+ * Return: void
+ */
+void qdf_nbuf_stop_replenish_timer(void);
 #endif /* _QDF_NBUF_H */

+ 10 - 2
qdf/linux/src/qdf_nbuf.c

@@ -295,7 +295,7 @@ qdf_export_symbol(qdf_nbuf_set_state);
  *
  * Return: void
  */
-static void __qdf_nbuf_start_replenish_timer(void)
+static inline void __qdf_nbuf_start_replenish_timer(void)
 {
 	qdf_atomic_inc(&alloc_track_timer.alloc_fail_cnt);
 	if (qdf_mc_timer_get_current_state(&alloc_track_timer.track_timer) !=
@@ -311,7 +311,7 @@ static void __qdf_nbuf_start_replenish_timer(void)
  *
  * Return: void
  */
-static void __qdf_nbuf_stop_replenish_timer(void)
+static inline void __qdf_nbuf_stop_replenish_timer(void)
 {
 	if (qdf_atomic_read(&alloc_track_timer.alloc_fail_cnt) == 0)
 		return;
@@ -365,10 +365,18 @@ void __qdf_nbuf_deinit_replenish_timer(void)
 	__qdf_nbuf_stop_replenish_timer();
 	qdf_mc_timer_destroy(&alloc_track_timer.track_timer);
 }
+
+void qdf_nbuf_stop_replenish_timer(void)
+{
+	__qdf_nbuf_stop_replenish_timer();
+}
 #else
 
 static inline void __qdf_nbuf_start_replenish_timer(void) {}
 static inline void __qdf_nbuf_stop_replenish_timer(void) {}
+void qdf_nbuf_stop_replenish_timer(void)
+{
+}
 #endif
 
 /* globals do not need to be initialized to NULL/0 */