qcacld-3.0: Hanlde RX_VDE_DEL_EVENT in dp thread properly
Scenario: (1) vdev0 is running RX traffic, vdev2 is doing vdev detach, vdev2 will send RX_VDEV_DEL_EVENT to dp thread, but if dp thread is slow to process thread queue frame in dp_rx_thread_process_nbufq(), like if Kasan is enabled. RX_VDEV_DEL_EVENT will be delayed and vdev2 corresbonding stack queue frame can not be flushed before net_dev is freed, later will hit panic. (2) vdev2 detach set rx_thread->vdev_del_event but not be cleared due to qdf_wait_single_event() timeout, later vdev2 attach/detach again, this time as rx_thread->vdev_del_event is not cleared so it will skip waiting dp thread, vdev2 realted net_dev freed before dp thread do napi_gro_flush. solution: (1) reset rx_thread->vdev_del_event before wait this event. (2) Increase DP_RX_THREAD_WAIT_TIMEOUT to 1000 ms. Change-Id: Ibc1d761be3588fc3ee6c383b8779f56b2c9f17cd CRs-Fixed: 2736887
Loading
Please register or sign in to comment