Hi benh,<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Please find my comments inline.<br><br>Thanks and regards,<br>SathyaNarayanan<br><br><div class="gmail_quote">On Tue, Jun 24, 2008 at 4:50 AM, Benjamin Herrenschmidt &lt;<a href="mailto:benh@kernel.crashing.org" target="_blank">benh@kernel.crashing.org</a>&gt; wrote:<br>

<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div>On Mon, 2008-06-23 at 14:54 +0200, Stefan Roese wrote:<br>
&gt; From: Sathya Narayanan &lt;<a href="mailto:sathyan@teamf1.com" target="_blank">sathyan@teamf1.com</a>&gt;<br>
&gt;<br>
&gt; The descriptor pointers were not initialized to NIL values, so it was<br>
&gt; poiniting to some random addresses which was completely invalid. This<br>
&gt; fix takes care of initializing the descriptor to NIL values and clearing<br>
&gt; the valid descriptors on clean ring operation.<br>
&gt;<br>
&gt; Signed-off-by: Sathya Narayanan &lt;<a href="mailto:sathyan@teamf1.com" target="_blank">sathyan@teamf1.com</a>&gt;<br>
&gt; Signed-off-by: Stefan Roese &lt;<a href="mailto:sr@denx.de" target="_blank">sr@denx.de</a>&gt;<br>
&gt; ---<br>
&gt; &nbsp;drivers/net/ibm_newemac/core.c | &nbsp; &nbsp;6 +++++-<br>
&gt; &nbsp;1 files changed, 5 insertions(+), 1 deletions(-)<br>
&gt;<br>
&gt; diff --git a/drivers/net/ibm_newemac/core.c b/drivers/net/ibm_newemac/core.c<br>
&gt; index 5d2108c..6dfc2c9 100644<br>
&gt; --- a/drivers/net/ibm_newemac/core.c<br>
&gt; +++ b/drivers/net/ibm_newemac/core.c<br>
&gt; @@ -1025,7 +1025,7 @@ static void emac_clean_tx_ring(struct emac_instance *dev)<br>
&gt; &nbsp; &nbsp; &nbsp; int i;<br>
&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; for (i = 0; i &lt; NUM_TX_BUFF; ++i) {<br>
&gt; - &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (dev-&gt;tx_skb[i]) {<br>
&gt; + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (dev-&gt;tx_skb[i] &amp;&amp; dev-&gt;tx_desc[i].data_ptr) {<br>
<br>
</div>Why changing the test above ?</blockquote><div><br>&nbsp;&nbsp; The reason for changing this condition is ,&nbsp; In any of the case if the dev-&gt;tx_skb is not containing valid address, Then while clearing it you may be resulted in &quot;address voilations&quot;. This additional condition ensures that we are clearing the valid skbs.<br>

Further this condition is not in general data flow, So this additional condition should not have any impact on performance.<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

<br>
<div><br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dev_kfree_skb(dev-&gt;tx_skb[i]);<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dev-&gt;tx_skb[i] = NULL;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (dev-&gt;tx_desc[i].ctrl &amp; MAL_TX_CTRL_READY)<br>
&gt; @@ -2719,6 +2719,10 @@ static int __devinit emac_probe(struct of_device *ofdev,<br>
&gt; &nbsp; &nbsp; &nbsp; /* Clean rings */<br>
&gt; &nbsp; &nbsp; &nbsp; memset(dev-&gt;tx_desc, 0, NUM_TX_BUFF * sizeof(struct mal_descriptor));<br>
&gt; &nbsp; &nbsp; &nbsp; memset(dev-&gt;rx_desc, 0, NUM_RX_BUFF * sizeof(struct mal_descriptor));<br>
&gt; + &nbsp; &nbsp; for (i = 0; i &lt;= NUM_TX_BUFF; i++)<br>
&gt; + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dev-&gt;tx_skb[i] = NULL;<br>
&gt; + &nbsp; &nbsp; for (i = 0; i &lt;= NUM_RX_BUFF; i++)<br>
&gt; + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dev-&gt;rx_skb[i] = NULL;<br>
<br>
</div>Why not use memset here too ?</blockquote><div>&nbsp; &nbsp; Yes, It was valid to use memset here. I can send the modified patch for it. <br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

<br>
<div><div></div><div><br>
&gt; &nbsp; &nbsp; &nbsp; /* Attach to ZMII, if needed */<br>
&gt; &nbsp; &nbsp; &nbsp; if (emac_has_feature(dev, EMAC_FTR_HAS_ZMII) &amp;&amp;<br>
<br>
</div></div></blockquote></div><br>