diff options
Diffstat (limited to 'drivers/net/sfc/mcdi.c')
| -rw-r--r-- | drivers/net/sfc/mcdi.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/drivers/net/sfc/mcdi.c b/drivers/net/sfc/mcdi.c index 683353b904c7..f66b3da6ddff 100644 --- a/drivers/net/sfc/mcdi.c +++ b/drivers/net/sfc/mcdi.c | |||
| @@ -127,7 +127,7 @@ static int efx_mcdi_poll(struct efx_nic *efx) | |||
| 127 | efx_dword_t reg; | 127 | efx_dword_t reg; |
| 128 | 128 | ||
| 129 | /* Check for a reboot atomically with respect to efx_mcdi_copyout() */ | 129 | /* Check for a reboot atomically with respect to efx_mcdi_copyout() */ |
| 130 | rc = efx_mcdi_poll_reboot(efx); | 130 | rc = -efx_mcdi_poll_reboot(efx); |
| 131 | if (rc) | 131 | if (rc) |
| 132 | goto out; | 132 | goto out; |
| 133 | 133 | ||
| @@ -142,8 +142,9 @@ static int efx_mcdi_poll(struct efx_nic *efx) | |||
| 142 | if (spins != 0) { | 142 | if (spins != 0) { |
| 143 | --spins; | 143 | --spins; |
| 144 | udelay(1); | 144 | udelay(1); |
| 145 | } else | 145 | } else { |
| 146 | schedule(); | 146 | schedule_timeout_uninterruptible(1); |
| 147 | } | ||
| 147 | 148 | ||
| 148 | time = get_seconds(); | 149 | time = get_seconds(); |
| 149 | 150 | ||
| @@ -803,7 +804,7 @@ int efx_mcdi_nvram_read(struct efx_nic *efx, unsigned int type, | |||
| 803 | loff_t offset, u8 *buffer, size_t length) | 804 | loff_t offset, u8 *buffer, size_t length) |
| 804 | { | 805 | { |
| 805 | u8 inbuf[MC_CMD_NVRAM_READ_IN_LEN]; | 806 | u8 inbuf[MC_CMD_NVRAM_READ_IN_LEN]; |
| 806 | u8 outbuf[MC_CMD_NVRAM_READ_OUT_LEN(length)]; | 807 | u8 outbuf[MC_CMD_NVRAM_READ_OUT_LEN(EFX_MCDI_NVRAM_LEN_MAX)]; |
| 807 | size_t outlen; | 808 | size_t outlen; |
| 808 | int rc; | 809 | int rc; |
| 809 | 810 | ||
| @@ -827,7 +828,7 @@ fail: | |||
| 827 | 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, |
| 828 | loff_t offset, const u8 *buffer, size_t length) | 829 | loff_t offset, const u8 *buffer, size_t length) |
| 829 | { | 830 | { |
| 830 | u8 inbuf[MC_CMD_NVRAM_WRITE_IN_LEN(length)]; | 831 | u8 inbuf[MC_CMD_NVRAM_WRITE_IN_LEN(EFX_MCDI_NVRAM_LEN_MAX)]; |
| 831 | int rc; | 832 | int rc; |
| 832 | 833 | ||
| 833 | MCDI_SET_DWORD(inbuf, NVRAM_WRITE_IN_TYPE, type); | 834 | MCDI_SET_DWORD(inbuf, NVRAM_WRITE_IN_TYPE, type); |
| @@ -837,7 +838,8 @@ int efx_mcdi_nvram_write(struct efx_nic *efx, unsigned int type, | |||
| 837 | 838 | ||
| 838 | BUILD_BUG_ON(MC_CMD_NVRAM_WRITE_OUT_LEN != 0); | 839 | BUILD_BUG_ON(MC_CMD_NVRAM_WRITE_OUT_LEN != 0); |
| 839 | 840 | ||
| 840 | 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), | ||
| 841 | NULL, 0, NULL); | 843 | NULL, 0, NULL); |
| 842 | if (rc) | 844 | if (rc) |
| 843 | goto fail; | 845 | goto fail; |
