| From foo@baz Mon Jan 13 09:39:01 PST 2014 |
| From: Vlad Yasevich <vyasevic@redhat.com> |
| Date: Tue, 26 Nov 2013 12:37:12 -0500 |
| Subject: macvtap: Do not double-count received packets |
| |
| From: Vlad Yasevich <vyasevic@redhat.com> |
| |
| [ Upstream commit 006da7b07bc4d3a7ffabad17cf639eec6849c9dc ] |
| |
| Currently macvlan will count received packets after calling each |
| vlans receive handler. Macvtap attempts to count the packet |
| yet again when the user reads the packet from the tap socket. |
| This code doesn't do this consistently either. Remove the |
| counting from macvtap and let only macvlan count received |
| packets. |
| |
| Signed-off-by: Vlad Yasevich <vyasevic@redhat.com> |
| Acked-by: Michael S. Tsirkin <mst@redhat.com> |
| Acked-by: Jason Wang <jasowang@redhat.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/net/macvtap.c | 7 ------- |
| 1 file changed, 7 deletions(-) |
| |
| --- a/drivers/net/macvtap.c |
| +++ b/drivers/net/macvtap.c |
| @@ -797,7 +797,6 @@ static ssize_t macvtap_put_user(struct m |
| const struct sk_buff *skb, |
| const struct iovec *iv, int len) |
| { |
| - struct macvlan_dev *vlan; |
| int ret; |
| int vnet_hdr_len = 0; |
| int vlan_offset = 0; |
| @@ -851,12 +850,6 @@ static ssize_t macvtap_put_user(struct m |
| copied += len; |
| |
| done: |
| - rcu_read_lock_bh(); |
| - vlan = rcu_dereference_bh(q->vlan); |
| - if (vlan) |
| - macvlan_count_rx(vlan, copied - vnet_hdr_len, ret == 0, 0); |
| - rcu_read_unlock_bh(); |
| - |
| return ret ? ret : copied; |
| } |
| |