xen-netback: Grant copy the header instead of map and memcpy
authorZoltan Kiss <zoltan.kiss@citrix.com>
Wed, 2 Apr 2014 17:04:58 +0000 (18:04 +0100)
committerDavid S. Miller <davem@davemloft.net>
Thu, 3 Apr 2014 18:22:40 +0000 (14:22 -0400)
commitbdab82759b8e3620096d6db46dc1cac38a52d779
tree8d464a0fbff0a617e19cb8fe931256f5e626010c
parent9074ce249321861e535cdf8de9af0930a174dda9
xen-netback: Grant copy the header instead of map and memcpy

An old inefficiency of the TX path that we are grant mapping the first slot,
and then copy the header part to the linear area. Instead, doing a grant copy
for that header straight on is more reasonable. Especially because there are
ongoing efforts to make Xen avoiding TLB flush after unmap when the page were
not touched in Dom0. In the original way the memcpy ruined that.
The key changes:
- the vif has a tx_copy_ops array again
- xenvif_tx_build_gops sets up the grant copy operations
- we don't have to figure out whether the header and first frag are on the same
  grant mapped page or not
Note, we only grant copy PKT_PROT_LEN bytes from the first slot, the rest (if
any) will be on the first frag, which is grant mapped. If the first slot is
smaller than PKT_PROT_LEN, then we grant copy that, and later __pskb_pull_tail
will pull more from the frags (if any)

Signed-off-by: Zoltan Kiss <zoltan.kiss@citrix.com>
Reviewed-by: Paul Durrant <paul.durrant@citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/xen-netback/common.h
drivers/net/xen-netback/netback.c