aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/net/qeth_core.h
diff options
context:
space:
mode:
authorJulian Wiedmann <jwi@linux.ibm.com>2019-03-28 16:39:19 +0100
committerDavid S. Miller <davem@davemloft.net>2019-03-28 12:57:23 -0700
commitd0c748256611f8612728bcbf9933eb103c077763 (patch)
treeb4efed99d6e5be3da405da9393226f3155808958 /drivers/s390/net/qeth_core.h
parentMerge branch 'net-call-for-phys_port_name-into-devlink-directly-if-possible' (diff)
downloadlinux-dev-d0c748256611f8612728bcbf9933eb103c077763.tar.xz
linux-dev-d0c748256611f8612728bcbf9933eb103c077763.zip
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>
Diffstat (limited to 'drivers/s390/net/qeth_core.h')
-rw-r--r--drivers/s390/net/qeth_core.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/s390/net/qeth_core.h b/drivers/s390/net/qeth_core.h
index c851cf6e01c4..c3cf992ca985 100644
--- a/drivers/s390/net/qeth_core.h
+++ b/drivers/s390/net/qeth_core.h
@@ -780,6 +780,7 @@ struct qeth_card {
DECLARE_HASHTABLE(mac_htable, 4);
DECLARE_HASHTABLE(ip_htable, 4);
DECLARE_HASHTABLE(ip_mc_htable, 4);
+ struct work_struct rx_mode_work;
struct work_struct kernel_thread_starter;
spinlock_t thread_mask_lock;
unsigned long thread_start_mask;