<div dir="ltr"><div dir="ltr"><div>Hello,</div><div><br></div><div>@Ivan Malov, I use one flow queue per lcore.</div><div><br></div><div><div dir="ltr" class="gmail_signature"><div dir="ltr"><div style="color:rgb(34,34,34)">Sincerely,</div><table cellpadding="0" cellspacing="0" style="font-size:13px;color:rgb(25,34,52);max-width:570px"><tbody><tr><td style="margin:0.1px;padding:0px 0px 7px;border-bottom:3px solid rgb(19,23,38)"><span style="color:rgb(19,23,38)"><b style="font-family:"times new roman",serif;font-size:20px">Seongjong Bae </b></span><span style="font-family:"times new roman",serif;color:rgb(19,23,38);font-size:12px">M.S. Student </span><span style="font-family:"times new roman",serif;color:rgb(19,23,38);font-size:12px;font-weight:bold">T-Networking Lab.</span></td></tr><tr><td style="margin:0.1px;padding:10px 0px 0px"><table cellspacing="0" cellpadding="0" style="line-height:normal"><tbody><tr><td valign="top" style="margin:0.1px;padding:0px 15px 0px 0px"><font face="times new roman, serif"><img src="https://ci3.googleusercontent.com/mail-sig/AIorK4yCWXBmHrQ1GGSZ1Kc18irHfB1S9x_FqTeAHsxNIdnf_olG-PRjFVlItUw34zr1tnNwkP5AlPTomK87"><br></font></td><td valign="top" style="margin:0.1px"><table cellspacing="0" cellpadding="0" style="line-height:normal"><tbody><tr><td style="margin:0.1px"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="margin:0.1px;padding:0px 5px 0px 0px"><font face="times new roman, serif" color="#666666"><b>Email.</b></font></td><td style="margin:0.1px"><font face="times new roman, serif"><a href="mailto:sjbae1999@gmail.com" style="background-color:transparent;color:rgb(19,23,38)" target="_blank">sjbae1999@gmail.com</a><br></font></td></tr></tbody></table></td></tr><tr><td style="margin:0.1px;padding:7px 0px 0px"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="margin:0.1px;padding:0px 5px 0px 0px"><font face="times new roman, serif" color="#666666"><b>Mobile.</b></font></td><td style="margin:0.1px"><font face="times new roman, serif"><a href="tel:(+82)01089640524" style="background-color:transparent;color:rgb(19,23,38)" target="_blank">(+82)01089640524</a><br></font></td></tr></tbody></table></td></tr><tr><td style="margin:0.1px;padding:7px 0px 0px"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="margin:0.1px;padding:0px 5px 0px 0px"><font face="times new roman, serif" color="#666666"><b>Web.</b></font></td><td style="margin:0.1px"><font face="times new roman, serif"><a href="https://tnet.snu.ac.kr/" style="background-color:transparent;color:rgb(19,23,38)" target="_blank"><span style="color:red"></span>https://tnet.snu.ac.kr/</a><br></font></td></tr></tbody></table></td></tr></tbody></table></td></tr></tbody></table></td></tr></tbody></table></div></div></div><br></div><br><img width="0" height="0" class="mailtrack-img" alt="" style="display:flex" src="https://mailtrack.io/trace/mail/a506a50283ee63528192033293529dfe8e0777a2.png?u=11013800"><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">2025년 8월 12일 (화) 오후 5:30, Bing Zhao <<a href="mailto:bingz@nvidia.com">bingz@nvidia.com</a>>님이 작성:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">@Ivan Malov, which version of DPDK are you using? The last year RC?<br>
<br>
@Erez Shitrit, could you help to confirm if the GCC loop expansion bug of some arm compiler is also present in this branch?<br>
I remember there was a GCC bug to always compare with 1 and jump into an infinite loop. <br>
<br>
Thanks<br>
<br>
> -----Original Message-----<br>
> From: Ivan Malov <<a href="mailto:ivan.malov@arknetworks.am" target="_blank">ivan.malov@arknetworks.am</a>><br>
> Sent: Tuesday, August 12, 2025 12:09 AM<br>
> To: 배성종 <<a href="mailto:sjbae1999@gmail.com" target="_blank">sjbae1999@gmail.com</a>><br>
> Cc: <a href="mailto:users@dpdk.org" target="_blank">users@dpdk.org</a>; Dariusz Sosnowski <<a href="mailto:dsosnowski@nvidia.com" target="_blank">dsosnowski@nvidia.com</a>>; Slava<br>
> Ovsiienko <<a href="mailto:viacheslavo@nvidia.com" target="_blank">viacheslavo@nvidia.com</a>>; Bing Zhao <<a href="mailto:bingz@nvidia.com" target="_blank">bingz@nvidia.com</a>>; Ori Kam<br>
> <<a href="mailto:orika@nvidia.com" target="_blank">orika@nvidia.com</a>>; Suanming Mou <<a href="mailto:suanmingm@nvidia.com" target="_blank">suanmingm@nvidia.com</a>>; Matan Azrad<br>
> <<a href="mailto:matan@nvidia.com" target="_blank">matan@nvidia.com</a>><br>
> Subject: Re: [DPDK 24.11.3-rc1] rte_flow_async_create() stucks in while<br>
> loop (infinite loop)<br>
> <br>
> External email: Use caution opening links or attachments<br>
> <br>
> <br>
> Hi,<br>
> <br>
> On Mon, 28 Jul 2025, 배성종 wrote:<br>
> <br>
> > Hello commit authors (and maintainers),<br>
> ><br>
> > I'm currently working with rte_flow_async_create() using the postpone<br>
> > flag, along with rte_flow_push/pull() for batching, in a scenario<br>
> involving thousands of flows on a BlueField-2 system.<br>
> ><br>
> > My goal is to implement hardware steering such that ingress traffic<br>
> bypasses the ARM core of the BF2, and egress traffic does the same.<br>
> ><br>
> > According to the DPDK documentation, rte_flow_push/pull() seems to be<br>
> > intended for use as a batch operation, wrapping a large for loop that<br>
> issues multiple flow operations, and then committing them to hardware in<br>
> one go.<br>
> ><br>
> > However, I’ve observed that when multiple cores simultaneously insert<br>
> > flow rules, using rte_flow_push/pull() in such a batched way can result<br>
> in the rule insertion operations not being properly transmitted to the<br>
> hardware. Specifically, the internal function mlx5dr_send_all_dep_wqe()<br>
> ends up getting stuck in its while loop.<br>
> ><br>
> > Interestingly, if I call rte_flow_push/pull() after each individual<br>
> > rte_flow_async_create() operation, even though that usage seems contrary<br>
> to the intended batching model, the infinite loop issue is significantly<br>
> mitigated. The frequency of getting stuck in mlx5dr_send_all_dep_wqe()<br>
> drops drastically—though it still occurs occasionally.<br>
> ><br>
> > In summary, calling rte_flow_push/pull() after each<br>
> rte_flow_async_create() seems to avoid the infinite loop, but I’m unsure<br>
> if this is an expected usage pattern. I would like to ask:<br>
> ><br>
> > *<br>
> ><br>
> > Is this behavior intentional?<br>
> ><br>
> > *<br>
> ><br>
> > Am I misunderstanding the design or usage expectations for<br>
> rte_flow_push/pull() in multi-core scenarios?<br>
> ><br>
> <br>
> Perhaps my question is a bit out of place and wrong, but, given the fact<br>
> there are no code snippets to take a look at, are you using separate flow<br>
> queues for submitting the operations, one flow queue per lcore?<br>
> <br>
> Thank you.<br>
> <br>
> > Thank you for your time and support.<br>
> ><br>
> > Sincerely,<br>
> > Seongjong Bae M.S. Student T-Networking Lab.<br>
> > [AIorK4yCWXBmHrQ1GGSZ1Kc18irHfB1S9x_FqTeAHsxNIdnf_olG-PRjFVlItUw34zr1t<br>
> > nNwkP5AlPTomK87]<br>
> > Email<br>
> > <a href="mailto:sjbae1999@gmail.com" target="_blank">sjbae1999@gmail.com</a><br>
> > Mobile<br>
> > (+82)01089640524<br>
> > Web.<br>
> > <a href="https://tnet.snu.ac.kr/" rel="noreferrer" target="_blank">https://tnet.snu.ac.kr/</a><br>
> > [a81b6766e3d5b6518dc4010493c7772f5a46f598.png?u=11013800]<br>
> ><br>
> ><br>
</blockquote></div></div>