diff options
author | David Crocker <dcrocker@eschertech.com> | 2021-03-29 18:35:14 +0300 |
---|---|---|
committer | David Crocker <dcrocker@eschertech.com> | 2021-03-29 18:35:14 +0300 |
commit | a0107afa3b152b31ec8ab52f70d07433374a744c (patch) | |
tree | b65d122efba16d240fa7c46b1d3355433565f401 /src/Networking | |
parent | 1a819c3885ef108eb1224586bc010f2d90f2fec0 (diff) |
Use aligned allocation of DMA buffers for optimum canch invalidation
Diffstat (limited to 'src/Networking')
-rw-r--r-- | src/Networking/ESP8266WiFi/WiFiInterface.cpp | 7 | ||||
-rw-r--r-- | src/Networking/ESP8266WiFi/WiFiInterface.h | 2 |
2 files changed, 5 insertions, 4 deletions
diff --git a/src/Networking/ESP8266WiFi/WiFiInterface.cpp b/src/Networking/ESP8266WiFi/WiFiInterface.cpp index 4b199e37..3f2071d8 100644 --- a/src/Networking/ESP8266WiFi/WiFiInterface.cpp +++ b/src/Networking/ESP8266WiFi/WiFiInterface.cpp @@ -1850,9 +1850,8 @@ int32_t WiFiInterface::SendCommand(NetworkCommand cmd, SocketNumber socketNum, u while (!spi_dma_check_rx_complete()) { } // Wait for DMA to complete #endif - Cache::InvalidateAfterDMAReceive(&bufferIn, sizeof(bufferIn)); - // Look at the response + Cache::InvalidateAfterDMAReceive(&bufferIn, sizeof(MessageHeaderEspToSam)); if (bufferIn->hdr.formatVersion != MyFormatVersion) { if (reprap.Debug(moduleNetwork)) @@ -1873,7 +1872,9 @@ int32_t WiFiInterface::SendCommand(NetworkCommand cmd, SocketNumber socketNum, u const int32_t response = bufferIn->hdr.response; if (response > 0 && dataIn != nullptr) { - memcpy(dataIn, bufferIn->data, min<size_t>(dataInLength, (size_t)response)); + const size_t sizeToCopy = min<size_t>(dataInLength, (size_t)response); + Cache::InvalidateAfterDMAReceive(bufferIn->data, sizeToCopy); + memcpy(dataIn, bufferIn->data, sizeToCopy); } if (response < 0 && reprap.Debug(moduleNetwork)) diff --git a/src/Networking/ESP8266WiFi/WiFiInterface.h b/src/Networking/ESP8266WiFi/WiFiInterface.h index a258446f..fffa509b 100644 --- a/src/Networking/ESP8266WiFi/WiFiInterface.h +++ b/src/Networking/ESP8266WiFi/WiFiInterface.h @@ -120,7 +120,7 @@ private: uint8_t data[MaxDataLength]; // data to send }; - struct MessageBufferIn + struct alignas(16) MessageBufferIn { MessageHeaderEspToSam hdr; uint8_t data[MaxDataLength]; // data to send |