[dpdk-dev] doc: minor fixes for GSO prog_guide

Message ID 1507815955-23275-1-git-send-email-mark.b.kavanagh@intel.com (mailing list archive)
State Superseded, archived
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Mark Kavanagh Oct. 12, 2017, 1:45 p.m. UTC
  Correct two minor issues in the GSO programmer's guide:
- a note is rendered incorrectly in the middle of an unordered list;
  this results in the remainder of the list appearing inside the note.
  Move note to end of the list to resolve same.
- two minor visual artifacts are present in the 'three-part-output-segment'
  diagram. Remove same.

Fixes: f6010c7 ("doc: add GSO programmer's guide")

Signed-off-by: Mark Kavanagh <mark.b.kavanagh@intel.com>
---
 .../generic_segmentation_offload_lib.rst           |  18 ++--
 doc/guides/prog_guide/img/gso-three-seg-mbuf.svg   | 116 ++++++++++-----------
 2 files changed, 68 insertions(+), 66 deletions(-)
  

Comments

John McNamara Oct. 12, 2017, 3:28 p.m. UTC | #1
> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Mark Kavanagh
> Sent: Thursday, October 12, 2017 2:46 PM
> To: dev@dpdk.org
> Cc: Hu, Jiayu <jiayu.hu@intel.com>; Tan, Jianfeng
> <jianfeng.tan@intel.com>; Ananyev, Konstantin
> <konstantin.ananyev@intel.com>; Yigit, Ferruh <ferruh.yigit@intel.com>;
> thomas@monjalon.net; Kavanagh, Mark B <mark.b.kavanagh@intel.com>
> Subject: [dpdk-dev] [PATCH] doc: minor fixes for GSO prog_guide
> 
> Correct two minor issues in the GSO programmer's guide:
> - a note is rendered incorrectly in the middle of an unordered list;
>   this results in the remainder of the list appearing inside the note.
>   Move note to end of the list to resolve same.
> - two minor visual artifacts are present in the 'three-part-output-
> segment'
>   diagram. Remove same.
> 
> Fixes: f6010c7 ("doc: add GSO programmer's guide")
> 
> Signed-off-by: Mark Kavanagh <mark.b.kavanagh@intel.com>



> +.. _note:
> +.. note::
> +
> +     An application may use the same pool for both direct and indirect
> +     buffers. However, since indirect mbufs simply store a pointer, the

Hi Mark,

The _note target should be more specific since the these targets are used
across all the documentation. So something like _gso_note would be better.
Or alternatively leave out the target and just say something in the text
like "See the note below.", without the link, since the note is quite close
to the referring text.

Also, the note isn't indented to the level of the bullet point. I don't know
if that is intentional or not but I would say there should be an additional
3 spaces indentation from ..note:: to the end of the note.

With or without these changes:

Acked-by: John McNamara <john.mcnamara@intel.com>
  
Mark Kavanagh Oct. 12, 2017, 3:56 p.m. UTC | #2
>From: Mcnamara, John
>Sent: Thursday, October 12, 2017 4:29 PM
>To: Kavanagh, Mark B <mark.b.kavanagh@intel.com>; dev@dpdk.org
>Cc: Hu, Jiayu <jiayu.hu@intel.com>; Tan, Jianfeng <jianfeng.tan@intel.com>;
>Ananyev, Konstantin <konstantin.ananyev@intel.com>; Yigit, Ferruh
><ferruh.yigit@intel.com>; thomas@monjalon.net; Kavanagh, Mark B
><mark.b.kavanagh@intel.com>
>Subject: RE: [dpdk-dev] [PATCH] doc: minor fixes for GSO prog_guide
>
>
>
>> -----Original Message-----
>> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Mark Kavanagh
>> Sent: Thursday, October 12, 2017 2:46 PM
>> To: dev@dpdk.org
>> Cc: Hu, Jiayu <jiayu.hu@intel.com>; Tan, Jianfeng
>> <jianfeng.tan@intel.com>; Ananyev, Konstantin
>> <konstantin.ananyev@intel.com>; Yigit, Ferruh <ferruh.yigit@intel.com>;
>> thomas@monjalon.net; Kavanagh, Mark B <mark.b.kavanagh@intel.com>
>> Subject: [dpdk-dev] [PATCH] doc: minor fixes for GSO prog_guide
>>
>> Correct two minor issues in the GSO programmer's guide:
>> - a note is rendered incorrectly in the middle of an unordered list;
>>   this results in the remainder of the list appearing inside the note.
>>   Move note to end of the list to resolve same.
>> - two minor visual artifacts are present in the 'three-part-output-
>> segment'
>>   diagram. Remove same.
>>
>> Fixes: f6010c7 ("doc: add GSO programmer's guide")
>>
>> Signed-off-by: Mark Kavanagh <mark.b.kavanagh@intel.com>
>
>
>
>> +.. _note:
>> +.. note::
>> +
>> +     An application may use the same pool for both direct and indirect
>> +     buffers. However, since indirect mbufs simply store a pointer, the
>
>Hi Mark,

Hey John,

Thanks for the feedback - responses inline.

I'll post v2 now, and carry forward your Ack.

Cheers,
Mark 

