From: Basil Gor <basil.gor@gmail.com>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>,
"David S. Miller" <davem@davemloft.net>,
netdev@vger.kernel.org
Subject: Re: [PATCH v3 1/2] vhost-net: fix handle_rx buffer size
Date: Thu, 3 May 2012 18:43:26 +0400 [thread overview]
Message-ID: <20120503144326.GA15251@nanobar> (raw)
In-Reply-To: <20120503131623.GA26705@redhat.com>
[-- Attachment #1: Type: text/plain, Size: 1949 bytes --]
On Thu, May 03, 2012 at 04:16:24PM +0300, Michael S. Tsirkin wrote:
> On Wed, Apr 25, 2012 at 09:01:15PM +0400, Basil Gor wrote:
> > Take vlan header length into account, when vlan id is stored as
> > vlan_tci. Otherwise tagged packets comming from macvtap will be
> > truncated.
> >
> > Signed-off-by: Basil Gor <basil.gor@gmail.com>
>
> So I'm inclined to apply these two patches, we
> this doesn't fix packet socket backend
> but could be fixed by a follow-up patch.
>
That's what I'm going to do.
While testing packet socket I noticed that tcpdump doesn't work
on macvtap0, since there is no dev_hard_start_xmit like in
tun/tap0 case I think (lines 120-144 in trace attached). And I
have no clear picture how to fix this gracefully.
Also I think there are issues with macvtap on top of bonding, that
I'm also going to verify and debug.
> > ---
> > drivers/vhost/net.c | 7 ++++++-
> > 1 files changed, 6 insertions(+), 1 deletions(-)
> >
> > diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c
> > index 1f21d2a..5c17010 100644
> > --- a/drivers/vhost/net.c
> > +++ b/drivers/vhost/net.c
> > @@ -24,6 +24,7 @@
> > #include <linux/if_arp.h>
> > #include <linux/if_tun.h>
> > #include <linux/if_macvlan.h>
> > +#include <linux/if_vlan.h>
> >
> > #include <net/sock.h>
> >
> > @@ -283,8 +284,12 @@ static int peek_head_len(struct sock *sk)
> >
> > spin_lock_irqsave(&sk->sk_receive_queue.lock, flags);
> > head = skb_peek(&sk->sk_receive_queue);
> > - if (likely(head))
> > + if (likely(head)) {
> > len = head->len;
> > + if (vlan_tx_tag_present(head))
> > + len += VLAN_HLEN;
> > + }
> > +
> > spin_unlock_irqrestore(&sk->sk_receive_queue.lock, flags);
> > return len;
> > }
> > --
> > 1.7.6.5
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe netdev" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at http://vger.kernel.org/majordomo-info.html
[-- Attachment #2: tap_trace.log --]
[-- Type: text/plain, Size: 21099 bytes --]
single arp packet receive
br0
^ \
| +->tap0 <-- tapread + tcpdump
->wlan0-+->macvlan0
\->macvtap0 <-- macvtapread + tcpdump
001 0 irq/28-b43(25823): -> netpoll_trap()
002 0xffffffff815209c0 : netpoll_trap+0x0/0x20 [kernel]
003 0xffffffff8161a189 : kretprobe_trampoline+0x0/0x57 [kernel]
004 0xffffffffa0260a8a [mac80211]
005 0xffffffffa0260ac0 [mac80211]
006 0xffffffffa0318b02 [b43]
007 0xffffffff810e4b60 : irq_thread_fn+0x0/0x50 [kernel]
008 0xffffffffa0313330 [b43]
009 0xffffffffa02f71d6 [b43]
010 0xffffffffa02f7486 [b43]
011 0xffffffff810e4b89 : irq_thread_fn+0x29/0x50 [kernel]
012 0xffffffff810e4ae0 : irq_thread+0x1a0/0x220 [kernel]
013 0xffffffff810e4940 : irq_thread+0x0/0x220 [kernel]
014 0xffffffff81079da3 : kthread+0x93/0xa0 [kernel]
015 0xffffffff81620f24 : kernel_thread_helper+0x4/0x10 [kernel]
016 0xffffffff81079d10 : kthread+0x0/0xa0 [kernel]
017 0xffffffff81620f20 : kernel_thread_helper+0x0/0x10 [kernel]
018 480 irq/28-b43(25823): <- netpoll_trap(): return=0x0
019 0 irq/28-b43(25823): -> netif_receive_skb(skb=0xffff8800a8183300)
020 skb_dump:dev:wlan0 proto:8100 len:32 vlan_tci:{prio:0 cfi:0 vid:0}
021 0xffffffff8150b360 : netif_receive_skb+0x0/0x90 [kernel]
022 0xffffffff8161a189 : kretprobe_trampoline+0x0/0x57 [kernel]
023 0xffffffffa02584d6 [mac80211]
024 0xffffffff8161a189 : kretprobe_trampoline+0x0/0x57 [kernel]
025 0xffffffffa02598f6 [mac80211]
026 0xffffffffa025a56e [mac80211]
027 0xffffffffa0312fd4 [b43]
028 0xffffffffa0318d8a [b43]
029 0xffffffff810e4b60 : irq_thread_fn+0x0/0x50 [kernel]
030 0xffffffffa02f71fd [b43]
031 0xffffffffa02f7486 [b43]
032 0xffffffff810e4b89 : irq_thread_fn+0x29/0x50 [kernel]
033 0xffffffff810e4ae0 : irq_thread+0x1a0/0x220 [kernel]
034 0xffffffff810e4940 : irq_thread+0x0/0x220 [kernel]
035 0xffffffff81079da3 : kthread+0x93/0xa0 [kernel]
036 0xffffffff81620f24 : kernel_thread_helper+0x4/0x10 [kernel]
037 0xffffffff81079d10 : kthread+0x0/0xa0 [kernel]
038 0xffffffff81620f20 : kernel_thread_helper+0x0/0x10 [kernel]
039 551 irq/28-b43(25823): -> __netif_receive_skb(skb=0xffff8800a8183300 ptype=? pt_prev=? rx_handler=? orig_dev=? null_or_dev=? deliver_exact=? ret=? type=?)
040 skb_dump:dev:wlan0 proto:8100 len:32 vlan_tci:{prio:0 cfi:0 vid:0}
041 587 irq/28-b43(25823): -> vlan_untag(skb=0xffff8800a8183300 vhdr=? vlan_tci=?)
042 skb_dump:dev:wlan0 proto:8100 len:32 vlan_tci:{prio:0 cfi:0 vid:0}
043 616 irq/28-b43(25823): <- vlan_untag(): return=0xffff8800a8183300
044 639 irq/28-b43(25823): -> packet_rcv(skb=0xffff8800a8183300 dev=0xffff8800aa24b000 pt=0xffff8800276f5cc0 orig_dev=0xffff8800aa24b000 sk=? sll=? po=? skb_head=? skb_len=? snaplen=? res=?)
045 skb_dump:dev:wlan0 proto:0806 len:28 vlan_tci:{prio:0 cfi:4096 vid:50}
046 dev:name:wlan0
047 orig_dev:name:wlan0
048 690 irq/28-b43(25823): <- packet_rcv(): return=0x0
049 705 irq/28-b43(25823): -> vlan_do_receive(skbp=0xffff880045c1fa08 last_handler=0x0 skb=? vlan_id=? vlan_dev=0xffff8800aa24b000 rx_stats=?)
050 skbp_dump:dev:wlan0 proto:0806 len:28 vlan_tci:{prio:0 cfi:4096 vid:50}
051 738 irq/28-b43(25823): <- vlan_do_receive(): return=0x0
052 755 irq/28-b43(25823): -> macvlan_handle_frame(pskb=0xffff880045c1fa08 port=? skb=? eth=? vlan=? src=0xffff8800aa24b000 dev=? len=? ret=?)
053 pskb_dump:dev:wlan0 proto:0806 len:28 vlan_tci:{prio:0 cfi:4096 vid:50}
054 794 irq/28-b43(25823): -> macvlan_broadcast(skb=0xffff8800a8183300 port=0xffff8800a9466000 src=0x0 mode=0xf eth=0xffff880045c1f9f0 vlan=? n=? nskb=? i=? err=0x0)
055 skb_dump:dev:wlan0 proto:0806 len:28 vlan_tci:{prio:0 cfi:4096 vid:50}
056 843 irq/28-b43(25823): -> netif_rx(skb=0xffff8800a7012e00 ret=0xffffffffa7012e00)
057 skb_dump:dev:macvlan0 proto:0806 len:28 vlan_tci:{prio:0 cfi:4096 vid:50}
058 877 irq/28-b43(25823): -> enqueue_to_backlog(skb=0xffff8800a7012e00 cpu=0x0 qtail=0xffff880045c1f930 sd=? flags=?)
059 skb_dump:dev:macvlan0 proto:0806 len:28 vlan_tci:{prio:0 cfi:4096 vid:50}
060 930 irq/28-b43(25823): <- enqueue_to_backlog(): return=0x0
061 942 irq/28-b43(25823): <- netif_rx(): return=0x0
062 962 irq/28-b43(25823): -> macvtap_receive(skb=0xffff8800136a7200)
063 skb_dump:dev:macvtap0 proto:0806 len:28 vlan_tci:{prio:0 cfi:4096 vid:50}
064 992 irq/28-b43(25823): -> macvtap_forward(dev=0xffff8800a9467000 skb=0xffff8800136a7200 q=0x0)
065 skb_dump:dev:macvtap0 proto:0806 len:42 vlan_tci:{prio:0 cfi:4096 vid:50}
066 dev:name:macvtap0
067 1030 irq/28-b43(25823): -> __skb_get_rxhash(skb=0xffff8800136a7200 keys={...} hash=?)
068 skb_dump:dev:macvtap0 proto:0806 len:42 vlan_tci:{prio:0 cfi:4096 vid:50}
069 1058 irq/28-b43(25823): <- __skb_get_rxhash():
070 1080 irq/28-b43(25823): <- macvtap_forward(): return=0x0
071 1092 irq/28-b43(25823): <- macvtap_receive(): return=0x0
072 1105 irq/28-b43(25823): <- macvlan_broadcast():
073 1117 irq/28-b43(25823): <- macvlan_handle_frame(): return=0x3
074 1149 irq/28-b43(25823): <- __netif_receive_skb(): return=0x0
075 1161 irq/28-b43(25823): <- netif_receive_skb(): return=0x0
076 0 irq/28-b43(25823): -> net_rx_action(h=0xffffffff81c04098 sd=? time_limit=? budget=? have=0x3)
077 0xffffffff8150bc00 : net_rx_action+0x0/0x270 [kernel]
078 0xffffffff8161a189 : kretprobe_trampoline+0x0/0x57 [kernel]
079 0xffffffff8162101c : call_softirq+0x1c/0x30 [kernel]
080 0xffffffff81016455 : do_softirq+0x65/0xa0 [kernel]
081 0xffffffff8105e654 : local_bh_enable+0x94/0xa0 [kernel]
082 0xffffffffa0312fd9 [b43]
083 0xffffffffa0318d8a [b43]
084 0xffffffff810e4b60 : irq_thread_fn+0x0/0x50 [kernel]
085 0xffffffffa02f71fd [b43]
086 0xffffffffa02f7486 [b43]
087 0xffffffff810e4b89 : irq_thread_fn+0x29/0x50 [kernel]
088 0xffffffff810e4ae0 : irq_thread+0x1a0/0x220 [kernel]
089 0xffffffff810e4940 : irq_thread+0x0/0x220 [kernel]
090 0xffffffff81079da3 : kthread+0x93/0xa0 [kernel]
091 0xffffffff81620f24 : kernel_thread_helper+0x4/0x10 [kernel]
092 0xffffffff81079d10 : kthread+0x0/0xa0 [kernel]
093 0xffffffff81620f20 : kernel_thread_helper+0x0/0x10 [kernel]
094 506 irq/28-b43(25823): -> process_backlog(napi=0xffff8800afc14118 quota=0x40 work=? sd=?)
095 530 irq/28-b43(25823): -> __netif_receive_skb(skb=0xffff8800a7012e00 ptype=? pt_prev=? rx_handler=? orig_dev=? null_or_dev=? deliver_exact=? ret=? type=?)
096 skb_dump:dev:macvlan0 proto:0806 len:28 vlan_tci:{prio:0 cfi:4096 vid:50}
097 561 irq/28-b43(25823): -> vlan_do_receive(skbp=0xffff8800afc03e30 last_handler=0x0 skb=? vlan_id=? vlan_dev=0xffff880088528000 rx_stats=?)
098 skbp_dump:dev:macvlan0 proto:0806 len:28 vlan_tci:{prio:0 cfi:4096 vid:50}
099 591 irq/28-b43(25823): <- vlan_do_receive(): return=0x0
100 626 irq/28-b43(25823): -> br_flood_forward(br=0xffff8800a995e780 skb=0xffff8800a7012e00 skb2=0xffff8800a7012e00)
101 skb_dump:dev:macvlan0 proto:0806 len:28 vlan_tci:{prio:0 cfi:4096 vid:50}
102 667 irq/28-b43(25823): -> br_flood(br=0xffff8800a995e780 skb=0xffff8800a7012e00 skb0=0xffff8800a7012e00 __packet_hook=0xffffffffa040f380 p=? prev=?)
103 skb_dump:dev:macvlan0 proto:0806 len:28 vlan_tci:{prio:0 cfi:4096 vid:50}
104 711 irq/28-b43(25823): -> maybe_deliver(prev=0x0 p=0xffff8800a85bec00 skb=0xffff8800a7012e00 __packet_hook=0xffffffffa040f380 err=?)
105 skb_dump:dev:macvlan0 proto:0806 len:28 vlan_tci:{prio:0 cfi:4096 vid:50}
106 766 irq/28-b43(25823): <- maybe_deliver(): return=0xffff8800a85bec00
107 784 irq/28-b43(25823): -> maybe_deliver(prev=0xffff8800a85bec00 p=0xffff8800a7972800 skb=0xffff8800a7012e00 __packet_hook=0xffffffffa040f380 err=?)
108 skb_dump:dev:macvlan0 proto:0806 len:28 vlan_tci:{prio:0 cfi:4096 vid:50}
109 820 irq/28-b43(25823): <- maybe_deliver(): return=0xffff8800a85bec00
110 839 irq/28-b43(25823): -> deliver_clone(prev=0xffff8800a85bec00 skb=0xffff8800a7012e00 __packet_hook=0xffffffffa040f380 dev=?)
111 skb_dump:dev:macvlan0 proto:0806 len:28 vlan_tci:{prio:0 cfi:4096 vid:50}
112 879 irq/28-b43(25823): -> __br_forward(to=0xffff8800a85bec00 skb=0xffff8800a8183300 indev=?)
113 skb_dump:dev:macvlan0 proto:0806 len:28 vlan_tci:{prio:0 cfi:4096 vid:50}
114 914 irq/28-b43(25823): -> br_forward_finish(skb=0xffff8800a8183300)
115 skb_dump:dev:tap0 proto:0806 len:28 vlan_tci:{prio:0 cfi:4096 vid:50}
116 943 irq/28-b43(25823): -> br_dev_queue_push_xmit(skb=0xffff8800a8183300)
117 skb_dump:dev:tap0 proto:0806 len:28 vlan_tci:{prio:0 cfi:4096 vid:50}
118 973 irq/28-b43(25823): -> dev_queue_xmit(skb=0xffff8800a8183300 dev=? txq=0xffffffffa040f380 q=? rc=?)
119 skb_dump:dev:tap0 proto:0806 len:42 vlan_tci:{prio:0 cfi:4096 vid:50}
120 1010 irq/28-b43(25823): -> dev_hard_start_xmit(skb=0xffff8800a8183300 dev=0xffff8800a9866000 txq=0xffff88008864fa00 ops=? rc=? skb_len=?)
121 skb_dump:dev:tap0 proto:0806 len:42 vlan_tci:{prio:0 cfi:4096 vid:50}
122 dev:name:tap0
123 1056 irq/28-b43(25823): -> tpacket_rcv(skb=0xffff8800a9849600 dev=0xffff8800a9866000 pt=0xffff8800662994c0 orig_dev=0xffff8800a9866000 sk=? po=? sll=? h={...} skb_head=? skb_len=? snaplen=? res=? status=? macoff=? netoff=? hdrlen=? copy_skb=? tv={...} ts={...} shhwtstamps=?)
124 skb_dump:dev:tap0 proto:0806 len:42 vlan_tci:{prio:0 cfi:4096 vid:50}
125 dev:name:tap0
126 orig_dev:name:tap0
127 1109 irq/28-b43(25823): -> packet_lookup_frame(po=0xffff880066299000 rb=0xffff8800662992a0 position=0x6 status=0x0 pg_vec_pos=? frame_offset=? h={...})
128 1137 irq/28-b43(25823): -> __packet_get_status(po=0xffff880066299000 frame=0xffff880019b60000 h={...})
129 1159 irq/28-b43(25823): <- __packet_get_status(): return=0x0
130 1171 irq/28-b43(25823): <- packet_lookup_frame(): return=0xffff880019b60000
131 1192 irq/28-b43(25823): -> __packet_set_status(po=0xffff880066299000 frame=0xffff880019b60000 status=0x11 h={...})
132 1217 irq/28-b43(25823): <- __packet_set_status():
133 1240 irq/28-b43(25823): <- tpacket_rcv(): return=0x0
134 1255 irq/28-b43(25823): -> netif_skb_features(skb=0xffff8800a8183300 protocol=? features=?)
135 skb_dump:dev:tap0 proto:0806 len:42 vlan_tci:{prio:0 cfi:4096 vid:50}
136 1286 irq/28-b43(25823): -> harmonize_features(skb=0xffff8800a8183300 protocol=0x608 features=0x0)
137 skb_dump:dev:tap0 proto:0806 len:42 vlan_tci:{prio:0 cfi:4096 vid:50}
138 1314 irq/28-b43(25823): <- harmonize_features(): return=0x0
139 1326 irq/28-b43(25823): <- netif_skb_features(): return=0x0
140 1348 irq/28-b43(25823): -> tun_net_xmit(skb=0xffff8800a8183300 dev=0xffff8800a9866000 tun=?)
141 skb_dump:dev:tap0 proto:8100 len:46 vlan_tci:{prio:0 cfi:0 vid:0}
142 dev:name:tap0
143 1388 irq/28-b43(25823): <- tun_net_xmit(): return=0x0
144 1401 irq/28-b43(25823): <- dev_hard_start_xmit(): return=0x0
145 1414 irq/28-b43(25823): <- dev_queue_xmit(): return=0x0
146 1426 irq/28-b43(25823): <- br_dev_queue_push_xmit(): return=0x0
147 1438 irq/28-b43(25823): <- br_forward_finish(): return=0x0
148 1450 irq/28-b43(25823): <- __br_forward():
149 1461 irq/28-b43(25823): <- deliver_clone(): return=0x0
150 1473 irq/28-b43(25823): <- br_flood():
151 1484 irq/28-b43(25823): <- br_flood_forward():
152 1499 irq/28-b43(25823): -> netif_receive_skb(skb=0xffff8800a7012e00)
153 skb_dump:dev:br0 proto:0806 len:28 vlan_tci:{prio:0 cfi:4096 vid:50}
154 1524 irq/28-b43(25823): -> __netif_receive_skb(skb=0xffff8800a7012e00 ptype=? pt_prev=? rx_handler=? orig_dev=? null_or_dev=? deliver_exact=? ret=? type=?)
155 skb_dump:dev:br0 proto:0806 len:28 vlan_tci:{prio:0 cfi:4096 vid:50}
156 1553 irq/28-b43(25823): -> vlan_do_receive(skbp=0xffff8800afc03d20 last_handler=0x1 skb=? vlan_id=? vlan_dev=0xffff8800a995e000 rx_stats=?)
157 skbp_dump:dev:br0 proto:0806 len:28 vlan_tci:{prio:0 cfi:4096 vid:50}
158 1583 irq/28-b43(25823): <- vlan_do_receive(): return=0x0
159 1596 irq/28-b43(25823): <- __netif_receive_skb(): return=0x0
160 1608 irq/28-b43(25823): <- netif_receive_skb(): return=0x0
161 1619 irq/28-b43(25823): <- __netif_receive_skb(): return=0x1
162 1631 irq/28-b43(25823): <- process_backlog(): return=0x1
163 1646 irq/28-b43(25823): -> net_rps_action_and_irq_enable(sd=0xffff8800afc14040 remsd=?)
164 1666 irq/28-b43(25823): <- net_rps_action_and_irq_enable():
165 1678 irq/28-b43(25823): <- net_rx_action():
166 0 macvtapread(13215): -> macvtap_poll(file=0xffff88006bb35c00 wait=0xffff8800a86a9ab8 q=? mask=?)
167 0xffffffffa03f6000 : macvtap_poll+0x0/0xa0 [macvtap]
168 0xffffffff8161a189 : kretprobe_trampoline+0x0/0x57 [kernel]
169 0xffffffff8119561c : core_sys_select+0x1ec/0x370 [kernel]
170 0xffffffff81195860 : sys_select+0xc0/0x100 [kernel]
171 0xffffffff8161fb69 : system_call_fastpath+0x16/0x1b [kernel]
172 206 macvtapread(13215): <- macvtap_poll(): return=0x145
173 0 macvtapread(13215): -> macvtap_aio_read(iocb=0xffff8800a86a9e00 iv=0xffff8800a86a9ed8 count=0x1 pos=0x0 file=? q=? len=? ret=?)
174 0xffffffffa03f65e0 : macvtap_aio_read+0x0/0x80 [macvtap]
175 0xffffffff8161a189 : kretprobe_trampoline+0x0/0x57 [kernel]
176 0xffffffff81182305 : vfs_read+0x165/0x180 [kernel]
177 0xffffffff8118236a : sys_read+0x4a/0x90 [kernel]
178 0xffffffff8161fb69 : system_call_fastpath+0x16/0x1b [kernel]
179 193 macvtapread(13215): -> macvtap_do_read(q=0xffff88001a62f800 iocb=0xffff8800a86a9e00 iv=0xffff8800a86a9ed8 len=0x5de noblock=0x0 wait={...} skb=? ret=?)
180 233 macvtapread(13215): <- macvtap_do_read(): return=0x34
181 246 macvtapread(13215): <- macvtap_aio_read(): return=0x34
182 0 macvtapread(13215): -> macvtap_poll(file=0xffff88006bb35c00 wait=0xffff8800a86a9ab8 q=? mask=?)
183 0xffffffffa03f6000 : macvtap_poll+0x0/0xa0 [macvtap]
184 0xffffffff8161a189 : kretprobe_trampoline+0x0/0x57 [kernel]
185 0xffffffff8119561c : core_sys_select+0x1ec/0x370 [kernel]
186 0xffffffff81195860 : sys_select+0xc0/0x100 [kernel]
187 0xffffffff8161fb69 : system_call_fastpath+0x16/0x1b [kernel]
188 190 macvtapread(13215): <- macvtap_poll(): return=0x104
189 0 tcpdump(tap0): -> packet_poll(file=0xffff8800885f0e00 sock=0xffff88001904a000 wait=0xffff880017601b88 sk=? po=? mask=?)
190 0xffffffff815e51f0 : packet_poll+0x0/0x130 [kernel]
191 0xffffffff8161a189 : kretprobe_trampoline+0x0/0x57 [kernel]
192 0xffffffff81195ceb : do_sys_poll+0x25b/0x4c0 [kernel]
193 0xffffffff8119602b : sys_poll+0x6b/0x100 [kernel]
194 0xffffffff8161fb69 : system_call_fastpath+0x16/0x1b [kernel]
195 223 tcpdump(tap0): -> packet_lookup_frame(po=0xffff880066299000 rb=0xffff8800662992a0 position=0x6 status=0x0 pg_vec_pos=? frame_offset=? h={...})
196 249 tcpdump(tap0): -> __packet_get_status(po=0xffff880066299000 frame=0xffff880019b60000 h={...})
197 269 tcpdump(tap0): <- __packet_get_status(): return=0x11
198 282 tcpdump(tap0): <- packet_lookup_frame(): return=0x0
199 294 tcpdump(tap0): <- packet_poll(): return=0x345
200 0 tcpdump(tap0): -> packet_poll(file=0xffff8800885f0e00 sock=0xffff88001904a000 wait=0xffff880017601b88 sk=? po=? mask=?)
201 0xffffffff815e51f0 : packet_poll+0x0/0x130 [kernel]
202 0xffffffff8161a189 : kretprobe_trampoline+0x0/0x57 [kernel]
203 0xffffffff81195ceb : do_sys_poll+0x25b/0x4c0 [kernel]
204 0xffffffff8119602b : sys_poll+0x6b/0x100 [kernel]
205 0xffffffff8161fb69 : system_call_fastpath+0x16/0x1b [kernel]
206 204 tcpdump(tap0): -> packet_lookup_frame(po=0xffff880066299000 rb=0xffff8800662992a0 position=0x6 status=0x0 pg_vec_pos=? frame_offset=? h={...})
207 229 tcpdump(tap0): -> __packet_get_status(po=0xffff880066299000 frame=0xffff880019b60000 h={...})
208 250 tcpdump(tap0): <- __packet_get_status(): return=0x0
209 262 tcpdump(tap0): <- packet_lookup_frame(): return=0xffff880019b60000
210 277 tcpdump(tap0): <- packet_poll(): return=0x304
211 0 tapread(13310): -> tun_chr_poll(file=0xffff880002451f00 wait=0xffff8800a7435ab8 tfile=? tun=? sk=? mask=?)
212 0xffffffffa042f4a0 : tun_chr_poll+0x0/0x110 [tun]
213 0xffffffff8161a189 : kretprobe_trampoline+0x0/0x57 [kernel]
214 0xffffffff8119561c : core_sys_select+0x1ec/0x370 [kernel]
215 0xffffffff81195860 : sys_select+0xc0/0x100 [kernel]
216 0xffffffff8161fb69 : system_call_fastpath+0x16/0x1b [kernel]
217 196 tapread(13310): -> __tun_get(tfile=0xffff88000456afc0 tun=?)
218 215 tapread(13310): <- __tun_get(): return=0xffff8800a9866780
219 234 tapread(13310): -> tun_put(tun=0xffff8800a9866780 tfile=?)
220 252 tapread(13310): <- tun_put():
221 262 tapread(13310): <- tun_chr_poll(): return=0x145
222 0 tapread(13310): -> tun_chr_aio_read(iocb=0xffff8800a7435e00 iv=0xffff8800a7435ed8 count=0x1 pos=0x0 file=? tfile=? tun=? len=? ret=?)
223 0xffffffffa042f6a0 : tun_chr_aio_read+0x0/0xe0 [tun]
224 0xffffffff8161a189 : kretprobe_trampoline+0x0/0x57 [kernel]
225 0xffffffff81182250 : vfs_read+0xb0/0x180 [kernel]
226 0xffffffff8118236a : sys_read+0x4a/0x90 [kernel]
227 0xffffffff8161fb69 : system_call_fastpath+0x16/0x1b [kernel]
228 213 tapread(13310): -> __tun_get(tfile=0xffff88000456afc0 tun=?)
229 230 tapread(13310): <- __tun_get(): return=0xffff8800a9866780
230 248 tapread(13310): -> tun_do_read(tun=0xffff8800a9866780 iocb=0xffff8800a7435e00 iv=0xffff8800a7435ed8 len=0x5de noblock=0x0 wait={...} skb=? ret=?)
231 284 tapread(13310): -> netpoll_trap()
232 295 tapread(13310): <- netpoll_trap(): return=0x0
233 312 tapread(13310): <- tun_do_read(): return=0x2e
234 325 tapread(13310): -> tun_put(tun=0xffff8800a9866780 tfile=?)
235 340 tapread(13310): <- tun_put():
236 350 tapread(13310): <- tun_chr_aio_read(): return=0x2e
237 0 tapread(13310): -> tun_chr_poll(file=0xffff880002451f00 wait=0xffff8800a7435ab8 tfile=? tun=? sk=? mask=?)
238 0xffffffffa042f4a0 : tun_chr_poll+0x0/0x110 [tun]
239 0xffffffff8161a189 : kretprobe_trampoline+0x0/0x57 [kernel]
240 0xffffffff8119561c : core_sys_select+0x1ec/0x370 [kernel]
241 0xffffffff81195860 : sys_select+0xc0/0x100 [kernel]
242 0xffffffff8161fb69 : system_call_fastpath+0x16/0x1b [kernel]
243 192 tapread(13310): -> __tun_get(tfile=0xffff88000456afc0 tun=?)
244 209 tapread(13310): <- __tun_get(): return=0xffff8800a9866780
245 225 tapread(13310): -> tun_put(tun=0xffff8800a9866780 tfile=?)
246 241 tapread(13310): <- tun_put():
247 251 tapread(13310): <- tun_chr_poll(): return=0x104
248 0 tcpdump(macvtap0): -> packet_poll(file=0xffff880027793a00 sock=0xffff8800a925c500 wait=0xffff8800a9a99b88 sk=? po=? mask=?)
249 0xffffffff815e51f0 : packet_poll+0x0/0x130 [kernel]
250 0xffffffff8161a189 : kretprobe_trampoline+0x0/0x57 [kernel]
251 0xffffffff81195ceb : do_sys_poll+0x25b/0x4c0 [kernel]
252 0xffffffff8119602b : sys_poll+0x6b/0x100 [kernel]
253 0xffffffff8161fb69 : system_call_fastpath+0x16/0x1b [kernel]
254 242 tcpdump(macvtap0): -> packet_lookup_frame(po=0xffff88003dd2b000 rb=0xffff88003dd2b2a0 position=0x1e status=0x0 pg_vec_pos=? frame_offset=? h={...})
255 271 tcpdump(macvtap0): -> __packet_get_status(po=0xffff88003dd2b000 frame=0xffff88003c180000 h={...})
256 294 tcpdump(macvtap0): <- __packet_get_status(): return=0x0
257 308 tcpdump(macvtap0): <- packet_lookup_frame(): return=0xffff88003c180000
258 324 tcpdump(macvtap0): <- packet_poll(): return=0x304
259 0 tcpdump(macvtap0): -> packet_poll(file=0xffff880027793a00 sock=0xffff8800a925c500 wait=0xffff8800a9a99b88 sk=? po=? mask=?)
260 0xffffffff815e51f0 : packet_poll+0x0/0x130 [kernel]
261 0xffffffff8161a189 : kretprobe_trampoline+0x0/0x57 [kernel]
262 0xffffffff81195ceb : do_sys_poll+0x25b/0x4c0 [kernel]
263 0xffffffff8119602b : sys_poll+0x6b/0x100 [kernel]
264 0xffffffff8161fb69 : system_call_fastpath+0x16/0x1b [kernel]
265 193 tcpdump(macvtap0): -> packet_lookup_frame(po=0xffff88003dd2b000 rb=0xffff88003dd2b2a0 position=0x1e status=0x0 pg_vec_pos=? frame_offset=? h={...})
266 217 tcpdump(macvtap0): -> __packet_get_status(po=0xffff88003dd2b000 frame=0xffff88003c180000 h={...})
267 237 tcpdump(macvtap0): <- __packet_get_status(): return=0x0
268 248 tcpdump(macvtap0): <- packet_lookup_frame(): return=0xffff88003c180000
269 264 tcpdump(macvtap0): <- packet_poll(): return=0x304
[-- Attachment #3: tun-trace.stp --]
[-- Type: text/plain, Size: 2747 bytes --]
%{
#include <linux/skbuff.h>
#include <linux/if_vlan.h>
%}
function skb_dump:string(skb_ptr:long) %{
struct sk_buff *skb = (void*)THIS->skb_ptr;
if (!skb) {
snprintf(THIS->__retvalue, MAXSTRINGLEN, "skb=NULL");
return;
}
snprintf(THIS->__retvalue, MAXSTRINGLEN, "dev:%s proto:%04x len:%u vlan_tci:{prio:%d cfi:%d vid:%d}",
skb->dev ? skb->dev->name : "NULL",
htons(skb->protocol),
skb->len,
skb->vlan_tci & VLAN_PRIO_MASK,
skb->vlan_tci & VLAN_CFI_MASK,
skb->vlan_tci & VLAN_VID_MASK);
%}
function dev_dump:string(dev_ptr:long) %{
struct net_device *dev = (void*)THIS->dev_ptr;
if (!dev) {
snprintf(THIS->__retvalue, MAXSTRINGLEN, "dev=NULL");
return;
}
snprintf(THIS->__retvalue, MAXSTRINGLEN, "name:%s", dev->name);
%}
function deref_unsafe:long(pskb_ptr:long) %{
struct sk_buff **pskb = (void*)THIS->pskb_ptr;
if (!pskb || !(*pskb))
THIS->__retvalue = 0;
else
THIS->__retvalue = (long)*pskb;
%}
probe begin {
printf ("started\n")
}
global nesting = 0
probe probepoints.call = module("tun").function("*@drivers/net/tun.c").call,
module("macvlan").function("*@drivers/net/macvlan.c").call,
module("macvtap").function("*@drivers/net/macvtap.c").call,
module("bridge").function("*@net/bridge/br_device.c").call,
module("bridge").function("*@net/bridge/br_forward.c").call,
kernel.function("vlan_*").call,
kernel.function("__vlan_*").call,
kernel.function("*@net/packet/af_packet.c").call,
kernel.function("*@net/core/netpoll.c").call,
kernel.function("*@net/core/dev.c").call {
nesting++
}
probe probepoints.return = module("tun").function("*@drivers/net/tun.c").return,
module("macvlan").function("*@drivers/net/macvlan.c").return,
module("macvtap").function("*@drivers/net/macvtap.c").return,
module("bridge").function("*@net/bridge/br_device.c").return,
module("bridge").function("*@net/bridge/br_forward.c").return,
kernel.function("vlan_*").return,
kernel.function("__vlan_*").return,
kernel.function("*@net/packet/af_packet.c").return,
kernel.function("*@net/core/netpoll.c").return,
kernel.function("*@net/core/dev.c").return {
nesting--
}
probe probepoints.call {
printf ("%s -> %s(%s)\n", thread_indent(1), probefunc(), $$vars)
if (@defined($skb))
printf("\tskb_dump:%s\n", skb_dump($skb))
if (@defined($pskb))
printf("\tpskb_dump:%s\n", skb_dump(deref_unsafe($pskb)))
if (@defined($skbp))
printf("\tskbp_dump:%s\n", skb_dump(deref_unsafe($skbp)))
if (@defined($dev))
printf("\tdev:%s\n", dev_dump($dev))
if (@defined($orig_dev))
printf("\torig_dev:%s\n", dev_dump($dev))
if (nesting == 1)
print_stack(backtrace())
}
probe probepoints.return {
printf ("%s <- %s(): %s\n", thread_indent(-1), probefunc(), $$return)
}
next prev parent reply other threads:[~2012-05-03 14:44 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-18 18:34 [PATCH] macvlan/macvtap: Fix vlan tagging on user read Basil Gor
2012-04-18 18:54 ` Eric W. Biederman
2012-04-18 19:33 ` Basil Gor
2012-04-20 23:11 ` Basil Gor
2012-04-21 1:49 ` Eric W. Biederman
2012-04-25 17:01 ` [PATCH v3 1/2] vhost-net: fix handle_rx buffer size Basil Gor
2012-04-26 5:30 ` Eric W. Biederman
2012-05-03 12:39 ` Michael S. Tsirkin
2012-05-03 13:16 ` Michael S. Tsirkin
2012-05-03 14:43 ` Basil Gor [this message]
2012-04-25 17:01 ` [PATCH v3 2/2] macvtap: restore vlan header on user read Basil Gor
2012-04-26 5:31 ` Eric W. Biederman
2012-05-03 13:07 ` Michael S. Tsirkin
2012-05-03 13:37 ` Eric W. Biederman
2012-05-03 14:31 ` Michael S. Tsirkin
2012-05-03 15:22 ` Basil Gor
2012-05-03 23:11 ` Basil Gor
2012-05-03 23:30 ` Michael S. Tsirkin
2012-05-03 23:47 ` Basil Gor
2012-05-04 1:06 ` David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120503144326.GA15251@nanobar \
--to=basil.gor@gmail.com \
--cc=davem@davemloft.net \
--cc=ebiederm@xmission.com \
--cc=mst@redhat.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.