|
@@ -527,8 +527,7 @@ static inline int qeth_is_cq(struct qeth_card *card, unsigned int queue)
|
|
|
queue == card->qdio.no_in_queues - 1;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-static int qeth_issue_next_read(struct qeth_card *card)
|
|
|
+static int __qeth_issue_next_read(struct qeth_card *card)
|
|
|
{
|
|
|
int rc;
|
|
|
struct qeth_cmd_buffer *iob;
|
|
@@ -559,6 +558,17 @@ static int qeth_issue_next_read(struct qeth_card *card)
|
|
|
return rc;
|
|
|
}
|
|
|
|
|
|
+static int qeth_issue_next_read(struct qeth_card *card)
|
|
|
+{
|
|
|
+ int ret;
|
|
|
+
|
|
|
+ spin_lock_irq(get_ccwdev_lock(CARD_RDEV(card)));
|
|
|
+ ret = __qeth_issue_next_read(card);
|
|
|
+ spin_unlock_irq(get_ccwdev_lock(CARD_RDEV(card)));
|
|
|
+
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
static struct qeth_reply *qeth_alloc_reply(struct qeth_card *card)
|
|
|
{
|
|
|
struct qeth_reply *reply;
|
|
@@ -1182,7 +1192,7 @@ static void qeth_irq(struct ccw_device *cdev, unsigned long intparm,
|
|
|
return;
|
|
|
if (channel == &card->read &&
|
|
|
channel->state == CH_STATE_UP)
|
|
|
- qeth_issue_next_read(card);
|
|
|
+ __qeth_issue_next_read(card);
|
|
|
|
|
|
iob = channel->iob;
|
|
|
index = channel->buf_no;
|