>
>The _note target should be more specific since the these targets are used
>across all the documentation. So something like _gso_note would be better.
>Or alternatively leave out the target and just say something in the text
>like "See the note below.", without the link, since the note is quite close
>to the referring text.

I've moved the note back to its original position, but corrected the indentation, so this target can be removed.

>
>Also, the note isn't indented to the level of the bullet point. I don't know
>if that is intentional or not but I would say there should be an additional
>3 spaces indentation from ..note:: to the end of the note.

As above (the syntax highlighting of my editor shows indented 'note' tags as incorrect, which is why indentation was incorrect in the first place!).

>
>With or without these changes:
>
>Acked-by: John McNamara <john.mcnamara@intel.com>
>
>
  

Patch

diff --git a/doc/guides/prog_guide/generic_segmentation_offload_lib.rst b/doc/guides/prog_guide/generic_segmentation_offload_lib.rst
index 5e78f16..1c5a048 100644
--- a/doc/guides/prog_guide/generic_segmentation_offload_lib.rst
+++ b/doc/guides/prog_guide/generic_segmentation_offload_lib.rst
@@ -195,14 +195,8 @@  To segment an outgoing packet, an application must:
      used to store the GSO segments' packet headers.
 
    - a pointer to the mbuf pool for allocating indirect buffers, which are
-     used to locate GSO segments' packet payloads.
-
-.. note::
-
-     An application may use the same pool for both direct and indirect
-     buffers. However, since each indirect mbuf simply stores a pointer, the
-     application may reduce its memory consumption by creating a separate memory
-     pool, containing smaller elements, for the indirect pool.
+     used to locate GSO segments' packet payloads. See note_ below for
+     additional details regarding this mempool.
 
    - the size of each output segment, including packet headers and payload,
      measured in bytes.
@@ -219,6 +213,14 @@  To segment an outgoing packet, an application must:
    - a flag, that indicates whether the IPv4 headers of output segments should
      contain fixed or incremental ID values.
 
+.. _note:
+.. note::
+
+     An application may use the same pool for both direct and indirect
+     buffers. However, since indirect mbufs simply store a pointer, the
+     application may reduce its memory consumption by creating a separate memory
+     pool, containing smaller elements, for the indirect pool.
+
 2. Set the appropriate ol_flags in the mbuf.
 
    - The GSO library use the value of an mbuf's ``ol_flags`` attribute to
diff --git a/doc/guides/prog_guide/img/gso-three-seg-mbuf.svg b/doc/guides/prog_guide/img/gso-three-seg-mbuf.svg
index f18a327..0431012 100644
--- a/doc/guides/prog_guide/img/gso-three-seg-mbuf.svg
+++ b/doc/guides/prog_guide/img/gso-three-seg-mbuf.svg
@@ -1,9 +1,9 @@ 
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<!-- Generated by Microsoft Visio, SVG Export gso-three-seg-mbuf.svg Page-1 -->
+<!-- Generated by Microsoft Visio, SVG Export gso-three-seg-mbuf_new.svg Page-1 -->
 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events"
-		xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="21.8589in" height="9.63966in"
-		viewBox="0 0 1573.84 694.055" xml:space="preserve" color-interpolation-filters="sRGB" class="st23">
+		xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="25.5895in" height="9.63966in"
+		viewBox="0 0 1842.44 694.055" xml:space="preserve" color-interpolation-filters="sRGB" class="st23">
 	<title>GSO three-part output segment</title>
 	<v:documentProperties v:langID="1033" v:metric="true" v:viewMarkup="false"/>
 
@@ -132,7 +132,7 @@ 
 			<v:textBlock v:margins="rect(0,0,0,0)" v:tabSpace="42.5197"/>
 			<v:textRect cx="87.5716" cy="673.065" width="175.15" height="41.9798"/>
 			<path d="M175.14 652.08 L0 652.08 L0 694.06 L175.14 694.06 L175.14 652.08" class="st8"/>
-			<text x="37" y="680.57" class="st9" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Payload 1</text>		</g>
+			<text x="22.61" y="680.57" class="st9" v:langID="1033"><v:paragraph/><v:tabList/>Payload 1</text>		</g>
 		<g id="shape15-27" v:mID="15" v:groupContext="shape" transform="translate(2.2377,-522.82)">
 			<title>Sheet.15</title>
 			<path d="M0 597.01 L0 694.06 L154.68 694.06 L154.68 597.01 L0 597.01 L0 597.01 Z" class="st4"/>
@@ -178,21 +178,14 @@ 
 			<v:textRect cx="97.4929" cy="673.065" width="194.99" height="41.9798"/>
 			<path d="M194.99 652.08 L0 652.08 L0 694.06 L194.99 694.06 L194.99 652.08" class="st8"/>
 			<text x="16.99" y="683.56" class="st10" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Payload 1</text>		</g>
-		<g id="shape35-54" v:mID="35" v:groupContext="shape" transform="translate(1199.29,-21.1708)">
+		<g id="shape35-54" v:mID="35" v:groupContext="shape" transform="translate(1190.48,-32.2189)">
 			<title>Sheet.35</title>
 			<desc>Logical output segment</desc>
 			<v:textBlock v:margins="rect(0,0,0,0)" v:tabSpace="42.5197"/>
 			<v:textRect cx="164.662" cy="678.273" width="329.33" height="31.5648"/>
 			<path d="M329.32 662.49 L0 662.49 L0 694.06 L329.32 694.06 L329.32 662.49" class="st8"/>
