<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="ProgId" content="Word.Document">
<meta name="Generator" content="Microsoft Word 14">
<meta name="Originator" content="Microsoft Word 14">
<link rel="File-List" href="cid:filelist.xml@01D26FFD.3DEEB9B0"><!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:SpellingState>Clean</w:SpellingState>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:EnvelopeVis/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>ZH-CN</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
<w:UseFELayout/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true" DefSemiHidden="true" DefQFormat="false" DefPriority="99" LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;
        mso-font-alt:SimSun;
        mso-font-charset:134;
        mso-generic-font-family:auto;
        mso-font-pitch:variable;
        mso-font-signature:3 680460288 22 0 262145 0;}
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;
        mso-font-alt:SimSun;
        mso-font-charset:134;
        mso-generic-font-family:auto;
        mso-font-pitch:variable;
        mso-font-signature:3 680460288 22 0 262145 0;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;
        mso-font-alt:"Century Gothic";
        mso-font-charset:0;
        mso-generic-font-family:swiss;
        mso-font-pitch:variable;
        mso-font-signature:-520092929 1073786111 9 0 415 0;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;
        mso-font-alt:"Device Font 10cpi";
        mso-font-charset:0;
        mso-generic-font-family:swiss;
        mso-font-pitch:variable;
        mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
@font-face
        {font-family:"\@SimSun";
        panose-1:2 1 6 0 3 1 1 1 1 1;
        mso-font-alt:"\@SimSun";
        mso-font-charset:134;
        mso-generic-font-family:auto;
        mso-font-pitch:variable;
        mso-font-signature:3 680460288 22 0 262145 0;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;
        mso-font-alt:"Times New Roman";
        mso-font-charset:0;
        mso-generic-font-family:modern;
        mso-font-pitch:fixed;
        mso-font-signature:-520092929 1073806591 9 0 415 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {mso-style-unhide:no;
        mso-style-qformat:yes;
        mso-style-parent:"";
        margin:0pt;
        margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-ascii-font-family:Calibri;
        mso-fareast-font-family:SimSun;
        mso-hansi-font-family:Calibri;
        mso-bidi-font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;
        text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-noshow:yes;
        mso-style-priority:99;
        color:purple;
        text-decoration:underline;
        text-underline:single;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0pt;
        margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        font-size:11.0pt;
        mso-bidi-font-size:10.5pt;
        font-family:"Calibri","sans-serif";
        mso-ascii-font-family:Calibri;
        mso-fareast-font-family:SimSun;
        mso-hansi-font-family:Calibri;
        mso-bidi-font-family:Consolas;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-noshow:yes;
        mso-style-priority:99;
        mso-style-link:"Balloon Text Char";
        margin:0pt;
        margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";
        mso-fareast-font-family:SimSun;}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-unhide:no;
        mso-style-locked:yes;
        mso-style-link:"Plain Text";
        mso-bidi-font-size:10.5pt;
        font-family:SimSun;
        mso-fareast-font-family:SimSun;
        mso-bidi-font-family:Consolas;}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-noshow:yes;
        mso-style-priority:99;
        mso-style-unhide:no;
        mso-style-locked:yes;
        mso-style-link:"Balloon Text";
        mso-ansi-font-size:8.0pt;
        mso-bidi-font-size:8.0pt;
        font-family:"Tahoma","sans-serif";
        mso-ascii-font-family:Tahoma;
        mso-hansi-font-family:Tahoma;
        mso-bidi-font-family:Tahoma;}
span.SpellE
        {mso-style-name:"";
        mso-spl-e:yes;}
.MsoChpDefault
        {mso-style-type:export-only;
        mso-default-props:yes;
        mso-ascii-font-family:Calibri;
        mso-fareast-font-family:SimSun;
        mso-hansi-font-family:Calibri;
        mso-bidi-font-family:"Times New Roman";}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 0pt 72.0pt 0pt;
        mso-header-margin:36.0pt;
        mso-footer-margin:36.0pt;
        mso-paper-source:0;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 10]><style>/* Style Definitions */
table.MsoNormalTable
        {mso-style-name:"Table Normal";
        mso-tstyle-rowband-size:0;
        mso-tstyle-colband-size:0;
        mso-style-noshow:yes;
        mso-style-priority:99;
        mso-style-parent:"";
        mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
        mso-para-margin:0pt;
        mso-para-margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-ascii-font-family:Calibri;
        mso-hansi-font-family:Calibri;
        mso-bidi-font-family:"Times New Roman";}
