|
@@ -66,7 +66,7 @@ the following process:
|
|
|
|
|
|
[setup] socket() -------> creation of the capture socket
|
|
|
setsockopt() ---> allocation of the circular buffer (ring)
|
|
|
- mmap() ---------> maping of the allocated buffer to the
|
|
|
+ mmap() ---------> mapping of the allocated buffer to the
|
|
|
user process
|
|
|
|
|
|
[capture] poll() ---------> to wait for incoming packets
|
|
@@ -93,7 +93,7 @@ The destruction of the socket and all associated resources
|
|
|
is done by a simple call to close(fd).
|
|
|
|
|
|
Next I will describe PACKET_MMAP settings and it's constraints,
|
|
|
-also the maping of the circular buffer in the user process and
|
|
|
+also the mapping of the circular buffer in the user process and
|
|
|
the use of this buffer.
|
|
|
|
|
|
--------------------------------------------------------------------------------
|
|
@@ -153,8 +153,8 @@ we will get the following buffer structure:
|
|
|
|
|
|
A frame can be of any size with the only condition it can fit in a block. A block
|
|
|
can only hold an integer number of frames, or in other words, a frame cannot
|
|
|
-be spawn accross two blocks so there are some datails you have to take into
|
|
|
-account when choosing the frame_size. See "Maping and use of the circular
|
|
|
+be spawned accross two blocks, so there are some details you have to take into
|
|
|
+account when choosing the frame_size. See "Mapping and use of the circular
|
|
|
buffer (ring)".
|
|
|
|
|
|
|
|
@@ -262,7 +262,7 @@ i386 architecture:
|
|
|
<pagesize> = 4096 bytes
|
|
|
<max-order> = 11
|
|
|
|
|
|
-and a value for <frame size> of 2048 byteas. These parameters will yield
|
|
|
+and a value for <frame size> of 2048 bytes. These parameters will yield
|
|
|
|
|
|
<block number> = 131072/4 = 32768 blocks
|
|
|
<block size> = 4096 << 11 = 8 MiB.
|
|
@@ -311,14 +311,14 @@ the following (from include/linux/if_packet.h):
|
|
|
tp_frame_size must be a multiple of TPACKET_ALIGNMENT
|
|
|
tp_frame_nr must be exactly frames_per_block*tp_block_nr
|
|
|
|
|
|
-Note that tp_block_size should be choosed to be a power of two or there will
|
|
|
+Note that tp_block_size should be chosen to be a power of two or there will
|
|
|
be a waste of memory.
|
|
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
-+ Maping and use of the circular buffer (ring)
|
|
|
++ Mapping and use of the circular buffer (ring)
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
|
|
-The maping of the buffer in the user process is done with the conventional
|
|
|
+The mapping of the buffer in the user process is done with the conventional
|
|
|
mmap function. Even the circular buffer is compound of several physically
|
|
|
discontiguous blocks of memory, they are contiguous to the user space, hence
|
|
|
just one call to mmap is needed:
|