qcacmn: Mark vdev as delete in process before rx flush
Mark vdev as delete in process after flush out the packets in rx thread queue currently. If rx packet received after flush and before mark vdev as delete in process, the packet is enqueued into rx thread queue and not flushed after vdev deleted physically and net interface down. After that, if flush pkts after interface down, assert will happen. Fix: Mark vdev as delete in process before flush out the packets in the rx thread queues. If the vdev is marked as delete in progress, then the packets received on that particular vdev should not be enqueued to dp rx thread any more. Change-Id: If651a9e97b8501efc26400079194570ba6407f13 CRs-Fixed: 2996534
Цей коміт міститься в:

зафіксовано
Madan Koyyalamudi

джерело
3925ddf85b
коміт
9975a180cf
@@ -6731,6 +6731,8 @@ static QDF_STATUS dp_vdev_detach_wifi3(struct cdp_soc_t *cdp_soc,
|
||||
else if (hif_get_target_status(soc->hif_handle) == TARGET_STATUS_RESET)
|
||||
dp_vdev_flush_peers((struct cdp_vdev *)vdev, true);
|
||||
|
||||
/* indicate that the vdev needs to be deleted */
|
||||
vdev->delete.pending = 1;
|
||||
dp_rx_vdev_detach(vdev);
|
||||
/*
|
||||
* move it after dp_rx_vdev_detach(),
|
||||
@@ -6763,8 +6765,6 @@ static QDF_STATUS dp_vdev_detach_wifi3(struct cdp_soc_t *cdp_soc,
|
||||
qdf_mem_free(vdev->vdev_dp_ext_handle);
|
||||
vdev->vdev_dp_ext_handle = NULL;
|
||||
}
|
||||
/* indicate that the vdev needs to be deleted */
|
||||
vdev->delete.pending = 1;
|
||||
vdev->delete.callback = callback;
|
||||
vdev->delete.context = cb_context;
|
||||
|
||||
|
Посилання в новій задачі
Заблокувати користувача