<html><body>
<p><tt>Roland Dreier <rdreier@cisco.com> wrote on 10/19/2006 09:10:35 PM:<br>
Roland,</tt><br>
<tt><br>
> I looked over my code again, and I don't see anything obviously wrong,<br>
> but it's quite possible I made a mistake that I just can't see right<br>
> now (like reversing a truth value somewhere). Someone who knows how<br>
> ehca works might be able to spot the error.<br>
> <br>
> - R.<br>
</tt><br>
<tt>Your code is OK. I just found the problem here.</tt><br>
<tt>+ if (empty) {<br>
+ netif_rx_complete(dev);<br>
+ ib_req_notify_cq(priv->cq, IB_CQ_NEXT_COMP, &missed_event);<br>
+ if (unlikely(missed_event) && netif_rx_reschedule(dev, 0))<br>
+ goto repoll;<br>
+<br>
+ return 0;<br>
+ }<br>
</tt><br>
<tt>netif_rx_complete() should be called right before return. It does improve none scaling performance with this patch, but reduce scaling performance.</tt><br>
<br>
<tt>+ if (empty) {<br>
+ ib_req_notify_cq(priv->cq, IB_CQ_NEXT_COMP, &missed_event);<br>
+ if (unlikely(missed_event) && netif_rx_reschedule(dev, 0))<br>
+ goto repoll;<br>
+ netif_rx_complete(dev);</tt><br>
<tt>+<br>
+ return 0;<br>
+ }</tt><br>
Any other reason, calling netif_rx_complete() while still possibably within napi? <br>
<br>
Thanks<br>
Shirley Ma<br>
IBM Linux Technology Center</body></html>