linux/drivers/s390/net
Julian Wiedmann 8908f36d20 s390/qeth: fix af_iucv notification race
The two expected notification sequences are
1. TX_NOTIFY_PENDING with a subsequent TX_NOTIFY_DELAYED_*, when
   our TX completion code first observed the pending TX and the QAOB
   then completes at a later time; or
2. TX_NOTIFY_OK, when qeth_qdio_handle_aob() picked up the QAOB
   completion before our TX completion code even noticed that the TX
   was pending.

But as qeth_iqd_tx_complete() and qeth_qdio_handle_aob() can run
concurrently, we may end up with a race that results in a sequence of
TX_NOTIFY_DELAYED_* followed by TX_NOTIFY_PENDING. Which would confuse
the af_iucv code in its tracking of pending transmits.

Rework the notification code, so that qeth_qdio_handle_aob() defers its
notification if the TX completion code is still active.

Fixes: b333293058 ("qeth: add support for af_iucv HiperSockets transport")
Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2020-11-20 18:59:48 -08:00
..
ctcm_dbug.c
ctcm_dbug.h
ctcm_fsms.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
ctcm_fsms.h s390/ctcm: remove orphaned function declarations 2020-10-02 16:22:49 -07:00
ctcm_main.c s390/net: remove pm ops from ccwgroup drivers 2020-05-19 12:48:39 -07:00
ctcm_main.h
ctcm_mpc.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
ctcm_mpc.h s390/ctcm: remove orphaned function declarations 2020-10-02 16:22:49 -07:00
ctcm_sysfs.c
fsm.c
fsm.h
ism.h net/smc: introduce System Enterprise ID (SEID) 2020-09-28 15:19:02 -07:00
ism_drv.c s390/ism: fix incorrect system EID 2020-10-26 16:29:14 -07:00
Kconfig s390/net: add SMC config as one of the defaults of CCWGROUP 2020-09-10 15:24:26 -07:00
lcs.c s390/net: remove pm ops from ccwgroup drivers 2020-05-19 12:48:39 -07:00
lcs.h
Makefile
netiucv.c s390/net: remove pm support from iucv drivers 2020-05-19 12:48:39 -07:00
qeth_core.h s390/qeth: fix af_iucv notification race 2020-11-20 18:59:48 -08:00
qeth_core_main.c s390/qeth: fix af_iucv notification race 2020-11-20 18:59:48 -08:00
qeth_core_mpc.c s390/qeth: constify the MPC initialization data 2020-07-14 14:53:45 -07:00
qeth_core_mpc.h s390/qeth: unify structs for bridge port state 2020-08-27 07:42:03 -07:00
qeth_core_sys.c s390/qeth: use netdev_name() 2020-10-02 16:22:49 -07:00
qeth_ethtool.c s390/qeth: allow configuration of TX queues for OSA devices 2020-10-02 16:22:49 -07:00
qeth_l2.h s390/qeth: remove forward declarations in L2 code 2020-09-23 12:07:54 -07:00
qeth_l2_main.c s390/qeth: Remove pnso workaround 2020-11-20 18:59:47 -08:00
qeth_l2_sys.c s390/qeth: Reset address notification in case of buffer overflow 2020-09-15 13:21:47 -07:00
qeth_l3.h s390/qeth: replace deprecated simple_stroul() 2020-09-23 12:07:54 -07:00
qeth_l3_main.c s390/qeth: static checker cleanups 2020-10-02 16:22:49 -07:00
qeth_l3_sys.c s390/qeth: static checker cleanups 2020-10-02 16:22:49 -07:00
smsgiucv.c s390/net: remove pm support from iucv drivers 2020-05-19 12:48:39 -07:00
smsgiucv.h
smsgiucv_app.c