Commit 44990aaa authored by Linu Cherian's avatar Linu Cherian Committed by David S. Miller
Browse files

octeontx2-af: Misc cleanups in cgx driver



* Do CGX init before NIX init
  This would add consistency in NIX code that depends on cgx ports

* Few other misc cleanups
  - rvu_cgx_probe renamed as rvu_cgx_init for consistency
  - rvu_cgx_exit wrapper added to take care of the exit path
  - Added error check on cgx_lmac_event_handler_init
  - Minor cleanups in cgx.h related to tab alignment
  - Removed redundant ids from enum cgx_cmd_id

Signed-off-by: default avatarLinu Cherian <lcherian@marvell.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e159e592
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -78,8 +78,6 @@ enum cgx_cmd_id {
	CGX_CMD_LINK_STATE_CHANGE,
	CGX_CMD_MODE_CHANGE,		/* hot plug support */
	CGX_CMD_INTF_SHUTDOWN,
	CGX_CMD_IRQ_ENABLE,
	CGX_CMD_IRQ_DISABLE,
};

/* async event ids */
+15 −11
Original line number Diff line number Diff line
@@ -811,17 +811,26 @@ init:

	err = rvu_npc_init(rvu);
	if (err)
		return err;
		goto exit;

	err = rvu_cgx_init(rvu);
	if (err)
		goto exit;

	err = rvu_npa_init(rvu);
	if (err)
		return err;
		goto cgx_err;

	err = rvu_nix_init(rvu);
	if (err)
		return err;
		goto cgx_err;

	return 0;

cgx_err:
	rvu_cgx_exit(rvu);
exit:
	return err;
}

/* NPA and NIX admin queue APIs */
@@ -2419,13 +2428,9 @@ static int rvu_probe(struct pci_dev *pdev, const struct pci_device_id *id)
	if (err)
		goto err_hwsetup;

	err = rvu_cgx_probe(rvu);
	if (err)
		goto err_mbox;

	err = rvu_flr_init(rvu);
	if (err)
		goto err_cgx;
		goto err_mbox;

	err = rvu_register_interrupts(rvu);
	if (err)
@@ -2441,11 +2446,10 @@ err_irq:
	rvu_unregister_interrupts(rvu);
err_flr:
	rvu_flr_wq_destroy(rvu);
err_cgx:
	rvu_cgx_wq_destroy(rvu);
err_mbox:
	rvu_mbox_destroy(&rvu->afpf_wq_info);
err_hwsetup:
	rvu_cgx_exit(rvu);
	rvu_reset_all_blocks(rvu);
	rvu_free_hw_resources(rvu);
err_release_regions:
@@ -2465,7 +2469,7 @@ static void rvu_remove(struct pci_dev *pdev)

	rvu_unregister_interrupts(rvu);
	rvu_flr_wq_destroy(rvu);
	rvu_cgx_wq_destroy(rvu);
	rvu_cgx_exit(rvu);
	rvu_mbox_destroy(&rvu->afpf_wq_info);
	rvu_disable_sriov(rvu);
	rvu_reset_all_blocks(rvu);
+2 −2
Original line number Diff line number Diff line
@@ -316,8 +316,8 @@ static inline void rvu_get_cgx_lmac_id(u8 map, u8 *cgx_id, u8 *lmac_id)
	*lmac_id = (map & 0xF);
}

int rvu_cgx_probe(struct rvu *rvu);
void rvu_cgx_wq_destroy(struct rvu *rvu);
int rvu_cgx_init(struct rvu *rvu);
int rvu_cgx_exit(struct rvu *rvu);
void *rvu_cgx_pdata(u8 cgx_id, struct rvu *rvu);
int rvu_cgx_config_rxtx(struct rvu *rvu, u16 pcifunc, bool start);
int rvu_mbox_handler_cgx_start_rxtx(struct rvu *rvu, struct msg_req *req,
+19 −8
Original line number Diff line number Diff line
@@ -216,7 +216,7 @@ static void cgx_evhandler_task(struct work_struct *work)
	} while (1);
}

static void cgx_lmac_event_handler_init(struct rvu *rvu)
static int cgx_lmac_event_handler_init(struct rvu *rvu)
{
	struct cgx_event_cb cb;
	int cgx, lmac, err;
@@ -228,7 +228,7 @@ static void cgx_lmac_event_handler_init(struct rvu *rvu)
	rvu->cgx_evh_wq = alloc_workqueue("rvu_evh_wq", 0, 0);
	if (!rvu->cgx_evh_wq) {
		dev_err(rvu->dev, "alloc workqueue failed");
		return;
		return -ENOMEM;
	}

	cb.notify_link_chg = cgx_lmac_postevent; /* link change call back */
@@ -244,9 +244,11 @@ static void cgx_lmac_event_handler_init(struct rvu *rvu)
					cgx, lmac);
		}
	}

	return 0;
}

void rvu_cgx_wq_destroy(struct rvu *rvu)
static void rvu_cgx_wq_destroy(struct rvu *rvu)
{
	if (rvu->cgx_evh_wq) {
		flush_workqueue(rvu->cgx_evh_wq);
@@ -255,9 +257,9 @@ void rvu_cgx_wq_destroy(struct rvu *rvu)
	}
}

int rvu_cgx_probe(struct rvu *rvu)
int rvu_cgx_init(struct rvu *rvu)
{
	int i, err;
	int cgx, err;

	/* find available cgx ports */
	rvu->cgx_cnt = cgx_get_cgx_cnt();
@@ -272,8 +274,8 @@ int rvu_cgx_probe(struct rvu *rvu)
		return -ENOMEM;

	/* Initialize the cgxdata table */
	for (i = 0; i < rvu->cgx_cnt; i++)
		rvu->cgx_idmap[i] = cgx_get_pdata(i);
	for (cgx = 0; cgx < rvu->cgx_cnt; cgx++)
		rvu->cgx_idmap[cgx] = cgx_get_pdata(cgx);

	/* Map CGX LMAC interfaces to RVU PFs */
	err = rvu_map_cgx_lmac_pf(rvu);
@@ -281,7 +283,16 @@ int rvu_cgx_probe(struct rvu *rvu)
		return err;

	/* Register for CGX events */
	cgx_lmac_event_handler_init(rvu);
	err = cgx_lmac_event_handler_init(rvu);
	if (err)
		return err;

	return 0;
}

int rvu_cgx_exit(struct rvu *rvu)
{
	rvu_cgx_wq_destroy(rvu);
	return 0;
}

+14 −14

File changed.

Contains only whitespace changes.