ath9k: Fix race in reset-work usage
Using work_pending() to defer certain operations when a HW-reset work has been queued is racy since the check would return false when the work item is actually in execution. Use SC_OP_HW_RESET instead to fix this race. Also, unify the reset debug statistics maintenance. Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com> Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:

committed by
John W. Linville

parent
6dcc344469
commit
124b979bae
@@ -32,6 +32,19 @@ struct ath_buf;
|
||||
#define RESET_STAT_INC(sc, type) do { } while (0)
|
||||
#endif
|
||||
|
||||
enum ath_reset_type {
|
||||
RESET_TYPE_BB_HANG,
|
||||
RESET_TYPE_BB_WATCHDOG,
|
||||
RESET_TYPE_FATAL_INT,
|
||||
RESET_TYPE_TX_ERROR,
|
||||
RESET_TYPE_TX_HANG,
|
||||
RESET_TYPE_PLL_HANG,
|
||||
RESET_TYPE_MAC_HANG,
|
||||
RESET_TYPE_BEACON_STUCK,
|
||||
RESET_TYPE_MCI,
|
||||
__RESET_TYPE_MAX
|
||||
};
|
||||
|
||||
#ifdef CONFIG_ATH9K_DEBUGFS
|
||||
|
||||
/**
|
||||
@@ -209,17 +222,6 @@ struct ath_rx_stats {
|
||||
u32 rx_frags;
|
||||
};
|
||||
|
||||
enum ath_reset_type {
|
||||
RESET_TYPE_BB_HANG,
|
||||
RESET_TYPE_BB_WATCHDOG,
|
||||
RESET_TYPE_FATAL_INT,
|
||||
RESET_TYPE_TX_ERROR,
|
||||
RESET_TYPE_TX_HANG,
|
||||
RESET_TYPE_PLL_HANG,
|
||||
RESET_TYPE_MAC_HANG,
|
||||
__RESET_TYPE_MAX
|
||||
};
|
||||
|
||||
struct ath_stats {
|
||||
struct ath_interrupt_stats istats;
|
||||
struct ath_tx_stats txstats[ATH9K_NUM_TX_QUEUES];
|
||||
|
Reference in New Issue
Block a user