developer | e5e687d | 2023-08-08 16:05:33 +0800 | [diff] [blame] | 1 | --- a/drivers/net/ethernet/mediatek/mtk_eth_reset.c |
| 2 | +++ b/drivers/net/ethernet/mediatek/mtk_eth_reset.c |
| 3 | @@ -635,6 +635,9 @@ static int mtk_eth_netdevice_event(struc |
| 4 | unsigned long event, void *ptr) |
| 5 | { |
| 6 | switch (event) { |
| 7 | + case MTK_TOPS_DUMP_DONE: |
| 8 | + complete(&wait_tops_done); |
| 9 | + break; |
| 10 | case MTK_WIFI_RESET_DONE: |
| 11 | case MTK_FE_STOP_TRAFFIC_DONE: |
| 12 | pr_info("%s rcv done event:%lx\n", __func__, event); |
| 13 | --- a/drivers/net/ethernet/mediatek/mtk_eth_reset.h |
| 14 | +++ b/drivers/net/ethernet/mediatek/mtk_eth_reset.h |
| 15 | @@ -13,6 +13,7 @@ |
| 16 | #define MTK_WIFI_RESET_DONE 0x2002 |
| 17 | #define MTK_WIFI_CHIP_ONLINE 0x2003 |
| 18 | #define MTK_WIFI_CHIP_OFFLINE 0x2004 |
| 19 | +#define MTK_TOPS_DUMP_DONE 0x3001 |
| 20 | #define MTK_FE_RESET_NAT_DONE 0x4001 |
| 21 | |
| 22 | #define MTK_FE_STOP_TRAFFIC (0x2005) |
| 23 | @@ -67,6 +68,7 @@ enum mtk_reset_event_id { |
| 24 | |
| 25 | extern struct notifier_block mtk_eth_netdevice_nb __read_mostly; |
| 26 | extern struct completion wait_ser_done; |
| 27 | +extern struct completion wait_tops_done; |
| 28 | extern char* mtk_reset_event_name[32]; |
| 29 | extern atomic_t reset_lock; |
| 30 | extern struct completion wait_nat_done; |
| 31 | --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c |
| 32 | +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c |
| 33 | @@ -38,6 +38,7 @@ atomic_t force = ATOMIC_INIT(0); |
| 34 | module_param_named(msg_level, mtk_msg_level, int, 0); |
| 35 | MODULE_PARM_DESC(msg_level, "Message level (-1=defaults,0=none,...,16=all)"); |
| 36 | DECLARE_COMPLETION(wait_ser_done); |
| 37 | +DECLARE_COMPLETION(wait_tops_done); |
| 38 | |
| 39 | #define MTK_ETHTOOL_STAT(x) { #x, \ |
| 40 | offsetof(struct mtk_hw_stats, x) / sizeof(u64) } |
developer | 84f378f | 2023-08-24 18:26:50 +0800 | [diff] [blame] | 41 | @@ -4141,6 +4142,8 @@ static void mtk_pending_work(struct work |
developer | e5e687d | 2023-08-08 16:05:33 +0800 | [diff] [blame] | 42 | } |
| 43 | pr_warn("wait for MTK_FE_START_RESET\n"); |
| 44 | } |
| 45 | + if (!try_wait_for_completion(&wait_tops_done)) |
| 46 | + pr_warn("wait for MTK_TOPS_DUMP_DONE\n"); |
| 47 | rtnl_lock(); |
| 48 | break; |
| 49 | } |