Merge pull request #3618 from longtengmcu/master
fix three bugs about ethernet
This commit is contained in:
commit
a6a8b90935
|
@ -137,6 +137,14 @@ static int do_pollfd(struct pollfd *pollfd, rt_pollreq_t *req)
|
|||
req->_key = pollfd->events | POLLERR | POLLHUP;
|
||||
|
||||
mask = f->fops->poll(f, req);
|
||||
|
||||
/* dealwith the device return error -1*/
|
||||
if (mask < 0)
|
||||
{
|
||||
fd_put(f);
|
||||
pollfd->revents = 0;
|
||||
return mask;
|
||||
}
|
||||
}
|
||||
/* Mask out unneeded events. */
|
||||
mask &= pollfd->events | POLLERR | POLLHUP;
|
||||
|
@ -154,6 +162,7 @@ static int poll_do(struct pollfd *fds, nfds_t nfds, struct rt_poll_table *pt, in
|
|||
int istimeout = 0;
|
||||
int n;
|
||||
struct pollfd *pf;
|
||||
int ret = 0;
|
||||
|
||||
if (msec == 0)
|
||||
{
|
||||
|
@ -168,7 +177,14 @@ static int poll_do(struct pollfd *fds, nfds_t nfds, struct rt_poll_table *pt, in
|
|||
|
||||
for (n = 0; n < nfds; n ++)
|
||||
{
|
||||
if (do_pollfd(pf, &pt->req))
|
||||
ret = do_pollfd(pf, &pt->req);
|
||||
if(ret < 0)
|
||||
{
|
||||
/*dealwith the device return error -1 */
|
||||
pt->req._proc = RT_NULL;
|
||||
return ret;
|
||||
}
|
||||
else if(ret > 0)
|
||||
{
|
||||
num ++;
|
||||
pt->req._proc = RT_NULL;
|
||||
|
|
|
@ -164,6 +164,16 @@ static int lwip_netdev_set_dns_server(struct netdev *netif, uint8_t dns_num, ip_
|
|||
static int lwip_netdev_set_dhcp(struct netdev *netif, rt_bool_t is_enabled)
|
||||
{
|
||||
netdev_low_level_set_dhcp_status(netif, is_enabled);
|
||||
|
||||
/*add dhcp start or stop must call dhcp_start and dhcp_stop function*/
|
||||
if(is_enabled == RT_TRUE)
|
||||
{
|
||||
dhcp_start((struct netif *)netif->user_data);
|
||||
}
|
||||
else
|
||||
{
|
||||
dhcp_stop((struct netif *)netif->user_data);
|
||||
}
|
||||
return ERR_OK;
|
||||
}
|
||||
#endif /* RT_LWIP_DHCP */
|
||||
|
|
|
@ -564,6 +564,9 @@ 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 up status */
|
||||
SAL_NETDEV_IS_UP(sock->netdev);
|
||||
|
||||
/* check the network interface socket operations */
|
||||
SAL_NETDEV_SOCKETOPS_VALID(sock->netdev, pf, accept);
|
||||
|
||||
|
|
Loading…
Reference in New Issue