tuntap: hardware vlan tx support
authorJason Wang <jasowang@redhat.com>
Thu, 25 Jul 2013 05:00:33 +0000 (13:00 +0800)
committerDavid S. Miller <davem@davemloft.net>
Sun, 28 Jul 2013 03:09:21 +0000 (20:09 -0700)
commit6680ec68eff47d36f67b4351bc9836fd6cba9532
tree63966849a766004bb64fbc409d808ad8b5fe8bd4
parent024ec3deac33ddbd81f3c887506f132b24ea21a7
tuntap: hardware vlan tx support

Inspired by commit f09e2249c4f5c7c13261ec73f5a7807076af0c8e (macvtap: restore
vlan header on user read). This patch adds hardware vlan tx support for
tuntap. This is done by copying vlan header directly into userspace in
tun_put_user() instead of doing it through __vlan_put_tag() in
dev_hard_start_xmit(). This eliminates one unnecessary memmove() in
vlan_insert_tag() for 802.1ad and 802.1q traffic.

pktgen test shows about 20% improvement for 802.1q traffic:

Before:
  662149pps 317Mb/sec (317831520bps) errors: 0
After:
  801033pps 384Mb/sec (384495840bps) errors: 0

Cc: Basil Gor <basil.gor@gmail.com>
Cc: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/tun.c