forked from xuos/xiuos
				
			23/08/03 Add Netdev to xidatong-arm32
This commit is contained in:
		
							parent
							
								
									06b9d67f2d
								
							
						
					
					
						commit
						219575898a
					
				| 
						 | 
					@ -1,16 +0,0 @@
 | 
				
			||||||
 | 
					 | 
				
			||||||
# include $(APPDIR)/Application.mk
 | 
					 | 
				
			||||||
# ifeq ($(CONFIG_ADD_NUTTX_FETURES),y)
 | 
					 | 
				
			||||||
    # include $(APPDIR)/Make.defs
 | 
					 | 
				
			||||||
    # CSRCS += $(wildcard src/*/*.c) $(wildcard support/*.c)
 | 
					 | 
				
			||||||
    # include $(APPDIR)/Application.mk
 | 
					 | 
				
			||||||
# endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# ifeq ($(CONFIG_ADD_XIZI_FEATURES),y)
 | 
					 | 
				
			||||||
	SRC_DIR := 
 | 
					 | 
				
			||||||
	ifeq ($(CONFIG_APP_BENCHMARK), y)
 | 
					 | 
				
			||||||
		SRC_DIR += src
 | 
					 | 
				
			||||||
		SRC_DIR += support
 | 
					 | 
				
			||||||
	endif
 | 
					 | 
				
			||||||
	include $(KERNEL_ROOT)/compiler.mk
 | 
					 | 
				
			||||||
# endif
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1 +1 @@
 | 
				
			||||||
Subproject commit 83d987597cf027177fb3798c6da547a3d3e3d5e1
 | 
					Subproject commit 60a8a500b93b47876c6eaff600e4cf2b8bf7b283
 | 
				
			||||||
