https://blog.csdn.net/u010378472/article/details/79146557
Breakpoint 1, netdev_send (netdev=0x5470900, qid=qid@entry=0, batch=batch@entry=0xfffd58004f20, concurrent_txq=concurrent_txq@entry=true) at lib/netdev.c:885 885 { (gdb) bt #0 netdev_send (netdev=0x5470900, qid=qid@entry=0, batch=batch@entry=0xfffd58004f20, concurrent_txq=concurrent_txq@entry=true) at lib/netdev.c:885 #1 0x000000000096fae8 in dp_netdev_pmd_flush_output_on_port (pmd=pmd@entry=0x54770b0, p=p@entry=0xfffd58004ef0) at lib/dpif-netdev.c:4391 #2 0x000000000096fdfc in dp_netdev_pmd_flush_output_packets (pmd=pmd@entry=0x54770b0, force=force@entry=false) at lib/dpif-netdev.c:4431 #3 0x00000000009787d8 in dp_netdev_pmd_flush_output_packets (force=false, pmd=0x54770b0) at lib/dpif-netdev.c:4501 #4 dp_netdev_process_rxq_port (pmd=pmd@entry=0x54770b0, rxq=0x51d14a0, port_no=3) at lib/dpif-netdev.c:4486 #5 0x0000000000978a24 in pmd_thread_main (f_=0x54770b0) at lib/dpif-netdev.c:5731 #6 0x00000000009fc5dc in ovsthread_wrapper (aux_=<optimized out>) at lib/ovs-thread.c:383 #7 0x0000ffffb7fd7d38 in start_thread (arg=0xfffd6d6ed510) at pthread_create.c:309 #8 0x0000ffffb7cbf690 in thread_start () from /lib64/libc.so.6 (gdb) delete 1 (gdb) b dp_execute_cb Breakpoint 2 at 0x9799b4: file lib/dpif-netdev.c, line 7237. (gdb) c Continuing. [Switching to Thread 0xfffd53ffd510 (LWP 19066)] Breakpoint 2, dp_execute_cb (aux_=0xfffd53ff4338, packets_=0xfffd53ff43c8, a=0xfffd53ff44e0, should_steal=true) at lib/dpif-netdev.c:7237 7237 { (gdb) bt #0 dp_execute_cb (aux_=0xfffd53ff4338, packets_=0xfffd53ff43c8, a=0xfffd53ff44e0, should_steal=true) at lib/dpif-netdev.c:7237 #1 0x00000000009ac8ac in odp_execute_actions (dp=dp@entry=0xfffd53ff4338, batch=batch@entry=0xfffd53ff43c8, steal=steal@entry=true, actions=<optimized out>, actions_len=<optimized out>, dp_execute_action=dp_execute_action@entry=0x9799b4 <dp_execute_cb>) at lib/odp-execute.c:864 #2 0x00000000009765c0 in dp_netdev_execute_actions (actions_len=<optimized out>, actions=<optimized out>, flow=0xfffd53ff48d8, should_steal=true, packets=0xfffd53ff43c8, pmd=0x5d3f680) at lib/dpif-netdev.c:7596 #3 handle_packet_upcall (put_actions=0xfffd53ff4388, actions=0xfffd53ff4348, key=0xfffd53ff7e80, packet=0x62ce3efb80, pmd=0x5d3f680) at lib/dpif-netdev.c:6846 #4 fast_path_processing (pmd=pmd@entry=0x5d3f680, packets_=packets_@entry=0xfffd53ffca80, keys=keys@entry=0xfffd53ff7d60, flow_map=flow_map@entry=0xfffd53ff5640, index_map=index_map@entry=0xfffd53ff5620 "", in_port=<optimized out>) at lib/dpif-netdev.c:6942 #5 0x0000000000977f58 in dp_netdev_input__ (pmd=pmd@entry=0x5d3f680, packets=packets@entry=0xfffd53ffca80, md_is_valid=md_is_valid@entry=false, port_no=port_no@entry=2) at lib/dpif-netdev.c:7031 #6 0x0000000000978680 in dp_netdev_input (port_no=2, packets=0xfffd53ffca80, pmd=0x5d3f680) at lib/dpif-netdev.c:7069 #7 dp_netdev_process_rxq_port (pmd=pmd@entry=0x5d3f680, rxq=0x5472b80, port_no=2) at lib/dpif-netdev.c:4480 #8 0x0000000000978a24 in pmd_thread_main (f_=0x5d3f680) at lib/dpif-netdev.c:5731 #9 0x00000000009fc5dc in ovsthread_wrapper (aux_=<optimized out>) at lib/ovs-thread.c:383 #10 0x0000ffffb7fd7d38 in start_thread (arg=0xfffd53ffd510) at pthread_create.c:309 #11 0x0000ffffb7cbf690 in thread_start () from /lib64/libc.so.6 (gdb)
packet_batch_per_flow_execute
(gdb) s packet_batch_per_flow_execute (pmd=<optimized out>, batch=<optimized out>) at lib/dpif-netdev.c:6545 6545 dp_netdev_flow_used(flow, dp_packet_batch_size(&batch->array), (gdb) bt #0 packet_batch_per_flow_execute (pmd=<optimized out>, batch=<optimized out>) at lib/dpif-netdev.c:6545 #1 dp_netdev_input__ (pmd=pmd@entry=0x54770b0, packets=packets@entry=0xfffd6d6eca80, md_is_valid=md_is_valid@entry=false, port_no=port_no@entry=3) at lib/dpif-netdev.c:7060 #2 0x0000000000978680 in dp_netdev_input (port_no=3, packets=0xfffd6d6eca80, pmd=0x54770b0) at lib/dpif-netdev.c:7069 #3 dp_netdev_process_rxq_port (pmd=pmd@entry=0x54770b0, rxq=0x51d14a0, port_no=3) at lib/dpif-netdev.c:4480 #4 0x0000000000978a24 in pmd_thread_main (f_=0x54770b0) at lib/dpif-netdev.c:5731 #5 0x00000000009fc5dc in ovsthread_wrapper (aux_=<optimized out>) at lib/ovs-thread.c:383 #6 0x0000ffffb7fd7d38 in start_thread (arg=0xfffd6d6ed510) at pthread_create.c:309 #7 0x0000ffffb7cbf690 in thread_start () from /lib64/libc.so.6 (gdb) list 6540 struct dp_netdev_pmd_thread *pmd) 6541 { 6542 struct dp_netdev_actions *actions; 6543 struct dp_netdev_flow *flow = batch->flow; 6544 6545 dp_netdev_flow_used(flow, dp_packet_batch_size(&batch->array), 6546 batch->byte_count, 6547 batch->tcp_flags, pmd->ctx.now / 1000); 6548 6549 actions = dp_netdev_flow_get_actions(flow); (gdb) n 6551 dp_netdev_execute_actions(pmd, &batch->array, true, &flow->flow, (gdb) n 6545 dp_netdev_flow_used(flow, dp_packet_batch_size(&batch->array), (gdb) p *flow value has been optimized out (gdb) n 6543 struct dp_netdev_flow *flow = batch->flow; (gdb) p *actions value has been optimized out (gdb) n 6545 dp_netdev_flow_used(flow, dp_packet_batch_size(&batch->array), (gdb) n 6549 actions = dp_netdev_flow_get_actions(flow); (gdb) p *actions value has been optimized out (gdb) n 6551 dp_netdev_execute_actions(pmd, &batch->array, true, &flow->flow, (gdb) p *flow $2 = { flow = { tunnel = { ip_dst = 0, ipv6_dst = { __in6_u = { __u6_addr8 = '