<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>