Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Duet3D/RepRapFirmware.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Crocker <dcrocker@eschertech.com>2021-03-29 18:35:14 +0300
committerDavid Crocker <dcrocker@eschertech.com>2021-03-29 18:35:14 +0300
commita0107afa3b152b31ec8ab52f70d07433374a744c (patch)
treeb65d122efba16d240fa7c46b1d3355433565f401 /src/Networking
parent1a819c3885ef108eb1224586bc010f2d90f2fec0 (diff)
Use aligned allocation of DMA buffers for optimum canch invalidation
Diffstat (limited to 'src/Networking')
-rw-r--r--src/Networking/ESP8266WiFi/WiFiInterface.cpp7
-rw-r--r--src/Networking/ESP8266WiFi/WiFiInterface.h2
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