-			<text x="24.69" y="686.16" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Logical output segment</text>		</g>
-		<g id="shape38-58" v:mID="38" v:groupContext="shape" transform="translate(1204.65,-254.446)">
-			<title>Sheet.38</title>
-			<desc>Three-part output segment</desc>
-			<v:textBlock v:margins="rect(0,0,0,0)" v:tabSpace="42.5197"/>
-			<v:textRect cx="181.707" cy="678.273" width="363.42" height="31.5648"/>
-			<path d="M363.41 662.49 L0 662.49 L0 694.06 L363.41 694.06 L363.41 662.49" class="st8"/>
-			<text x="19.51" y="686.16" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Three-part output segment</text>		</g>
-		<g id="shape39-62" v:mID="39" v:groupContext="shape" transform="translate(546.25,-529.921)">
+			<text x="0" y="686.16" class="st11" v:langID="1033"><v:paragraph/><v:tabList/>Logical output segment</text>		</g>
+		<g id="shape39-58" v:mID="39" v:groupContext="shape" transform="translate(546.25,-529.921)">
 			<title>Sheet.39</title>
 			<path d="M3.43 529.94 L3.46 543.61 L0.03 543.61 L0 529.94 L3.43 529.94 L3.43 529.94 ZM3.46 553.87 L3.46 557.29 L0.03
 						 557.29 L0.03 553.87 L3.46 553.87 L3.46 553.87 ZM3.46 567.55 L3.46 581.22 L0.03 581.22 L0.03 567.55 L3.46
@@ -202,7 +195,7 @@ 
 						 642.77 L3.46 642.77 ZM3.46 666.7 L3.46 670.12 L0.03 670.12 L0.03 666.7 L3.46 666.7 L3.46 666.7 ZM3.46 680.38
 						 L3.46 694.06 L0.03 694.06 L0.03 680.38 L3.46 680.38 L3.46 680.38 Z" class="st1"/>
 		</g>
-		<g id="shape40-64" v:mID="40" v:groupContext="shape" transform="translate(549.097,-223.749)">
+		<g id="shape40-60" v:mID="40" v:groupContext="shape" transform="translate(549.097,-223.749)">
 			<title>Sheet.40</title>
 			<path d="M6.65 402.61 L13.01 414.71 L9.98 416.32 L3.62 404.22 L6.65 402.61 L6.65 402.61 ZM17.82 423.78 L19.4 426.81 L16.37
 						 428.42 L14.79 425.39 L17.82 423.78 L17.82 423.78 ZM24.21 435.91 L30.57 448.01 L27.54 449.59 L21.18 437.49
@@ -221,59 +214,59 @@ 
 						 L155.17 691.66 L158.2 690.04 L158.2 690.04 ZM0.33 408.43 L0 393.7 L11.99 402.28 L0.33 408.43 L0.33 408.43
 						 Z" class="st1"/>
 		</g>
-		<g id="shape46-66" v:mID="46" v:groupContext="shape" transform="translate(66.8445,-221.499)">
+		<g id="shape46-62" v:mID="46" v:groupContext="shape" transform="translate(66.8445,-221.499)">
 			<title>Sheet.46</title>
 			<path d="M0 611.87 C0 602.79 7.38 595.43 16.47 595.43 L273.39 595.43 C282.51 595.43 289.86 602.79 289.86 611.87 L289.86
 						 677.62 C289.86 686.72 282.51 694.06 273.39 694.06 L16.47 694.06 C7.38 694.06 -0 686.72 0 677.62 L0 611.87
 						 Z" class="st4"/>
 		</g>
-		<g id="shape47-68" v:mID="47" v:groupContext="shape" transform="translate(66.8445,-221.499)">
+		<g id="shape47-64" v:mID="47" v:groupContext="shape" transform="translate(66.8445,-221.499)">
 			<title>Sheet.47</title>
 			<path d="M0 611.87 C0 602.79 7.38 595.43 16.47 595.43 L273.39 595.43 C282.51 595.43 289.86 602.79 289.86 611.87 L289.86
 						 677.62 C289.86 686.72 282.51 694.06 273.39 694.06 L16.47 694.06 C7.38 694.06 -0 686.72 0 677.62 L0 611.87
 						 Z" class="st12"/>
 		</g>
-		<g id="shape48-70" v:mID="48" v:groupContext="shape" transform="translate(113.27,-263.667)">
+		<g id="shape48-66" v:mID="48" v:groupContext="shape" transform="translate(113.27,-263.667)">
 			<title>Sheet.48</title>
 			<desc>Direct mbuf</desc>
 			<v:textBlock v:margins="rect(0,0,0,0)" v:tabSpace="42.5197"/>
 			<v:textRect cx="98.5041" cy="675.59" width="197.01" height="36.9302"/>
 			<path d="M197.01 657.13 L0 657.13 L0 694.06 L197.01 694.06 L197.01 657.13" class="st8"/>
 			<text x="18.66" y="684.59" class="st13" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Direct mbuf</text>		</g>
