Commit ea9fc3c5 authored by David S. Miller's avatar David S. Miller

Merge branch 'net-mvpp2-misc-improvements'

Thomas Petazzoni says:

====================
net: mvpp2: misc improvements

Here are a few patches making various small improvements/refactoring
in the mvpp2 driver. They are based on today's net-next.
====================
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 0c461e05 7d7627ba
...@@ -3917,17 +3917,6 @@ static void *mvpp2_buf_alloc(struct mvpp2_port *port, ...@@ -3917,17 +3917,6 @@ static void *mvpp2_buf_alloc(struct mvpp2_port *port,
return data; return data;
} }
/* Set pool number in a BM cookie */
static inline u32 mvpp2_bm_cookie_pool_set(u32 cookie, int pool)
{
u32 bm;
bm = cookie & ~(0xFF << MVPP2_BM_COOKIE_POOL_OFFS);
bm |= ((pool & 0xFF) << MVPP2_BM_COOKIE_POOL_OFFS);
return bm;
}
/* Release buffer to BM */ /* Release buffer to BM */
static inline void mvpp2_bm_pool_put(struct mvpp2_port *port, int pool, static inline void mvpp2_bm_pool_put(struct mvpp2_port *port, int pool,
dma_addr_t buf_dma_addr, dma_addr_t buf_dma_addr,
...@@ -3964,14 +3953,6 @@ static inline void mvpp2_bm_pool_put(struct mvpp2_port *port, int pool, ...@@ -3964,14 +3953,6 @@ static inline void mvpp2_bm_pool_put(struct mvpp2_port *port, int pool,
put_cpu(); put_cpu();
} }
/* Refill BM pool */
static void mvpp2_pool_refill(struct mvpp2_port *port, int pool,
dma_addr_t dma_addr,
phys_addr_t phys_addr)
{
mvpp2_bm_pool_put(port, pool, dma_addr, phys_addr);
}
/* Allocate buffers for the pool */ /* Allocate buffers for the pool */
static int mvpp2_bm_bufs_add(struct mvpp2_port *port, static int mvpp2_bm_bufs_add(struct mvpp2_port *port,
struct mvpp2_bm_pool *bm_pool, int buf_num) struct mvpp2_bm_pool *bm_pool, int buf_num)
...@@ -4162,7 +4143,10 @@ static inline void mvpp2_interrupts_disable(struct mvpp2_port *port) ...@@ -4162,7 +4143,10 @@ static inline void mvpp2_interrupts_disable(struct mvpp2_port *port)
MVPP2_ISR_DISABLE_INTERRUPT(cpu_mask)); MVPP2_ISR_DISABLE_INTERRUPT(cpu_mask));
} }
/* Mask the current CPU's Rx/Tx interrupts */ /* Mask the current CPU's Rx/Tx interrupts
* Called by on_each_cpu(), guaranteed to run with migration disabled,
* using smp_processor_id() is OK.
*/
static void mvpp2_interrupts_mask(void *arg) static void mvpp2_interrupts_mask(void *arg)
{ {
struct mvpp2_port *port = arg; struct mvpp2_port *port = arg;
...@@ -4171,7 +4155,10 @@ static void mvpp2_interrupts_mask(void *arg) ...@@ -4171,7 +4155,10 @@ static void mvpp2_interrupts_mask(void *arg)
MVPP2_ISR_RX_TX_MASK_REG(port->id), 0); MVPP2_ISR_RX_TX_MASK_REG(port->id), 0);
} }
/* Unmask the current CPU's Rx/Tx interrupts */ /* Unmask the current CPU's Rx/Tx interrupts.
* Called by on_each_cpu(), guaranteed to run with migration disabled,
* using smp_processor_id() is OK.
*/
static void mvpp2_interrupts_unmask(void *arg) static void mvpp2_interrupts_unmask(void *arg)
{ {
struct mvpp2_port *port = arg; struct mvpp2_port *port = arg;
...@@ -4554,7 +4541,11 @@ mvpp2_txq_next_desc_get(struct mvpp2_tx_queue *txq) ...@@ -4554,7 +4541,11 @@ mvpp2_txq_next_desc_get(struct mvpp2_tx_queue *txq)
return txq->descs + tx_desc; return txq->descs + tx_desc;
} }
/* Update HW with number of aggregated Tx descriptors to be sent */ /* Update HW with number of aggregated Tx descriptors to be sent
*
* Called only from mvpp2_tx(), so migration is disabled, using
* smp_processor_id() is OK.
*/
static void mvpp2_aggr_txq_pend_desc_add(struct mvpp2_port *port, int pending) static void mvpp2_aggr_txq_pend_desc_add(struct mvpp2_port *port, int pending)
{ {
/* aggregated access - relevant TXQ number is written in TX desc */ /* aggregated access - relevant TXQ number is written in TX desc */
...@@ -4565,6 +4556,9 @@ static void mvpp2_aggr_txq_pend_desc_add(struct mvpp2_port *port, int pending) ...@@ -4565,6 +4556,9 @@ static void mvpp2_aggr_txq_pend_desc_add(struct mvpp2_port *port, int pending)
/* Check if there are enough free descriptors in aggregated txq. /* Check if there are enough free descriptors in aggregated txq.
* If not, update the number of occupied descriptors and repeat the check. * If not, update the number of occupied descriptors and repeat the check.
*
* Called only from mvpp2_tx(), so migration is disabled, using
* smp_processor_id() is OK.
*/ */
static int mvpp2_aggr_desc_num_check(struct mvpp2 *priv, static int mvpp2_aggr_desc_num_check(struct mvpp2 *priv,
struct mvpp2_tx_queue *aggr_txq, int num) struct mvpp2_tx_queue *aggr_txq, int num)
...@@ -4583,7 +4577,12 @@ static int mvpp2_aggr_desc_num_check(struct mvpp2 *priv, ...@@ -4583,7 +4577,12 @@ static int mvpp2_aggr_desc_num_check(struct mvpp2 *priv,
return 0; return 0;
} }
/* Reserved Tx descriptors allocation request */ /* Reserved Tx descriptors allocation request
*
* Called only from mvpp2_txq_reserved_desc_num_proc(), itself called
* only by mvpp2_tx(), so migration is disabled, using
* smp_processor_id() is OK.
*/
static int mvpp2_txq_alloc_reserved_desc(struct mvpp2 *priv, static int mvpp2_txq_alloc_reserved_desc(struct mvpp2 *priv,
struct mvpp2_tx_queue *txq, int num) struct mvpp2_tx_queue *txq, int num)
{ {
...@@ -4687,6 +4686,10 @@ static u32 mvpp2_txq_desc_csum(int l3_offs, int l3_proto, ...@@ -4687,6 +4686,10 @@ static u32 mvpp2_txq_desc_csum(int l3_offs, int l3_proto,
/* Get number of sent descriptors and decrement counter. /* Get number of sent descriptors and decrement counter.
* The number of sent descriptors is returned. * The number of sent descriptors is returned.
* Per-CPU access * Per-CPU access
*
* Called only from mvpp2_txq_done(), called from mvpp2_tx()
* (migration disabled) and from the TX completion tasklet (migration
* disabled) so using smp_processor_id() is OK.
*/ */
static inline int mvpp2_txq_sent_desc_proc(struct mvpp2_port *port, static inline int mvpp2_txq_sent_desc_proc(struct mvpp2_port *port,
struct mvpp2_tx_queue *txq) struct mvpp2_tx_queue *txq)
...@@ -4701,6 +4704,9 @@ static inline int mvpp2_txq_sent_desc_proc(struct mvpp2_port *port, ...@@ -4701,6 +4704,9 @@ static inline int mvpp2_txq_sent_desc_proc(struct mvpp2_port *port,
MVPP2_TRANSMITTED_COUNT_OFFSET; MVPP2_TRANSMITTED_COUNT_OFFSET;
} }
/* Called through on_each_cpu(), so runs on all CPUs, with migration
* disabled, therefore using smp_processor_id() is OK.
*/
static void mvpp2_txq_sent_counter_clear(void *arg) static void mvpp2_txq_sent_counter_clear(void *arg)
{ {
struct mvpp2_port *port = arg; struct mvpp2_port *port = arg;
...@@ -5001,7 +5007,7 @@ static void mvpp2_rxq_drop_pkts(struct mvpp2_port *port, ...@@ -5001,7 +5007,7 @@ static void mvpp2_rxq_drop_pkts(struct mvpp2_port *port,
pool = (status & MVPP2_RXD_BM_POOL_ID_MASK) >> pool = (status & MVPP2_RXD_BM_POOL_ID_MASK) >>
MVPP2_RXD_BM_POOL_ID_OFFS; MVPP2_RXD_BM_POOL_ID_OFFS;
mvpp2_pool_refill(port, pool, mvpp2_bm_pool_put(port, pool,
mvpp2_rxdesc_dma_addr_get(port, rx_desc), mvpp2_rxdesc_dma_addr_get(port, rx_desc),
mvpp2_rxdesc_cookie_get(port, rx_desc)); mvpp2_rxdesc_cookie_get(port, rx_desc));
} }
...@@ -5455,7 +5461,7 @@ static int mvpp2_rx_refill(struct mvpp2_port *port, ...@@ -5455,7 +5461,7 @@ static int mvpp2_rx_refill(struct mvpp2_port *port,
if (!buf) if (!buf)
return -ENOMEM; return -ENOMEM;
mvpp2_pool_refill(port, pool, dma_addr, phys_addr); mvpp2_bm_pool_put(port, pool, dma_addr, phys_addr);
return 0; return 0;
} }
...@@ -5539,7 +5545,7 @@ static int mvpp2_rx(struct mvpp2_port *port, int rx_todo, ...@@ -5539,7 +5545,7 @@ static int mvpp2_rx(struct mvpp2_port *port, int rx_todo,
dev->stats.rx_errors++; dev->stats.rx_errors++;
mvpp2_rx_error(port, rx_desc); mvpp2_rx_error(port, rx_desc);
/* Return the buffer to the pool */ /* Return the buffer to the pool */
mvpp2_pool_refill(port, pool, dma_addr, phys_addr); mvpp2_bm_pool_put(port, pool, dma_addr, phys_addr);
continue; continue;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment