diff options
author | Julian Wiedmann <jwi@linux.ibm.com> | 2019-03-28 18:39:24 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-03-28 22:57:24 +0300 |
commit | 782e4a79214723d13eab4258c2c416a9a9719080 (patch) | |
tree | 05514fce5c237b8881fc9db21d0043a96bc6c677 /drivers/s390/net/qeth_l2_main.c | |
parent | df2a2a5225cccb9b738230d52c3fb74f83cf4456 (diff) | |
download | linux-782e4a79214723d13eab4258c2c416a9a9719080.tar.xz |
s390/qeth: don't poll for cmd IO completion
All callers are running in process context now, so we can safely sleep
in qeth_send_control_data() while waiting for a cmd to complete.
Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/s390/net/qeth_l2_main.c')
-rw-r--r-- | drivers/s390/net/qeth_l2_main.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/s390/net/qeth_l2_main.c b/drivers/s390/net/qeth_l2_main.c index 918c3e2e2c3d..e2b09472c482 100644 --- a/drivers/s390/net/qeth_l2_main.c +++ b/drivers/s390/net/qeth_l2_main.c @@ -1050,13 +1050,12 @@ static int qeth_osn_send_control_data(struct qeth_card *card, int len, QETH_CARD_TEXT(card, 5, "osndctrd"); - wait_event(card->wait_q, - atomic_cmpxchg(&channel->irq_pending, 0, 1) == 0); + wait_event(card->wait_q, qeth_trylock_channel(channel)); qeth_prepare_control_data(card, len, iob); QETH_CARD_TEXT(card, 6, "osnoirqp"); spin_lock_irq(get_ccwdev_lock(channel->ccwdev)); rc = ccw_device_start_timeout(channel->ccwdev, channel->ccw, - (addr_t) iob, 0, 0, QETH_IPA_TIMEOUT); + (addr_t) iob, 0, 0, iob->timeout); spin_unlock_irq(get_ccwdev_lock(channel->ccwdev)); if (rc) { QETH_DBF_MESSAGE(2, "qeth_osn_send_control_data: " |