> On May 2, 2019, at 8:01 AM, Dekel Peled <dek...@mellanox.com> wrote: > > Multiple functions were declared in header file mlx5_rxtx.h, > inplemented in mlx5_rxq.c, and called only in mlx5_rxq.c. > > This patch moves all these functions declarations into mlx5_rxq.c, > as static functions. > Some functions implementation was copied higher in the file to > precede the functions calls. > > Signed-off-by: Dekel Peled <dek...@mellanox.com> > --- Acked-by: Yongseok Koh <ys...@mellanox.com>
> drivers/net/mlx5/mlx5_rxq.c | 185 +++++++++++++++++++++---------------------- > drivers/net/mlx5/mlx5_rxtx.h | 16 ---- > 2 files changed, 92 insertions(+), 109 deletions(-) > > diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c > index a547f2a..36fd0b3 100644 > --- a/drivers/net/mlx5/mlx5_rxq.c > +++ b/drivers/net/mlx5/mlx5_rxq.c > @@ -65,7 +65,7 @@ > * @return > * 1 if supported, negative errno value if not. > */ > -inline int > +static inline int > mlx5_check_mprq_support(struct rte_eth_dev *dev) > { > struct mlx5_priv *priv = dev->data->dev_private; > @@ -418,6 +418,33 @@ > } > > /** > + * Verify if the queue can be released. > + * > + * @param dev > + * Pointer to Ethernet device. > + * @param idx > + * RX queue index. > + * > + * @return > + * 1 if the queue can be released > + * 0 if the queue can not be released, there are references to it. > + * Negative errno and rte_errno is set if queue doesn't exist. > + */ > +static int > +mlx5_rxq_releasable(struct rte_eth_dev *dev, uint16_t idx) > +{ > + struct mlx5_priv *priv = dev->data->dev_private; > + struct mlx5_rxq_ctrl *rxq_ctrl; > + > + if (!(*priv->rxqs)[idx]) { > + rte_errno = EINVAL; > + return -rte_errno; > + } > + rxq_ctrl = container_of((*priv->rxqs)[idx], struct mlx5_rxq_ctrl, rxq); > + return (rte_atomic32_read(&rxq_ctrl->refcnt) == 1); > +} > + > +/** > * > * @param dev > * Pointer to Ethernet device structure. > @@ -505,6 +532,63 @@ > } > > /** > + * Get an Rx queue Verbs object. > + * > + * @param dev > + * Pointer to Ethernet device. > + * @param idx > + * Queue index in DPDK Rx queue array > + * > + * @return > + * The Verbs object if it exists. > + */ > +static struct mlx5_rxq_ibv * > +mlx5_rxq_ibv_get(struct rte_eth_dev *dev, uint16_t idx) > +{ > + struct mlx5_priv *priv = dev->data->dev_private; > + struct mlx5_rxq_data *rxq_data = (*priv->rxqs)[idx]; > + struct mlx5_rxq_ctrl *rxq_ctrl; > + > + if (idx >= priv->rxqs_n) > + return NULL; > + if (!rxq_data) > + return NULL; > + rxq_ctrl = container_of(rxq_data, struct mlx5_rxq_ctrl, rxq); > + if (rxq_ctrl->ibv) > + rte_atomic32_inc(&rxq_ctrl->ibv->refcnt); > + return rxq_ctrl->ibv; > +} > + > +/** > + * Release an Rx verbs queue object. > + * > + * @param rxq_ibv > + * Verbs Rx queue object. > + * > + * @return > + * 1 while a reference on it exists, 0 when freed. > + */ > +static int > +mlx5_rxq_ibv_release(struct mlx5_rxq_ibv *rxq_ibv) > +{ > + assert(rxq_ibv); > + assert(rxq_ibv->wq); > + assert(rxq_ibv->cq); > + if (rte_atomic32_dec_and_test(&rxq_ibv->refcnt)) { > + rxq_free_elts(rxq_ibv->rxq_ctrl); > + claim_zero(mlx5_glue->destroy_wq(rxq_ibv->wq)); > + claim_zero(mlx5_glue->destroy_cq(rxq_ibv->cq)); > + if (rxq_ibv->channel) > + claim_zero(mlx5_glue->destroy_comp_channel > + (rxq_ibv->channel)); > + LIST_REMOVE(rxq_ibv, next); > + rte_free(rxq_ibv); > + return 0; > + } > + return 1; > +} > + > +/** > * Allocate queue vector and fill epoll fd list for Rx interrupts. > * > * @param dev > @@ -1032,64 +1116,6 @@ struct mlx5_rxq_ibv * > } > > /** > - * Get an Rx queue Verbs object. > - * > - * @param dev > - * Pointer to Ethernet device. > - * @param idx > - * Queue index in DPDK Rx queue array > - * > - * @return > - * The Verbs object if it exists. > - */ > -struct mlx5_rxq_ibv * > -mlx5_rxq_ibv_get(struct rte_eth_dev *dev, uint16_t idx) > -{ > - struct mlx5_priv *priv = dev->data->dev_private; > - struct mlx5_rxq_data *rxq_data = (*priv->rxqs)[idx]; > - struct mlx5_rxq_ctrl *rxq_ctrl; > - > - if (idx >= priv->rxqs_n) > - return NULL; > - if (!rxq_data) > - return NULL; > - rxq_ctrl = container_of(rxq_data, struct mlx5_rxq_ctrl, rxq); > - if (rxq_ctrl->ibv) { > - rte_atomic32_inc(&rxq_ctrl->ibv->refcnt); > - } > - return rxq_ctrl->ibv; > -} > - > -/** > - * Release an Rx verbs queue object. > - * > - * @param rxq_ibv > - * Verbs Rx queue object. > - * > - * @return > - * 1 while a reference on it exists, 0 when freed. > - */ > -int > -mlx5_rxq_ibv_release(struct mlx5_rxq_ibv *rxq_ibv) > -{ > - assert(rxq_ibv); > - assert(rxq_ibv->wq); > - assert(rxq_ibv->cq); > - if (rte_atomic32_dec_and_test(&rxq_ibv->refcnt)) { > - rxq_free_elts(rxq_ibv->rxq_ctrl); > - claim_zero(mlx5_glue->destroy_wq(rxq_ibv->wq)); > - claim_zero(mlx5_glue->destroy_cq(rxq_ibv->cq)); > - if (rxq_ibv->channel) > - claim_zero(mlx5_glue->destroy_comp_channel > - (rxq_ibv->channel)); > - LIST_REMOVE(rxq_ibv, next); > - rte_free(rxq_ibv); > - return 0; > - } > - return 1; > -} > - > -/** > * Verify the Verbs Rx queue list is empty > * > * @param dev > @@ -1538,33 +1564,6 @@ struct mlx5_rxq_ctrl * > } > > /** > - * Verify if the queue can be released. > - * > - * @param dev > - * Pointer to Ethernet device. > - * @param idx > - * RX queue index. > - * > - * @return > - * 1 if the queue can be released > - * 0 if the queue can not be released, there are references to it. > - * Negative errno and rte_errno is set if queue doesn't exist. > - */ > -int > -mlx5_rxq_releasable(struct rte_eth_dev *dev, uint16_t idx) > -{ > - struct mlx5_priv *priv = dev->data->dev_private; > - struct mlx5_rxq_ctrl *rxq_ctrl; > - > - if (!(*priv->rxqs)[idx]) { > - rte_errno = EINVAL; > - return -rte_errno; > - } > - rxq_ctrl = container_of((*priv->rxqs)[idx], struct mlx5_rxq_ctrl, rxq); > - return (rte_atomic32_read(&rxq_ctrl->refcnt) == 1); > -} > - > -/** > * Verify the Rx Queue list is empty > * > * @param dev > @@ -1601,7 +1600,7 @@ struct mlx5_rxq_ctrl * > * @return > * The Verbs object initialised, NULL otherwise and rte_errno is set. > */ > -struct mlx5_ind_table_ibv * > +static struct mlx5_ind_table_ibv * > mlx5_ind_table_ibv_new(struct rte_eth_dev *dev, const uint16_t *queues, > uint32_t queues_n) > { > @@ -1665,7 +1664,7 @@ struct mlx5_ind_table_ibv * > * @return > * An indirection table if found. > */ > -struct mlx5_ind_table_ibv * > +static struct mlx5_ind_table_ibv * > mlx5_ind_table_ibv_get(struct rte_eth_dev *dev, const uint16_t *queues, > uint32_t queues_n) > { > @@ -1700,7 +1699,7 @@ struct mlx5_ind_table_ibv * > * @return > * 1 while a reference on it exists, 0 when freed. > */ > -int > +static int > mlx5_ind_table_ibv_release(struct rte_eth_dev *dev, > struct mlx5_ind_table_ibv *ind_tbl) > { > @@ -1984,7 +1983,7 @@ struct mlx5_hrxq * > * @return > * The Verbs object initialised, NULL otherwise and rte_errno is set. > */ > -struct mlx5_rxq_ibv * > +static struct mlx5_rxq_ibv * > mlx5_rxq_ibv_drop_new(struct rte_eth_dev *dev) > { > struct mlx5_priv *priv = dev->data->dev_private; > @@ -2044,7 +2043,7 @@ struct mlx5_rxq_ibv * > * @return > * The Verbs object initialised, NULL otherwise and rte_errno is set. > */ > -void > +static void > mlx5_rxq_ibv_drop_release(struct rte_eth_dev *dev) > { > struct mlx5_priv *priv = dev->data->dev_private; > @@ -2067,7 +2066,7 @@ struct mlx5_rxq_ibv * > * @return > * The Verbs object initialised, NULL otherwise and rte_errno is set. > */ > -struct mlx5_ind_table_ibv * > +static struct mlx5_ind_table_ibv * > mlx5_ind_table_ibv_drop_new(struct rte_eth_dev *dev) > { > struct mlx5_priv *priv = dev->data->dev_private; > @@ -2110,7 +2109,7 @@ struct mlx5_ind_table_ibv * > * @param dev > * Pointer to Ethernet device. > */ > -void > +static void > mlx5_ind_table_ibv_drop_release(struct rte_eth_dev *dev) > { > struct mlx5_priv *priv = dev->data->dev_private; > diff --git a/drivers/net/mlx5/mlx5_rxtx.h b/drivers/net/mlx5/mlx5_rxtx.h > index 1732e32..4512490 100644 > --- a/drivers/net/mlx5/mlx5_rxtx.h > +++ b/drivers/net/mlx5/mlx5_rxtx.h > @@ -246,7 +246,6 @@ struct mlx5_txq_ctrl { > > extern uint8_t rss_hash_default_key[]; > > -int mlx5_check_mprq_support(struct rte_eth_dev *dev); > int mlx5_rxq_mprq_enabled(struct mlx5_rxq_data *rxq); > int mlx5_mprq_enabled(struct rte_eth_dev *dev); > int mlx5_mprq_free_mp(struct rte_eth_dev *dev); > @@ -260,10 +259,6 @@ int mlx5_rx_queue_setup(struct rte_eth_dev *dev, > uint16_t idx, uint16_t desc, > int mlx5_rx_intr_enable(struct rte_eth_dev *dev, uint16_t rx_queue_id); > int mlx5_rx_intr_disable(struct rte_eth_dev *dev, uint16_t rx_queue_id); > struct mlx5_rxq_ibv *mlx5_rxq_ibv_new(struct rte_eth_dev *dev, uint16_t idx); > -struct mlx5_rxq_ibv *mlx5_rxq_ibv_get(struct rte_eth_dev *dev, uint16_t idx); > -int mlx5_rxq_ibv_release(struct mlx5_rxq_ibv *rxq_ibv); > -struct mlx5_rxq_ibv *mlx5_rxq_ibv_drop_new(struct rte_eth_dev *dev); > -void mlx5_rxq_ibv_drop_release(struct rte_eth_dev *dev); > int mlx5_rxq_ibv_verify(struct rte_eth_dev *dev); > struct mlx5_rxq_ctrl *mlx5_rxq_new(struct rte_eth_dev *dev, uint16_t idx, > uint16_t desc, unsigned int socket, > @@ -271,20 +266,9 @@ struct mlx5_rxq_ctrl *mlx5_rxq_new(struct rte_eth_dev > *dev, uint16_t idx, > struct rte_mempool *mp); > struct mlx5_rxq_ctrl *mlx5_rxq_get(struct rte_eth_dev *dev, uint16_t idx); > int mlx5_rxq_release(struct rte_eth_dev *dev, uint16_t idx); > -int mlx5_rxq_releasable(struct rte_eth_dev *dev, uint16_t idx); > int mlx5_rxq_verify(struct rte_eth_dev *dev); > int rxq_alloc_elts(struct mlx5_rxq_ctrl *rxq_ctrl); > -struct mlx5_ind_table_ibv *mlx5_ind_table_ibv_new(struct rte_eth_dev *dev, > - const uint16_t *queues, > - uint32_t queues_n); > -struct mlx5_ind_table_ibv *mlx5_ind_table_ibv_get(struct rte_eth_dev *dev, > - const uint16_t *queues, > - uint32_t queues_n); > -int mlx5_ind_table_ibv_release(struct rte_eth_dev *dev, > - struct mlx5_ind_table_ibv *ind_tbl); > int mlx5_ind_table_ibv_verify(struct rte_eth_dev *dev); > -struct mlx5_ind_table_ibv *mlx5_ind_table_ibv_drop_new(struct rte_eth_dev > *dev); > -void mlx5_ind_table_ibv_drop_release(struct rte_eth_dev *dev); > struct mlx5_hrxq *mlx5_hrxq_new(struct rte_eth_dev *dev, > const uint8_t *rss_key, uint32_t rss_key_len, > uint64_t hash_fields, > -- > 1.8.3.1 >