mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-06 05:06:29 +00:00
mlxsw: pci: Move mlxsw_pci_eq_{init, fini}()
Move mlxsw_pci_eq_{init, fini}() after mlxsw_pci_eq_tasklet() as a next patch will setup the tasklet as part of initialization. Signed-off-by: Amit Cohen <amcohen@nvidia.com> Reviewed-by: Ido Schimmel <idosch@nvidia.com> Signed-off-by: Petr Machata <petrm@nvidia.com> Reviewed-by: Simon Horman <horms@kernel.org> Link: https://lore.kernel.org/r/7ae120a02e1c490084daae7e684a0d40b7cce4e7.1712062203.git.petrm@nvidia.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
6b164687f8
commit
d38718a525
@ -765,42 +765,6 @@ static u8 mlxsw_pci_cq_elem_size(const struct mlxsw_pci_queue *q)
|
||||
MLXSW_PCI_CQE01_SIZE;
|
||||
}
|
||||
|
||||
static int mlxsw_pci_eq_init(struct mlxsw_pci *mlxsw_pci, char *mbox,
|
||||
struct mlxsw_pci_queue *q)
|
||||
{
|
||||
int i;
|
||||
int err;
|
||||
|
||||
q->consumer_counter = 0;
|
||||
|
||||
for (i = 0; i < q->count; i++) {
|
||||
char *elem = mlxsw_pci_queue_elem_get(q, i);
|
||||
|
||||
mlxsw_pci_eqe_owner_set(elem, 1);
|
||||
}
|
||||
|
||||
mlxsw_cmd_mbox_sw2hw_eq_int_msix_set(mbox, 1); /* MSI-X used */
|
||||
mlxsw_cmd_mbox_sw2hw_eq_st_set(mbox, 1); /* armed */
|
||||
mlxsw_cmd_mbox_sw2hw_eq_log_eq_size_set(mbox, ilog2(q->count));
|
||||
for (i = 0; i < MLXSW_PCI_AQ_PAGES; i++) {
|
||||
dma_addr_t mapaddr = __mlxsw_pci_queue_page_get(q, i);
|
||||
|
||||
mlxsw_cmd_mbox_sw2hw_eq_pa_set(mbox, i, mapaddr);
|
||||
}
|
||||
err = mlxsw_cmd_sw2hw_eq(mlxsw_pci->core, mbox, q->num);
|
||||
if (err)
|
||||
return err;
|
||||
mlxsw_pci_queue_doorbell_consumer_ring(mlxsw_pci, q);
|
||||
mlxsw_pci_queue_doorbell_arm_consumer_ring(mlxsw_pci, q);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void mlxsw_pci_eq_fini(struct mlxsw_pci *mlxsw_pci,
|
||||
struct mlxsw_pci_queue *q)
|
||||
{
|
||||
mlxsw_cmd_hw2sw_eq(mlxsw_pci->core, q->num);
|
||||
}
|
||||
|
||||
static void mlxsw_pci_eq_cmd_event(struct mlxsw_pci *mlxsw_pci, char *eqe)
|
||||
{
|
||||
mlxsw_pci->cmd.comp.status = mlxsw_pci_eqe_cmd_status_get(eqe);
|
||||
@ -877,6 +841,42 @@ static void mlxsw_pci_eq_tasklet(struct tasklet_struct *t)
|
||||
}
|
||||
}
|
||||
|
||||
static int mlxsw_pci_eq_init(struct mlxsw_pci *mlxsw_pci, char *mbox,
|
||||
struct mlxsw_pci_queue *q)
|
||||
{
|
||||
int i;
|
||||
int err;
|
||||
|
||||
q->consumer_counter = 0;
|
||||
|
||||
for (i = 0; i < q->count; i++) {
|
||||
char *elem = mlxsw_pci_queue_elem_get(q, i);
|
||||
|
||||
mlxsw_pci_eqe_owner_set(elem, 1);
|
||||
}
|
||||
|
||||
mlxsw_cmd_mbox_sw2hw_eq_int_msix_set(mbox, 1); /* MSI-X used */
|
||||
mlxsw_cmd_mbox_sw2hw_eq_st_set(mbox, 1); /* armed */
|
||||
mlxsw_cmd_mbox_sw2hw_eq_log_eq_size_set(mbox, ilog2(q->count));
|
||||
for (i = 0; i < MLXSW_PCI_AQ_PAGES; i++) {
|
||||
dma_addr_t mapaddr = __mlxsw_pci_queue_page_get(q, i);
|
||||
|
||||
mlxsw_cmd_mbox_sw2hw_eq_pa_set(mbox, i, mapaddr);
|
||||
}
|
||||
err = mlxsw_cmd_sw2hw_eq(mlxsw_pci->core, mbox, q->num);
|
||||
if (err)
|
||||
return err;
|
||||
mlxsw_pci_queue_doorbell_consumer_ring(mlxsw_pci, q);
|
||||
mlxsw_pci_queue_doorbell_arm_consumer_ring(mlxsw_pci, q);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void mlxsw_pci_eq_fini(struct mlxsw_pci *mlxsw_pci,
|
||||
struct mlxsw_pci_queue *q)
|
||||
{
|
||||
mlxsw_cmd_hw2sw_eq(mlxsw_pci->core, q->num);
|
||||
}
|
||||
|
||||
struct mlxsw_pci_queue_ops {
|
||||
const char *name;
|
||||
enum mlxsw_pci_queue_type type;
|
||||
|
Loading…
Reference in New Issue
Block a user