-		<g id="shape51-74" v:mID="51" v:groupContext="shape" transform="translate(85.817,-233.439)">
+		<g id="shape51-70" v:mID="51" v:groupContext="shape" transform="translate(85.817,-233.439)">
 			<title>Sheet.51</title>
 			<desc>(copy of headers)</desc>
 			<v:textBlock v:margins="rect(0,0,0,0)" v:tabSpace="42.5197"/>
 			<v:textRect cx="127.916" cy="678.273" width="255.84" height="31.5648"/>
 			<path d="M255.83 662.49 L0 662.49 L0 694.06 L255.83 694.06 L255.83 662.49" class="st8"/>
 			<text x="34.33" y="685.47" class="st14" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>(copy of headers)</text>		</g>
-		<g id="shape53-78" v:mID="53" v:groupContext="shape" transform="translate(371.944,-275.998)">
+		<g id="shape53-74" v:mID="53" v:groupContext="shape" transform="translate(371.944,-275.998)">
 			<title>Sheet.53</title>
 			<desc>next</desc>
 			<v:textBlock v:margins="rect(0,0,0,0)" v:tabSpace="42.5197"/>
 			<v:textRect cx="33.3635" cy="678.273" width="66.73" height="31.5648"/>
 			<path d="M66.73 662.49 L0 662.49 L0 694.06 L66.73 694.06 L66.73 662.49" class="st8"/>
 			<text x="7.56" y="686.16" class="st15" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>next</text>		</g>
-		<g id="shape54-82" v:mID="54" v:groupContext="shape" transform="translate(695.132,-646.04)">
+		<g id="shape54-78" v:mID="54" v:groupContext="shape" transform="translate(695.132,-646.04)">
 			<title>Sheet.54</title>
 			<path d="M0 655.39 L0 694.06 L100.4 694.06 L100.4 655.39 L0 655.39 L0 655.39 Z" class="st16"/>
 		</g>
-		<g id="shape55-84" v:mID="55" v:groupContext="shape" transform="translate(709.033,-648.946)">
+		<g id="shape55-80" v:mID="55" v:groupContext="shape" transform="translate(709.033,-648.946)">
 			<title>Sheet.55</title>
 			<desc>segsz</desc>
 			<v:textBlock v:margins="rect(0,0,0,0)" v:tabSpace="42.5197"/>
 			<v:textRect cx="36.6265" cy="680.167" width="73.26" height="27.7775"/>
 			<path d="M73.25 666.28 L0 666.28 L0 694.06 L73.25 694.06 L73.25 666.28" class="st8"/>
 			<text x="7.6" y="687.11" class="st17" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>segsz</text>		</g>
-		<g id="shape56-88" v:mID="56" v:groupContext="shape" transform="translate(785.874,-521.182)">
+		<g id="shape56-84" v:mID="56" v:groupContext="shape" transform="translate(785.874,-521.182)">
 			<title>Sheet.56</title>
 			<path d="M0 597.27 L0 694.06 L363.41 694.06 L363.41 597.27 L0 597.27 L0 597.27 Z" class="st6"/>
 		</g>
-		<g id="shape57-90" v:mID="57" v:groupContext="shape" transform="translate(785.874,-521.182)">
+		<g id="shape57-86" v:mID="57" v:groupContext="shape" transform="translate(785.874,-521.182)">
 			<title>Sheet.57</title>
 			<path d="M0 597.27 L363.41 597.27 L363.41 694.06 L0 694.06 L0 597.27" class="st7"/>
 		</g>
-		<g id="shape58-93" v:mID="58" v:groupContext="shape" v:layerMember="0" transform="translate(943.158,-529.889)">
+		<g id="shape58-89" v:mID="58" v:groupContext="shape" v:layerMember="0" transform="translate(943.158,-529.889)">
 			<title>Sheet.58</title>
 			<path d="M1.35 529.91 L1.25 543.58 L4.68 543.61 L4.78 529.94 L1.35 529.91 L1.35 529.91 ZM1.15 553.84 L1.12 557.26 L4.55
 						 557.29 L4.58 553.87 L1.15 553.84 L1.15 553.84 ZM1.05 567.52 L0.92 581.19 L4.35 581.22 L4.48 567.55 L1.05
@@ -283,61 +276,61 @@ 
 						 642.74 L0.43 642.74 ZM0.23 666.67 L0.2 670.09 L3.62 670.12 L3.66 666.7 L0.23 666.67 L0.23 666.67 ZM0.13
 						 680.35 L0 694.02 L3.43 694.06 L3.56 680.38 L0.13 680.35 L0.13 680.35 Z" class="st18"/>
 		</g>
-		<g id="shape59-95" v:mID="59" v:groupContext="shape" transform="translate(785.874,-549.473)">
+		<g id="shape59-91" v:mID="59" v:groupContext="shape" transform="translate(785.874,-549.473)">
 			<title>Sheet.59</title>
 			<desc>Payload 1</desc>
 			<v:textBlock v:margins="rect(0,0,0,0)" v:tabSpace="42.5197"/>
 			<v:textRect cx="77.3395" cy="673.065" width="154.68" height="41.9798"/>
 			<path d="M154.68 652.08 L0 652.08 L0 694.06 L154.68 694.06 L154.68 652.08" class="st8"/>
