Llk-packet-diagram: Difference between revisions
No edit summary |
No edit summary |
||
| (10 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
<div style="position: relative">[[Image:packet-diagram.png]] | <div style="position: relative">[[Image:packet-diagram.png]] | ||
<div style="position: absolute; left: 180px; top: 67px">[[#1]]</div> | <div style="position: absolute; left: 180px; top: 67px">[[#1]]</div> | ||
<div style="position: absolute; left: 420px; top: 67px">2</div> | <div style="position: absolute; left: 420px; top: 67px">[[#2]]</div> | ||
<div style="position: absolute; left: 660px; top: 67px">3</div> | <div style="position: absolute; left: 660px; top: 67px">[[#3]]</div> | ||
<div style="position: absolute; left: 900px; top: 67px">4</div> | <div style="position: absolute; left: 900px; top: 67px">[[#4]]</div> | ||
<div style="position: absolute; left: | <div style="position: absolute; left: 1100px; top: 67px">[[#5]]</div> | ||
<div style="position: absolute; left: | <div style="position: absolute; left: 1100px; top: 310px">[[#6]]</div> | ||
<div style="position: absolute; left: | <div style="position: absolute; left: 900px; top: 310px">[[#7]]</div> | ||
<div style="position: absolute; left: | <div style="position: absolute; left: 660px; top: 310px">[[#8]]</div> | ||
<div style="position: absolute; left: | <div style="position: absolute; left: 420px; top: 310px">[[#9]]</div> | ||
<div style="position: absolute; left: 180px; top: 310px">[[#10]]</div> | |||
| Line 14: | Line 16: | ||
<div id="1"> | <div id="1"> | ||
1. | 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. | 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. | 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. | 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. | 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. | 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"> | ||
7. | 7. Timer location: net/ipv4/ip_input.c:293, ip_rcv_finish. | ||
</div> | </div> | ||
<div id="8"> | <div id="8"> | ||
8. | 8. Timer location: net/ipv4/tcp_ipv4.c:1744, tcp_v4_rcv. | ||
</div> | </div> | ||
<div id="9"> | <div id="9"> | ||
9. | 9. Timer location: net/ipv4/tcp_input.c:4362,4398,4449, tcp_rcv_established. | ||
</div> | |||
<div id="10"> | |||
10. Timer location: net/socket.c:1601, sys_recvfrom. | |||
</div> | </div> | ||
Latest revision as of 17:45, 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.
