diff options
author | Ben Hutchings <bhutchings@solarflare.com> | 2011-09-01 08:09:59 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-09-15 17:31:31 -0400 |
commit | 483f97f8b2b7f0ab09e14c06fe327d5e346fac28 (patch) | |
tree | df6cc36a23013bbeb5ebcac6bad9272924fc3531 | |
parent | 86c432ca5d6da90a26ac8d3e680f2268b502d9c5 (diff) |
sfc: Use 64-bit writes for TX push where possible
This was originally done as part of commit
65f0b417dee94f779ce9b77102b7d73c93723b39 ("sfc: Use write-combining to
reduce TX latency"), but that had to be reverted.
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/sfc/io.h | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/net/sfc/io.h b/drivers/net/sfc/io.h index dc45110b2456..751d1ec112cc 100644 --- a/drivers/net/sfc/io.h +++ b/drivers/net/sfc/io.h | |||
@@ -48,9 +48,9 @@ | |||
48 | * replacing the low 96 bits with zero does not affect functionality. | 48 | * replacing the low 96 bits with zero does not affect functionality. |
49 | * - If the host writes to the last dword address of such a register | 49 | * - If the host writes to the last dword address of such a register |
50 | * (i.e. the high 32 bits) the underlying register will always be | 50 | * (i.e. the high 32 bits) the underlying register will always be |
51 | * written. If the collector does not hold values for the low 96 | 51 | * written. If the collector and the current write together do not |
52 | * bits of the register, they will be written as zero. Writing to | 52 | * provide values for all 128 bits of the register, the low 96 bits |
53 | * the last qword does not have this effect and must not be done. | 53 | * will be written as zero. |
54 | * - If the host writes to the address of any other part of such a | 54 | * - If the host writes to the address of any other part of such a |
55 | * register while the collector already holds values for some other | 55 | * register while the collector already holds values for some other |
56 | * register, the write is discarded and the collector maintains its | 56 | * register, the write is discarded and the collector maintains its |
@@ -237,12 +237,13 @@ static inline void _efx_writeo_page(struct efx_nic *efx, efx_oword_t *value, | |||
237 | 237 | ||
238 | #ifdef EFX_USE_QWORD_IO | 238 | #ifdef EFX_USE_QWORD_IO |
239 | _efx_writeq(efx, value->u64[0], reg + 0); | 239 | _efx_writeq(efx, value->u64[0], reg + 0); |
240 | _efx_writeq(efx, value->u64[1], reg + 8); | ||
240 | #else | 241 | #else |
241 | _efx_writed(efx, value->u32[0], reg + 0); | 242 | _efx_writed(efx, value->u32[0], reg + 0); |
242 | _efx_writed(efx, value->u32[1], reg + 4); | 243 | _efx_writed(efx, value->u32[1], reg + 4); |
243 | #endif | ||
244 | _efx_writed(efx, value->u32[2], reg + 8); | 244 | _efx_writed(efx, value->u32[2], reg + 8); |
245 | _efx_writed(efx, value->u32[3], reg + 12); | 245 | _efx_writed(efx, value->u32[3], reg + 12); |
246 | #endif | ||
246 | } | 247 | } |
247 | #define efx_writeo_page(efx, value, reg, page) \ | 248 | #define efx_writeo_page(efx, value, reg, page) \ |
248 | _efx_writeo_page(efx, value, \ | 249 | _efx_writeo_page(efx, value, \ |