summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernard Xiong <[email protected]>2019-04-28 07:44:43 +0800
committerGitHub <[email protected]>2019-04-28 07:44:43 +0800
commitb57e075867ec075f520863757906ced4d181357e (patch)
tree21abaa91d5b0549ec6496412ad928810a27c1f5f
parent77973d8d34f0fb13cb1aecdc5c9a31394bdb0272 (diff)
parentc9bea68240cbc0fb9bc5823c928021333a603026 (diff)
Merge pull request #2626 from Lawlieta/develop
[net][netdev] Fix netdev link_down status, socket create failed issue
-rw-r--r--components/net/lwip-1.4.1/src/apps/ping/ping.c4
-rw-r--r--components/net/lwip-2.0.2/src/apps/ping/ping.c4
-rw-r--r--components/net/lwip-2.1.0/src/apps/ping/ping.c4
-rw-r--r--components/net/netdev/src/netdev.c6
-rw-r--r--components/net/sal_socket/src/sal_socket.c32
5 files changed, 22 insertions, 28 deletions
diff --git a/components/net/lwip-1.4.1/src/apps/ping/ping.c b/components/net/lwip-1.4.1/src/apps/ping/ping.c
index 1075e2ddfd..6d3cfe0fc3 100644
--- a/components/net/lwip-1.4.1/src/apps/ping/ping.c
+++ b/components/net/lwip-1.4.1/src/apps/ping/ping.c
@@ -130,7 +130,7 @@ int lwip_ping_recv(int s, int *ttl)
return len;
}
-#ifndef RT_USING_SAL
+#ifndef RT_USING_NETDEV
/* using the lwIP custom ping */
rt_err_t ping(char* target_name, rt_uint32_t times, rt_size_t size)
@@ -239,7 +239,7 @@ int cmd_ping(int argc, char **argv)
FINSH_FUNCTION_EXPORT_ALIAS(cmd_ping, __cmd_ping, ping network host);
#endif /* RT_USING_FINSH */
-#endif /* RT_USING_SAL */
+#endif /* RT_USING_NETDEV */
#endif /* RT_LWIP_ICMP */
diff --git a/components/net/lwip-2.0.2/src/apps/ping/ping.c b/components/net/lwip-2.0.2/src/apps/ping/ping.c
index 1075e2ddfd..6d3cfe0fc3 100644
--- a/components/net/lwip-2.0.2/src/apps/ping/ping.c
+++ b/components/net/lwip-2.0.2/src/apps/ping/ping.c
@@ -130,7 +130,7 @@ int lwip_ping_recv(int s, int *ttl)
return len;
}
-#ifndef RT_USING_SAL
+#ifndef RT_USING_NETDEV
/* using the lwIP custom ping */
rt_err_t ping(char* target_name, rt_uint32_t times, rt_size_t size)
@@ -239,7 +239,7 @@ int cmd_ping(int argc, char **argv)
FINSH_FUNCTION_EXPORT_ALIAS(cmd_ping, __cmd_ping, ping network host);
#endif /* RT_USING_FINSH */
-#endif /* RT_USING_SAL */
+#endif /* RT_USING_NETDEV */
#endif /* RT_LWIP_ICMP */
diff --git a/components/net/lwip-2.1.0/src/apps/ping/ping.c b/components/net/lwip-2.1.0/src/apps/ping/ping.c
index 1075e2ddfd..6d3cfe0fc3 100644
--- a/components/net/lwip-2.1.0/src/apps/ping/ping.c
+++ b/components/net/lwip-2.1.0/src/apps/ping/ping.c
@@ -130,7 +130,7 @@ int lwip_ping_recv(int s, int *ttl)
return len;
}
-#ifndef RT_USING_SAL
+#ifndef RT_USING_NETDEV
/* using the lwIP custom ping */
rt_err_t ping(char* target_name, rt_uint32_t times, rt_size_t size)
@@ -239,7 +239,7 @@ int cmd_ping(int argc, char **argv)
FINSH_FUNCTION_EXPORT_ALIAS(cmd_ping, __cmd_ping, ping network host);
#endif /* RT_USING_FINSH */
-#endif /* RT_USING_SAL */
+#endif /* RT_USING_NETDEV */
#endif /* RT_LWIP_ICMP */
diff --git a/components/net/netdev/src/netdev.c b/components/net/netdev/src/netdev.c
index c5b4d0e321..e4a88ca022 100644
--- a/components/net/netdev/src/netdev.c
+++ b/components/net/netdev/src/netdev.c
@@ -269,8 +269,7 @@ struct netdev *netdev_get_by_family(int family)
{
netdev = rt_slist_entry(node, struct netdev, list);
pf = (struct sal_proto_family *) netdev->sal_user_data;
- if (pf && pf->skt_ops && pf->family == family &&
- netdev_is_up(netdev) && netdev_is_link_up(netdev))
+ if (pf && pf->skt_ops && pf->family == family && netdev_is_up(netdev))
{
rt_hw_interrupt_enable(level);
return netdev;
@@ -281,8 +280,7 @@ struct netdev *netdev_get_by_family(int family)
{
netdev = rt_slist_entry(node, struct netdev, list);
pf = (struct sal_proto_family *) netdev->sal_user_data;
- if (pf && pf->skt_ops && pf->sec_family == family &&
- netdev_is_up(netdev) && netdev_is_link_up(netdev))
+ if (pf && pf->skt_ops && pf->sec_family == family && netdev_is_up(netdev))
{
rt_hw_interrupt_enable(level);
return netdev;
diff --git a/components/net/sal_socket/src/sal_socket.c b/components/net/sal_socket/src/sal_socket.c
index f4d5549aad..68e1375849 100644
--- a/components/net/sal_socket/src/sal_socket.c
+++ b/components/net/sal_socket/src/sal_socket.c
@@ -370,7 +370,7 @@ static int socket_init(int family, int type, int protocol, struct sal_socket **r
struct sal_proto_family *pf;
struct netdev *netdv_def = netdev_default;
struct netdev *netdev = RT_NULL;
- rt_bool_t falgs = RT_FALSE;
+ rt_bool_t flag = RT_FALSE;
if (family < 0 || family > AF_MAX)
{
@@ -388,26 +388,24 @@ static int socket_init(int family, int type, int protocol, struct sal_socket **r
sock->protocol = protocol;
/* get socket operations from network interface device */
- if (netdv_def)
- {
- if (netdev_is_up(netdv_def) && netdev_is_link_up(netdv_def))
- {
- /* check default network interface device protocol family */
- pf = (struct sal_proto_family *) netdv_def->sal_user_data;
- if (pf != RT_NULL && pf->skt_ops && (pf->family == family || pf->sec_family == family))
- {
- sock->netdev = netdv_def;
- falgs = RT_TRUE;
- }
- }
- }
- else
+ if (netdv_def == RT_NULL)
{
LOG_E("not find default network interface device for socket create.");
return -3;
}
+
+ if (netdev_is_up(netdv_def))
+ {
+ /* check default network interface device protocol family */
+ pf = (struct sal_proto_family *) netdv_def->sal_user_data;
+ if (pf != RT_NULL && pf->skt_ops && (pf->family == family || pf->sec_family == family))
+ {
+ sock->netdev = netdv_def;
+ flag = RT_TRUE;
+ }
+ }
- if (falgs == RT_FALSE)
+ if (flag == RT_FALSE)
{
/* get network interface device by protocol family */
netdev = netdev_get_by_family(family);
@@ -516,8 +514,6 @@ int sal_accept(int socket, struct sockaddr *addr, socklen_t *addrlen)
/* get the socket object by socket descriptor */
SAL_SOCKET_OBJ_GET(sock, socket);
- /* check the network interface is commonicable */
- SAL_NETDEV_IS_COMMONICABLE(sock->netdev);
/* check the network interface socket operations */
SAL_NETDEV_SOCKETOPS_VALID(sock->netdev, pf, accept);