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

Commit e3f5ec11 authored by Ben Hutchings's avatar Ben Hutchings
Browse files

sfc: Support variable-length response to MCDI GET_BOARD_CFG

parent bfeed902
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -683,12 +683,14 @@ int efx_mcdi_get_board_cfg(struct efx_nic *efx, u8 *mac_address,
	if (mac_address)
		memcpy(mac_address, outbuf + offset, ETH_ALEN);
	if (fw_subtype_list) {
		/* Byte-swap and truncate or zero-pad as necessary */
		offset = MC_CMD_GET_BOARD_CFG_OUT_FW_SUBTYPE_LIST_OFST;
		for (i = 0;
		     i < MC_CMD_GET_BOARD_CFG_OUT_FW_SUBTYPE_LIST_MINNUM;
		     i < MC_CMD_GET_BOARD_CFG_OUT_FW_SUBTYPE_LIST_MAXNUM;
		     i++) {
			fw_subtype_list[i] =
				le16_to_cpup((__le16 *)(outbuf + offset));
				(offset + 2 <= outlen) ?
				le16_to_cpup((__le16 *)(outbuf + offset)) : 0;
			offset += 2;
		}
	}
+2 −1
Original line number Diff line number Diff line
@@ -627,7 +627,8 @@ static int siena_mtd_get_fw_subtypes(struct efx_nic *efx,
				     struct efx_mtd *efx_mtd)
{
	struct efx_mtd_partition *part;
	uint16_t fw_subtype_list[MC_CMD_GET_BOARD_CFG_OUT_FW_SUBTYPE_LIST_MINNUM];
	uint16_t fw_subtype_list[
		MC_CMD_GET_BOARD_CFG_OUT_FW_SUBTYPE_LIST_MAXNUM];
	int rc;

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