linux/drivers/s390
Julian Wiedmann 4b7ae12216 s390/qeth: allow cmd callbacks to return errnos
Error propagation from cmd callbacks currently works in a way where
qeth_send_control_data_cb() picks the raw HW code from the response,
and the cmd's originator later translates this into an errno.
The callback itself only returns 0 ("done") or 1 ("expect more data").

This is
1. limiting, as the only means for the callback to report an internal
error is to invent pseudo HW codes (such as IPA_RC_ENOMEM), that
the originator then needs to understand. For non-IPA callbacks, we
even provide a separate field in the IO buffer metadata (iob->rc) so
the callback can pass back a return value.
2. fragile, as the originator must take care to not translate any errno
that is returned by qeth's own IO code paths (eg -ENOMEM). Also, any
originator that forgets to translate the HW codes potentially passes
garbage back to its caller. For instance, see
commit 2aa4867198 ("s390/qeth: translate SETVLAN/DELVLAN errors").

Introduce a new model where all HW error translation is done within the
callback, and the callback returns
>  0, if it expects more data (as before)
== 0, on success
<  0, with an errno

Start off with converting all callbacks to the new model that either
a) pass back pseudo HW codes, or b) have a dependency on a specific
HW error code. Also convert c) the one callback that uses iob->rc, and
d) qeth_setadpparms_change_macaddr_cb() so that it can pass back an
error back to qeth_l2_request_initial_mac() even when the cmd itself
was successful.

The old model remains supported: if the callback returns 0, we still
propagate the response's HW error code back to the originator.

Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2019-02-12 13:14:24 -05:00
..
block s390 updates for the 4.21 merge window 2019-01-02 18:37:01 -08:00
char s390/smp: fix CPU hotplug deadlock with CPU rescan 2019-01-11 17:12:02 +01:00
cio vfio-ccw update: 2018-12-13 10:44:18 +01:00
crypto s390/zcrypt: rework ap scan bus code 2018-12-13 10:42:27 +01:00
net s390/qeth: allow cmd callbacks to return errnos 2019-02-12 13:14:24 -05:00
scsi scsi: zfcp: fix sysfs block queue limit output for max_segment_size 2019-01-29 01:14:59 -05:00
virtio virtio: don't allocate vqs when names[i] = NULL 2019-01-14 20:15:19 -05:00
Makefile kbuild: rename built-in.o to built-in.a 2018-03-26 02:01:19 +09:00