On Wed, Jun 11, 2014 at 07:48:00AM +0400, Antony Pavlov wrote:
> On Tue, 10 Jun 2014 09:08:33 +0200
> Sascha Hauer <[email protected]> wrote:
> 
> > Hi Antony,
> > 
> > On Fri, Jun 06, 2014 at 12:02:57PM +0400, Antony Pavlov wrote:
> 
> Thanks for comments!
> But there is one issue (see below).
> 
> ...
> 
> > > +
> > > +static int enc28j60_eth_rx(struct eth_device *edev)
> > > +{
> > > + struct enc28j60_net *priv = edev->priv;
> > > + int pk_counter;
> > > +
> > > + pk_counter = locked_regb_read(priv, EPKTCNT);
> > > + if (pk_counter && netif_msg_intr(priv))
> > > +         printk(KERN_DEBUG DRV_NAME ": intRX, pk_cnt: %d\n", pk_counter);
> > > +
> > > + if (pk_counter > priv->max_pk_counter) {
> > > +         priv->max_pk_counter = pk_counter;
> > > +         if (netif_msg_rx_status(priv) && priv->max_pk_counter > 1)
> > > +                 printk(KERN_DEBUG DRV_NAME ": RX max_pk_cnt: %d\n",
> > > +                         priv->max_pk_counter);
> > > + }
> > > +
> > > + while (pk_counter-- > 0)
> > > +         enc28j60_hw_rx(edev);
> > 
> > You should only receive a single packet in your receive function.
> > Otherwise some protocols may not function properly. We noticed this
> > recently and didn't have the chance to fix all drivers.
> > 
> 
> If I receive only one packet (I have simply dropped 'while (pk_counter-- > 
> 0)')
> then tftp does not work.

Does pk_counter have the correct value the second time you read from
EPKTCNT?

Sascha

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to