</style><![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple" style="tab-interval:36.0pt">
<div class="WordSection1">
<p class="MsoPlainText">hi, Marvin<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">see below.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">> -----Original Message-----<o:p></o:p></p>
<p class="MsoPlainText">> From: Liu, Yong<o:p></o:p></p>
<p class="MsoPlainText">> Sent: January 16, 2017 11:08 AM<o:p></o:p></p>
<p class="MsoPlainText">> To: Mo, <span class="SpellE">YufengX</span>; dts@dpdk.org<o:p></o:p></p>
<p class="MsoPlainText">> Cc: Mo, <span class="SpellE">YufengX</span><o:p></o:p></p>
<p class="MsoPlainText">> Subject: RE: [<span class="SpellE">dts</span>] [PATCH V1 1/2] Packet capture: upload automation test plan<o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> <span class="SpellE">Yufen</span>,<o:p></o:p></p>
<p class="MsoPlainText">> Please make sure all lines in test plan and commit are limited to 79 characters.<o:p></o:p></p>
<p class="MsoPlainText">> And some comments and questions below.<o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> Thanks,<o:p></o:p></p>
<p class="MsoPlainText">> Marvin<o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> > -----Original Message-----<o:p></o:p></p>
<p class="MsoPlainText">> > From: <span class="SpellE">dts</span> [mailto:dts-bounces@dpdk.org] On Behalf Of yufengx.mo@intel.com<o:p></o:p></p>
<p class="MsoPlainText">> > Sent: Monday, January 16, 2017 10:49 AM<o:p></o:p></p>
<p class="MsoPlainText">> > To: dts@dpdk.org<o:p></o:p></p>
<p class="MsoPlainText">> > Cc: Mo, <span class="SpellE">YufengX</span> <yufengx.mo@intel.com><o:p></o:p></p>
<p class="MsoPlainText">> > Subject: [<span class="SpellE">dts</span>] [PATCH V1 1/2] Packet capture: upload automation test plan<o:p></o:p></p>
<p class="MsoPlainText">> ><o:p></o:p></p>
<p class="MsoPlainText">> > From: <span class="SpellE">yufengmx</span> <yufengx.mo@intel.com><o:p></o:p></p>
<p class="MsoPlainText">> ><o:p></o:p></p>
<p class="MsoPlainText">> ><o:p></o:p></p>
<p class="MsoPlainText">> > Packet capture framework feature support packet capturing on
<span class="SpellE">dpdk</span> <span class="SpellE">ethernet</span><o:p></o:p></p>
<p class="MsoPlainText">> > devices.<o:p></o:p></p>
<p class="MsoPlainText">> > DPDK provides <span class="SpellE">dpdk-pdump</span> tool under app/<span class="SpellE">pdump</span> directory for packet<o:p></o:p></p>
<p class="MsoPlainText">> > capturing on <span class="SpellE">dpdk</span>.<o:p></o:p></p>
<p class="MsoPlainText">> ><o:p></o:p></p>
<p class="MsoPlainText">> > The<span style="mso-spacerun:yes">  </span>tool is a Data Plane Development Kit (DPDK) tool that runs as a DPDK<o:p></o:p></p>
<p class="MsoPlainText">> > secondary process and is capable of enabling packet capture on
<span class="SpellE">dpdk</span> ports.<o:p></o:p></p>
<p class="MsoPlainText">> ><span style="mso-spacerun:yes">   </span>* The<span style="mso-spacerun:yes"> 
</span>tool depends on <span class="SpellE">libpcap</span> based PMD which is disabled<o:p></o:p></p>
<p class="MsoPlainText">> ><span style="mso-spacerun:yes">     </span>by default in the build configuration files,<o:p></o:p></p>
<p class="MsoPlainText">> ><span style="mso-spacerun:yes">     </span>owing to an external dependency on the
<span class="SpellE">libpcap</span> development files<o:p></o:p></p>
<p class="MsoPlainText">> ><span style="mso-spacerun:yes">     </span>which must be installed on the board.<o:p></o:p></p>
<p class="MsoPlainText">> ><span style="mso-spacerun:yes">     </span>Once the <span class="SpellE">
libpcap</span> development files are installed, the <span class="SpellE">libpcap</span> based PMD<o:p></o:p></p>
<p class="MsoPlainText">> ><span style="mso-spacerun:yes">     </span>can be enabled by setting CONFIG_RTE_LIBRTE_PMD_PCAP=y and<o:p></o:p></p>
<p class="MsoPlainText">> > recompiling the DPDK.<o:p></o:p></p>
<p class="MsoPlainText">> ><o:p></o:p></p>
<p class="MsoPlainText">> > Signed-off-by: <span class="SpellE">yufengmx</span> <yufengx.mo@intel.com><o:p></o:p></p>
<p class="MsoPlainText">> > ---<o:p></o:p></p>
<p class="MsoPlainText">> ><span style="mso-spacerun:yes">  </span><span class="SpellE">test_plans</span>/<span class="SpellE">packet_capture_test_plan.rst</span> | 376<o:p></o:p></p>
<p class="MsoPlainText">> > ++++++++++++++++++++++++++++++++<o:p></o:p></p>
<p class="MsoPlainText">> ><span style="mso-spacerun:yes">  </span>1 file changed, 376 insertions(+)<o:p></o:p></p>
<p class="MsoPlainText">> ><span style="mso-spacerun:yes">  </span>create mode 100644
<span class="SpellE">test_plans</span>/<span class="SpellE">packet_capture_test_plan.rst</span><o:p></o:p></p>
<p class="MsoPlainText">> ><o:p></o:p></p>
<p class="MsoPlainText">> > diff --<span class="SpellE">git</span> a/<span class="SpellE">test_plans</span>/<span class="SpellE">packet_capture_test_plan.rst</span><o:p></o:p></p>
<p class="MsoPlainText">> > b/<span class="SpellE">test_plans</span>/<span class="SpellE">packet_capture_test_plan.rst</span><o:p></o:p></p>
<p class="MsoPlainText">> > new file mode 100644<o:p></o:p></p>
<p class="MsoPlainText">> > index 0000000..6a51cf9<o:p></o:p></p>
<p class="MsoPlainText">> > --- /<span class="SpellE">dev</span>/null<o:p></o:p></p>
<p class="MsoPlainText">> > +++ b/<span class="SpellE">test_plans</span>/<span class="SpellE">packet_capture_test_plan.rst</span><o:p></o:p></p>
<p class="MsoPlainText">> > @@ -0,0 +1,376 @@<o:p></o:p></p>
<p class="MsoPlainText">> > +.. Copyright (c) <2016> Intel Corporation<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">   </span>All rights reserved.<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">   </span>Redistribution and use in source and binary forms, with or without<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">   </span>modification, are permitted provided that the following conditions<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">   </span>are met:<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">   </span>- Redistributions of source code must retain the above copyright<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">     </span>notice, this list of conditions and the following disclaimer.<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">   </span>- Redistributions in binary form must reproduce the above copyright<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">     </span>notice, this list of conditions and the following disclaimer in<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">     </span>the documentation and/or other materials provided with the<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">     </span>distribution.<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">   </span>- Neither the name of Intel Corporation nor the names of its<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">     </span>contributors may be used to endorse or promote products derived<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">     </span>from this software without specific prior written permission.<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">   </span>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND<o:p></o:p></p>
<p class="MsoPlainText">> > CONTRIBUTORS<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">   </span>"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">   </span>LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">   </span>FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">   </span>COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,<o:p></o:p></p>
<p class="MsoPlainText">> > INDIRECT,<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">   </span>INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">   </span>(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS<o:p></o:p></p>
<p class="MsoPlainText">> > OR<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">   </span>SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">   </span>HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN<o:p></o:p></p>
<p class="MsoPlainText">> > CONTRACT,<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">   </span>STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">   </span>ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">   </span>OF THE POSSIBILITY OF SUCH DAMAGE.<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +==================<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">  </span>packet capture framework feature<o:p></o:p></p>
<p class="MsoPlainText">> > +==================<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Packet capture framework feature support packet capturing on
<span class="SpellE">dpdk</span> <span class="SpellE">ethernet</span><o:p></o:p></p>
<p class="MsoPlainText">> > devices.<o:p></o:p></p>
<p class="MsoPlainText">> > +DPDK provides <span class="SpellE">dpdk-pdump</span> tool under app/<span class="SpellE">pdump</span> directory for packet<o:p></o:p></p>
<p class="MsoPlainText">> > capturing on <span class="SpellE">dpdk</span>.<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +The <span class="SpellE">dpdk-pdump</span> application will act as the secondary process. The EAL<o:p></o:p></p>
<p class="MsoPlainText">> > +thread polls for packet capture <span class="SpellE">
fd</span>. If <span class="SpellE">fd</span> polled matches packet capture<o:p></o:p></p>
<p class="MsoPlainText">> > +<span class="SpellE">fd</span>, it will initiate packet capture processing.<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +The <span class="SpellE">testpmd</span> application will act as the primary process. The primary<o:p></o:p></p>
<p class="MsoPlainText">> > +process create socket for packet capture connection with the secondary<o:p></o:p></p>
<p class="MsoPlainText">> > +process and registers socket with packet capture <span class="SpellE">
epoll</span> event. Packet capture<o:p></o:p></p>
<p class="MsoPlainText">> > event will be polled as part of interrupt thread.<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +The primary process creates <span class="SpellE">mempool</span> and two
<span class="SpellE">rte_rings</span> for packets<o:p></o:p></p>
<p class="MsoPlainText">> > +duplication and sharing packet info with the secondary process respectively.<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Upon receiving packet capture event, the primary process receive either<o:p></o:p></p>
<p class="MsoPlainText">> > +register RX/TX callbacks or remove RX/TX callbacks message from the<o:p></o:p></p>
<p class="MsoPlainText">> > +secondary process on <span class="SpellE">socket.If</span> packet matches, reference count of<o:p></o:p></p>
<p class="MsoPlainText">> > +packet will be incremented and <span class="SpellE">
enqueued</span> to second <span class="SpellE">rte_ring</span> for the secondary<o:p></o:p></p>
<p class="MsoPlainText">> > process to use.<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Prerequisites<o:p></o:p></p>
<p class="MsoPlainText">> > +=============<o:p></o:p></p>
<p class="MsoPlainText">> > +* 2x NICs (2 full duplex ports per NIC) plugged into the available<o:p></o:p></p>
<p class="MsoPlainText">> > +slots on a platform, another two <span class="SpellE">
nic</span> ports are linked with cables.<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Test cases<o:p></o:p></p>
<p class="MsoPlainText">> > +=============<o:p></o:p></p>
<p class="MsoPlainText">> > +The <span class="SpellE">testpmd</span> application act as server process with port-topology<o:p></o:p></p>
<p class="MsoPlainText">> > +chained mode, the <span class="SpellE">dpdk-pdump</span> act as client process to dump capture<o:p></o:p></p>
<p class="MsoPlainText">> > +packet with different options setting. Select one port of tester as
<span class="SpellE">tx</span><o:p></o:p></p>
<p class="MsoPlainText">> > +port, another port of tester as <span class="SpellE">
rx</span> port, send different type packets<o:p></o:p></p>
<p class="MsoPlainText">> > +from two ports, check <span class="SpellE">pcap</span> files' content dumped by
<span class="SpellE">scapy</span> and <span class="SpellE">tcpdump</span> to<o:p></o:p></p>
<p class="MsoPlainText">> > confirm <span class="SpellE">testpmd</span> working correctly, check
<span class="SpellE">pcap</span> files' content dumped by<o:p></o:p></p>
<p class="MsoPlainText">> > <span class="SpellE">tcpdump</span> and <span class="SpellE">
dpdk-pdump</span> to confirm <span class="SpellE">dpdk-pdump</span> working correctly.<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +<span class="SpellE">dpdk-pdump</span> command format<o:p></o:p></p>
<p class="MsoPlainText">> > +--------------------------<o:p></o:p></p>
<p class="MsoPlainText">> > +* packet capture framework tool <span class="SpellE">
dpdk-pdump</span> command format, parameters<o:p></o:p></p>
<p class="MsoPlainText">> > +inside the parenthesis represents the mandatory <span class="SpellE">
parametersm</span> parameters<o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> Typo issue, "<span class="SpellE">parametersm</span>" should be ?<o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> > +inside the square brackets represents optional<o:p></o:p></p>
<p class="MsoPlainText">> > +parameters::<o:p></o:p></p>
<p class="MsoPlainText">> > +./x86_64-native-linuxapp-gcc/app/<span class="SpellE">dpdk-pdump</span> -- --<span class="SpellE">pdump</span>= '(port =<o:p></o:p></p>
<p class="MsoPlainText">> > +<<span class="SpellE">port_id</span>> |<span class="SpellE">device_id</span> = <<span class="SpellE">pci</span> address>), (queue=<queue number>),<o:p></o:p></p>
<p class="MsoPlainText">> > +(<span class="SpellE">rx-dev</span>=<<span class="SpellE">iface</span>/path to
<span class="SpellE">pcap</span> file> | <span class="SpellE">tx-dev</span>=<<span class="SpellE">iface</span>/path to
<span class="SpellE">pcap</span> file>),<o:p></o:p></p>
<p class="MsoPlainText">> > +[ring-size=<size>], [<span class="SpellE">mbuf</span>-size=<size>], [total-<span class="SpellE">num</span>-<span class="SpellE">mbufs</span>=<size>]'<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +transmission packets' format<o:p></o:p></p>
<p class="MsoPlainText">> > +--------------------------<o:p></o:p></p>
<p class="MsoPlainText">> > +* IP_RAW<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">  </span>[Ether()/IP()/Raw('\0'*60)]<o:p></o:p></p>
<p class="MsoPlainText">> > +* TCP<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">  </span>[Ether()/IP()/TCP()/Raw('\0'*60)]<o:p></o:p></p>
<p class="MsoPlainText">> > +* UDP<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">  </span>[Ether()/IP()/UDP()/Raw('\0'*60)]<o:p></o:p></p>
<p class="MsoPlainText">> > +* SCTP<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">  </span>[Ether()/IP()/SCTP()/Raw('\0'*40)]<o:p></o:p></p>
<p class="MsoPlainText">> > +* IPv6_TCP<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">  </span>[Ether()/IPv6()/TCP()/Raw('\0'*60)]<o:p></o:p></p>
<p class="MsoPlainText">> > +* IPv6_UDP<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">  </span>[Ether()/IPv6()/UDP()/Raw('\0'*60)]<o:p></o:p></p>
<p class="MsoPlainText">> > +* IPv6_SCTP<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">  </span>[Ether()/IP()/IPv6()/SCTP()/Raw('\0'*40)]<o:p></o:p></p>
<p class="MsoPlainText">> > +* VLAN_UDP<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">  </span>[Ether()/Dot1Q()/IP()/UDP()/Raw('\0'*40)]<o:p></o:p></p>
<p class="MsoPlainText">> > +* TIMESYNC<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">  </span>[Ether(<span class="SpellE">dst</span>='<span class="SpellE">FF:FF:FF:FF:FF:FF',type</span>=0x88f7)/"\\x00\\x02"]<o:p></o:p></p>
<p class="MsoPlainText">> > +* ARP<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">  </span>[Ether(<span class="SpellE">dst</span>='FF:FF:FF:FF:FF:FF')/ARP()]<o:p></o:p></p>
<p class="MsoPlainText">> > +* LLDP<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">  </span>[Ether()/LLDP()/<span class="SpellE">LLDPManagementAddress</span>()]<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">  </span>notice: LLDP()/<span class="SpellE">LLDPManagementAddress</span>() method are in dts/dep/lldp.py<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +port configuration<o:p></o:p></p>
<p class="MsoPlainText">> > +--------------------------<o:p></o:p></p>
<p class="MsoPlainText">> > +* confirm two NICs physical link on a platform:<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">  </span><span class="SpellE">dut</span> port 0 <---> tester port 0<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">  </span><span class="SpellE">dut</span> port 1 <---> tester port 1<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +* Bind two port on DUT::<o:p></o:p></p>
<p class="MsoPlainText">> > + ./tools/dpdk_nic_bind.py --bind=<span class="SpellE">igb_uio</span> <<span class="SpellE">dut</span> port 0
<span class="SpellE">pci</span> address> <<span class="SpellE">dut</span><o:p></o:p></p>
<p class="MsoPlainText">> > +port 1 <span class="SpellE">pci</span> address><o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> Tools folder has been changed to <span class="SpellE">usertools</span>.<o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> > +* On <span class="SpellE">dut</span>, use port 0 as <span class="SpellE">
rx</span>/<span class="SpellE">tx</span> port.<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">  </span>If <span class="SpellE">
dut</span> port 0 <span class="SpellE">rx</span> dump is set, <span class="SpellE">
scapy</span> send packet from tester port 0<o:p></o:p></p>
<p class="MsoPlainText">> > +and <span class="SpellE">tcpdump</span> dumps tester<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">  </span>port 1's packet.<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">  </span>If <span class="SpellE">
dut</span> port 0 <span class="SpellE">tx</span> dump is set, <span class="SpellE">
scapy</span> send packet from tester port 1<o:p></o:p></p>
<p class="MsoPlainText">> > + and <span class="SpellE">tcpdump</span> dumps tester<span style="mso-spacerun:yes"> 
</span>port 0's packet.<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +* If using interfaces as <span class="SpellE">dpdk-pdump</span>
<span class="SpellE">vdev</span>, prepare two ports on DUT,<o:p></o:p></p>
<p class="MsoPlainText">> > +which haven't been <span class="SpellE">binded</span><o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">  </span>to <span class="SpellE">
dpdk</span> and have been in linked status<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Test Case 1: test <span class="SpellE">pdump</span> port<o:p></o:p></p>
<p class="MsoPlainText">> > +=================================<o:p></o:p></p>
<p class="MsoPlainText">> > +test different port options::<o:p></o:p></p>
<p class="MsoPlainText">> > +* port=<<span class="SpellE">dut</span> port id><o:p></o:p></p>
<p class="MsoPlainText">> > +* <span class="SpellE">device_id</span>=<<span class="SpellE">dut</span>
<span class="SpellE">pci</span> address><o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Boot up <span class="SpellE">dpdk's</span> <span class="SpellE">
testpmd</span> with chained option::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span>./x86_64-native-linuxapp-gcc/app/<span class="SpellE">testpmd</span> -c 0x6 -n 4 -- -<span class="SpellE">i</span> --port-<o:p></o:p></p>
<p class="MsoPlainText">> > topology=chained<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span><span class="SpellE">testpmd</span>> set
<span class="SpellE">fwd</span> <span class="SpellE">io</span><o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span><span class="SpellE">testpmd</span>> start<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> Recommend to remove targets which will be change between executions.<o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> > +When test VLAN_UDP type packet transmission, set <span class="SpellE">
vlan</span>:<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span><span class="SpellE">testpmd</span>>
<span class="SpellE">vlan</span> set filter off 1<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span><span class="SpellE">testpmd</span>> start<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Boot up <span class="SpellE">dpdk-pdump</span>::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span>./x86_64-native-linuxapp-gcc/app/<span class="SpellE">dpdk-pdump</span> -- --<span class="SpellE">pdump</span><span style="mso-spacerun:yes"> 
</span>'<port<o:p></o:p></p>
<p class="MsoPlainText">> > option>,queue=*,\<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span><span class="SpellE">tx-dev</span>=/<span class="SpellE">tmp</span>/<span class="SpellE">pdump-tx.pcap,rx-dev</span>=/<span class="SpellE">tmp</span>/<span class="SpellE">pdump-rx.pcap</span>'<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Set up <span class="SpellE">linux's</span> <span class="SpellE">
tcpdump</span> to receiver packet on tester::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span><span class="SpellE">tcpdump</span> -<span class="SpellE">i</span> <<span class="SpellE">rx</span> port name> -w /<span class="SpellE">tmp</span>/sniff-<<span class="SpellE">rx</span> port
 name>.<span class="SpellE">pcap</span><o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span><span class="SpellE">tcpdump</span> -<span class="SpellE">i</span> <<span class="SpellE">tx</span> port name> -w /<span class="SpellE">tmp</span>/sniff-<<span class="SpellE">tx</span> port
 name>.<span class="SpellE">pcap</span><o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Send packet on tester by port 0::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span><span class="SpellE">sendp</span>(<packet format>,
<span class="SpellE">iface</span>=<port 0 name>)<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Compare <span class="SpellE">pcap</span> file of <span class="SpellE">
scapy</span> with the <span class="SpellE">pcap</span> file dumped by <span class="SpellE">
tcpdump</span>.<o:p></o:p></p>
<p class="MsoPlainText">> > +Compare <span class="SpellE">pcap</span> file dumped by
<span class="SpellE">dpdk-pdump</span> with <span class="SpellE">pcap</span> files dumped by
<span class="SpellE">tcpdump</span>.<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Send packet on tester by port 1::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span><span class="SpellE">sendp</span>(<packet format>,
<span class="SpellE">iface</span>=<port 1 name>)<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Compare <span class="SpellE">pcap</span> file of <span class="SpellE">
scapy</span> with the <span class="SpellE">pcap</span> file dumped by <span class="SpellE">
tcpdump</span>.<o:p></o:p></p>
<p class="MsoPlainText">> > +Compare <span class="SpellE">pcap</span> file dumped by
<span class="SpellE">dpdk-pdump</span> with <span class="SpellE">pcap</span> files dumped by
<span class="SpellE">tcpdump</span>.<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Test Case 2: test <span class="SpellE">pdump</span> queue<o:p></o:p></p>
<p class="MsoPlainText">> > +=================================<o:p></o:p></p>
<p class="MsoPlainText">> > +test different queue options::<o:p></o:p></p>
<p class="MsoPlainText">> > +* first queue:<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">  </span>queue=0<o:p></o:p></p>
<p class="MsoPlainText">> > +* all:<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">  </span>queue=*<o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> Please add some basic description of this parameter. Like "Capture first queue traffic".<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Boot up <span class="SpellE">dpdk's</span> <span class="SpellE">
testpmd</span> with chained option::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span>./x86_64-native-linuxapp-gcc/app/<span class="SpellE">testpmd</span> -c 0x6 -n 4 -- -<span class="SpellE">i</span> --port-<o:p></o:p></p>
<p class="MsoPlainText">> > topology=chained<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span><span class="SpellE">testpmd</span>> set
<span class="SpellE">fwd</span> <span class="SpellE">io</span><o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span><span class="SpellE">testpmd</span>> start<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +When test VLAN_UDP type packet transmission, set <span class="SpellE">
vlan</span>:<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span><span class="SpellE">testpmd</span>>
<span class="SpellE">vlan</span> set filter off 1<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span><span class="SpellE">testpmd</span>> start<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Boot up <span class="SpellE">dpdk-pdump</span>::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span>./x86_64-native-linuxapp-gcc/app/<span class="SpellE">dpdk-pdump</span> -- --<span class="SpellE">pdump</span><span style="mso-spacerun:yes"> 
</span>'port=0,<queue<o:p></o:p></p>
<p class="MsoPlainText">> > option>,\<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span><span class="SpellE">tx-dev</span>=/<span class="SpellE">tmp</span>/<span class="SpellE">pdump-tx.pcap,rx-dev</span>=/<span class="SpellE">tmp</span>/<span class="SpellE">pdump-rx.pcap</span>'<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Set up <span class="SpellE">linux's</span> <span class="SpellE">
tcpdump</span> to receiver packet on tester::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span><span class="SpellE">tcpdump</span> -<span class="SpellE">i</span> <<span class="SpellE">rx</span> port name> -w /<span class="SpellE">tmp</span>/sniff-<<span class="SpellE">rx</span> port
 name>.<span class="SpellE">pcap</span><o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span><span class="SpellE">tcpdump</span> -<span class="SpellE">i</span> <<span class="SpellE">tx</span> port name> -w /<span class="SpellE">tmp</span>/sniff-<<span class="SpellE">tx</span> port
 name>.<span class="SpellE">pcap</span><o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Send packet on tester by port 0::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span><span class="SpellE">sendp</span>(<packet format>,
<span class="SpellE">iface</span>=<port 0 name>)<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Compare <span class="SpellE">pcap</span> file of <span class="SpellE">
scapy</span> with the <span class="SpellE">pcap</span> file dumped by <span class="SpellE">
tcpdump</span>.<o:p></o:p></p>
<p class="MsoPlainText">> > +Compare <span class="SpellE">pcap</span> file dumped by
<span class="SpellE">dpdk-pdump</span> with <span class="SpellE">pcap</span> files dumped by
<span class="SpellE">tcpdump</span>.<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Send packet on tester by port 1::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span><span class="SpellE">sendp</span>(<packet format>,
<span class="SpellE">iface</span>=<port 1 name>)<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Compare <span class="SpellE">pcap</span> file of <span class="SpellE">
scapy</span> with the <span class="SpellE">pcap</span> file dumped by <span class="SpellE">
tcpdump</span>.<o:p></o:p></p>
<p class="MsoPlainText">> > +Compare <span class="SpellE">pcap</span> file dumped by
<span class="SpellE">dpdk-pdump</span> with <span class="SpellE">pcap</span> files dumped by
<span class="SpellE">tcpdump</span>.<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Test Case 3: test <span class="SpellE">pdump</span> <span class="SpellE">
dev</span> <span class="SpellE">pcap</span><o:p></o:p></p>
<p class="MsoPlainText">> > +=================================<o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> Underscore please align with test case name.<o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> > +test different dump options::<o:p></o:p></p>
<p class="MsoPlainText">> > +* <span class="SpellE">tx-dev</span>=/<span class="SpellE">tmp</span>/<span class="SpellE">pdump-tx.pcap,rx-dev</span>=/<span class="SpellE">tmp</span>/<span class="SpellE">pdump-rx.pcap</span><o:p></o:p></p>
<p class="MsoPlainText">> > +* <span class="SpellE">rx-dev</span>=/<span class="SpellE">tmp</span>/<span class="SpellE">pdump-rx.pcap</span><o:p></o:p></p>
<p class="MsoPlainText">> > +* <span class="SpellE">tx-dev</span>=/<span class="SpellE">tmp</span>/<span class="SpellE">pdump-tx.pcap</span><o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> Same as previous comment, add basic descriptions for these parameters.<o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Boot up <span class="SpellE">dpdk's</span> <span class="SpellE">
testpmd</span> with chained option::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span>./x86_64-native-linuxapp-gcc/app/<span class="SpellE">testpmd</span> -c 0x6 -n 4 -- -<span class="SpellE">i</span> --port-<o:p></o:p></p>
<p class="MsoPlainText">> > topology=chained<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span><span class="SpellE">testpmd</span>> set
<span class="SpellE">fwd</span> <span class="SpellE">io</span><o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span><span class="SpellE">testpmd</span>> start<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +When test VLAN_UDP type packet transmission, set <span class="SpellE">
vlan</span>:<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span><span class="SpellE">testpmd</span>>
<span class="SpellE">vlan</span> set filter off 1<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span><span class="SpellE">testpmd</span>> start<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Boot up <span class="SpellE">dpdk-pdump</span> with <span class="SpellE">
pdump</span> options::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span>./x86_64-native-linuxapp-gcc/app/<span class="SpellE">dpdk-pdump</span> -- --<span class="SpellE">pdump</span><o:p></o:p></p>
<p class="MsoPlainText">> > 'port=0,queue=*,<dump object>'<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Set up <span class="SpellE">linux's</span> <span class="SpellE">
tcpdump</span> to receiver packet on tester::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span><span class="SpellE">tcpdump</span> -<span class="SpellE">i</span> <<span class="SpellE">rx</span> port name> -w /<span class="SpellE">tmp</span>/sniff-<<span class="SpellE">rx</span> port
 name>.<span class="SpellE">pcap</span><o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span><span class="SpellE">tcpdump</span> -<span class="SpellE">i</span> <<span class="SpellE">tx</span> port name> -w /<span class="SpellE">tmp</span>/sniff-<<span class="SpellE">tx</span> port
 name>.<span class="SpellE">pcap</span><o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Send packet on tester by port 0::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span><span class="SpellE">sendp</span>(<packet format>,
<span class="SpellE">iface</span>=<port 0 name>)<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Compare <span class="SpellE">pcap</span> file of <span class="SpellE">
scapy</span> with the <span class="SpellE">pcap</span> file dumped by <span class="SpellE">
tcpdump</span>.<o:p></o:p></p>
<p class="MsoPlainText">> > +Compare <span class="SpellE">pcap</span> file dumped by
<span class="SpellE">dpdk-pdump</span> with <span class="SpellE">pcap</span> files dumped by<o:p></o:p></p>
<p class="MsoPlainText">> > <span class="SpellE">tcpdump</span>(ignore when only set
<span class="SpellE">tx-dev</span>).<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Send packet on tester by port 1::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span><span class="SpellE">sendp</span>(<packet format>,
<span class="SpellE">iface</span>=<port 1 name>)<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Compare <span class="SpellE">pcap</span> file of <span class="SpellE">
scapy</span> with the <span class="SpellE">pcap</span> file dumped by <span class="SpellE">
tcpdump</span>.<o:p></o:p></p>
<p class="MsoPlainText">> > +Compare <span class="SpellE">pcap</span> file dumped by
<span class="SpellE">dpdk-pdump</span> with <span class="SpellE">pcap</span> files dumped by<o:p></o:p></p>
<p class="MsoPlainText">> > <span class="SpellE">tcpdump</span>(ignore when only set
<span class="SpellE">rx-dev</span>).<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Test Case 4: test <span class="SpellE">pdump</span> <span class="SpellE">
dev</span> <span class="SpellE">iface</span><o:p></o:p></p>
<p class="MsoPlainText">> > +=================================<o:p></o:p></p>
<p class="MsoPlainText">> > +test different dump options::<o:p></o:p></p>
<p class="MsoPlainText">> > +* <span class="SpellE">tx-dev</span>=<<span class="SpellE">dut</span>
<span class="SpellE">tx</span> port name>,<span class="SpellE">rx-dev</span>=<<span class="SpellE">dut</span>
<span class="SpellE">rx</span> port name><o:p></o:p></p>
<p class="MsoPlainText">> > +* <span class="SpellE">rx-dev</span>=<<span class="SpellE">dut</span>
<span class="SpellE">rx</span> port name><o:p></o:p></p>
<p class="MsoPlainText">> > +* <span class="SpellE">tx-dev</span>=<<span class="SpellE">dut</span>
<span class="SpellE">tx</span> port name><o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Boot up <span class="SpellE">dpdk's</span> <span class="SpellE">
testpmd</span> with chained option::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span>./x86_64-native-linuxapp-gcc/app/<span class="SpellE">testpmd</span> -c 0x6 -n 4 -- -<span class="SpellE">i</span> --port-<o:p></o:p></p>
<p class="MsoPlainText">> > topology=chained<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span><span class="SpellE">testpmd</span>> set
<span class="SpellE">fwd</span> <span class="SpellE">io</span><o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span><span class="SpellE">testpmd</span>> start<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +When test VLAN_UDP type packet transmission, set <span class="SpellE">
vlan</span>:<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span><span class="SpellE">testpmd</span>>
<span class="SpellE">vlan</span> set filter off 1<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span><span class="SpellE">testpmd</span>> start<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Boot up <span class="SpellE">dpdk-pdump</span> with <span class="SpellE">
pdump</span> options::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span>./x86_64-native-linuxapp-gcc/app/<span class="SpellE">dpdk-pdump</span> -- --<span class="SpellE">pdump</span><o:p></o:p></p>
<p class="MsoPlainText">> > 'port=0,queue=*,<dump object>'<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Set up <span class="SpellE">linux's</span> <span class="SpellE">
tcpdump</span> to receiver packet on tester::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span><span class="SpellE">tcpdump</span> -<span class="SpellE">i</span> <<span class="SpellE">rx</span> port name> -w /<span class="SpellE">tmp</span>/sniff-<<span class="SpellE">rx</span> port
 name>.<span class="SpellE">pcap</span><o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span><span class="SpellE">tcpdump</span> -<span class="SpellE">i</span> <<span class="SpellE">tx</span> port name> -w /<span class="SpellE">tmp</span>/sniff-<<span class="SpellE">tx</span> port
 name>.<span class="SpellE">pcap</span><o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Set up <span class="SpellE">linux's</span> <span class="SpellE">
tcpdump</span> to receiver packet of <span class="SpellE">dpdk-pdump</span> on <span class="SpellE">
Dut</span>::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span>when <span class="SpellE">
rx-dev</span> is set<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span><span class="SpellE">tcpdump</span> -<span class="SpellE">i</span> <<span class="SpellE">dut</span>
<span class="SpellE">rx</span> port name> -w /<span class="SpellE">tmp</span>/<span class="SpellE">pdump-rx.pcap</span><o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span>when <span class="SpellE">
tx-dev</span> is set<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span><span class="SpellE">tcpdump</span> -<span class="SpellE">i</span> <<span class="SpellE">dut</span>
<span class="SpellE">tx</span> port name> -w /<span class="SpellE">tmp</span>/<span class="SpellE">pdump-tx.pcap</span><o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Send packet on tester by port 0::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span><span class="SpellE">sendp</span>(<packet format>,
<span class="SpellE">iface</span>=<port 0 name>)<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Compare <span class="SpellE">pcap</span> file of <span class="SpellE">
scapy</span> with the <span class="SpellE">pcap</span> file dumped by <span class="SpellE">
tcpdump</span>.<o:p></o:p></p>
<p class="MsoPlainText">> > +Compare <span class="SpellE">pcap</span> file dumped by
<span class="SpellE">dpdk-pdump</span> with <span class="SpellE">pcap</span> files dumped by<o:p></o:p></p>
<p class="MsoPlainText">> > <span class="SpellE">tcpdump</span>(ignore when only set
<span class="SpellE">tx-dev</span>).<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Send packet on tester by port 1::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span><span class="SpellE">sendp</span>(<packet format>,
<span class="SpellE">iface</span>=<port 1 name>)<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Compare <span class="SpellE">pcap</span> file of <span class="SpellE">
scapy</span> with the <span class="SpellE">pcap</span> file dumped by <span class="SpellE">
tcpdump</span>.<o:p></o:p></p>
<p class="MsoPlainText">> > +Compare <span class="SpellE">pcap</span> file dumped by
<span class="SpellE">dpdk-pdump</span> with <span class="SpellE">pcap</span> files dumped by<o:p></o:p></p>
<p class="MsoPlainText">> > <span class="SpellE">tcpdump</span>(ignore when only set
<span class="SpellE">rx-dev</span>).<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Test Case 5: test <span class="SpellE">pdump</span> ring size<o:p></o:p></p>
<p class="MsoPlainText">> > +=================================<o:p></o:p></p>
<p class="MsoPlainText">> > +test ring size option, set value within 2^[1~27]<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Boot up <span class="SpellE">dpdk's</span> <span class="SpellE">
testpmd</span> with chained option::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span>./x86_64-native-linuxapp-gcc/app/<span class="SpellE">testpmd</span> -c 0x6 -n 4 -- -<span class="SpellE">i</span> --port-<o:p></o:p></p>
<p class="MsoPlainText">> > topology=chained<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span><span class="SpellE">testpmd</span>> set
<span class="SpellE">fwd</span> <span class="SpellE">io</span><o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span><span class="SpellE">testpmd</span>> start<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +When test VLAN_UDP type packet transmission, set <span class="SpellE">
vlan</span>:<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span><span class="SpellE">testpmd</span>>
<span class="SpellE">vlan</span> set filter off 1<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span><span class="SpellE">testpmd</span>> start<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Boot up <span class="SpellE">dpdk-pdump</span> with <span class="SpellE">
pdump</span> options::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span>./x86_64-native-linuxapp-gcc/app/<span class="SpellE">dpdk-pdump</span> -- --<span class="SpellE">pdump</span><o:p></o:p></p>
<p class="MsoPlainText">> > 'port=0,queue=*,\<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span>tx-dev=/tmp/pdump-tx.pcap,rx-dev=/tmp/pdump-rx.pcap,ring-size=1024'<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Set up <span class="SpellE">linux's</span> <span class="SpellE">
tcpdump</span> to receiver packet on tester::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span><span class="SpellE">tcpdump</span> -<span class="SpellE">i</span> <<span class="SpellE">rx</span> port name> -w /<span class="SpellE">tmp</span>/sniff-<<span class="SpellE">rx</span> port
 name>.<span class="SpellE">pcap</span><o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span><span class="SpellE">tcpdump</span> -<span class="SpellE">i</span> <<span class="SpellE">tx</span> port name> -w /<span class="SpellE">tmp</span>/sniff-<<span class="SpellE">tx</span> port
 name>.<span class="SpellE">pcap</span><o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Send packet on tester by port 0::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span><span class="SpellE">sendp</span>(<packet format>,
<span class="SpellE">iface</span>=<port 0 name>)<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Compare <span class="SpellE">pcap</span> file of <span class="SpellE">
scapy</span> with the <span class="SpellE">pcap</span> file dumped by <span class="SpellE">
tcpdump</span>.<o:p></o:p></p>
<p class="MsoPlainText">> > +Compare <span class="SpellE">pcap</span> file dumped by
<span class="SpellE">dpdk-pdump</span> with <span class="SpellE">pcap</span> files dumped by
<span class="SpellE">tcpdump</span>.<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Send packet on tester by port 1::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span><span class="SpellE">sendp</span>(<packet format>,
<span class="SpellE">iface</span>=<port 1 name>)<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Compare <span class="SpellE">pcap</span> file of <span class="SpellE">
scapy</span> with the <span class="SpellE">pcap</span> file dumped by <span class="SpellE">
tcpdump</span>.<o:p></o:p></p>
<p class="MsoPlainText">> > +Compare <span class="SpellE">pcap</span> file dumped by
<span class="SpellE">dpdk-pdump</span> with <span class="SpellE">pcap</span> files dumped by
<span class="SpellE">tcpdump</span>.<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Test Case 6: test <span class="SpellE">pdump</span> <span class="SpellE">
mbuf</span> size<o:p></o:p></p>
<p class="MsoPlainText">> > +=================================<o:p></o:p></p>
<p class="MsoPlainText">> > +test <span class="SpellE">mbuf</span> size option, set value within [252~59520]. min value is<o:p></o:p></p>
<p class="MsoPlainText">> > +decided by single packet size, max value is decided by test platform
<span class="SpellE">memery</span><o:p></o:p></p>
<p class="MsoPlainText">> > size.<o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> Typo issue, should be "memory".<o:p></o:p></p>
<p class="MsoPlainText">> Should here to verify what will be happened when packet size is over
<span class="SpellE">mbuf</span> size?<o:p></o:p></p>
<p class="MsoPlainText">[Mo, <span class="SpellE">YufengX</span>] <span style="color:#953735;mso-style-textfill-fill-color:#953735;mso-style-textfill-fill-alpha:100.0%">
when size is <span class="SpellE">beyon</span> the range, <span class="SpellE">dpdk-pdump</span> won't boot up. Do you want to add a verification.<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="color:#953735;mso-style-textfill-fill-color:#953735;mso-style-textfill-fill-alpha:100.0%">will it do the same verification for other range checking?</span><o:p></o:p></p>
<p class="MsoPlainText">> Suggest add one case for jumbo frame packet capture, not sure whether jumbo frame should be validated here.<o:p></o:p></p>
<p class="MsoPlainText">[Mo, <span class="SpellE">YufengX</span>] <span style="mso-spacerun:yes">
 </span><span style="color:#953735;mso-style-textfill-fill-color:#953735;mso-style-textfill-fill-alpha:100.0%">Do you mean to write a new case for jumbo frame?<o:p></o:p></span></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Boot up <span class="SpellE">dpdk's</span> <span class="SpellE">
testpmd</span> with chained option::<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span>./x86_64-native-linuxapp-gcc/app/<span class="SpellE">testpmd</span> -c 0x6 -n 4 -- -<span class="SpellE">i</span> --port-<o:p></o:p></p>
<p class="MsoPlainText">> > topology=chained<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span><span class="SpellE">testpmd</span>> set
<span class="SpellE">fwd</span> <span class="SpellE">io</span><o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span><span class="SpellE">testpmd</span>> start<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +When test VLAN_UDP type packet transmission, set <span class="SpellE">
vlan</span>:<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span><span class="SpellE">testpmd</span>>
<span class="SpellE">vlan</span> set filter off 1<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span><span class="SpellE">testpmd</span>> start<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Boot up <span class="SpellE">dpdk-pdump</span> with <span class="SpellE">
pdump</span> options::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span>./x86_64-native-linuxapp-gcc/app/<span class="SpellE">dpdk-pdump</span> -- --<span class="SpellE">pdump</span><o:p></o:p></p>
<p class="MsoPlainText">> > 'port=0,queue=*,\<o:p></o:p></p>
<p class="MsoPlainText">> > + <span style="mso-spacerun:yes">   </span>tx-dev=/tmp/pdump-tx.pcap,rx-dev=/tmp/pdump-rx.pcap,mbuf-size=2048'<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Set up <span class="SpellE">linux's</span> <span class="SpellE">
tcpdump</span> to receiver packet on tester::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span><span class="SpellE">tcpdump</span> -<span class="SpellE">i</span> <<span class="SpellE">rx</span> port name> -w /<span class="SpellE">tmp</span>/sniff-<<span class="SpellE">rx</span> port
 name>.<span class="SpellE">pcap</span><o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span><span class="SpellE">tcpdump</span> -<span class="SpellE">i</span> <<span class="SpellE">tx</span> port name> -w /<span class="SpellE">tmp</span>/sniff-<<span class="SpellE">tx</span> port
 name>.<span class="SpellE">pcap</span><o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Send packet on tester by port 0::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span><span class="SpellE">sendp</span>(<packet format>,
<span class="SpellE">iface</span>=<port 0 name>)<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Compare <span class="SpellE">pcap</span> file of <span class="SpellE">
scapy</span> with the <span class="SpellE">pcap</span> file dumped by <span class="SpellE">
tcpdump</span>.<o:p></o:p></p>
<p class="MsoPlainText">> > +Compare <span class="SpellE">pcap</span> file dumped by
<span class="SpellE">dpdk-pdump</span> with <span class="SpellE">pcap</span> files dumped by
<span class="SpellE">tcpdump</span>.<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Send packet on tester by port 1::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span><span class="SpellE">sendp</span>(<packet format>,
<span class="SpellE">iface</span>=<port 1 name>)<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Compare <span class="SpellE">pcap</span> file of <span class="SpellE">
scapy</span> with the <span class="SpellE">pcap</span> file dumped by <span class="SpellE">
tcpdump</span>.<o:p></o:p></p>
<p class="MsoPlainText">> > +Compare <span class="SpellE">pcap</span> file dumped by
<span class="SpellE">dpdk-pdump</span> with <span class="SpellE">pcap</span> files dumped by
<span class="SpellE">tcpdump</span>.<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Test Case 7: test <span class="SpellE">pdump</span> total
<span class="SpellE">num</span> <span class="SpellE">mbufs</span><o:p></o:p></p>
<p class="MsoPlainText">> > +=================================<o:p></o:p></p>
<p class="MsoPlainText">> > +test total-<span class="SpellE">num</span>-<span class="SpellE">mbufs</span> option, set value within [1025~65535]<o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> What will be affected when change the number?<span style="mso-spacerun:yes"> 
</span>I think <span class="SpellE">mbuf</span> will be freed after packet saved into
<span class="SpellE">pcap</span> file.<o:p></o:p></p>
<p class="MsoPlainText">> Will it affect the performance?<o:p></o:p></p>
<p class="MsoPlainText">[Mo, <span class="SpellE">YufengX</span>] <span style="color:#953735;mso-style-textfill-fill-color:#953735;mso-style-textfill-fill-alpha:100.0%">
no things happen when total-<span class="SpellE">num</span>-<span class="SpellE">mbufs</span> changes. Currently, test case will reboot
<span class="SpellE">dpdk-pdump</span>/<span class="SpellE">testpmd</span><o:p></o:p></span></p>
<p class="MsoPlainText"><span style="color:#953735;mso-style-textfill-fill-color:#953735;mso-style-textfill-fill-alpha:100.0%">after each different option finish testing.<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="color:#953735;mso-style-textfill-fill-color:#953735;mso-style-textfill-fill-alpha:100.0%">Within those email discussed with
<span class="SpellE">Reshma</span>, she has mentioned that <span class="SpellE">dpdk-pdump</span> don’t work for performance, you are are in<o:p></o:p></span></p>
<p class="MsoPlainText"><span class="SpellE"><span style="color:#953735;mso-style-textfill-fill-color:#953735;mso-style-textfill-fill-alpha:100.0%">maillist</span></span><span style="color:#953735;mso-style-textfill-fill-color:#953735;mso-style-textfill-fill-alpha:100.0%">
 too.<o:p></o:p></span></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Boot up <span class="SpellE">dpdk's</span> <span class="SpellE">
testpmd</span> with chained option::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span>./x86_64-native-linuxapp-gcc/app/<span class="SpellE">testpmd</span> -c 0x6 -n 4 -- -<span class="SpellE">i</span> --port-<o:p></o:p></p>
<p class="MsoPlainText">> > topology=chained<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span><span class="SpellE">testpmd</span>> set
<span class="SpellE">fwd</span> <span class="SpellE">io</span><o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span><span class="SpellE">testpmd</span>> start<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +When test VLAN_UDP type packet transmission, set <span class="SpellE">
vlan</span>:<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span><span class="SpellE">testpmd</span>>
<span class="SpellE">vlan</span> set filter off 1<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span><span class="SpellE">testpmd</span>> start<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Boot up <span class="SpellE">dpdk-pdump</span> with <span class="SpellE">
pdump</span> options::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span>./x86_64-native-linuxapp-gcc/app/<span class="SpellE">dpdk-pdump</span> -- --<span class="SpellE">pdump</span><o:p></o:p></p>
<p class="MsoPlainText">> > 'port=0,queue=*,\<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span><span class="SpellE">tx-dev</span>=/<span class="SpellE">tmp</span>/<span class="SpellE">pdump-tx.pcap,rx-dev</span>=/<span class="SpellE">tmp</span>/<span class="SpellE">pdump-rx.pcap,total-num</span>-<o:p></o:p></p>
<p class="MsoPlainText">> > <span class="SpellE">mbufs</span>=8191'<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Set up <span class="SpellE">linux's</span> <span class="SpellE">
tcpdump</span> to receiver packet on tester::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span><span class="SpellE">tcpdump</span> -<span class="SpellE">i</span> <<span class="SpellE">rx</span> port name> -w /<span class="SpellE">tmp</span>/sniff-<<span class="SpellE">rx</span> port
 name>.<span class="SpellE">pcap</span><o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-tab-count:1">      </span><span class="SpellE">tcpdump</span> -<span class="SpellE">i</span> <<span class="SpellE">tx</span> port name> -w /<span class="SpellE">tmp</span>/sniff-<<span class="SpellE">tx</span> port
 name>.<span class="SpellE">pcap</span><o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Send packet on tester by port 0::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span><span class="SpellE">sendp</span>(<packet format>,
<span class="SpellE">iface</span>=<port 0 name>)<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Compare <span class="SpellE">pcap</span> file of <span class="SpellE">
scapy</span> with the <span class="SpellE">pcap</span> file dumped by <span class="SpellE">
tcpdump</span>.<o:p></o:p></p>
<p class="MsoPlainText">> > +Compare <span class="SpellE">pcap</span> file dumped by
<span class="SpellE">dpdk-pdump</span> with <span class="SpellE">pcap</span> files dumped by
<span class="SpellE">tcpdump</span>.<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Send packet on tester by port 1::<o:p></o:p></p>
<p class="MsoPlainText">> > +<span style="mso-spacerun:yes">    </span><span class="SpellE">sendp</span>(<packet format>,
<span class="SpellE">iface</span>=<port 1 name>)<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > +Compare <span class="SpellE">pcap</span> file of <span class="SpellE">
scapy</span> with the <span class="SpellE">pcap</span> file dumped by <span class="SpellE">
tcpdump</span>.<o:p></o:p></p>
<p class="MsoPlainText">> > +Compare <span class="SpellE">pcap</span> file dumped by
<span class="SpellE">dpdk-pdump</span> with <span class="SpellE">pcap</span> files dumped by
<span class="SpellE">tcpdump</span>.<o:p></o:p></p>
<p class="MsoPlainText">> > +<o:p></o:p></p>
<p class="MsoPlainText">> > --<o:p></o:p></p>
<p class="MsoPlainText">> > 1.9.3<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
</div>
</body>
</html>