xen-netback: Add stat counters for zerocopy
These counters help determine how often the buffers had to be copied. Also they help find out if packets are leaked, as if "sent != success + fail", there are probably packets never freed up properly. NOTE: if bisect brought you here, you should apply the series up until "xen-netback: Timeout packets in RX path", otherwise Windows guests can't work properly and malicious guests can block other guests by not releasing their sent packets. Signed-off-by: Zoltan Kiss <zoltan.kiss@citrix.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
62bad3199a
commit
1bb332af4c
3 changed files with 26 additions and 1 deletions
|
|
@ -1323,8 +1323,10 @@ static int xenvif_tx_submit(struct xenvif *vif)
|
|||
* do a skb_copy_ubufs while we are still in control of the
|
||||
* skb. E.g. the __pskb_pull_tail earlier can do such thing.
|
||||
*/
|
||||
if (skb_shinfo(skb)->destructor_arg)
|
||||
if (skb_shinfo(skb)->destructor_arg) {
|
||||
skb_shinfo(skb)->tx_flags |= SKBTX_DEV_ZEROCOPY;
|
||||
vif->tx_zerocopy_sent++;
|
||||
}
|
||||
|
||||
netif_receive_skb(skb);
|
||||
}
|
||||
|
|
@ -1364,6 +1366,11 @@ void xenvif_zerocopy_callback(struct ubuf_info *ubuf, bool zerocopy_success)
|
|||
napi_schedule(&vif->napi);
|
||||
local_bh_enable();
|
||||
}
|
||||
|
||||
if (likely(zerocopy_success))
|
||||
vif->tx_zerocopy_success++;
|
||||
else
|
||||
vif->tx_zerocopy_fail++;
|
||||
}
|
||||
|
||||
static inline void xenvif_tx_dealloc_action(struct xenvif *vif)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue