]> git.baikalelectronics.ru Git - kernel.git/commit
tuntap: add missing xdp flush
authorJason Wang <jasowang@redhat.com>
Wed, 7 Feb 2018 09:14:46 +0000 (17:14 +0800)
committerDavid S. Miller <davem@davemloft.net>
Thu, 8 Feb 2018 19:10:30 +0000 (14:10 -0500)
commit12a7015294a1b7eb8346843b94fe1eef6d1f497a
tree249dbef044fc3ecf0b3f2d449e63080e9f802359
parent7413d5044647ae401d5bc03fbf92aa2306895d78
tuntap: add missing xdp flush

When using devmap to redirect packets between interfaces,
xdp_do_flush() is usually a must to flush any batched
packets. Unfortunately this is missed in current tuntap
implementation.

Unlike most hardware driver which did XDP inside NAPI loop and call
xdp_do_flush() at then end of each round of poll. TAP did it in the
context of process e.g tun_get_user(). So fix this by count the
pending redirected packets and flush when it exceeds NAPI_POLL_WEIGHT
or MSG_MORE was cleared by sendmsg() caller.

With this fix, xdp_redirect_map works again between two TAPs.

Fixes: 0a085d13c41f ("tap: XDP support")
Signed-off-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/tun.c