-			<text x="26.77" y="680.57" class="st9" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Payload 1</text>		</g>
-		<g id="shape60-99" v:mID="60" v:groupContext="shape" transform="translate(952.97,-548.822)">
+			<text x="16.96" y="680.57" class="st9" v:langID="1033"><v:paragraph/><v:tabList/>Payload 1</text>		</g>
+		<g id="shape60-95" v:mID="60" v:groupContext="shape" transform="translate(952.97,-548.822)">
 			<title>Sheet.60</title>
 			<desc>Payload 2</desc>
 			<v:textBlock v:margins="rect(0,0,0,0)" v:tabSpace="42.5197"/>
 			<v:textRect cx="97.4929" cy="673.065" width="194.99" height="41.9798"/>
 			<path d="M194.99 652.08 L0 652.08 L0 694.06 L194.99 694.06 L194.99 652.08" class="st8"/>
 			<text x="46.92" y="680.57" class="st9" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Payload 2</text>		</g>
-		<g id="shape63-103" v:mID="63" v:groupContext="shape" transform="translate(1210.43,-551.684)">
+		<g id="shape63-99" v:mID="63" v:groupContext="shape" transform="translate(1190.48,-552.568)">
 			<title>Sheet.63</title>
 			<desc>Multi-segment input packet</desc>
 			<v:textBlock v:margins="rect(0,0,0,0)" v:tabSpace="42.5197"/>
 			<v:textRect cx="181.707" cy="678.273" width="363.42" height="31.5648"/>
 			<path d="M363.41 662.49 L0 662.49 L0 694.06 L363.41 694.06 L363.41 662.49" class="st8"/>
-			<text x="17.75" y="686.16" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Multi-segment input packet</text>		</g>
-		<g id="shape70-107" v:mID="70" v:groupContext="shape" v:layerMember="1" transform="translate(455.049,-221.499)">
+			<text x="0" y="686.16" class="st11" v:langID="1033"><v:paragraph/><v:tabList/>Multi-segment input packet</text>		</g>
+		<g id="shape70-103" v:mID="70" v:groupContext="shape" v:layerMember="1" transform="translate(455.049,-221.499)">
 			<title>Sheet.70</title>
 			<path d="M0 611.87 C0 602.79 5.33 595.43 11.89 595.43 L282.92 595.43 C289.53 595.43 294.8 602.79 294.8 611.87 L294.8
 						 677.62 C294.8 686.76 289.53 694.06 282.92 694.06 L11.89 694.06 C5.33 694.06 0 686.76 0 677.62 L0 611.87
 						 Z" class="st6"/>
 		</g>
-		<g id="shape71-109" v:mID="71" v:groupContext="shape" transform="translate(455.049,-221.499)">
+		<g id="shape71-105" v:mID="71" v:groupContext="shape" transform="translate(455.049,-221.499)">
 			<title>Sheet.71</title>
-			<path d="M0 611.87 C0 602.79 7.38 595.43 16.47 595.43 L391.97 595.43 C401.12 595.43 408.44 602.79 408.44 611.87 L408.44
-						 677.62 C408.44 686.76 401.12 694.06 391.97 694.06 L16.47 694.06 C7.38 694.06 0 686.76 0 677.62 L0 611.87
+			<path d="M0 611.87 C0 602.79 5.33 595.43 11.89 595.43 L282.92 595.43 C289.53 595.43 294.8 602.79 294.8 611.87 L294.8
+						 677.62 C294.8 686.76 289.53 694.06 282.92 694.06 L11.89 694.06 C5.33 694.06 0 686.76 0 677.62 L0 611.87
 						 Z" class="st12"/>
 		</g>
-		<g id="shape72-111" v:mID="72" v:groupContext="shape" transform="translate(489.065,-263.434)">
+		<g id="shape72-107" v:mID="72" v:groupContext="shape" transform="translate(489.065,-263.434)">
 			<title>Sheet.72</title>
 			<desc>Indirect mbuf</desc>
 			<v:textBlock v:margins="rect(0,0,0,0)" v:tabSpace="42.5197"/>
 			<v:textRect cx="112.128" cy="675.59" width="224.26" height="36.9302"/>
 			<path d="M224.26 657.13 L0 657.13 L0 694.06 L224.26 694.06 L224.26 657.13" class="st8"/>
 			<text x="20.73" y="684.59" class="st13" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Indirect mbuf</text>		</g>
-		<g id="shape75-115" v:mID="75" v:groupContext="shape" transform="translate(849.065,-281.435)">
+		<g id="shape75-111" v:mID="75" v:groupContext="shape" transform="translate(849.065,-281.435)">
 			<title>Sheet.75</title>
 			<desc>(pointer to data)</desc>
 			<v:textBlock v:margins="rect(0,0,0,0)" v:tabSpace="42.5197"/>
 			<v:textRect cx="100.199" cy="678.273" width="200.4" height="31.5648"/>
 			<path d="M200.4 662.49 L0 662.49 L0 694.06 L200.4 694.06 L200.4 662.49" class="st8"/>
 			<text x="4.49" y="686.16" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>(pointer to data)</text>		</g>
