Lines Matching refs:reply

775 lcs_get_reply(struct lcs_reply *reply)  in lcs_get_reply()  argument
777 WARN_ON(atomic_read(&reply->refcnt) <= 0); in lcs_get_reply()
778 atomic_inc(&reply->refcnt); in lcs_get_reply()
782 lcs_put_reply(struct lcs_reply *reply) in lcs_put_reply() argument
784 WARN_ON(atomic_read(&reply->refcnt) <= 0); in lcs_put_reply()
785 if (atomic_dec_and_test(&reply->refcnt)) { in lcs_put_reply()
786 kfree(reply); in lcs_put_reply()
794 struct lcs_reply *reply; in lcs_alloc_reply() local
798 reply = kzalloc(sizeof(struct lcs_reply), GFP_ATOMIC); in lcs_alloc_reply()
799 if (!reply) in lcs_alloc_reply()
801 atomic_set(&reply->refcnt,1); in lcs_alloc_reply()
802 reply->sequence_no = cmd->sequence_no; in lcs_alloc_reply()
803 reply->received = 0; in lcs_alloc_reply()
804 reply->rc = 0; in lcs_alloc_reply()
805 init_waitqueue_head(&reply->wait_q); in lcs_alloc_reply()
807 return reply; in lcs_alloc_reply()
817 struct lcs_reply *reply; in lcs_notify_lancmd_waiters() local
822 reply = list_entry(l, struct lcs_reply, list); in lcs_notify_lancmd_waiters()
823 if (reply->sequence_no == cmd->sequence_no) { in lcs_notify_lancmd_waiters()
824 lcs_get_reply(reply); in lcs_notify_lancmd_waiters()
825 list_del_init(&reply->list); in lcs_notify_lancmd_waiters()
826 if (reply->callback != NULL) in lcs_notify_lancmd_waiters()
827 reply->callback(card, cmd); in lcs_notify_lancmd_waiters()
828 reply->received = 1; in lcs_notify_lancmd_waiters()
829 reply->rc = cmd->return_code; in lcs_notify_lancmd_waiters()
830 wake_up(&reply->wait_q); in lcs_notify_lancmd_waiters()
831 lcs_put_reply(reply); in lcs_notify_lancmd_waiters()
844 struct lcs_reply *reply, *list_reply, *r; in lcs_lancmd_timeout() local
848 reply = (struct lcs_reply *) data; in lcs_lancmd_timeout()
849 spin_lock_irqsave(&reply->card->lock, flags); in lcs_lancmd_timeout()
851 &reply->card->lancmd_waiters,list) { in lcs_lancmd_timeout()
852 if (reply == list_reply) { in lcs_lancmd_timeout()
853 lcs_get_reply(reply); in lcs_lancmd_timeout()
854 list_del_init(&reply->list); in lcs_lancmd_timeout()
855 spin_unlock_irqrestore(&reply->card->lock, flags); in lcs_lancmd_timeout()
856 reply->received = 1; in lcs_lancmd_timeout()
857 reply->rc = -ETIME; in lcs_lancmd_timeout()
858 wake_up(&reply->wait_q); in lcs_lancmd_timeout()
859 lcs_put_reply(reply); in lcs_lancmd_timeout()
863 spin_unlock_irqrestore(&reply->card->lock, flags); in lcs_lancmd_timeout()
870 struct lcs_reply *reply; in lcs_send_lancmd() local
880 reply = lcs_alloc_reply(cmd); in lcs_send_lancmd()
881 if (!reply) in lcs_send_lancmd()
883 reply->callback = reply_callback; in lcs_send_lancmd()
884 reply->card = card; in lcs_send_lancmd()
886 list_add_tail(&reply->list, &card->lancmd_waiters); in lcs_send_lancmd()
895 timer.data = (unsigned long) reply; in lcs_send_lancmd()
898 wait_event(reply->wait_q, reply->received); in lcs_send_lancmd()
901 LCS_DBF_TEXT_(4, trace, "rc:%d",reply->rc); in lcs_send_lancmd()
902 rc = reply->rc; in lcs_send_lancmd()
903 lcs_put_reply(reply); in lcs_send_lancmd()