s390/qeth: defer RX modesetting
authorJulian Wiedmann <jwi@linux.ibm.com>
Thu, 28 Mar 2019 15:39:19 +0000 (16:39 +0100)
committerDavid S. Miller <davem@davemloft.net>
Thu, 28 Mar 2019 19:57:23 +0000 (12:57 -0700)
commitd0c748256611f8612728bcbf9933eb103c077763
treeb4efed99d6e5be3da405da9393226f3155808958
parent1571e2fdac902c25d7ba47cd6a3258c55fa9afa9
s390/qeth: defer RX modesetting

.ndo_set_rx_mode gets called in process context, but while holding the
addr_list spinlock. Which means we currently can't sleep while
re-programming the HW, and need to poll for IO completion. That's bad,
in particular since receiving the cmd response can fail silently and
we're then polling until the timeout hits.

As a first step towards eliminating the IO completion polling, run the
RX modeset from a work element and only take the addr_list lock while
updating the RX mode address cache.

Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/s390/net/qeth_core.h
drivers/s390/net/qeth_l2_main.c
drivers/s390/net/qeth_l3_main.c