-		<g id="shape77-119" v:mID="77" v:groupContext="shape" transform="translate(717.742,-563.523)">
+		<g id="shape77-115" v:mID="77" v:groupContext="shape" transform="translate(717.742,-563.523)">
 			<title>Sheet.77</title>
 			<desc>next</desc>
 			<v:textBlock v:margins="rect(0,0,0,0)" v:tabSpace="42.5197"/>
 			<v:textRect cx="33.3635" cy="678.273" width="66.73" height="31.5648"/>
 			<path d="M66.73 662.49 L0 662.49 L0 694.06 L66.73 694.06 L66.73 662.49" class="st8"/>
 			<text x="15.71" y="683.67" class="st19" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>next</text>		</g>
-		<g id="shape78-123" v:mID="78" v:groupContext="shape" transform="translate(1148.17,-529.067)">
+		<g id="shape78-119" v:mID="78" v:groupContext="shape" transform="translate(1148.17,-529.067)">
 			<title>Sheet.78</title>
 			<path d="M1.38 529.87 L1.25 543.55 L4.68 543.61 L4.81 529.94 L1.38 529.87 L1.38 529.87 ZM1.19 553.81 L1.12 557.23 L4.55
 						 557.29 L4.61 553.87 L1.19 553.81 L1.19 553.81 ZM1.05 567.48 L0.92 581.16 L4.35 581.22 L4.48 567.55 L1.05
@@ -347,7 +340,7 @@ 
 						 642.7 L0.46 642.7 ZM0.26 666.64 L0.2 670.06 L3.62 670.12 L3.69 666.7 L0.26 666.64 L0.26 666.64 ZM0.13 680.31
 						 L0 693.99 L3.43 694.06 L3.56 680.38 L0.13 680.31 L0.13 680.31 Z" class="st20"/>
 		</g>
-		<g id="shape79-125" v:mID="79" v:groupContext="shape" transform="translate(946.254,-657.81)">
+		<g id="shape79-121" v:mID="79" v:groupContext="shape" transform="translate(946.254,-657.81)">
 			<title>Sheet.79</title>
 			<path d="M11 686.69 L17.33 686.69 L17.33 688.27 L11 688.27 L11 686.69 L11 686.69 ZM22.07 686.69 L23.65 686.69 L23.65
 						 688.27 L22.07 688.27 L22.07 686.69 L22.07 686.69 ZM28.39 686.69 L34.72 686.69 L34.72 688.27 L28.39 688.27
@@ -369,109 +362,116 @@ 
 						 686.69 ZM13.18 694.06 L0 687.41 L13.18 680.9 L13.18 694.06 L13.18 694.06 ZM187.22 680.9 L200.4 687.48 L187.22
 						 694.06 L187.22 680.9 L187.22 680.9 Z" class="st20"/>
 		</g>
-		<g id="shape80-127" v:mID="80" v:groupContext="shape" transform="translate(982.882,-643.673)">
+		<g id="shape80-123" v:mID="80" v:groupContext="shape" transform="translate(982.882,-643.673)">
 			<title>Sheet.80</title>
 			<path d="M0 655.13 L0 694.06 L127.01 694.06 L127.01 655.13 L0 655.13 L0 655.13 Z" class="st16"/>
 		</g>
-		<g id="shape81-129" v:mID="81" v:groupContext="shape" transform="translate(1003.39,-660.621)">
+		<g id="shape81-125" v:mID="81" v:groupContext="shape" transform="translate(1003.39,-660.621)">
 			<title>Sheet.81</title>
 			<desc>pkt_len</desc>
 			<v:textBlock v:margins="rect(0,0,0,0)" v:tabSpace="42.5197"/>
 			<v:textRect cx="48.6041" cy="680.956" width="97.21" height="26.1994"/>
 			<path d="M97.21 667.86 L0 667.86 L0 694.06 L97.21 694.06 L97.21 667.86" class="st8"/>
 			<text x="11.67" y="687.5" class="st21" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>pkt_len  </text>		</g>
-		<g id="shape82-133" v:mID="82" v:groupContext="shape" transform="translate(1001.18,-634.321)">
+		<g id="shape82-129" v:mID="82" v:groupContext="shape" transform="translate(1001.18,-634.321)">
 			<title>Sheet.82</title>
 			<desc>% segsz</desc>
 			<v:textBlock v:margins="rect(0,0,0,0)" v:tabSpace="42.5197"/>
 			<v:textRect cx="49.2945" cy="680.956" width="98.59" height="26.1994"/>
 			<path d="M98.59 667.86 L0 667.86 L0 694.06 L98.59 694.06 L98.59 667.86" class="st8"/>
 			<text x="9.09" y="687.5" class="st21" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>% segsz</text>		</g>
-		<g id="shape34-137" v:mID="34" v:groupContext="shape" v:layerMember="0" transform="translate(356.703,-264.106)">
+		<g id="shape34-133" v:mID="34" v:groupContext="shape" v:layerMember="0" transform="translate(356.703,-264.106)">
 			<title>Sheet.34</title>
 			<path d="M0 685.77 L90.67 685.77 L90.67 689.19 L0 689.19 L0 685.77 L0 685.77 ZM89.36 680.9 L97.21 687.48 L89.36 694.06
 						 L89.36 680.9 L89.36 680.9 Z" class="st2"/>
 		</g>
