From e3dc39ee0cc025cb66baae8ab5d9ccb7bdbcd57c Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 27 Jun 2017 12:51:07 +0200 Subject: dpaa: Add --- .../drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 31 ++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'linux') diff --git a/linux/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c b/linux/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c index 3698101a..e010f5dc 100644 --- a/linux/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c +++ b/linux/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c @@ -56,6 +56,8 @@ #include #include #include +#else /* __rtems__ */ +#include #endif /* __rtems__ */ #include #include @@ -1606,6 +1608,35 @@ release_previous_buffs: return 0; } +#ifdef __rtems__ +void +dpaa_recycle_mcluster(struct dpaa_priv *dpaa_priv, + dpaa_buffer_recycle_context *rc, struct mbuf *m) +{ + size_t i; + dma_addr_t addr; + + i = rc->count; + m->m_data = m->m_ext.ext_buf; + *(struct mbuf **)(mtod(m, char *) + DPAA_MBUF_POINTER_OFFSET) = m; + addr = mtod(m, dma_addr_t); + rc->bmb[i].data = 0; + bm_buffer_set64(&rc->bmb[i], addr); + + if (i < ARRAY_SIZE(rc->bmb) - 1) { + rc->count = i + 1; + } else { + struct dpaa_bp *dpaa_bp; + int *countptr; + + rc->count = 0; + dpaa_bp = dpaa_priv->dpaa_bps[0]; + countptr = this_cpu_ptr(dpaa_bp->percpu_count); + *countptr += dpaa_bman_release(dpaa_bp, rc->bmb, + ARRAY_SIZE(rc->bmb)); + } +} +#endif /* __rtems__ */ static int dpaa_bp_seed(struct dpaa_bp *dpaa_bp) { -- cgit v1.2.3