net/qede/base: refactor code of SP queues
Maintain slowpath event queue and consumer queue within HW function structure, update corresponding alloc and free APIs accordingly. Cleanup unused code under CONFIG_ECORE_LL2 ifdef. Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
This commit is contained in:
parent
ea7c1c6f37
commit
d411a2b5e4
@ -165,12 +165,9 @@ void ecore_resc_free(struct ecore_dev *p_dev)
|
||||
ecore_cxt_mngr_free(p_hwfn);
|
||||
ecore_qm_info_free(p_hwfn);
|
||||
ecore_spq_free(p_hwfn);
|
||||
ecore_eq_free(p_hwfn, p_hwfn->p_eq);
|
||||
ecore_consq_free(p_hwfn, p_hwfn->p_consq);
|
||||
ecore_eq_free(p_hwfn);
|
||||
ecore_consq_free(p_hwfn);
|
||||
ecore_int_free(p_hwfn);
|
||||
#ifdef CONFIG_ECORE_LL2
|
||||
ecore_ll2_free(p_hwfn, p_hwfn->p_ll2_info);
|
||||
#endif
|
||||
ecore_iov_free(p_hwfn);
|
||||
ecore_dmae_info_free(p_hwfn);
|
||||
ecore_dcbx_info_free(p_hwfn, p_hwfn->p_dcbx_info);
|
||||
@ -836,11 +833,6 @@ alloc_err:
|
||||
|
||||
enum _ecore_status_t ecore_resc_alloc(struct ecore_dev *p_dev)
|
||||
{
|
||||
struct ecore_consq *p_consq;
|
||||
struct ecore_eq *p_eq;
|
||||
#ifdef CONFIG_ECORE_LL2
|
||||
struct ecore_ll2_info *p_ll2_info;
|
||||
#endif
|
||||
enum _ecore_status_t rc = ECORE_SUCCESS;
|
||||
int i;
|
||||
|
||||
@ -988,24 +980,13 @@ enum _ecore_status_t ecore_resc_alloc(struct ecore_dev *p_dev)
|
||||
goto alloc_no_mem;
|
||||
}
|
||||
|
||||
p_eq = ecore_eq_alloc(p_hwfn, (u16)n_eqes);
|
||||
if (!p_eq)
|
||||
goto alloc_no_mem;
|
||||
p_hwfn->p_eq = p_eq;
|
||||
rc = ecore_eq_alloc(p_hwfn, (u16)n_eqes);
|
||||
if (rc)
|
||||
goto alloc_err;
|
||||
|
||||
p_consq = ecore_consq_alloc(p_hwfn);
|
||||
if (!p_consq)
|
||||
goto alloc_no_mem;
|
||||
p_hwfn->p_consq = p_consq;
|
||||
|
||||
#ifdef CONFIG_ECORE_LL2
|
||||
if (p_hwfn->using_ll2) {
|
||||
p_ll2_info = ecore_ll2_alloc(p_hwfn);
|
||||
if (!p_ll2_info)
|
||||
goto alloc_no_mem;
|
||||
p_hwfn->p_ll2_info = p_ll2_info;
|
||||
}
|
||||
#endif
|
||||
rc = ecore_consq_alloc(p_hwfn);
|
||||
if (rc)
|
||||
goto alloc_err;
|
||||
|
||||
/* DMA info initialization */
|
||||
rc = ecore_dmae_info_alloc(p_hwfn);
|
||||
@ -1053,8 +1034,8 @@ void ecore_resc_setup(struct ecore_dev *p_dev)
|
||||
|
||||
ecore_cxt_mngr_setup(p_hwfn);
|
||||
ecore_spq_setup(p_hwfn);
|
||||
ecore_eq_setup(p_hwfn, p_hwfn->p_eq);
|
||||
ecore_consq_setup(p_hwfn, p_hwfn->p_consq);
|
||||
ecore_eq_setup(p_hwfn);
|
||||
ecore_consq_setup(p_hwfn);
|
||||
|
||||
/* Read shadow of current MFW mailbox */
|
||||
ecore_mcp_read_mb(p_hwfn, p_hwfn->p_main_ptt);
|
||||
@ -1065,10 +1046,6 @@ void ecore_resc_setup(struct ecore_dev *p_dev)
|
||||
ecore_int_setup(p_hwfn, p_hwfn->p_main_ptt);
|
||||
|
||||
ecore_iov_setup(p_hwfn, p_hwfn->p_main_ptt);
|
||||
#ifdef CONFIG_ECORE_LL2
|
||||
if (p_hwfn->using_ll2)
|
||||
ecore_ll2_setup(p_hwfn, p_hwfn->p_ll2_info);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -355,7 +355,7 @@ enum _ecore_status_t ecore_eq_completion(struct ecore_hwfn *p_hwfn,
|
||||
return rc;
|
||||
}
|
||||
|
||||
struct ecore_eq *ecore_eq_alloc(struct ecore_hwfn *p_hwfn, u16 num_elem)
|
||||
enum _ecore_status_t ecore_eq_alloc(struct ecore_hwfn *p_hwfn, u16 num_elem)
|
||||
{
|
||||
struct ecore_eq *p_eq;
|
||||
|
||||
@ -364,7 +364,7 @@ struct ecore_eq *ecore_eq_alloc(struct ecore_hwfn *p_hwfn, u16 num_elem)
|
||||
if (!p_eq) {
|
||||
DP_NOTICE(p_hwfn, true,
|
||||
"Failed to allocate `struct ecore_eq'\n");
|
||||
return OSAL_NULL;
|
||||
return ECORE_NOMEM;
|
||||
}
|
||||
|
||||
/* Allocate and initialize EQ chain*/
|
||||
@ -374,7 +374,7 @@ struct ecore_eq *ecore_eq_alloc(struct ecore_hwfn *p_hwfn, u16 num_elem)
|
||||
ECORE_CHAIN_CNT_TYPE_U16,
|
||||
num_elem,
|
||||
sizeof(union event_ring_element),
|
||||
&p_eq->chain, OSAL_NULL)) {
|
||||
&p_eq->chain, OSAL_NULL) != ECORE_SUCCESS) {
|
||||
DP_NOTICE(p_hwfn, true, "Failed to allocate eq chain\n");
|
||||
goto eq_allocate_fail;
|
||||
}
|
||||
@ -383,24 +383,28 @@ struct ecore_eq *ecore_eq_alloc(struct ecore_hwfn *p_hwfn, u16 num_elem)
|
||||
ecore_int_register_cb(p_hwfn, ecore_eq_completion,
|
||||
p_eq, &p_eq->eq_sb_index, &p_eq->p_fw_cons);
|
||||
|
||||
return p_eq;
|
||||
p_hwfn->p_eq = p_eq;
|
||||
return ECORE_SUCCESS;
|
||||
|
||||
eq_allocate_fail:
|
||||
ecore_eq_free(p_hwfn, p_eq);
|
||||
return OSAL_NULL;
|
||||
}
|
||||
|
||||
void ecore_eq_setup(struct ecore_hwfn *p_hwfn, struct ecore_eq *p_eq)
|
||||
{
|
||||
ecore_chain_reset(&p_eq->chain);
|
||||
}
|
||||
|
||||
void ecore_eq_free(struct ecore_hwfn *p_hwfn, struct ecore_eq *p_eq)
|
||||
{
|
||||
if (!p_eq)
|
||||
return;
|
||||
ecore_chain_free(p_hwfn->p_dev, &p_eq->chain);
|
||||
OSAL_FREE(p_hwfn->p_dev, p_eq);
|
||||
return ECORE_NOMEM;
|
||||
}
|
||||
|
||||
void ecore_eq_setup(struct ecore_hwfn *p_hwfn)
|
||||
{
|
||||
ecore_chain_reset(&p_hwfn->p_eq->chain);
|
||||
}
|
||||
|
||||
void ecore_eq_free(struct ecore_hwfn *p_hwfn)
|
||||
{
|
||||
if (!p_hwfn->p_eq)
|
||||
return;
|
||||
|
||||
ecore_chain_free(p_hwfn->p_dev, &p_hwfn->p_eq->chain);
|
||||
|
||||
OSAL_FREE(p_hwfn->p_dev, p_hwfn->p_eq);
|
||||
p_hwfn->p_eq = OSAL_NULL;
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
@ -943,7 +947,7 @@ enum _ecore_status_t ecore_spq_completion(struct ecore_hwfn *p_hwfn,
|
||||
return rc;
|
||||
}
|
||||
|
||||
struct ecore_consq *ecore_consq_alloc(struct ecore_hwfn *p_hwfn)
|
||||
enum _ecore_status_t ecore_consq_alloc(struct ecore_hwfn *p_hwfn)
|
||||
{
|
||||
struct ecore_consq *p_consq;
|
||||
|
||||
@ -953,7 +957,7 @@ struct ecore_consq *ecore_consq_alloc(struct ecore_hwfn *p_hwfn)
|
||||
if (!p_consq) {
|
||||
DP_NOTICE(p_hwfn, true,
|
||||
"Failed to allocate `struct ecore_consq'\n");
|
||||
return OSAL_NULL;
|
||||
return ECORE_NOMEM;
|
||||
}
|
||||
|
||||
/* Allocate and initialize EQ chain */
|
||||
@ -963,27 +967,29 @@ struct ecore_consq *ecore_consq_alloc(struct ecore_hwfn *p_hwfn)
|
||||
ECORE_CHAIN_CNT_TYPE_U16,
|
||||
ECORE_CHAIN_PAGE_SIZE / 0x80,
|
||||
0x80,
|
||||
&p_consq->chain, OSAL_NULL)) {
|
||||
&p_consq->chain, OSAL_NULL) != ECORE_SUCCESS) {
|
||||
DP_NOTICE(p_hwfn, true, "Failed to allocate consq chain");
|
||||
goto consq_allocate_fail;
|
||||
}
|
||||
|
||||
return p_consq;
|
||||
p_hwfn->p_consq = p_consq;
|
||||
return ECORE_SUCCESS;
|
||||
|
||||
consq_allocate_fail:
|
||||
ecore_consq_free(p_hwfn, p_consq);
|
||||
return OSAL_NULL;
|
||||
}
|
||||
|
||||
void ecore_consq_setup(struct ecore_hwfn *p_hwfn, struct ecore_consq *p_consq)
|
||||
{
|
||||
ecore_chain_reset(&p_consq->chain);
|
||||
}
|
||||
|
||||
void ecore_consq_free(struct ecore_hwfn *p_hwfn, struct ecore_consq *p_consq)
|
||||
{
|
||||
if (!p_consq)
|
||||
return;
|
||||
ecore_chain_free(p_hwfn->p_dev, &p_consq->chain);
|
||||
OSAL_FREE(p_hwfn->p_dev, p_consq);
|
||||
return ECORE_NOMEM;
|
||||
}
|
||||
|
||||
void ecore_consq_setup(struct ecore_hwfn *p_hwfn)
|
||||
{
|
||||
ecore_chain_reset(&p_hwfn->p_consq->chain);
|
||||
}
|
||||
|
||||
void ecore_consq_free(struct ecore_hwfn *p_hwfn)
|
||||
{
|
||||
if (!p_hwfn->p_consq)
|
||||
return;
|
||||
|
||||
ecore_chain_free(p_hwfn->p_dev, &p_hwfn->p_consq->chain);
|
||||
OSAL_FREE(p_hwfn->p_dev, p_hwfn->p_consq);
|
||||
}
|
||||
|
@ -194,28 +194,23 @@ void ecore_spq_return_entry(struct ecore_hwfn *p_hwfn,
|
||||
* @param p_hwfn
|
||||
* @param num_elem number of elements in the eq
|
||||
*
|
||||
* @return struct ecore_eq* - a newly allocated structure; NULL upon error.
|
||||
* @return enum _ecore_status_t
|
||||
*/
|
||||
struct ecore_eq *ecore_eq_alloc(struct ecore_hwfn *p_hwfn,
|
||||
u16 num_elem);
|
||||
enum _ecore_status_t ecore_eq_alloc(struct ecore_hwfn *p_hwfn, u16 num_elem);
|
||||
|
||||
/**
|
||||
* @brief ecore_eq_setup - Reset the SPQ to its start state.
|
||||
* @brief ecore_eq_setup - Reset the EQ to its start state.
|
||||
*
|
||||
* @param p_hwfn
|
||||
* @param p_eq
|
||||
*/
|
||||
void ecore_eq_setup(struct ecore_hwfn *p_hwfn,
|
||||
struct ecore_eq *p_eq);
|
||||
void ecore_eq_setup(struct ecore_hwfn *p_hwfn);
|
||||
|
||||
/**
|
||||
* @brief ecore_eq_deallocate - deallocates the given EQ struct.
|
||||
* @brief ecore_eq_free - deallocates the given EQ struct.
|
||||
*
|
||||
* @param p_hwfn
|
||||
* @param p_eq
|
||||
*/
|
||||
void ecore_eq_free(struct ecore_hwfn *p_hwfn,
|
||||
struct ecore_eq *p_eq);
|
||||
void ecore_eq_free(struct ecore_hwfn *p_hwfn);
|
||||
|
||||
/**
|
||||
* @brief ecore_eq_prod_update - update the FW with default EQ producer
|
||||
@ -261,32 +256,26 @@ enum _ecore_status_t ecore_spq_completion(struct ecore_hwfn *p_hwfn,
|
||||
u32 ecore_spq_get_cid(struct ecore_hwfn *p_hwfn);
|
||||
|
||||
/**
|
||||
* @brief ecore_consq_alloc - Allocates & initializes an ConsQ
|
||||
* struct
|
||||
* @brief ecore_consq_alloc - Allocates & initializes an ConsQ struct
|
||||
*
|
||||
* @param p_hwfn
|
||||
*
|
||||
* @return struct ecore_eq* - a newly allocated structure; NULL upon error.
|
||||
* @return enum _ecore_status_t
|
||||
*/
|
||||
struct ecore_consq *ecore_consq_alloc(struct ecore_hwfn *p_hwfn);
|
||||
enum _ecore_status_t ecore_consq_alloc(struct ecore_hwfn *p_hwfn);
|
||||
|
||||
/**
|
||||
* @brief ecore_consq_setup - Reset the ConsQ to its start
|
||||
* state.
|
||||
* @brief ecore_consq_setup - Reset the ConsQ to its start state.
|
||||
*
|
||||
* @param p_hwfn
|
||||
* @param p_eq
|
||||
*/
|
||||
void ecore_consq_setup(struct ecore_hwfn *p_hwfn,
|
||||
struct ecore_consq *p_consq);
|
||||
void ecore_consq_setup(struct ecore_hwfn *p_hwfn);
|
||||
|
||||
/**
|
||||
* @brief ecore_consq_free - deallocates the given ConsQ struct.
|
||||
*
|
||||
* @param p_hwfn
|
||||
* @param p_eq
|
||||
*/
|
||||
void ecore_consq_free(struct ecore_hwfn *p_hwfn,
|
||||
struct ecore_consq *p_consq);
|
||||
void ecore_consq_free(struct ecore_hwfn *p_hwfn);
|
||||
|
||||
#endif /* __ECORE_SPQ_H__ */
|
||||
|
Loading…
x
Reference in New Issue
Block a user