diff options
author | Uros Majstorovic <majstor@majstor.org> | 2021-08-27 02:29:43 +0200 |
---|---|---|
committer | Uros Majstorovic <majstor@majstor.org> | 2021-08-27 02:29:43 +0200 |
commit | 8c529f3b9b4538e307c67a2170c6a1fdd2e32934 (patch) | |
tree | 6123fa7489807c56f615670b6e0fe69714a55fce /fw/fe310/eos | |
parent | 331fcf483d9eac2e65e40ec35cf7558132c7c86f (diff) |
net driver fixed
Diffstat (limited to 'fw/fe310/eos')
-rw-r--r-- | fw/fe310/eos/net.c | 17 | ||||
-rw-r--r-- | fw/fe310/eos/net.h | 3 |
2 files changed, 11 insertions, 9 deletions
diff --git a/fw/fe310/eos/net.c b/fw/fe310/eos/net.c index 197c2b1..d42686d 100644 --- a/fw/fe310/eos/net.c +++ b/fw/fe310/eos/net.c @@ -19,6 +19,7 @@ #include "net.h" +#define NET_SIZE_HDR 3 #define NET_STATE_FLAG_RUN 0x01 #define NET_STATE_FLAG_INIT 0x02 #define NET_STATE_FLAG_XCHG 0x04 @@ -166,20 +167,20 @@ static void net_handle_xchg(void) { net_state_len_rx |= (r3 & 0xFF); len = MAX(net_state_len_tx, net_state_len_rx); - // esp32 bug workaraund - if (len < 5) { - len = 5; - } else if ((len + 3) % 4 != 0) { - len = ((len + 3)/4 + 1) * 4 - 3; - } - - if (len > EOS_NET_SIZE_BUF) { + if (len > EOS_NET_MTU) { net_state_flags &= ~NET_STATE_FLAG_XCHG; SPI1_REG(SPI_REG_CSMODE) = SPI_CSMODE_AUTO; SPI1_REG(SPI_REG_IE) = 0x0; return; } + // esp32 dma workaraund + if (len < 8 - NET_SIZE_HDR) { + len = 8 - NET_SIZE_HDR; + } else if ((len + NET_SIZE_HDR) % 4 != 0) { + len = ((len + NET_SIZE_HDR)/4 + 1) * 4 - NET_SIZE_HDR; + } + _eos_spi_xchg_init(net_state_buf, len, 0); SPI1_REG(SPI_REG_TXCTRL) = SPI_TXWM(SPI_SIZE_WM); SPI1_REG(SPI_REG_IE) = SPI_IP_TXWM; diff --git a/fw/fe310/eos/net.h b/fw/fe310/eos/net.h index ecefbec..574d179 100644 --- a/fw/fe310/eos/net.h +++ b/fw/fe310/eos/net.h @@ -2,7 +2,8 @@ #include "event.h" /* common */ -#define EOS_NET_SIZE_BUF 1500 +#define EOS_NET_MTU 1500 +#define EOS_NET_SIZE_BUF (EOS_NET_MTU + 4) #define EOS_NET_MTYPE_SOCK 1 #define EOS_NET_MTYPE_POWER 4 |