diff options
| -rw-r--r-- | drivers/net/sfc/mcdi.c | 7 | ||||
| -rw-r--r-- | drivers/net/sfc/mcdi.h | 1 | ||||
| -rw-r--r-- | drivers/net/sfc/mtd.c | 5 |
3 files changed, 7 insertions, 6 deletions
diff --git a/drivers/net/sfc/mcdi.c b/drivers/net/sfc/mcdi.c index 0d4eba7266ec..9f035b9f0350 100644 --- a/drivers/net/sfc/mcdi.c +++ b/drivers/net/sfc/mcdi.c | |||
| @@ -804,7 +804,7 @@ int efx_mcdi_nvram_read(struct efx_nic *efx, unsigned int type, | |||
| 804 | loff_t offset, u8 *buffer, size_t length) | 804 | loff_t offset, u8 *buffer, size_t length) |
| 805 | { | 805 | { |
| 806 | u8 inbuf[MC_CMD_NVRAM_READ_IN_LEN]; | 806 | u8 inbuf[MC_CMD_NVRAM_READ_IN_LEN]; |
| 807 | u8 outbuf[MC_CMD_NVRAM_READ_OUT_LEN(length)]; | 807 | u8 outbuf[MC_CMD_NVRAM_READ_OUT_LEN(EFX_MCDI_NVRAM_LEN_MAX)]; |
| 808 | size_t outlen; | 808 | size_t outlen; |
| 809 | int rc; | 809 | int rc; |
| 810 | 810 | ||
| @@ -828,7 +828,7 @@ fail: | |||
| 828 | int efx_mcdi_nvram_write(struct efx_nic *efx, unsigned int type, | 828 | int efx_mcdi_nvram_write(struct efx_nic *efx, unsigned int type, |
| 829 | loff_t offset, const u8 *buffer, size_t length) | 829 | loff_t offset, const u8 *buffer, size_t length) |
| 830 | { | 830 | { |
| 831 | u8 inbuf[MC_CMD_NVRAM_WRITE_IN_LEN(length)]; | 831 | u8 inbuf[MC_CMD_NVRAM_WRITE_IN_LEN(EFX_MCDI_NVRAM_LEN_MAX)]; |
| 832 | int rc; | 832 | int rc; |
| 833 | 833 | ||
| 834 | MCDI_SET_DWORD(inbuf, NVRAM_WRITE_IN_TYPE, type); | 834 | MCDI_SET_DWORD(inbuf, NVRAM_WRITE_IN_TYPE, type); |
| @@ -838,7 +838,8 @@ int efx_mcdi_nvram_write(struct efx_nic *efx, unsigned int type, | |||
| 838 | 838 | ||
| 839 | BUILD_BUG_ON(MC_CMD_NVRAM_WRITE_OUT_LEN != 0); | 839 | BUILD_BUG_ON(MC_CMD_NVRAM_WRITE_OUT_LEN != 0); |
| 840 | 840 | ||
| 841 | rc = efx_mcdi_rpc(efx, MC_CMD_NVRAM_WRITE, inbuf, sizeof(inbuf), | 841 | rc = efx_mcdi_rpc(efx, MC_CMD_NVRAM_WRITE, inbuf, |
| 842 | ALIGN(MC_CMD_NVRAM_WRITE_IN_LEN(length), 4), | ||
| 842 | NULL, 0, NULL); | 843 | NULL, 0, NULL); |
| 843 | if (rc) | 844 | if (rc) |
| 844 | goto fail; | 845 | goto fail; |
diff --git a/drivers/net/sfc/mcdi.h b/drivers/net/sfc/mcdi.h index de916728c2e3..10ce98f4c0fb 100644 --- a/drivers/net/sfc/mcdi.h +++ b/drivers/net/sfc/mcdi.h | |||
| @@ -111,6 +111,7 @@ extern int efx_mcdi_nvram_read(struct efx_nic *efx, unsigned int type, | |||
| 111 | extern int efx_mcdi_nvram_write(struct efx_nic *efx, unsigned int type, | 111 | extern int efx_mcdi_nvram_write(struct efx_nic *efx, unsigned int type, |
| 112 | loff_t offset, const u8 *buffer, | 112 | loff_t offset, const u8 *buffer, |
| 113 | size_t length); | 113 | size_t length); |
| 114 | #define EFX_MCDI_NVRAM_LEN_MAX 128 | ||
| 114 | extern int efx_mcdi_nvram_erase(struct efx_nic *efx, unsigned int type, | 115 | extern int efx_mcdi_nvram_erase(struct efx_nic *efx, unsigned int type, |
| 115 | loff_t offset, size_t length); | 116 | loff_t offset, size_t length); |
| 116 | extern int efx_mcdi_nvram_update_finish(struct efx_nic *efx, | 117 | extern int efx_mcdi_nvram_update_finish(struct efx_nic *efx, |
diff --git a/drivers/net/sfc/mtd.c b/drivers/net/sfc/mtd.c index 3a464529a46b..407bbaddfea6 100644 --- a/drivers/net/sfc/mtd.c +++ b/drivers/net/sfc/mtd.c | |||
| @@ -23,7 +23,6 @@ | |||
| 23 | #include "mcdi_pcol.h" | 23 | #include "mcdi_pcol.h" |
| 24 | 24 | ||
| 25 | #define EFX_SPI_VERIFY_BUF_LEN 16 | 25 | #define EFX_SPI_VERIFY_BUF_LEN 16 |
| 26 | #define EFX_MCDI_CHUNK_LEN 128 | ||
| 27 | 26 | ||
| 28 | struct efx_mtd_partition { | 27 | struct efx_mtd_partition { |
| 29 | struct mtd_info mtd; | 28 | struct mtd_info mtd; |
| @@ -428,7 +427,7 @@ static int siena_mtd_read(struct mtd_info *mtd, loff_t start, | |||
| 428 | int rc = 0; | 427 | int rc = 0; |
| 429 | 428 | ||
| 430 | while (offset < end) { | 429 | while (offset < end) { |
| 431 | chunk = min_t(size_t, end - offset, EFX_MCDI_CHUNK_LEN); | 430 | chunk = min_t(size_t, end - offset, EFX_MCDI_NVRAM_LEN_MAX); |
| 432 | rc = efx_mcdi_nvram_read(efx, part->mcdi.nvram_type, offset, | 431 | rc = efx_mcdi_nvram_read(efx, part->mcdi.nvram_type, offset, |
| 433 | buffer, chunk); | 432 | buffer, chunk); |
| 434 | if (rc) | 433 | if (rc) |
| @@ -491,7 +490,7 @@ static int siena_mtd_write(struct mtd_info *mtd, loff_t start, | |||
| 491 | } | 490 | } |
| 492 | 491 | ||
| 493 | while (offset < end) { | 492 | while (offset < end) { |
| 494 | chunk = min_t(size_t, end - offset, EFX_MCDI_CHUNK_LEN); | 493 | chunk = min_t(size_t, end - offset, EFX_MCDI_NVRAM_LEN_MAX); |
| 495 | rc = efx_mcdi_nvram_write(efx, part->mcdi.nvram_type, offset, | 494 | rc = efx_mcdi_nvram_write(efx, part->mcdi.nvram_type, offset, |
| 496 | buffer, chunk); | 495 | buffer, chunk); |
| 497 | if (rc) | 496 | if (rc) |
