[dpdk-dev,v3,10/10] vmxnet3: remove excess inlining

Message ID 1425600635-20628-11-git-send-email-stephen@networkplumber.org (mailing list archive)
State Superseded, archived
Headers

Commit Message

Stephen Hemminger March 6, 2015, 12:10 a.m. UTC
  From: Stephen Hemminger <shemming@brocade.com>

No reason to inline large functions. Compiler will decide already
based on optimization level.

Also register array should be const.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)
  

Comments

Yong Wang March 6, 2015, 11:54 p.m. UTC | #1
On 3/5/15, 4:10 PM, "Stephen Hemminger" <stephen@networkplumber.org> wrote:

>From: Stephen Hemminger <shemming@brocade.com>

>

>No reason to inline large functions. Compiler will decide already

>based on optimization level.

>

>Also register array should be const.

>

>Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>


One comment below.

Acked-by: Yong Wang <yongwang@vmware.com>


>---

> lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c | 10 ++++------

> 1 file changed, 4 insertions(+), 6 deletions(-)

>

>diff --git a/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c

>b/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c

>index f6c3452..cabb505 100644

>--- a/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c

>+++ b/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c

>@@ -84,10 +84,8 @@

> #define RTE_MBUF_DATA_DMA_ADDR_DEFAULT(mb) \

> 	(uint64_t) ((mb)->buf_physaddr + RTE_PKTMBUF_HEADROOM)

> 

>-static uint32_t rxprod_reg[2] = {VMXNET3_REG_RXPROD,

>VMXNET3_REG_RXPROD2};

>+static const uint32_t rxprod_reg[2] = {VMXNET3_REG_RXPROD,

>VMXNET3_REG_RXPROD2};

> 

>-static inline int vmxnet3_post_rx_bufs(vmxnet3_rx_queue_t* , uint8_t);

>-static inline void vmxnet3_tq_tx_complete(vmxnet3_tx_queue_t *);

> #ifdef RTE_LIBRTE_VMXNET3_DEBUG_DRIVER_NOT_USED

> static void vmxnet3_rxq_dump(struct vmxnet3_rx_queue *);

> static void vmxnet3_txq_dump(struct vmxnet3_tx_queue *);

>@@ -157,7 +155,7 @@ vmxnet3_txq_dump(struct vmxnet3_tx_queue *txq)

> }

> #endif

> 

>-static inline void

>+static void

> vmxnet3_cmd_ring_release_mbufs(vmxnet3_cmd_ring_t *ring)

> {

> 	while (ring->next2comp != ring->next2fill) {

>@@ -296,7 +294,7 @@ vmxnet3_dev_clear_queues(struct rte_eth_dev *dev)

> 	}

> }

> 

>-static inline void

>+static void

> vmxnet3_tq_tx_complete(vmxnet3_tx_queue_t *txq)


Since there is only one caller of this routine, inlining it should be
fine. But I have no problem with letting the compiler decide (which
probably will inline it anyway for this particular case).

> {

> 	int completed = 0;

>@@ -472,7 +470,7 @@ vmxnet3_xmit_pkts(void *tx_queue, struct rte_mbuf

>**tx_pkts,

>  *      only for LRO.

>  *

>  */

>-static inline int

>+static int

> vmxnet3_post_rx_bufs(vmxnet3_rx_queue_t *rxq, uint8_t ring_id)

> {

> 	int err = 0;

>-- 

>2.1.4

>
  
Stephen Hemminger March 7, 2015, 2 a.m. UTC | #2
On Fri, 6 Mar 2015 23:54:23 +0000
Yong Wang <yongwang@vmware.com> wrote:

> Since there is only one caller of this routine, inlining it should be
> fine. But I have no problem with letting the compiler decide (which
> probably will inline it anyway for this particular case).

Sometimes compiler will not inline because of register pressure issues
especially on 32 bit where there aren't enough registers.
  

Patch

diff --git a/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c b/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c
index f6c3452..cabb505 100644
--- a/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c
+++ b/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c
@@ -84,10 +84,8 @@ 
 #define RTE_MBUF_DATA_DMA_ADDR_DEFAULT(mb) \
 	(uint64_t) ((mb)->buf_physaddr + RTE_PKTMBUF_HEADROOM)
 
-static uint32_t rxprod_reg[2] = {VMXNET3_REG_RXPROD, VMXNET3_REG_RXPROD2};
+static const uint32_t rxprod_reg[2] = {VMXNET3_REG_RXPROD, VMXNET3_REG_RXPROD2};
 
-static inline int vmxnet3_post_rx_bufs(vmxnet3_rx_queue_t* , uint8_t);
-static inline void vmxnet3_tq_tx_complete(vmxnet3_tx_queue_t *);
 #ifdef RTE_LIBRTE_VMXNET3_DEBUG_DRIVER_NOT_USED
 static void vmxnet3_rxq_dump(struct vmxnet3_rx_queue *);
 static void vmxnet3_txq_dump(struct vmxnet3_tx_queue *);
@@ -157,7 +155,7 @@  vmxnet3_txq_dump(struct vmxnet3_tx_queue *txq)
 }
 #endif
 
-static inline void
+static void
 vmxnet3_cmd_ring_release_mbufs(vmxnet3_cmd_ring_t *ring)
 {
 	while (ring->next2comp != ring->next2fill) {
@@ -296,7 +294,7 @@  vmxnet3_dev_clear_queues(struct rte_eth_dev *dev)
 	}
 }
 
-static inline void
+static void
 vmxnet3_tq_tx_complete(vmxnet3_tx_queue_t *txq)
 {
 	int completed = 0;
@@ -472,7 +470,7 @@  vmxnet3_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
  *      only for LRO.
  *
  */
-static inline int
+static int
 vmxnet3_post_rx_bufs(vmxnet3_rx_queue_t *rxq, uint8_t ring_id)
 {
 	int err = 0;