From: Troy Kisky <troy.kisky@boundarydevices.com>
To: netdev@vger.kernel.org, davem@davemloft.net, B38611@freescale.com
Cc: fabio.estevam@freescale.com, l.stach@pengutronix.de,
andrew@lunn.ch, tremyfr@gmail.com, linux@arm.linux.org.uk,
linux-arm-kernel@lists.infradead.org, laci@boundarydevices.com,
shawnguo@kernel.org, Troy Kisky <troy.kisky@boundarydevices.com>
Subject: [PATCH net-next 16/40] net: fec: eliminate calls to fec_enet_get_prevdesc
Date: Thu, 28 Jan 2016 14:25:40 -0700 [thread overview]
Message-ID: <1454016364-30985-17-git-send-email-troy.kisky@boundarydevices.com> (raw)
In-Reply-To: <1454016364-30985-1-git-send-email-troy.kisky@boundarydevices.com>
This shrinks the code a little.
Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
---
drivers/net/ethernet/freescale/fec_main.c | 34 ++++++++-----------------------
1 file changed, 9 insertions(+), 25 deletions(-)
diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
index 9285425..1a838cc 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -758,6 +758,7 @@ static void fec_enet_bd_init(struct net_device *dev)
struct bufdesc *bdp;
unsigned int i;
unsigned int q;
+ unsigned status;
for (q = 0; q < fep->num_rx_queues; q++) {
/* Initialize the receive buffer descriptors. */
@@ -765,19 +766,13 @@ static void fec_enet_bd_init(struct net_device *dev)
bdp = rxq->bd.base;
for (i = 0; i < rxq->bd.ring_size; i++) {
-
/* Initialize the BD for every fragment in the page. */
- if (bdp->cbd_bufaddr)
- bdp->cbd_sc = BD_ENET_RX_EMPTY;
- else
- bdp->cbd_sc = 0;
+ status = bdp->cbd_bufaddr ? BD_ENET_RX_EMPTY : 0;
+ if (bdp == rxq->bd.last)
+ status |= BD_SC_WRAP;
+ bdp->cbd_sc = status;
bdp = fec_enet_get_nextdesc(bdp, &rxq->bd);
}
-
- /* Set the last buffer to wrap */
- bdp = fec_enet_get_prevdesc(bdp, &rxq->bd);
- bdp->cbd_sc |= BD_SC_WRAP;
-
rxq->bd.cur = rxq->bd.base;
}
@@ -789,18 +784,15 @@ static void fec_enet_bd_init(struct net_device *dev)
for (i = 0; i < txq->bd.ring_size; i++) {
/* Initialize the BD for every fragment in the page. */
- bdp->cbd_sc = 0;
if (txq->tx_skbuff[i]) {
dev_kfree_skb_any(txq->tx_skbuff[i]);
txq->tx_skbuff[i] = NULL;
}
bdp->cbd_bufaddr = 0;
+ bdp->cbd_sc = (bdp == txq->bd.last) ? BD_SC_WRAP : 0;
bdp = fec_enet_get_nextdesc(bdp, &txq->bd);
}
-
- /* Set the last buffer to wrap */
bdp = fec_enet_get_prevdesc(bdp, &txq->bd);
- bdp->cbd_sc |= BD_SC_WRAP;
txq->dirty_tx = bdp;
}
}
@@ -2712,19 +2704,16 @@ fec_enet_alloc_rxq_buffers(struct net_device *ndev, unsigned int queue)
}
rxq->rx_skbuff[i] = skb;
- bdp->cbd_sc = BD_ENET_RX_EMPTY;
if (fep->bufdesc_ex) {
struct bufdesc_ex *ebdp = (struct bufdesc_ex *)bdp;
ebdp->cbd_esc = BD_ENET_RX_INT;
}
+ bdp->cbd_sc = BD_ENET_RX_EMPTY |
+ ((bdp == rxq->bd.last) ? BD_SC_WRAP : 0);
bdp = fec_enet_get_nextdesc(bdp, &rxq->bd);
}
-
- /* Set the last buffer to wrap. */
- bdp = fec_enet_get_prevdesc(bdp, &rxq->bd);
- bdp->cbd_sc |= BD_SC_WRAP;
return 0;
err_alloc:
@@ -2747,21 +2736,16 @@ fec_enet_alloc_txq_buffers(struct net_device *ndev, unsigned int queue)
if (!txq->tx_bounce[i])
goto err_alloc;
- bdp->cbd_sc = 0;
bdp->cbd_bufaddr = 0;
if (fep->bufdesc_ex) {
struct bufdesc_ex *ebdp = (struct bufdesc_ex *)bdp;
ebdp->cbd_esc = BD_ENET_TX_INT;
}
+ bdp->cbd_sc = (bdp == txq->bd.last) ? BD_SC_WRAP : 0;
bdp = fec_enet_get_nextdesc(bdp, &txq->bd);
}
-
- /* Set the last buffer to wrap. */
- bdp = fec_enet_get_prevdesc(bdp, &txq->bd);
- bdp->cbd_sc |= BD_SC_WRAP;
-
return 0;
err_alloc:
--
2.5.0
next prev parent reply other threads:[~2016-01-28 21:28 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-28 21:25 [PATCH net-next 00/40] net: fec: cleanup/fixes Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 01/40] net: fec: stop the "rcv is not +last, " error messages Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 02/40] net: fec: fix rx error counts Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 03/40] net: fec: fix fec_enet_get_free_txdesc_num Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 04/40] net: fec: add struct bufdesc_prop Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 05/40] net: fec: add variable reg_desc_active to speed things up Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 06/40] net: fec: don't disable FEC_ENET_TS_TIMER interrupt Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 07/40] net: fec: don't transfer ownership until descriptor write is complete Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 08/40] net: fec: move cbd_bufaddr assignment closer to the mapping function Troy Kisky
2016-01-28 22:02 ` Arnd Bergmann
2016-01-28 22:14 ` Johannes Berg
2016-01-29 17:49 ` Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 09/40] net: fec: only check queue 0 if RXF_0/TXF_0 interrupt is set Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 10/40] net: fec: pass rxq to fec_enet_rx_queue instead of queue_id Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 11/40] net: fec: pass txq to fec_enet_tx_queue " Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 12/40] net: fec: reduce interrupts Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 13/40] net: fec: split off napi routine with 3 queues Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 14/40] net: fec: don't clear all rx queue bits when just one is being checked Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 15/40] net: fec: set cbd_sc without relying on previous value Troy Kisky
2016-01-28 21:25 ` Troy Kisky [this message]
2016-01-28 21:25 ` [PATCH net-next 17/40] net: fec: move restart test for efficiency Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 18/40] net: fec: clear cbd_sc after transmission to help with debugging Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 19/40] net: fec: dump all tx queues in fec_dump Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 20/40] net: fec: detect tx int lost Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 21/40] net: fec: print more debug info in fec_timeout Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 22/40] net: fec: call dma_unmap_single on mapped tx buffers at restart Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 23/40] net: fec: don't set cbd_bufaddr unless no mapping error Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 24/40] net: fec: return NETDEV_TX_BUSY, when not enough space in ring Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 25/40] net: fec: don't free skb until it has been unmapped Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 26/40] net: fec: set cbd_esc only once Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 27/40] net: fec: enable interrupt on very last descriptor only Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 28/40] net: fec: unmap initial buffer on error Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 29/40] net: fec: don't free skb when returning busy Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 30/40] net: fec: move last_bdp assignment for symmetry Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 31/40] net: fec: don't transfer ownership until entire tso is queued Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 32/40] net: fec: fix err_release in fec_enet_txq_submit_tso Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 33/40] net: fec: shrink the window for 'tx int lost' Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 34/40] net: fec: update dirty_tx even if no skb Troy Kisky
2016-01-28 21:25 ` [PATCH net-next 35/40] net: fec: rename dirty_tx to pending_tx Troy Kisky
2016-01-28 21:26 ` [PATCH net-next 36/40] net: fec: use mac set by bootloader before fuses Troy Kisky
2016-01-28 21:26 ` [PATCH net-next 37/40] net: fec: add events device file Troy Kisky
2016-01-28 21:26 ` [PATCH net-next 38/40] net: fec: recover from lost rxf_0 interrupt Troy Kisky
2016-01-28 21:26 ` [PATCH net-next 39/40] ARM: dts: imx6qdl-nitrogen6x: add phy interrupt to eliminate polling Troy Kisky
2016-02-01 14:03 ` Shawn Guo
2016-01-28 21:26 ` [PATCH net-next 40/40] ARM: dts: imx6qdl-nitrogen6_max: " Troy Kisky
2016-02-01 14:04 ` Shawn Guo
2016-01-28 22:39 ` [PATCH net-next 00/40] net: fec: cleanup/fixes David Miller
[not found] ` <CAGB=+3Sip-+2Qf-KTZfoCCBcO9=9tb=pVCaEs=+eNJ1sWSRgXw@mail.gmail.com>
2016-01-29 0:19 ` David Miller
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=1454016364-30985-17-git-send-email-troy.kisky@boundarydevices.com \
--to=troy.kisky@boundarydevices.com \
--cc=B38611@freescale.com \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=fabio.estevam@freescale.com \
--cc=l.stach@pengutronix.de \
--cc=laci@boundarydevices.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux@arm.linux.org.uk \
--cc=netdev@vger.kernel.org \
--cc=shawnguo@kernel.org \
--cc=tremyfr@gmail.com \
/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;
as well as URLs for NNTP newsgroup(s).