|
@@ -1686,53 +1686,6 @@ QDF_STATUS csr_scan_abort_mac_scan(struct mac_context *mac_ctx,
|
|
|
|
|
|
return status;
|
|
|
}
|
|
|
-QDF_STATUS csr_remove_nonscan_cmd_from_pending_list(struct mac_context *mac,
|
|
|
- uint8_t vdev_id,
|
|
|
- eSmeCommandType commandType)
|
|
|
-{
|
|
|
- tDblLinkList localList;
|
|
|
- tListElem *pEntry;
|
|
|
- tSmeCmd *pCommand;
|
|
|
- tListElem *pEntryToRemove;
|
|
|
- QDF_STATUS status = QDF_STATUS_E_FAILURE;
|
|
|
-
|
|
|
- qdf_mem_zero(&localList, sizeof(tDblLinkList));
|
|
|
- if (!QDF_IS_STATUS_SUCCESS(csr_ll_open(&localList))) {
|
|
|
- sme_err("failed to open list");
|
|
|
- return status;
|
|
|
- }
|
|
|
-
|
|
|
- pEntry = csr_nonscan_pending_ll_peek_head(mac, LL_ACCESS_NOLOCK);
|
|
|
-
|
|
|
- /*
|
|
|
- * Have to make sure we don't loop back to the head of the list,
|
|
|
- * which will happen if the entry is NOT on the list
|
|
|
- */
|
|
|
- while (pEntry) {
|
|
|
- pEntryToRemove = pEntry;
|
|
|
- pEntry = csr_nonscan_pending_ll_next(mac,
|
|
|
- pEntry, LL_ACCESS_NOLOCK);
|
|
|
- pCommand = GET_BASE_ADDR(pEntryToRemove, tSmeCmd, Link);
|
|
|
-
|
|
|
- if ((pCommand->command == commandType) &&
|
|
|
- (pCommand->vdev_id == vdev_id)) {
|
|
|
- /* Insert to localList and remove later */
|
|
|
- csr_ll_insert_tail(&localList, pEntryToRemove,
|
|
|
- LL_ACCESS_NOLOCK);
|
|
|
- status = QDF_STATUS_SUCCESS;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- while ((pEntry = csr_ll_remove_head(&localList, LL_ACCESS_NOLOCK))) {
|
|
|
- pCommand = GET_BASE_ADDR(pEntry, tSmeCmd, Link);
|
|
|
- sme_debug("Sending abort for command ID %d", vdev_id);
|
|
|
- csr_release_command(mac, pCommand);
|
|
|
- }
|
|
|
-
|
|
|
- csr_ll_close(&localList);
|
|
|
- return status;
|
|
|
-}
|
|
|
|
|
|
bool csr_roam_is_valid_channel(struct mac_context *mac, uint32_t ch_freq)
|
|
|
{
|