-		<g id="shape85-139" v:mID="85" v:groupContext="shape" v:layerMember="0" transform="translate(78.5359,-282.66)">
+		<g id="shape85-135" v:mID="85" v:groupContext="shape" v:layerMember="0" transform="translate(78.5359,-282.66)">
 			<title>Sheet.85</title>
 			<path d="M0 680.87 C-0 673.59 6.88 667.69 15.37 667.69 C23.86 667.69 30.73 673.59 30.73 680.87 C30.73 688.15 23.86 694.06
 						 15.37 694.06 C6.88 694.06 0 688.15 0 680.87 Z" class="st16"/>
 		</g>
-		<g id="shape87-141" v:mID="87" v:groupContext="shape" v:layerMember="0" transform="translate(85.4791,-284.062)">
+		<g id="shape87-137" v:mID="87" v:groupContext="shape" v:layerMember="0" transform="translate(85.4791,-284.062)">
 			<title>Sheet.87</title>
 			<desc>1</desc>
 			<v:textBlock v:margins="rect(0,0,0,0)" v:tabSpace="42.5197"/>
 			<v:textRect cx="8.66303" cy="683.269" width="17.33" height="21.5726"/>
 			<path d="M17.33 672.48 L0 672.48 L0 694.06 L17.33 694.06 L17.33 672.48" class="st8"/>
 			<text x="3.32" y="688.66" class="st22" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>1</text>		</g>
-		<g id="shape88-145" v:mID="88" v:groupContext="shape" v:layerMember="0" transform="translate(468.906,-282.66)">
+		<g id="shape88-141" v:mID="88" v:groupContext="shape" v:layerMember="0" transform="translate(468.906,-282.66)">
 			<title>Sheet.88</title>
 			<path d="M0 680.87 C-0 673.59 6.89 667.69 15.37 667.69 C23.86 667.69 30.73 673.59 30.73 680.87 C30.73 688.15 23.86 694.06
 						 15.37 694.06 C6.89 694.06 -0 688.15 0 680.87 Z" class="st16"/>
 		</g>
-		<g id="shape90-147" v:mID="90" v:groupContext="shape" v:layerMember="0" transform="translate(474.575,-284.062)">
+		<g id="shape90-143" v:mID="90" v:groupContext="shape" v:layerMember="0" transform="translate(474.575,-284.062)">
 			<title>Sheet.90</title>
 			<desc>2</desc>
 			<v:textBlock v:margins="rect(0,0,0,0)" v:tabSpace="42.5197"/>
 			<v:textRect cx="8.66303" cy="683.269" width="17.33" height="21.5726"/>
 			<path d="M17.33 672.48 L0 672.48 L0 694.06 L17.33 694.06 L17.33 672.48" class="st8"/>
 			<text x="3.32" y="688.66" class="st22" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>2</text>		</g>
-		<g id="shape95-151" v:mID="95" v:groupContext="shape" v:layerMember="0" transform="translate(764.026,-275.998)">
+		<g id="shape95-147" v:mID="95" v:groupContext="shape" v:layerMember="0" transform="translate(764.026,-275.998)">
 			<title>Sheet.95</title>
 			<desc>next</desc>
 			<v:textBlock v:margins="rect(0,0,0,0)" v:tabSpace="42.5197"/>
 			<v:textRect cx="33.3635" cy="678.273" width="66.73" height="31.5648"/>
 			<path d="M66.73 662.49 L0 662.49 L0 694.06 L66.73 694.06 L66.73 662.49" class="st8"/>
 			<text x="7.56" y="686.16" class="st15" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>next</text>		</g>
-		<g id="shape97-155" v:mID="97" v:groupContext="shape" v:layerMember="0" transform="translate(889.755,-220.915)">
+		<g id="shape97-151" v:mID="97" v:groupContext="shape" v:layerMember="0" transform="translate(844.524,-219.79)">
 			<title>Sheet.97</title>
-			<path d="M0 611.87 C0 602.79 7.38 595.43 16.47 595.43 L391.97 595.43 C401.12 595.43 408.44 602.79 408.44 611.87 L408.44
-						 677.62 C408.44 686.76 401.12 694.06 391.97 694.06 L16.47 694.06 C7.38 694.06 0 686.76 0 677.62 L0 611.87
+			<path d="M0 611.87 C0 602.79 5.45 595.43 12.17 595.43 L289.54 595.43 C296.31 595.43 301.71 602.79 301.71 611.87 L301.71
+						 677.62 C301.71 686.76 296.31 694.06 289.54 694.06 L12.17 694.06 C5.45 694.06 0 686.76 0 677.62 L0 611.87
 						 Z" class="st12"/>
 		</g>
-		<g id="shape100-157" v:mID="100" v:groupContext="shape" v:layerMember="0" transform="translate(751.857,-262.528)">
+		<g id="shape100-153" v:mID="100" v:groupContext="shape" v:layerMember="0" transform="translate(751.857,-262.528)">
 			<title>Sheet.100</title>
 			<path d="M0 685.77 L90.67 685.77 L90.67 689.19 L0 689.19 L0 685.77 L0 685.77 ZM89.36 680.9 L97.21 687.48 L89.36 694.06
 						 L89.36 680.9 L89.36 680.9 Z" class="st2"/>
 		</g>
