diff options
author | Eugene Crosser <Eugene.Crosser@ru.ibm.com> | 2016-06-16 16:18:57 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-06-16 22:16:12 -0700 |
commit | 6059c90537868bfd365163ba3dff95cf775939ff (patch) | |
tree | ba0d5ffd135c9948ff46a21000c6a98c15a01117 /drivers/s390/net/qeth_l2_main.c | |
parent | 2601e4ed3f643da2cd4e55f174355e02c0636a04 (diff) | |
download | linux-6059c90537868bfd365163ba3dff95cf775939ff.tar.bz2 |
qeth: introduce linearization fail count to stats
When skb data touches too many pages, skb_linearize() is called
opportunistically in the hope that less pages will be required
for a big linear buffer than for multiple fragments. This patch
intoduces a separate counter in ethtool statistics structure
representing _failed_ linearization attempts.
Signed-off-by: Eugene Crosser <Eugene.Crosser@ru.ibm.com>
Signed-off-by: Ursula Braun <ubraun@linux.vnet.ibm.com>
Reviewed-by: Lakhvich Dmitriy <ldmitriy@ru.ibm.com>
Reviewed-by: Thomas Richter <tmricht@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/s390/net/qeth_l2_main.c')
-rw-r--r-- | drivers/s390/net/qeth_l2_main.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/drivers/s390/net/qeth_l2_main.c b/drivers/s390/net/qeth_l2_main.c index e24627f49b6e..08b5fa969d4a 100644 --- a/drivers/s390/net/qeth_l2_main.c +++ b/drivers/s390/net/qeth_l2_main.c @@ -898,10 +898,16 @@ static int qeth_l2_hard_start_xmit(struct sk_buff *skb, struct net_device *dev) */ if ((card->info.type != QETH_CARD_TYPE_IQD) && !qeth_get_elements_no(card, new_skb, 0)) { - if (skb_linearize(new_skb)) + int lin_rc = skb_linearize(new_skb); + + if (card->options.performance_stats) { + if (lin_rc) + card->perf_stats.tx_linfail++; + else + card->perf_stats.tx_lin++; + } + if (lin_rc) goto tx_drop; - if (card->options.performance_stats) - card->perf_stats.tx_lin++; } if (card->info.type == QETH_CARD_TYPE_OSN) |