<div dir="ltr"><p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US">Hi All,</span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US">
I using dpdk pipeline and performing table lookup to decide the packet
forwarding.</span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US">One of my
use case v4_acl lookup failing could not find the reason.</span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US">Scenario:</span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US">pipeline
test_pipe1 table match v4_acl ipv4 offset 274 size 1K action test.</span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US">Acl table
offset is set to 274. In coming packets contains vlan header.</span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US">When normal
packet received src and ds tip matching according to the rules I pushed
into the table.</span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US">Packets
with GRE header and outer ip header src and dst ip also matching.</span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US">I wanted to
do lookup for inner IP header src and dst fields , to achieve this used <b>rte_pktmbuf_adj</b>
to remove the gre and outer ip header.</span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US">Again I
placed eth_header and vlan header at the start position.</span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><b><span lang="EN-US">Code
snippet:</span></b></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US">rte_memcpy(&temp_hdr,
eth_header,</span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US">
(sizeof(struct rte_ether_hdr) + sizeof(struct rte_vlan_hdr) +</span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US">
sizeof(struct rte_ipv4_hdr) +</span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US">
sizeof(gre_hdr_t)));</span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US">
rte_pktmbuf_adj (mb, (sizeof(struct rte_ether_hdr) + sizeof(struct
rte_vlan_hdr) +</span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US">
sizeof(struct rte_ipv4_hdr) +</span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US">
sizeof(gre_hdr_t)));</span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US">
rte_pktmbuf_prepend (mb,</span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US">
sizeof (struct rte_ether_hdr) + sizeof(struct rte_vlan_hdr) );</span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US">
pkt = rte_pktmbuf_mtod(mb, uint8_t *);</span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US">
rte_memcpy (pkt, &temp_hdr,</span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US">
sizeof(struct rte_ether_hdr) + sizeof(struct rte_vlan_hdr) ) ;</span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US">
ip = (struct rte_ipv4_hdr*) (pkt + sizeof(struct rte_ether_hdr) + sizeof(struct
rte_vlan_hdr));</span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US">My
expectation is inner header lookup will work because now I moved the inner
header in place of outer header position.</span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US">But lookup
failed could not find the reason for failure.</span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US">Could any
one help on this to solve the issue.</span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US">Why the
table offset is set to 274 to match the IP header fields?</span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US">Is mbuf ip
header will be at offset 274 always, I know mbuf headroom is 128 byte long </span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US">Could any
one explain point me the document to refer the offset calculation for mbuf and
acl table?</span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US">Regards,</span></p>
<p class="MsoNormal" style="margin:0cm;font-size:11pt;font-family:Aptos,sans-serif"><span lang="EN-US">Bala </span></p><div><br></div><br></div>