/* Cancel a crypto request. This is done by removing the request from the device pending or request queue. Note that the request stays on the AP queue. When it finishes the message reply will be discarded because the psmid can't be found.  */
void ap_cancel_message(struct ap_device *ap_dev, struct ap_message *ap_msg)
/* Cancel a crypto request. This is done by removing the request from the device pending or request queue. Note that the request stays on the AP queue. When it finishes the message reply will be discarded because the psmid can't be found.  */
void ap_cancel_message(struct ap_device *ap_dev, struct ap_message *ap_msg)
{
	struct ap_message *tmp;
	spin_lock_bh(&ap_dev->lock);
	if (!list_empty(&ap_msg->list)) {
		list_for_each_entry(tmp, &ap_dev->pendingq, list)
			if (tmp->psmid == ap_msg->psmid) {
				ap_dev->pendingq_count--;
				goto found;
			}
		ap_dev->requestq_count--;
	found:
		list_del_init(&ap_msg->list);
	}
	spin_unlock_bh(&ap_dev->lock);
}