|
@@ -38,6 +38,7 @@
|
|
|
* after lwIP initialization.
|
|
|
* 2013-02-28 aozima fixed list_tcps bug: ipaddr_ntoa isn't reentrant.
|
|
|
* 2016-08-18 Bernard port to lwIP 2.0.0
|
|
|
+ * 2020-08-10 lizhirui fixed some problems when this is running on 64-bit cpu
|
|
|
*/
|
|
|
|
|
|
#include "lwip/opt.h"
|
|
@@ -85,10 +86,10 @@ struct eth_tx_msg
|
|
|
static struct rt_mailbox eth_tx_thread_mb;
|
|
|
static struct rt_thread eth_tx_thread;
|
|
|
#ifndef RT_LWIP_ETHTHREAD_MBOX_SIZE
|
|
|
-static char eth_tx_thread_mb_pool[32 * 4];
|
|
|
+static char eth_tx_thread_mb_pool[32 * sizeof(rt_ubase_t)];
|
|
|
static char eth_tx_thread_stack[512];
|
|
|
#else
|
|
|
-static char eth_tx_thread_mb_pool[RT_LWIP_ETHTHREAD_MBOX_SIZE * 4];
|
|
|
+static char eth_tx_thread_mb_pool[RT_LWIP_ETHTHREAD_MBOX_SIZE * sizeof(rt_ubase_t)];
|
|
|
static char eth_tx_thread_stack[RT_LWIP_ETHTHREAD_STACKSIZE];
|
|
|
#endif
|
|
|
#endif
|
|
@@ -97,10 +98,10 @@ static char eth_tx_thread_stack[RT_LWIP_ETHTHREAD_STACKSIZE];
|
|
|
static struct rt_mailbox eth_rx_thread_mb;
|
|
|
static struct rt_thread eth_rx_thread;
|
|
|
#ifndef RT_LWIP_ETHTHREAD_MBOX_SIZE
|
|
|
-static char eth_rx_thread_mb_pool[48 * 4];
|
|
|
+static char eth_rx_thread_mb_pool[48 * sizeof(rt_ubase_t)];
|
|
|
static char eth_rx_thread_stack[1024];
|
|
|
#else
|
|
|
-static char eth_rx_thread_mb_pool[RT_LWIP_ETHTHREAD_MBOX_SIZE * 4];
|
|
|
+static char eth_rx_thread_mb_pool[RT_LWIP_ETHTHREAD_MBOX_SIZE * sizeof(rt_ubase_t)];
|
|
|
static char eth_rx_thread_stack[RT_LWIP_ETHTHREAD_STACKSIZE];
|
|
|
#endif
|
|
|
#endif
|
|
@@ -395,7 +396,7 @@ static err_t ethernetif_linkoutput(struct netif *netif, struct pbuf *p)
|
|
|
/* send a message to eth tx thread */
|
|
|
msg.netif = netif;
|
|
|
msg.buf = p;
|
|
|
- if (rt_mb_send(ð_tx_thread_mb, (rt_uint32_t) &msg) == RT_EOK)
|
|
|
+ if (rt_mb_send(ð_tx_thread_mb, (rt_ubase_t) &msg) == RT_EOK)
|
|
|
{
|
|
|
/* waiting for ack */
|
|
|
rt_sem_take(&(enetif->tx_ack), RT_WAITING_FOREVER);
|
|
@@ -599,7 +600,7 @@ rt_err_t eth_device_ready(struct eth_device* dev)
|
|
|
{
|
|
|
if (dev->netif)
|
|
|
/* post message to Ethernet thread */
|
|
|
- return rt_mb_send(ð_rx_thread_mb, (rt_uint32_t)dev);
|
|
|
+ return rt_mb_send(ð_rx_thread_mb, (rt_ubase_t)dev);
|
|
|
else
|
|
|
return ERR_OK; /* netif is not initialized yet, just return. */
|
|
|
}
|
|
@@ -619,7 +620,7 @@ rt_err_t eth_device_linkchange(struct eth_device* dev, rt_bool_t up)
|
|
|
rt_hw_interrupt_enable(level);
|
|
|
|
|
|
/* post message to ethernet thread */
|
|
|
- return rt_mb_send(ð_rx_thread_mb, (rt_uint32_t)dev);
|
|
|
+ return rt_mb_send(ð_rx_thread_mb, (rt_ubase_t)dev);
|
|
|
}
|
|
|
#else
|
|
|
/* NOTE: please not use it in interrupt when no RxThread exist */
|
|
@@ -739,7 +740,7 @@ int eth_system_device_init_private(void)
|
|
|
#ifndef LWIP_NO_RX_THREAD
|
|
|
/* initialize mailbox and create Ethernet Rx thread */
|
|
|
result = rt_mb_init(ð_rx_thread_mb, "erxmb",
|
|
|
- ð_rx_thread_mb_pool[0], sizeof(eth_rx_thread_mb_pool)/4,
|
|
|
+ ð_rx_thread_mb_pool[0], sizeof(eth_rx_thread_mb_pool)/sizeof(rt_ubase_t),
|
|
|
RT_IPC_FLAG_FIFO);
|
|
|
RT_ASSERT(result == RT_EOK);
|
|
|
|
|
@@ -755,7 +756,7 @@ int eth_system_device_init_private(void)
|
|
|
#ifndef LWIP_NO_TX_THREAD
|
|
|
/* initialize mailbox and create Ethernet Tx thread */
|
|
|
result = rt_mb_init(ð_tx_thread_mb, "etxmb",
|
|
|
- ð_tx_thread_mb_pool[0], sizeof(eth_tx_thread_mb_pool)/4,
|
|
|
+ ð_tx_thread_mb_pool[0], sizeof(eth_tx_thread_mb_pool)/sizeof(rt_ubase_t),
|
|
|
RT_IPC_FLAG_FIFO);
|
|
|
RT_ASSERT(result == RT_EOK);
|
|
|
|