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

Commit 80a3809d authored by Rasesh Mody's avatar Rasesh Mody Committed by David S. Miller
Browse files

bna: Remove get_regs Ethtool Support



Change details:
 - This patch contains removal of get_regs support in bnad_ethtool.c. Thus
   BNA will have minimal register definitions necessary for MBOX and
   interrupt operations

Signed-off-by: default avatarRasesh Mody <rmody@brocade.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 12004ae9
Loading
Loading
Loading
Loading
+0 −319
Original line number Diff line number Diff line
@@ -288,323 +288,6 @@ bnad_get_drvinfo(struct net_device *netdev, struct ethtool_drvinfo *drvinfo)
	strncpy(drvinfo->bus_info, pci_name(bnad->pcidev), ETHTOOL_BUSINFO_LEN);
}

static int
get_regs(struct bnad *bnad, u32 * regs)
{
	int num = 0, i;
	u32 reg_addr;
	unsigned long flags;

#define BNAD_GET_REG(addr)					\
do {								\
	if (regs)						\
		regs[num++] = readl(bnad->bar0 + (addr));	\
	else							\
		num++;						\
} while (0)

	spin_lock_irqsave(&bnad->bna_lock, flags);

	/* DMA Block Internal Registers */
	BNAD_GET_REG(DMA_CTRL_REG0);
	BNAD_GET_REG(DMA_CTRL_REG1);
	BNAD_GET_REG(DMA_ERR_INT_STATUS);
	BNAD_GET_REG(DMA_ERR_INT_ENABLE);
	BNAD_GET_REG(DMA_ERR_INT_STATUS_SET);

	/* APP Block Register Address Offset from BAR0 */
	BNAD_GET_REG(HOSTFN0_INT_STATUS);
	BNAD_GET_REG(HOSTFN0_INT_MASK);
	BNAD_GET_REG(HOST_PAGE_NUM_FN0);
	BNAD_GET_REG(HOST_MSIX_ERR_INDEX_FN0);
	BNAD_GET_REG(FN0_PCIE_ERR_REG);
	BNAD_GET_REG(FN0_ERR_TYPE_STATUS_REG);
	BNAD_GET_REG(FN0_ERR_TYPE_MSK_STATUS_REG);

	BNAD_GET_REG(HOSTFN1_INT_STATUS);
	BNAD_GET_REG(HOSTFN1_INT_MASK);
	BNAD_GET_REG(HOST_PAGE_NUM_FN1);
	BNAD_GET_REG(HOST_MSIX_ERR_INDEX_FN1);
	BNAD_GET_REG(FN1_PCIE_ERR_REG);
	BNAD_GET_REG(FN1_ERR_TYPE_STATUS_REG);
	BNAD_GET_REG(FN1_ERR_TYPE_MSK_STATUS_REG);

	BNAD_GET_REG(PCIE_MISC_REG);

	BNAD_GET_REG(HOST_SEM0_INFO_REG);
	BNAD_GET_REG(HOST_SEM1_INFO_REG);
	BNAD_GET_REG(HOST_SEM2_INFO_REG);
	BNAD_GET_REG(HOST_SEM3_INFO_REG);

	BNAD_GET_REG(TEMPSENSE_CNTL_REG);
	BNAD_GET_REG(TEMPSENSE_STAT_REG);

	BNAD_GET_REG(APP_LOCAL_ERR_STAT);
	BNAD_GET_REG(APP_LOCAL_ERR_MSK);

	BNAD_GET_REG(PCIE_LNK_ERR_STAT);
	BNAD_GET_REG(PCIE_LNK_ERR_MSK);

	BNAD_GET_REG(FCOE_FIP_ETH_TYPE);
	BNAD_GET_REG(RESV_ETH_TYPE);

	BNAD_GET_REG(HOSTFN2_INT_STATUS);
	BNAD_GET_REG(HOSTFN2_INT_MASK);
	BNAD_GET_REG(HOST_PAGE_NUM_FN2);
	BNAD_GET_REG(HOST_MSIX_ERR_INDEX_FN2);
	BNAD_GET_REG(FN2_PCIE_ERR_REG);
	BNAD_GET_REG(FN2_ERR_TYPE_STATUS_REG);
	BNAD_GET_REG(FN2_ERR_TYPE_MSK_STATUS_REG);

	BNAD_GET_REG(HOSTFN3_INT_STATUS);
	BNAD_GET_REG(HOSTFN3_INT_MASK);
	BNAD_GET_REG(HOST_PAGE_NUM_FN3);
	BNAD_GET_REG(HOST_MSIX_ERR_INDEX_FN3);
	BNAD_GET_REG(FN3_PCIE_ERR_REG);
	BNAD_GET_REG(FN3_ERR_TYPE_STATUS_REG);
	BNAD_GET_REG(FN3_ERR_TYPE_MSK_STATUS_REG);

	/* Host Command Status Registers */
	reg_addr = HOST_CMDSTS0_CLR_REG;
	for (i = 0; i < 16; i++) {
		BNAD_GET_REG(reg_addr);
		BNAD_GET_REG(reg_addr + 4);
		BNAD_GET_REG(reg_addr + 8);
		reg_addr += 0x10;
	}

	/* Function ID register */
	BNAD_GET_REG(FNC_ID_REG);

	/* Function personality register */
	BNAD_GET_REG(FNC_PERS_REG);

	/* Operation mode register */
	BNAD_GET_REG(OP_MODE);

	/* LPU0 Registers */
	BNAD_GET_REG(LPU0_MBOX_CTL_REG);
	BNAD_GET_REG(LPU0_MBOX_CMD_REG);
	BNAD_GET_REG(LPU0_MBOX_LINK_0REG);
	BNAD_GET_REG(LPU1_MBOX_LINK_0REG);
	BNAD_GET_REG(LPU0_MBOX_STATUS_0REG);
	BNAD_GET_REG(LPU1_MBOX_STATUS_0REG);
	BNAD_GET_REG(LPU0_ERR_STATUS_REG);
	BNAD_GET_REG(LPU0_ERR_SET_REG);

	/* LPU1 Registers */
	BNAD_GET_REG(LPU1_MBOX_CTL_REG);
	BNAD_GET_REG(LPU1_MBOX_CMD_REG);
	BNAD_GET_REG(LPU0_MBOX_LINK_1REG);
	BNAD_GET_REG(LPU1_MBOX_LINK_1REG);
	BNAD_GET_REG(LPU0_MBOX_STATUS_1REG);
	BNAD_GET_REG(LPU1_MBOX_STATUS_1REG);
	BNAD_GET_REG(LPU1_ERR_STATUS_REG);
	BNAD_GET_REG(LPU1_ERR_SET_REG);

	/* PSS Registers */
	BNAD_GET_REG(PSS_CTL_REG);
	BNAD_GET_REG(PSS_ERR_STATUS_REG);
	BNAD_GET_REG(ERR_STATUS_SET);
	BNAD_GET_REG(PSS_RAM_ERR_STATUS_REG);

	/* Catapult CPQ Registers */
	BNAD_GET_REG(HOSTFN0_LPU0_MBOX0_CMD_STAT);
	BNAD_GET_REG(HOSTFN0_LPU1_MBOX0_CMD_STAT);
	BNAD_GET_REG(LPU0_HOSTFN0_MBOX0_CMD_STAT);
	BNAD_GET_REG(LPU1_HOSTFN0_MBOX0_CMD_STAT);

	BNAD_GET_REG(HOSTFN0_LPU0_MBOX1_CMD_STAT);
	BNAD_GET_REG(HOSTFN0_LPU1_MBOX1_CMD_STAT);
	BNAD_GET_REG(LPU0_HOSTFN0_MBOX1_CMD_STAT);
	BNAD_GET_REG(LPU1_HOSTFN0_MBOX1_CMD_STAT);

	BNAD_GET_REG(HOSTFN1_LPU0_MBOX0_CMD_STAT);
	BNAD_GET_REG(HOSTFN1_LPU1_MBOX0_CMD_STAT);
	BNAD_GET_REG(LPU0_HOSTFN1_MBOX0_CMD_STAT);
	BNAD_GET_REG(LPU1_HOSTFN1_MBOX0_CMD_STAT);

	BNAD_GET_REG(HOSTFN1_LPU0_MBOX1_CMD_STAT);
	BNAD_GET_REG(HOSTFN1_LPU1_MBOX1_CMD_STAT);
	BNAD_GET_REG(LPU0_HOSTFN1_MBOX1_CMD_STAT);
	BNAD_GET_REG(LPU1_HOSTFN1_MBOX1_CMD_STAT);

	BNAD_GET_REG(HOSTFN2_LPU0_MBOX0_CMD_STAT);
	BNAD_GET_REG(HOSTFN2_LPU1_MBOX0_CMD_STAT);
	BNAD_GET_REG(LPU0_HOSTFN2_MBOX0_CMD_STAT);
	BNAD_GET_REG(LPU1_HOSTFN2_MBOX0_CMD_STAT);

	BNAD_GET_REG(HOSTFN2_LPU0_MBOX1_CMD_STAT);
	BNAD_GET_REG(HOSTFN2_LPU1_MBOX1_CMD_STAT);
	BNAD_GET_REG(LPU0_HOSTFN2_MBOX1_CMD_STAT);
	BNAD_GET_REG(LPU1_HOSTFN2_MBOX1_CMD_STAT);

	BNAD_GET_REG(HOSTFN3_LPU0_MBOX0_CMD_STAT);
	BNAD_GET_REG(HOSTFN3_LPU1_MBOX0_CMD_STAT);
	BNAD_GET_REG(LPU0_HOSTFN3_MBOX0_CMD_STAT);
	BNAD_GET_REG(LPU1_HOSTFN3_MBOX0_CMD_STAT);

	BNAD_GET_REG(HOSTFN3_LPU0_MBOX1_CMD_STAT);
	BNAD_GET_REG(HOSTFN3_LPU1_MBOX1_CMD_STAT);
	BNAD_GET_REG(LPU0_HOSTFN3_MBOX1_CMD_STAT);
	BNAD_GET_REG(LPU1_HOSTFN3_MBOX1_CMD_STAT);

	/* Host Function Force Parity Error Registers */
	BNAD_GET_REG(HOSTFN0_LPU_FORCE_PERR);
	BNAD_GET_REG(HOSTFN1_LPU_FORCE_PERR);
	BNAD_GET_REG(HOSTFN2_LPU_FORCE_PERR);
	BNAD_GET_REG(HOSTFN3_LPU_FORCE_PERR);

	/* LL Port[0|1] Halt Mask Registers */
	BNAD_GET_REG(LL_HALT_MSK_P0);
	BNAD_GET_REG(LL_HALT_MSK_P1);

	/* LL Port[0|1] Error Mask Registers */
	BNAD_GET_REG(LL_ERR_MSK_P0);
	BNAD_GET_REG(LL_ERR_MSK_P1);

	/* EMC FLI Registers */
	BNAD_GET_REG(FLI_CMD_REG);
	BNAD_GET_REG(FLI_ADDR_REG);
	BNAD_GET_REG(FLI_CTL_REG);
	BNAD_GET_REG(FLI_WRDATA_REG);
	BNAD_GET_REG(FLI_RDDATA_REG);
	BNAD_GET_REG(FLI_DEV_STATUS_REG);
	BNAD_GET_REG(FLI_SIG_WD_REG);

	BNAD_GET_REG(FLI_DEV_VENDOR_REG);
	BNAD_GET_REG(FLI_ERR_STATUS_REG);

	/* RxAdm 0 Registers */
	BNAD_GET_REG(RAD0_CTL_REG);
	BNAD_GET_REG(RAD0_PE_PARM_REG);
	BNAD_GET_REG(RAD0_BCN_REG);
	BNAD_GET_REG(RAD0_DEFAULT_REG);
	BNAD_GET_REG(RAD0_PROMISC_REG);
	BNAD_GET_REG(RAD0_BCNQ_REG);
	BNAD_GET_REG(RAD0_DEFAULTQ_REG);

	BNAD_GET_REG(RAD0_ERR_STS);
	BNAD_GET_REG(RAD0_SET_ERR_STS);
	BNAD_GET_REG(RAD0_ERR_INT_EN);
	BNAD_GET_REG(RAD0_FIRST_ERR);
	BNAD_GET_REG(RAD0_FORCE_ERR);

	BNAD_GET_REG(RAD0_MAC_MAN_1H);
	BNAD_GET_REG(RAD0_MAC_MAN_1L);
	BNAD_GET_REG(RAD0_MAC_MAN_2H);
	BNAD_GET_REG(RAD0_MAC_MAN_2L);
	BNAD_GET_REG(RAD0_MAC_MAN_3H);
	BNAD_GET_REG(RAD0_MAC_MAN_3L);
	BNAD_GET_REG(RAD0_MAC_MAN_4H);
	BNAD_GET_REG(RAD0_MAC_MAN_4L);

	BNAD_GET_REG(RAD0_LAST4_IP);

	/* RxAdm 1 Registers */
	BNAD_GET_REG(RAD1_CTL_REG);
	BNAD_GET_REG(RAD1_PE_PARM_REG);
	BNAD_GET_REG(RAD1_BCN_REG);
	BNAD_GET_REG(RAD1_DEFAULT_REG);
	BNAD_GET_REG(RAD1_PROMISC_REG);
	BNAD_GET_REG(RAD1_BCNQ_REG);
	BNAD_GET_REG(RAD1_DEFAULTQ_REG);

	BNAD_GET_REG(RAD1_ERR_STS);
	BNAD_GET_REG(RAD1_SET_ERR_STS);
	BNAD_GET_REG(RAD1_ERR_INT_EN);

	/* TxA0 Registers */
	BNAD_GET_REG(TXA0_CTRL_REG);
	/* TxA0 TSO Sequence # Registers (RO) */
	for (i = 0; i < 8; i++) {
		BNAD_GET_REG(TXA0_TSO_TCP_SEQ_REG(i));
		BNAD_GET_REG(TXA0_TSO_IP_INFO_REG(i));
	}

	/* TxA1 Registers */
	BNAD_GET_REG(TXA1_CTRL_REG);
	/* TxA1 TSO Sequence # Registers (RO) */
	for (i = 0; i < 8; i++) {
		BNAD_GET_REG(TXA1_TSO_TCP_SEQ_REG(i));
		BNAD_GET_REG(TXA1_TSO_IP_INFO_REG(i));
	}

	/* RxA Registers */
	BNAD_GET_REG(RXA0_CTL_REG);
	BNAD_GET_REG(RXA1_CTL_REG);

	/* PLB0 Registers */
	BNAD_GET_REG(PLB0_ECM_TIMER_REG);
	BNAD_GET_REG(PLB0_RL_CTL);
	for (i = 0; i < 8; i++)
		BNAD_GET_REG(PLB0_RL_MAX_BC(i));
	BNAD_GET_REG(PLB0_RL_TU_PRIO);
	for (i = 0; i < 8; i++)
		BNAD_GET_REG(PLB0_RL_BYTE_CNT(i));
	BNAD_GET_REG(PLB0_RL_MIN_REG);
	BNAD_GET_REG(PLB0_RL_MAX_REG);
	BNAD_GET_REG(PLB0_EMS_ADD_REG);

	/* PLB1 Registers */
	BNAD_GET_REG(PLB1_ECM_TIMER_REG);
	BNAD_GET_REG(PLB1_RL_CTL);
	for (i = 0; i < 8; i++)
		BNAD_GET_REG(PLB1_RL_MAX_BC(i));
	BNAD_GET_REG(PLB1_RL_TU_PRIO);
	for (i = 0; i < 8; i++)
		BNAD_GET_REG(PLB1_RL_BYTE_CNT(i));
	BNAD_GET_REG(PLB1_RL_MIN_REG);
	BNAD_GET_REG(PLB1_RL_MAX_REG);
	BNAD_GET_REG(PLB1_EMS_ADD_REG);

	/* HQM Control Register */
	BNAD_GET_REG(HQM0_CTL_REG);
	BNAD_GET_REG(HQM0_RXQ_STOP_SEM);
	BNAD_GET_REG(HQM0_TXQ_STOP_SEM);
	BNAD_GET_REG(HQM1_CTL_REG);
	BNAD_GET_REG(HQM1_RXQ_STOP_SEM);
	BNAD_GET_REG(HQM1_TXQ_STOP_SEM);

	/* LUT Registers */
	BNAD_GET_REG(LUT0_ERR_STS);
	BNAD_GET_REG(LUT0_SET_ERR_STS);
	BNAD_GET_REG(LUT1_ERR_STS);
	BNAD_GET_REG(LUT1_SET_ERR_STS);

	/* TRC Registers */
	BNAD_GET_REG(TRC_CTL_REG);
	BNAD_GET_REG(TRC_MODS_REG);
	BNAD_GET_REG(TRC_TRGC_REG);
	BNAD_GET_REG(TRC_CNT1_REG);
	BNAD_GET_REG(TRC_CNT2_REG);
	BNAD_GET_REG(TRC_NXTS_REG);
	BNAD_GET_REG(TRC_DIRR_REG);
	for (i = 0; i < 10; i++)
		BNAD_GET_REG(TRC_TRGM_REG(i));
	for (i = 0; i < 10; i++)
		BNAD_GET_REG(TRC_NXTM_REG(i));
	for (i = 0; i < 10; i++)
		BNAD_GET_REG(TRC_STRM_REG(i));

	spin_unlock_irqrestore(&bnad->bna_lock, flags);
#undef BNAD_GET_REG
	return num;
}
static int
bnad_get_regs_len(struct net_device *netdev)
{
	int ret = get_regs(netdev_priv(netdev), NULL) * sizeof(u32);
	return ret;
}

static void
bnad_get_regs(struct net_device *netdev, struct ethtool_regs *regs, void *buf)
{
	memset(buf, 0, bnad_get_regs_len(netdev));
	get_regs(netdev_priv(netdev), buf);
}

static void
bnad_get_wol(struct net_device *netdev, struct ethtool_wolinfo *wolinfo)
{
@@ -1192,8 +875,6 @@ static struct ethtool_ops bnad_ethtool_ops = {
	.get_settings = bnad_get_settings,
	.set_settings = bnad_set_settings,
	.get_drvinfo = bnad_get_drvinfo,
	.get_regs_len = bnad_get_regs_len,
	.get_regs = bnad_get_regs,
	.get_wol = bnad_get_wol,
	.get_link = ethtool_op_get_link,
	.get_coalesce = bnad_get_coalesce,