Difference between revisions of "Llk-packet-diagram"
Line 17: | Line 17: | ||
<div id="1"> | <div id="1"> | ||
1. Timer location: net/socket.c:1551, sys_send | 1. Timer location: net/socket.c:1551, sys_send | ||
+ | Data is copied from user to kernel space via copy_from_user | ||
</div> | </div> | ||
<div id="2"> | <div id="2"> | ||
2. Timer location: net/ipv4/af_inet.c:661, inet_sendmsg | 2. Timer location: net/ipv4/af_inet.c:661, inet_sendmsg | ||
+ | Kernel buffer is wrapped into a BSD socket data structure | ||
</div> | </div> | ||
<div id="3"> | <div id="3"> | ||
3. Timer location: net/ipv4/tcp_output.c:374, tcp_transmit_skb | 3. Timer location: net/ipv4/tcp_output.c:374, tcp_transmit_skb | ||
+ | TCP wrapper placed around data. | ||
</div> | </div> | ||
<div id="4"> | <div id="4"> | ||
4. Timer location: net/ipv4/ip_output.c:240, ip_finish_output | 4. Timer location: net/ipv4/ip_output.c:240, ip_finish_output | ||
+ | IP wrapper placed around data. | ||
</div> | </div> | ||
<div id="5"> | <div id="5"> | ||
− | 5. Timer location: net/ipv4/ip_output.c:224, tp_hard_start_xmit | + | 5. Timer location: net/ipv4/ip_output.c:224, tp_hard_start_xmit |
+ | Data is copied from kernel memory to card memory and transmitted over the line. This begins in hard_start_xmit, which is a function defined by the driver. | ||
</div> | </div> | ||
<div id="6"> | <div id="6"> | ||
6. Timer location: net/core/dev.c:1843,1849, process_backlog | 6. Timer location: net/core/dev.c:1843,1849, process_backlog | ||
+ | Data is taken from line to card memory by driver then copied from card memorty to kernel memory via skb buffer dequeuing (skb_dequeue). | ||
</div> | </div> | ||
<div id="7"> | <div id="7"> |
Revision as of 13:43, 11 October 2005
1. Timer location: net/socket.c:1551, sys_send Data is copied from user to kernel space via copy_from_user
2. Timer location: net/ipv4/af_inet.c:661, inet_sendmsg Kernel buffer is wrapped into a BSD socket data structure
3. Timer location: net/ipv4/tcp_output.c:374, tcp_transmit_skb TCP wrapper placed around data.
4. Timer location: net/ipv4/ip_output.c:240, ip_finish_output IP wrapper placed around data.
5. Timer location: net/ipv4/ip_output.c:224, tp_hard_start_xmit Data is copied from kernel memory to card memory and transmitted over the line. This begins in hard_start_xmit, which is a function defined by the driver.
6. Timer location: net/core/dev.c:1843,1849, process_backlog Data is taken from line to card memory by driver then copied from card memorty to kernel memory via skb buffer dequeuing (skb_dequeue).
7. Timer location: net/ipv4/ip_input.c:293, ip_rcv_finish
8. Timer location: net/ipv4/tcp_ipv4.c:1744, tcp_v4_rcv
9. Timer location: net/ipv4/tcp_input.c:4362,4398,4449, tcp_rcv_established
10. Timer location: net/socket.c:1601, sys_recvfrom