mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
To: Steffen Trumtrar <s.trumtrar@pengutronix.de>
Cc: barebox@lists.infradead.org, Nicolas Ferre <nicolas.ferre@atmel.com>
Subject: Re: [PATCH 1/2] net: macb: remove gem_recv and reorder probe
Date: Wed, 13 Mar 2013 17:32:11 +0800	[thread overview]
Message-ID: <0DFF8E71-A184-4034-AADB-F026C8FCE3CD@jcrosoft.com> (raw)
In-Reply-To: <20130313091950.GD3891@pengutronix.de>


On Mar 13, 2013, at 5:19 PM, Steffen Trumtrar <s.trumtrar@pengutronix.de> wrote:

> On Wed, Mar 13, 2013 at 10:03:36AM +0100, Jean-Christophe PLAGNIOL-VILLARD wrote:
>> On 09:48 Wed 13 Mar     , Steffen Trumtrar wrote:
>>> The function gem_recv implements a buffer "ring" that stops at filling level 10.
>>> That means, when the driver is used as gem, it stops receiving after exactly
>>> 10 packets. Instead of implementing macb_recv twice, use it also for the gem
>>> part. If there needs to be an extra recv function for the gigabit case, it can
>>> be added than.
>>> Also, first set the type of device (macb or gem) and then use functions that
>>> use this info.
>>> 
>>> Tested on a Zynq7000.
>> NACK
>> 
>> on gem we can receive the packet in one buffer the gem_recv implement this
>> the macb can only receive splited buffer and then you have to reconstruct the
>> packet
>> 
> 
> Okay. That is nice and all. But try receiving more than just 10 packets with
> the current implementation.

yes the drivers bufferize only 10 packets in the DMA which should be enough for barebox
if we want we can increase the dma buffer size by increasing RX_NB_PACKET

Best Regards,
J.

> 
> Regards,
> str
> 
>> Best Regards,
>> J.
>>> 
>>> Signed-off-by: Steffen Trumtrar <s.trumtrar@pengutronix.de>
>>> Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
>>> Cc: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
>>> ---
>>> drivers/net/macb.c | 47 +++++++----------------------------------------
>>> 1 file changed, 7 insertions(+), 40 deletions(-)
>>> 
>>> diff --git a/drivers/net/macb.c b/drivers/net/macb.c
>>> index 8602437..a12eea7 100644
>>> --- a/drivers/net/macb.c
>>> +++ b/drivers/net/macb.c
>>> @@ -169,37 +169,6 @@ static void reclaim_rx_buffers(struct macb_device *macb,
>>> 	macb->rx_tail = new_tail;
>>> }
>>> 
>>> -static int gem_recv(struct eth_device *edev)
>>> -{
>>> -	struct macb_device *macb = edev->priv;
>>> -	unsigned int rx_tail = macb->rx_tail;
>>> -	void *buffer;
>>> -	int length;
>>> -	u32 status;
>>> -
>>> -	dev_dbg(macb->dev, "%s\n", __func__);
>>> -
>>> -	for (;;) {
>>> -		barrier();
>>> -		if (!(macb->rx_ring[rx_tail].addr & MACB_BIT(RX_USED)))
>>> -			return -1;
>>> -
>>> -		barrier();
>>> -		status = macb->rx_ring[rx_tail].ctrl;
>>> -		length = MACB_BFEXT(RX_FRMLEN, status);
>>> -		if (status & MACB_BIT(RX_SOF)) {
>>> -			buffer = macb->rx_buffer + macb->rx_buffer_size * macb->rx_tail;
>>> -			net_receive(buffer, length);
>>> -			macb->rx_ring[rx_tail].ctrl &= ~MACB_BIT(RX_USED);
>>> -			barrier();
>>> -		}
>>> -		rx_tail++;
>>> -		macb->rx_tail++;
>>> -	}
>>> -
>>> -	return 0;
>>> -}
>>> -
>>> static int macb_recv(struct eth_device *edev)
>>> {
>>> 	struct macb_device *macb = edev->priv;
>>> @@ -619,11 +588,6 @@ static int macb_probe(struct device_d *dev)
>>> 
>>> 	macb->phy_flags = pdata->phy_flags;
>>> 
>>> -	macb_init_rx_buffer_size(macb, PKTSIZE);
>>> -	macb->rx_buffer = dma_alloc_coherent(macb->rx_buffer_size * macb->rx_ring_size);
>>> -	macb->rx_ring = dma_alloc_coherent(RX_RING_BYTES(macb));
>>> -	macb->tx_ring = dma_alloc_coherent(TX_RING_BYTES);
>>> -
>>> 	macb->regs = dev_request_mem_region(dev, 0);
>>> 
>>> 	/*
>>> @@ -638,12 +602,15 @@ static int macb_probe(struct device_d *dev)
>>> 
>>> 	clk_enable(macb->pclk);
>>> 
>>> -	if (macb_is_gem(macb))
>>> -		edev->recv = gem_recv;
>>> -	else
>>> -		edev->recv = macb_recv;
>>> 	macb->is_gem = read_is_gem(macb);
>>> 
>>> +	macb_init_rx_buffer_size(macb, PKTSIZE);
>>> +	macb->rx_buffer = dma_alloc_coherent(macb->rx_buffer_size * macb->rx_ring_size);
>>> +	macb->rx_ring = dma_alloc_coherent(RX_RING_BYTES(macb));
>>> +	macb->tx_ring = dma_alloc_coherent(TX_RING_BYTES);
>>> +
>>> +	edev->recv = macb_recv;
>>> +
>>> 	macb_reset_hw(macb);
>>> 	ncfgr = macb_mdc_clk_div(macb);
>>> 	ncfgr |= MACB_BIT(PAE);		/* PAuse Enable */
>>> -- 
>>> 1.8.2.rc2
>>> 
>> 
> 
> -- 
> 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
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

  reply	other threads:[~2013-03-13  9:32 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-13  8:48 Steffen Trumtrar
2013-03-13  8:48 ` [PATCH 2/2] net: macb: turn off endian_swp_pkt_en Steffen Trumtrar
2013-03-13  9:04   ` Jean-Christophe PLAGNIOL-VILLARD
2013-03-13  9:17     ` Steffen Trumtrar
2013-03-13  9:03 ` [PATCH 1/2] net: macb: remove gem_recv and reorder probe Jean-Christophe PLAGNIOL-VILLARD
2013-03-13  9:19   ` Steffen Trumtrar
2013-03-13  9:32     ` Jean-Christophe PLAGNIOL-VILLARD [this message]
2013-03-13  9:33       ` Jean-Christophe PLAGNIOL-VILLARD
2013-03-13 10:15   ` Sascha Hauer
2013-03-13 12:17     ` Jean-Christophe PLAGNIOL-VILLARD
2013-03-13 13:08       ` Steffen Trumtrar
2013-03-13 15:36         ` Jean-Christophe PLAGNIOL-VILLARD

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0DFF8E71-A184-4034-AADB-F026C8FCE3CD@jcrosoft.com \
    --to=plagnioj@jcrosoft.com \
    --cc=barebox@lists.infradead.org \
    --cc=nicolas.ferre@atmel.com \
    --cc=s.trumtrar@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox