linux_dsm_epyc7002/drivers/s390/net
Julian Wiedmann 0d6f02d375 s390/qeth: use skb_cow_head() for L2 OSA xmit
Taking a full copy via skb_realloc_headroom() on every xmit is overkill
and wastes CPU time; all we actually need is to push on the qeth_hdr.
So rework the L2 OSA TX path to avoid the copy.
Minor complications arise because struct qeth_hdr must not cross a page
boundary. So add a new helper qeth_push_hdr() that catches this, and
falls back to the hdr cache that we already use for IQDs.

This change uncovered that qeth's TX completion takes rather long.
Now that we no longer free the original skb straight away and thus call
skb->destructor later than before, throughput regresses significantly.
For now, restore old behaviour by adding an explicit skb_orphan(),
and a big TODO to improve the TX completion time.

Tested-by: Nils Hoppmann <niho@de.ibm.com>
Signed-off-by: Julian Wiedmann <jwi@linux.vnet.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2017-08-18 10:21:30 -07:00
..
ctcm_dbug.c s390/s390dbf: use debug_level_enabled() where applicable 2013-10-24 17:16:54 +02:00
ctcm_dbug.h s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
ctcm_fsms.c ctcm_fsms: Convert skb->user accesses to refcount_t 2017-07-03 02:29:57 -07:00
ctcm_fsms.h s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
ctcm_main.c s390/net: reduce inlining 2017-08-15 10:58:40 -07:00
ctcm_main.h s390/ctcm, netiucv: migrate variables to handle y2038 problem 2015-01-17 23:54:59 -05:00
ctcm_mpc.c networking: introduce and use skb_put_data() 2017-06-16 11:48:37 -04:00
ctcm_mpc.h s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
ctcm_sysfs.c s390/ctcm, netiucv: migrate variables to handle y2038 problem 2015-01-17 23:54:59 -05:00
fsm.c
fsm.h atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
Kconfig s390: remove claw driver 2015-02-28 23:38:29 -05:00
lcs.c s390/net: reduce inlining 2017-08-15 10:58:40 -07:00
lcs.h s390/s390dbf: use debug_level_enabled() where applicable 2013-10-24 17:16:54 +02:00
Makefile s390: remove claw driver 2015-02-28 23:38:29 -05:00
netiucv.c s390/net: reduce inlining 2017-08-15 10:58:40 -07:00
qeth_core_main.c s390/qeth: use skb_cow_head() for L2 OSA xmit 2017-08-18 10:21:30 -07:00
qeth_core_mpc.c s390/qeth: add ipa return codes for bridgeport 2017-06-20 15:44:01 -04:00
qeth_core_mpc.h s390/qeth: add ipa return codes for bridgeport 2017-06-20 15:44:01 -04:00
qeth_core_sys.c s390/net: reduce inlining 2017-08-15 10:58:40 -07:00
qeth_core.h s390/qeth: use skb_cow_head() for L2 OSA xmit 2017-08-18 10:21:30 -07:00
qeth_l2_main.c s390/qeth: use skb_cow_head() for L2 OSA xmit 2017-08-18 10:21:30 -07:00
qeth_l2_sys.c s390/qeth: unbreak OSM and OSN support 2017-05-11 12:37:48 -04:00
qeth_l2.h s390/qeth: unbreak OSM and OSN support 2017-05-11 12:37:48 -04:00
qeth_l3_main.c s390/qeth: pass full IQD header length to fill_buffer() 2017-08-18 10:21:30 -07:00
qeth_l3_sys.c s390/qeth: reject multicast rxip addresses 2017-08-15 10:58:40 -07:00
qeth_l3.h s390/qeth: add support for early L3 device setup 2017-06-06 13:05:01 -04:00
smsgiucv_app.c Driver core: driver_find() drops reference before returning 2012-01-24 16:00:34 -08:00
smsgiucv.c s390/iucv: do not use arrays as argument 2015-09-21 16:03:04 -07:00
smsgiucv.h s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00