-		<g id="shape104-159" v:mID="104" v:groupContext="shape" v:layerMember="1" transform="translate(851.429,-218.08)">
+		<g id="shape104-155" v:mID="104" v:groupContext="shape" v:layerMember="1" transform="translate(851.429,-218.08)">
 			<title>Sheet.104</title>
 			<path d="M0 611.87 C0 602.79 5.33 595.43 11.89 595.43 L282.92 595.43 C289.53 595.43 294.8 602.79 294.8 611.87 L294.8
 						 677.62 C294.8 686.76 289.53 694.06 282.92 694.06 L11.89 694.06 C5.33 694.06 0 686.76 0 677.62 L0 611.87
 						 Z" class="st6"/>
 		</g>
-		<g id="shape105-161" v:mID="105" v:groupContext="shape" v:layerMember="0" transform="translate(885.444,-260.015)">
+		<g id="shape105-157" v:mID="105" v:groupContext="shape" v:layerMember="0" transform="translate(885.444,-260.015)">
 			<title>Sheet.105</title>
 			<desc>Indirect mbuf</desc>
 			<v:textBlock v:margins="rect(0,0,0,0)" v:tabSpace="42.5197"/>
 			<v:textRect cx="112.128" cy="675.59" width="224.26" height="36.9302"/>
 			<path d="M224.26 657.13 L0 657.13 L0 694.06 L224.26 694.06 L224.26 657.13" class="st8"/>
 			<text x="20.73" y="684.59" class="st13" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Indirect mbuf</text>		</g>
-		<g id="shape106-165" v:mID="106" v:groupContext="shape" v:layerMember="0" transform="translate(895.672,-229.419)">
+		<g id="shape106-161" v:mID="106" v:groupContext="shape" v:layerMember="0" transform="translate(895.672,-229.419)">
 			<title>Sheet.106</title>
 			<desc>(pointer to data)</desc>
 			<v:textBlock v:margins="rect(0,0,0,0)" v:tabSpace="42.5197"/>
 			<v:textRect cx="100.199" cy="678.273" width="200.4" height="31.5648"/>
 			<path d="M200.4 662.49 L0 662.49 L0 694.06 L200.4 694.06 L200.4 662.49" class="st8"/>
 			<text x="12.86" y="685.47" class="st14" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>(pointer to data)</text>		</g>
-		<g id="shape107-169" v:mID="107" v:groupContext="shape" v:layerMember="0" transform="translate(863.297,-280.442)">
+		<g id="shape107-165" v:mID="107" v:groupContext="shape" v:layerMember="0" transform="translate(863.297,-280.442)">
 			<title>Sheet.107</title>
 			<path d="M0 680.87 C-0 673.59 6.89 667.69 15.37 667.69 C23.86 667.69 30.73 673.59 30.73 680.87 C30.73 688.15 23.86 694.06
 						 15.37 694.06 C6.89 694.06 -0 688.15 0 680.87 Z" class="st16"/>
 		</g>
-		<g id="shape108-171" v:mID="108" v:groupContext="shape" v:layerMember="0" transform="translate(870.001,-281.547)">
+		<g id="shape108-167" v:mID="108" v:groupContext="shape" v:layerMember="0" transform="translate(870.001,-281.547)">
 			<title>Sheet.108</title>
 			<desc>3</desc>
 			<v:textBlock v:margins="rect(0,0,0,0)" v:tabSpace="42.5197"/>
 			<v:textRect cx="8.66303" cy="683.269" width="17.33" height="21.5726"/>
 			<path d="M17.33 672.48 L0 672.48 L0 694.06 L17.33 694.06 L17.33 672.48" class="st8"/>
 			<text x="3.32" y="688.66" class="st22" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>3</text>		</g>
-		<g id="shape109-175" v:mID="109" v:groupContext="shape" v:layerMember="0" transform="translate(500.959,-231.87)">
+		<g id="shape109-171" v:mID="109" v:groupContext="shape" v:layerMember="0" transform="translate(500.959,-231.87)">
 			<title>Sheet.109</title>
 			<desc>(pointer to data)</desc>
 			<v:textBlock v:margins="rect(0,0,0,0)" v:tabSpace="42.5197"/>
 			<v:textRect cx="100.199" cy="678.273" width="200.4" height="31.5648"/>
 			<path d="M200.4 662.49 L0 662.49 L0 694.06 L200.4 694.06 L200.4 662.49" class="st8"/>
 			<text x="12.86" y="685.47" class="st14" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>(pointer to data)</text>		</g>
+		<g id="shape113-175" v:mID="113" v:groupContext="shape" v:layerMember="0" transform="translate(1187.64,-251.712)">
+			<title>Sheet.113</title>
+			<desc>Three-part output segment</desc>
+			<v:textBlock v:margins="rect(0,0,0,0)" v:tabSpace="42.5197"/>
+			<v:textRect cx="327.402" cy="678.273" width="654.81" height="31.5648"/>
+			<path d="M654.8 662.49 L0 662.49 L0 694.06 L654.8 694.06 L654.8 662.49" class="st8"/>
+			<text x="0" y="686.16" class="st11" v:langID="1033"><v:paragraph/><v:tabList/>Three-part output segment</text>		</g>
 	</g>
 </svg>