Lines Matching refs:reply
757 lcs_get_reply(struct lcs_reply *reply)
759 refcount_inc(&reply->refcnt);
763 lcs_put_reply(struct lcs_reply *reply)
765 if (refcount_dec_and_test(&reply->refcnt))
766 kfree(reply);
772 struct lcs_reply *reply;
776 reply = kzalloc(sizeof(struct lcs_reply), GFP_ATOMIC);
777 if (!reply)
779 refcount_set(&reply->refcnt, 1);
780 reply->sequence_no = cmd->sequence_no;
781 reply->received = 0;
782 reply->rc = 0;
783 init_waitqueue_head(&reply->wait_q);
785 return reply;
795 struct lcs_reply *reply;
800 reply = list_entry(l, struct lcs_reply, list);
801 if (reply->sequence_no == cmd->sequence_no) {
802 lcs_get_reply(reply);
803 list_del_init(&reply->list);
804 if (reply->callback != NULL)
805 reply->callback(card, cmd);
806 reply->received = 1;
807 reply->rc = cmd->return_code;
808 wake_up(&reply->wait_q);
809 lcs_put_reply(reply);
822 struct lcs_reply *reply = from_timer(reply, t, timer);
827 spin_lock_irqsave(&reply->card->lock, flags);
829 &reply->card->lancmd_waiters,list) {
830 if (reply == list_reply) {
831 lcs_get_reply(reply);
832 list_del_init(&reply->list);
833 spin_unlock_irqrestore(&reply->card->lock, flags);
834 reply->received = 1;
835 reply->rc = -ETIME;
836 wake_up(&reply->wait_q);
837 lcs_put_reply(reply);
841 spin_unlock_irqrestore(&reply->card->lock, flags);
848 struct lcs_reply *reply;
857 reply = lcs_alloc_reply(cmd);
858 if (!reply)
860 reply->callback = reply_callback;
861 reply->card = card;
863 list_add_tail(&reply->list, &card->lancmd_waiters);
870 timer_setup(&reply->timer, lcs_lancmd_timeout, 0);
871 mod_timer(&reply->timer, jiffies + HZ * card->lancmd_timeout);
872 wait_event(reply->wait_q, reply->received);
873 del_timer_sync(&reply->timer);
874 LCS_DBF_TEXT_(4, trace, "rc:%d",reply->rc);
875 rc = reply->rc;
876 lcs_put_reply(reply);