| 
						 | 
					@ -164,7 +164,7 @@ int PrivTimerModify(timer_t timerid, int flags, const struct itimerspec *restric
 | 
				
			||||||
/*********************fs**************************/
 | 
					/*********************fs**************************/
 | 
				
			||||||
#ifdef FS_VFS
 | 
					#ifdef FS_VFS
 | 
				
			||||||
/************************Driver Posix Transform***********************/
 | 
					/************************Driver Posix Transform***********************/
 | 
				
			||||||
int PrivOpen(const char *path, int flags)
 | 
					int PrivOpen(const char *path, int flags, ...)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    return open(path, flags);
 | 
					    return open(path, flags);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -427,7 +427,7 @@ uint32_t PrivGetTickTime();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*********************driver*************************/
 | 
					/*********************driver*************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int PrivOpen(const char *path, int flags);
 | 
					int PrivOpen(const char *path, int flags, ...);
 | 
				
			||||||
int PrivRead(int fd, void *buf, size_t len);
 | 
					int PrivRead(int fd, void *buf, size_t len);
 | 
				
			||||||
int PrivWrite(int fd, const void *buf, size_t len);
 | 
					int PrivWrite(int fd, const void *buf, size_t len);
 | 
				
			||||||
int PrivClose(int fd);
 | 
					int PrivClose(int fd);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -45,7 +45,7 @@ ssize_t mq_receive(mqd_t mqdes, char* msg_ptr, size_t msg_len, unsigned* msg_pri
 | 
				
			||||||
    ssize_t ret;
 | 
					    ssize_t ret;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    *msg_prio = 0;
 | 
					    *msg_prio = 0;
 | 
				
			||||||
    ret = UserMsgQueueRecv(mqdes, (void*)msg_ptr, msg_len, 100000);
 | 
					    ret = UserMsgQueueRecv(mqdes, (void*)msg_ptr, msg_len, WAITING_FOREVER);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return ret;
 | 
					    return ret;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,16 +0,0 @@
 | 
				
			||||||
 | 
					 | 
				
			||||||
# include $(APPDIR)/Application.mk
 | 
					 | 
				
			||||||
ifeq ($(CONFIG_ADD_NUTTX_FETURES),y)
 | 
					 | 
				
			||||||
    include $(APPDIR)/Make.defs
 | 
					 | 
				
			||||||
    CSRCS += $(wildcard src/*/*.c) $(wildcard support/*.c)
 | 
					 | 
				
			||||||
    include $(APPDIR)/Application.mk
 | 
					 | 
				
			||||||
endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
ifeq ($(CONFIG_ADD_XIZI_FEATURES),y)
 | 
					 | 
				
			||||||
	SRC_DIR := 
 | 
					 | 
				
			||||||
	ifeq ($(CONFIG_APP_BENCHMARK), y)
 | 
					 | 
				
			||||||
		SRC_DIR += src
 | 
					 | 
				
			||||||
		SRC_DIR += support
 | 
					 | 
				
			||||||
	endif
 | 
					 | 
				
			||||||
	include $(KERNEL_ROOT)/compiler.mk
 | 
					 | 
				
			||||||
endif
 | 
					 | 
				
			||||||
| 
						 | 
					@ -190,44 +190,6 @@ void Time_Update_LwIP(void)
 | 
				
			||||||
    // no need to do
 | 
					    // no need to do
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * @brief  Should be called at the beginning of the program to set up the network interface.
 | 
					 | 
				
			||||||
 * @param  netif                        The network interface structure for this ethernetif.
 | 
					 | 
				
			||||||
 * @retval err_t:
 | 
					 | 
				
			||||||
 *           - LL_OK: The IF is initialized
 | 
					 | 
				
			||||||
 *           - LL_ERR: The IF is uninitialized
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
err_t ethernetif_init(struct netif* netif)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
#if LWIP_NETIF_HOSTNAME
 | 
					 | 
				
			||||||
    /* Initialize interface hostname */
 | 
					 | 
				
			||||||
    netif->hostname = "lwip";
 | 
					 | 
				
			||||||
#endif /* LWIP_NETIF_HOSTNAME */
 | 
					 | 
				
			||||||
    netif->name[0] = IFNAME0;
 | 
					 | 
				
			||||||
    netif->name[1] = IFNAME1;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifndef ETHERNET_LOOPBACK_TEST
 | 
					 | 
				
			||||||
    /* We directly use etharp_output() here to save a function call.
 | 
					 | 
				
			||||||
     * You can instead declare your own function an call etharp_output()
 | 
					 | 
				
			||||||
     * from it if you have to do some checks before sending (e.g. if link
 | 
					 | 
				
			||||||
     * is available...) */
 | 
					 | 
				
			||||||
    netif->output = etharp_output;
 | 
					 | 
				
			||||||
    netif->linkoutput = low_level_output;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /* initialize the hardware */
 | 
					 | 
				
			||||||
    if (LL_OK != low_level_init(netif)) {
 | 
					 | 
				
			||||||
        return LL_ERR;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (EOK != lwip_netdev_add(netif)) {
 | 
					 | 
				
			||||||
        SYS_KDEBUG_LOG(NETDEV_DEBUG, ("[%s] LWIP add netdev failed.\n", __func__));
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
        printf("[%s] Add Netdev successful\n", __func__);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return LL_OK;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * @brief  This function should be called when a packet is ready to be read from the interface.
 | 
					 * @brief  This function should be called when a packet is ready to be read from the interface.
 | 
				
			||||||
 * @param  netif                        The network interface structure for this ethernetif.
 | 
					 * @param  netif                        The network interface structure for this ethernetif.
 | 
				
			||||||
| 
						 | 
					@ -267,6 +229,45 @@ void ethernetif_input(void* netif_arg)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @brief  Should be called at the beginning of the program to set up the network interface.
 | 
				
			||||||
 | 
					 * @param  netif                        The network interface structure for this ethernetif.
 | 
				
			||||||
 | 
					 * @retval err_t:
 | 
				
			||||||
 | 
					 *           - LL_OK: The IF is initialized
 | 
				
			||||||
 | 
					 *           - LL_ERR: The IF is uninitialized
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					err_t ethernetif_init(struct netif* netif)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					#if LWIP_NETIF_HOSTNAME
 | 
				
			||||||
 | 
					    /* Initialize interface hostname */
 | 
				
			||||||
 | 
					    netif->hostname = "lwip";
 | 
				
			||||||
 | 
					#endif /* LWIP_NETIF_HOSTNAME */
 | 
				
			||||||
 | 
					    netif->name[0] = IFNAME0;
 | 
				
			||||||
 | 
					    netif->name[1] = IFNAME1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef ETHERNET_LOOPBACK_TEST
 | 
				
			||||||
 | 
					    /* We directly use etharp_output() here to save a function call.
 | 
				
			||||||
 | 
					     * You can instead declare your own function an call etharp_output()
 | 
				
			||||||
 | 
					     * from it if you have to do some checks before sending (e.g. if link
 | 
				
			||||||
 | 
					     * is available...) */
 | 
				
			||||||
 | 
					    netif->output = etharp_output;
 | 
				
			||||||
 | 
					    netif->linkoutput = low_level_output;
 | 
				
			||||||
 | 
					    // netif->linkoutput = ethernetif_linkoutput;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* initialize the hardware */
 | 
				
			||||||
 | 
					    if (LL_OK != low_level_init(netif)) {
 | 
				
			||||||
 | 
					        return LL_ERR;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (EOK != lwip_netdev_add(netif)) {
 | 
				
			||||||
 | 
					        SYS_KDEBUG_LOG(NETDEV_DEBUG, ("[%s] LWIP add netdev failed.\n", __func__));
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        printf("[%s] Add Netdev successful\n", __func__);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return LL_OK;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * @brief  Check the netif link status.
 | 
					 * @brief  Check the netif link status.
 | 
				
			||||||
 * @param  netif the network interface
 | 
					 * @param  netif the network interface
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,3 @@
 | 
				
			||||||
SRC_FILES := enet_ethernetif.c enet_ethernetif_kinetis.c fsl_enet.c
 | 
					SRC_FILES := enet_ethernetif.c enet_ethernetif_kinetis.c fsl_enet.c eth_netdev.c
 | 
				
			||||||
SRC_DIR := lan8720
 | 
					SRC_DIR := lan8720
 | 
				
			||||||
include $(KERNEL_ROOT)/compiler.mk
 | 
					include $(KERNEL_ROOT)/compiler.mk
 | 
				
			||||||
| 
						 | 
					@ -68,6 +68,7 @@
 | 
				
			||||||
#include "fsl_gpio.h"
 | 
					#include "fsl_gpio.h"
 | 
				
			||||||
#include "fsl_iomuxc.h"
 | 
					#include "fsl_iomuxc.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "netdev.h"
 | 
				
			||||||
#include "sys_arch.h"
 | 
					#include "sys_arch.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*******************************************************************************
 | 
					/*******************************************************************************
 | 
				
			||||||
| 
						 | 
					@ -319,6 +320,12 @@ err_t ethernetif_init(struct netif *netif, struct ethernetif *ethernetif,
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
#endif /* LWIP_IPV6 && LWIP_IPV6_MLD */
 | 
					#endif /* LWIP_IPV6 && LWIP_IPV6_MLD */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    SYS_KDEBUG_LOG(NETDEV_DEBUG, ("[%s] Adding netdev.\n", __func__));
 | 
				
			||||||
 | 
					    if (EOK != lwip_netdev_add(netif)) {
 | 
				
			||||||
 | 
					        SYS_KDEBUG_LOG(NETDEV_DEBUG, ("[%s] LWIP add netdev failed.\n", __func__));
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        printf("[%s] Add Netdev successful\n", __func__);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    return ERR_OK;
 | 
					    return ERR_OK;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,163 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <connect_ethernet.h>
 | 
				
			||||||
 | 
					#include <inet.h>
 | 
				
			||||||
 | 
					#include <lwip/dhcp.h>
 | 
				
			||||||
 | 
					#include <lwip/netif.h>
 | 
				
			||||||
 | 
					#include <netdev.h>
 | 
				
			||||||
 | 
					#include <xs_kdbg.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const uint32_t NETIF_NAME_LEN = 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lwip_netdev_set_up(struct netdev* netdev)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    netif_set_up((struct netif*)netdev->user_data);
 | 
				
			||||||
 | 
					    return ERR_OK;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lwip_netdev_set_down(struct netdev* netif)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    netif_set_down((struct netif*)netif->user_data);
 | 
				
			||||||
 | 
					    return ERR_OK;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef ip_2_ip4
 | 
				
			||||||
 | 
					#define ip_2_ip4(ipaddr) (ipaddr)
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					static int lwip_netdev_set_addr_info(struct netdev* netdev, ip_addr_t* ip_addr, ip_addr_t* netmask, ip_addr_t* gw)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    if (ip_addr && netmask && gw) {
 | 
				
			||||||
 | 
					        netif_set_addr((struct netif*)netdev->user_data, ip_2_ip4(ip_addr), ip_2_ip4(netmask), ip_2_ip4(gw));
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        if (ip_addr) {
 | 
				
			||||||
 | 
					            netif_set_ipaddr((struct netif*)netdev->user_data, ip_2_ip4(ip_addr));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (netmask) {
 | 
				
			||||||
 | 
					            netif_set_netmask((struct netif*)netdev->user_data, ip_2_ip4(netmask));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (gw) {
 | 
				
			||||||
 | 
					            netif_set_gw((struct netif*)netdev->user_data, ip_2_ip4(gw));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef LWIP_DNS
 | 
				
			||||||
 | 
					static int lwip_netdev_set_dns_server(struct netdev* netdev, uint8_t dns_num, ip_addr_t* dns_server)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					#if LWIP_VERSION_MAJOR == 1U /* v1.x */
 | 
				
			||||||
 | 
					    extern void dns_setserver(u8_t numdns, ip_addr_t * dnsserver);
 | 
				
			||||||
 | 
					#else /* >=2.x */
 | 
				
			||||||
 | 
					    extern void dns_setserver(uint8_t dns_num, const ip_addr_t* dns_server);
 | 
				
			||||||
 | 
					#endif /* LWIP_VERSION_MAJOR == 1U */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    dns_setserver(dns_num, dns_server);
 | 
				
			||||||
 | 
					    return ERR_OK;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef LWIP_DHCP
 | 
				
			||||||
 | 
					static int lwip_netdev_set_dhcp(struct netdev* netdev, bool is_enabled)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    netdev_low_level_set_dhcp_status(netdev, is_enabled);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (true == is_enabled) {
 | 
				
			||||||
 | 
					        dhcp_start((struct netif*)netdev->user_data);
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        dhcp_stop((struct netif*)netdev->user_data);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return ERR_OK;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int lwip_netdev_set_default(struct netdev* netdev)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    netif_set_default((struct netif*)netdev->user_data);
 | 
				
			||||||
 | 
					    return ERR_OK;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const struct netdev_ops lwip_netdev_ops = {
 | 
				
			||||||
 | 
					    .set_up = lwip_netdev_set_up,
 | 
				
			||||||
 | 
					    .set_down = lwip_netdev_set_down,
 | 
				
			||||||
 | 
					    .set_addr_info = lwip_netdev_set_addr_info,
 | 
				
			||||||
 | 
					#ifdef LWIP_DNS
 | 
				
			||||||
 | 
					    .set_dns_server = lwip_netdev_set_dns_server,
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifdef LWIP_DHCP
 | 
				
			||||||
 | 
					    .set_dhcp = lwip_netdev_set_dhcp,
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					    .set_default = lwip_netdev_set_default,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline int netdev_set_flags(struct netif* lwip_netif)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    CHECK(lwip_netif);
 | 
				
			||||||
 | 
					    struct netdev* netdev = netdev_get_by_name(lwip_netif->name);
 | 
				
			||||||
 | 
					    if (netdev == NULL) {
 | 
				
			||||||
 | 
					        return -ERR_IF;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    netdev->mtu = lwip_netif->mtu;
 | 
				
			||||||
 | 
					    // set flags
 | 
				
			||||||
 | 
					    if (lwip_netif->flags | NETIF_FLAG_BROADCAST) {
 | 
				
			||||||
 | 
					        netdev->flags |= NETDEV_FLAG_BROADCAST;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (lwip_netif->flags | NETIF_FLAG_ETHARP) {
 | 
				
			||||||
 | 
					        netdev->flags |= NETDEV_FLAG_ETHARP;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (lwip_netif->flags | NETIF_FLAG_IGMP) {
 | 
				
			||||||
 | 
					        netdev->flags |= NETDEV_FLAG_IGMP;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					#if LWIP_VERSION_MAJOR >= 2U /* >= v2.x */
 | 
				
			||||||
 | 
					    if (lwip_netif->flags & NETIF_FLAG_MLD6) {
 | 
				
			||||||
 | 
					        netdev->flags |= NETDEV_FLAG_MLD6;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					#endif /* LWIP_VERSION_MAJOR >= 2U */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if LWIP_DHCP
 | 
				
			||||||
 | 
					    netdev_low_level_set_dhcp_status(netdev, true);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					    netdev_low_level_set_dhcp_status(netdev, false);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return ERR_OK;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int lwip_netdev_add(struct netif* lwip_netif)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    CHECK(lwip_netif);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    struct netdev* netdev = calloc(1, sizeof(struct netdev));
 | 
				
			||||||
 | 
					    if (netdev == NULL) {
 | 
				
			||||||
 | 
					        return -ERR_IF;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // init netdev
 | 
				
			||||||
 | 
					    char netif_name[NETIF_NAME_LEN + 1];
 | 
				
			||||||
 | 
					    SYS_KDEBUG_LOG(NETDEV_DEBUG, ("[%s] Lwip netif name: %s\n", __func__, lwip_netif->name));
 | 
				
			||||||
 | 
					    strncpy(netif_name, lwip_netif->name, NETIF_NAME_LEN);
 | 
				
			||||||
 | 
					    // register netdev
 | 
				
			||||||
 | 
					    int result = netdev_register(netdev, netif_name, (void*)lwip_netif);
 | 
				
			||||||
 | 
					    // set values of netdev
 | 
				
			||||||
 | 
					    netdev_set_flags(lwip_netif);
 | 
				
			||||||
 | 
					    netdev->ops = &lwip_netdev_ops;
 | 
				
			||||||
 | 
					    netdev->hwaddr_len = lwip_netif->hwaddr_len;
 | 
				
			||||||
 | 
					    memcpy(netdev->hwaddr, lwip_netif->hwaddr, lwip_netif->hwaddr_len);
 | 
				
			||||||
 | 
					    netdev->ip_addr = lwip_netif->ip_addr;
 | 
				
			||||||
 | 
					    netdev->gw = lwip_netif->gw;
 | 
				
			||||||
 | 
					    netdev->netmask = lwip_netif->netmask;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return result;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void lwip_netdev_del(struct netif* lwip_netif)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    char name[NETIF_NAME_LEN + 1];
 | 
				
			||||||
 | 
					    struct netdev* netdev;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    CHECK(lwip_netif);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    strncpy(name, lwip_netif->name, NETIF_NAME_LEN);
 | 
				
			||||||
 | 
					    netdev = netdev_get_by_name(name);
 | 
				
			||||||
 | 
					    netdev_unregister(netdev);
 | 
				
			||||||
 | 
					    free(netdev);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -33,6 +33,8 @@
 | 
				
			||||||
#define sourceClock CLOCK_GetFreq(kCLOCK_CoreSysClk)
 | 
					#define sourceClock CLOCK_GetFreq(kCLOCK_CoreSysClk)
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int lwip_netdev_add(struct netif* lwip_netif);
 | 
				
			||||||
 | 
					void lwip_netdev_del(struct netif* lwip_netif);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __cplusplus
 | 
					#ifdef __cplusplus
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -772,7 +772,8 @@ int stat(const char *path, struct stat *buf)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ret = mp->fs->stat(mp, relpath, &vfs_statbuf);
 | 
					    ret = mp->fs->stat(mp, relpath, &vfs_statbuf);
 | 
				
			||||||
    if (ret < 0) {
 | 
					    if (ret < 0) {
 | 
				
			||||||
        SYS_ERR("%s: stat file failed\n", __func__);
 | 
					        // stat() is absolutely fine to check if a file exists
 | 
				
			||||||
 | 
					        // SYS_ERR("%s: stat file failed\n", __func__);
 | 
				
			||||||
        goto err;
 | 
					        goto err;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -790,7 +791,6 @@ err:
 | 
				
			||||||
    free(abspath);
 | 
					    free(abspath);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (ret < 0) {
 | 
					    if (ret < 0) {
 | 
				
			||||||
        KUpdateExstatus(ret);
 | 
					 | 
				
			||||||
        return -1;
 | 
					        return -1;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,6 +43,9 @@ extern "C" {
 | 
				
			||||||
#define KDBG_HOOK 0
 | 
					#define KDBG_HOOK 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define MSGQUEUE_DEBUG 0
 | 
					#define MSGQUEUE_DEBUG 0
 | 
				
			||||||
 | 
					#define FILESYS_DEBUG 0
 | 
				
			||||||
 | 
					#define NETDEV_DEBUG 0
 | 
				
			||||||
 | 
					#define WEBNET_DEBUG 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define SYS_KDEBUG_LOG(section, information) \
 | 
					#define SYS_KDEBUG_LOG(section, information) \
 | 
				
			||||||
    do {                                     \
 | 
					    do {                                     \
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -53,6 +53,7 @@ KERNELPATHS += \
 | 
				
			||||||
	-I$(KERNEL_ROOT)/resources/ethernet/LwIP/include/lwip/prot \
 | 
						-I$(KERNEL_ROOT)/resources/ethernet/LwIP/include/lwip/prot \
 | 
				
			||||||
	-I$(KERNEL_ROOT)/resources/ethernet/LwIP/arch 
 | 
						-I$(KERNEL_ROOT)/resources/ethernet/LwIP/arch 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					KERNELPATHS += -I$(KERNEL_ROOT)/resources/include/netdev
 | 
				
			||||||
endif 
 | 
					endif 
 | 
				
			||||||
endif
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -347,6 +347,8 @@ void lwip_config_input(struct netif* net)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void lwip_config_tcp(uint8_t enet_port, char* ip, char* mask, char* gw)
 | 
					void lwip_config_tcp(uint8_t enet_port, char* ip, char* mask, char* gw)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    sys_sem_new(get_eth_recv_sem(), 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ip4_addr_t net_ipaddr, net_netmask, net_gw;
 | 
					    ip4_addr_t net_ipaddr, net_netmask, net_gw;
 | 
				
			||||||
    char* eth_cfg;
 | 
					    char* eth_cfg;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,8 +11,6 @@
 | 
				
			||||||
extern "C" {
 | 
					extern "C" {
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define NETDEV_DEBUG true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define NETDEV_DEBUG_PRINT_IP_INFO(ip, netmask, gw) \
 | 
					#define NETDEV_DEBUG_PRINT_IP_INFO(ip, netmask, gw) \
 | 
				
			||||||
        ("[%s %d]ip: %u.%u.%u.%u, netmask: %u.%u.%u.%u, gw: %u.%u.%u.%u\n", \
 | 
					        ("[%s %d]ip: %u.%u.%u.%u, netmask: %u.%u.%u.%u, gw: %u.%u.%u.%u\n", \
 | 
				
			||||||
        __func__, __LINE__, \
 | 
					        __func__, __LINE__, \
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -98,7 +98,7 @@ long ShowTask(void)
 | 
				
			||||||
    KPrintf("*************************************************************************************************\n");
 | 
					    KPrintf("*************************************************************************************************\n");
 | 
				
			||||||
#ifndef SCHED_POLICY_FIFO
 | 
					#ifndef SCHED_POLICY_FIFO
 | 
				
			||||||
#ifdef ARCH_SMP
 | 
					#ifdef ARCH_SMP
 | 
				
			||||||
    KPrintf(" STAT    ID  %-*.s   PRI CORE STACK_DEPTH USED  LEFT_TICKS  ERROR_STAT\n", _NUM_MAX, item_title); 
 | 
					    KPrintf(" STAT    ID  %-*.s   PRI CORE STACK_DEPTH USED  LEFT_TICKS  ERROR_STAT\n", NAME_NUM_MAX, item_title); 
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
    KPrintf(" STAT    ID  %-*.s  PRI STACK_DEPTH  USED  LEFT_TICKS  ERROR_STAT\n", NAME_NUM_MAX, item_title);
 | 
					    KPrintf(" STAT    ID  %-*.s  PRI STACK_DEPTH  USED  LEFT_TICKS  ERROR_STAT\n", NAME_NUM_MAX, item_title);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue