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

Commit 6aa9c7f6 authored by Matthew Slattery's avatar Matthew Slattery Committed by Ben Hutchings
Browse files

sfc: Support extraction of CAPABILITIES from GET_BOARD_CFG response.

parent 5f3f9d6c
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -678,7 +678,7 @@ int efx_mcdi_drv_attach(struct efx_nic *efx, bool driver_operating,
}

int efx_mcdi_get_board_cfg(struct efx_nic *efx, u8 *mac_address,
			   u16 *fw_subtype_list)
			   u16 *fw_subtype_list, u32 *capabilities)
{
	uint8_t outbuf[MC_CMD_GET_BOARD_CFG_OUT_LENMIN];
	size_t outlen;
@@ -708,6 +708,14 @@ int efx_mcdi_get_board_cfg(struct efx_nic *efx, u8 *mac_address,
		       outbuf + MC_CMD_GET_BOARD_CFG_OUT_FW_SUBTYPE_LIST_OFST,
		       MC_CMD_GET_BOARD_CFG_OUT_FW_SUBTYPE_LIST_MINNUM *
		       sizeof(fw_subtype_list[0]));
	if (capabilities) {
		if (port_num)
			*capabilities = MCDI_DWORD(outbuf,
					GET_BOARD_CFG_OUT_CAPABILITIES_PORT1);
		else
			*capabilities = MCDI_DWORD(outbuf,
					GET_BOARD_CFG_OUT_CAPABILITIES_PORT0);
	}

	return 0;

+1 −1
Original line number Diff line number Diff line
@@ -97,7 +97,7 @@ extern void efx_mcdi_print_fwver(struct efx_nic *efx, char *buf, size_t len);
extern int efx_mcdi_drv_attach(struct efx_nic *efx, bool driver_operating,
			       bool *was_attached_out);
extern int efx_mcdi_get_board_cfg(struct efx_nic *efx, u8 *mac_address,
				  u16 *fw_subtype_list);
				  u16 *fw_subtype_list, u32 *capabilities);
extern int efx_mcdi_log_ctrl(struct efx_nic *efx, bool evq, bool uart,
			     u32 dest_evq);
extern int efx_mcdi_nvram_types(struct efx_nic *efx, u32 *nvram_types_out);
+1 −1
Original line number Diff line number Diff line
@@ -631,7 +631,7 @@ static int siena_mtd_get_fw_subtypes(struct efx_nic *efx,
	uint16_t fw_subtype_list[MC_CMD_GET_BOARD_CFG_OUT_FW_SUBTYPE_LIST_MINNUM];
	int rc;

	rc = efx_mcdi_get_board_cfg(efx, NULL, fw_subtype_list);
	rc = efx_mcdi_get_board_cfg(efx, NULL, fw_subtype_list, NULL);
	if (rc)
		return rc;

+1 −1
Original line number Diff line number Diff line
@@ -216,7 +216,7 @@ static int siena_reset_hw(struct efx_nic *efx, enum reset_type method)

static int siena_probe_nvconfig(struct efx_nic *efx)
{
	return efx_mcdi_get_board_cfg(efx, efx->net_dev->perm_addr, NULL);
	return efx_mcdi_get_board_cfg(efx, efx->net_dev->perm_addr, NULL, NULL);
}

static int siena_probe_nic(struct efx_nic *efx)