Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6a1ccaef authored by Rasesh Mody's avatar Rasesh Mody Committed by David S. Miller
Browse files

bna: HW Interface Init Update



Change details:
 - Split the hw interface into common and asic specific to support new asic
   in the future.
 - Fix bfa_ioc_ct_isr_mode_set() to also include the case that we are already
   in the desired msix mode.

Signed-off-by: default avatarRasesh Mody <rmody@brocade.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 8d7e7ff7
Loading
Loading
Loading
Loading
+17 −11
Original line number Diff line number Diff line
@@ -50,26 +50,32 @@ static enum bfa_status bfa_ioc_ct_pll_init(void __iomem *rb, bool fcmode);

static struct bfa_ioc_hwif nw_hwif_ct;

static void
bfa_ioc_set_ctx_hwif(struct bfa_ioc *ioc, struct bfa_ioc_hwif *hwif)
{
	hwif->ioc_firmware_lock = bfa_ioc_ct_firmware_lock;
	hwif->ioc_firmware_unlock = bfa_ioc_ct_firmware_unlock;
	hwif->ioc_notify_fail = bfa_ioc_ct_notify_fail;
	hwif->ioc_ownership_reset = bfa_ioc_ct_ownership_reset;
	hwif->ioc_sync_start = bfa_ioc_ct_sync_start;
	hwif->ioc_sync_join = bfa_ioc_ct_sync_join;
	hwif->ioc_sync_leave = bfa_ioc_ct_sync_leave;
	hwif->ioc_sync_ack = bfa_ioc_ct_sync_ack;
	hwif->ioc_sync_complete = bfa_ioc_ct_sync_complete;
}

/**
 * Called from bfa_ioc_attach() to map asic specific calls.
 */
void
bfa_nw_ioc_set_ct_hwif(struct bfa_ioc *ioc)
{
	bfa_ioc_set_ctx_hwif(ioc, &nw_hwif_ct);

	nw_hwif_ct.ioc_pll_init = bfa_ioc_ct_pll_init;
	nw_hwif_ct.ioc_firmware_lock = bfa_ioc_ct_firmware_lock;
	nw_hwif_ct.ioc_firmware_unlock = bfa_ioc_ct_firmware_unlock;
	nw_hwif_ct.ioc_reg_init = bfa_ioc_ct_reg_init;
	nw_hwif_ct.ioc_map_port = bfa_ioc_ct_map_port;
	nw_hwif_ct.ioc_isr_mode_set = bfa_ioc_ct_isr_mode_set;
	nw_hwif_ct.ioc_notify_fail = bfa_ioc_ct_notify_fail;
	nw_hwif_ct.ioc_ownership_reset = bfa_ioc_ct_ownership_reset;
	nw_hwif_ct.ioc_sync_start = bfa_ioc_ct_sync_start;
	nw_hwif_ct.ioc_sync_join = bfa_ioc_ct_sync_join;
	nw_hwif_ct.ioc_sync_leave = bfa_ioc_ct_sync_leave;
	nw_hwif_ct.ioc_sync_ack = bfa_ioc_ct_sync_ack;
	nw_hwif_ct.ioc_sync_complete = bfa_ioc_ct_sync_complete;

	ioc->ioc_hwif = &nw_hwif_ct;
}

@@ -297,7 +303,7 @@ bfa_ioc_ct_isr_mode_set(struct bfa_ioc *ioc, bool msix)
	/**
	 * If already in desired mode, do not change anything
	 */
	if (!msix && mode)
	if ((!msix && mode) || (msix && !mode))
		return;

	if (msix)