From 8d57be2b6fead7d99f1789e8398736f2bb46515e Mon Sep 17 00:00:00 2001 From: "Anton D. Kachalov" Date: Wed, 26 Aug 2015 00:14:50 +0300 Subject: [PATCH 1/5] Eliminate compilation warnings Signed-off-by: Anton D. Kachalov --- fs/vfs/fs_poll.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/fs/vfs/fs_poll.c b/fs/vfs/fs_poll.c index 10852e7d910..f13148288c8 100644 --- a/fs/vfs/fs_poll.c +++ b/fs/vfs/fs_poll.c @@ -49,6 +49,7 @@ #include #include #include +#include #include @@ -326,8 +327,6 @@ int file_poll(int fd, FAR struct pollfd *fds, bool setup) int poll(FAR struct pollfd *fds, nfds_t nfds, int timeout) { - struct timespec abstime; - irqstate_t flags; sem_t sem; int count = 0; int ret; From b125c36849c24aeca50003f7e48aaf927f1c47f1 Mon Sep 17 00:00:00 2001 From: "Anton D. Kachalov" Date: Wed, 26 Aug 2015 00:16:52 +0300 Subject: [PATCH 2/5] Field `d_sndlen' is unsigned. It is always >= 0. Signed-off-by: Anton D. Kachalov --- net/tcp/tcp_appsend.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/tcp/tcp_appsend.c b/net/tcp/tcp_appsend.c index 4f110f848a9..ab799d975a9 100644 --- a/net/tcp/tcp_appsend.c +++ b/net/tcp/tcp_appsend.c @@ -172,7 +172,7 @@ void tcp_appsend(FAR struct net_driver_s *dev, FAR struct tcp_conn_s *conn, else { #ifdef CONFIG_NET_TCP_WRITE_BUFFERS - DEBUGASSERT(dev->d_sndlen >= 0 && dev->d_sndlen <= conn->mss); + DEBUGASSERT(dev->d_sndlen <= conn->mss); #else /* If d_sndlen > 0, the application has data to be sent. */ From e6dbd3d9032c0166144476e65d6444d8d84356c7 Mon Sep 17 00:00:00 2001 From: Saehie ParK Date: Tue, 25 Aug 2015 19:59:45 -0600 Subject: [PATCH 3/5] Networking: Fix network device name assignment logic for the case of the local loopback device. There is only one local loopback network device and it is unnumbered --- net/netdev/netdev_register.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/net/netdev/netdev_register.c b/net/netdev/netdev_register.c index 362e5a44a25..de5fa6c8f43 100644 --- a/net/netdev/netdev_register.c +++ b/net/netdev/netdev_register.c @@ -257,16 +257,35 @@ int netdev_register(FAR struct net_driver_s *dev, enum net_lltype_e lltype) dev->d_conncb = NULL; dev->d_devcb = NULL; - /* Get the next available device number and sssign a device name to + /* Get the next available device number and assign a device name to * the interface */ save = net_lock(); + #ifdef CONFIG_NET_MULTILINK - devnum = find_devnum(devfmt); +# ifdef CONFIG_NET_LOOPBACK + /* The local loopback device is a special case: There can be only one + * local loopback device so it is unnumbered. + */ + + if (lltype == NET_LL_LOOPBACK) + { + devnum = 0; + } + else +# endif + { + devnum = find_devnum(devfmt); + } #else + /* There is only a single link type. Finding the next network device + * number is simple. + */ + devnum = g_next_devnum++; #endif + #ifdef CONFIG_NET_USER_DEVFMT if (*dev->d_ifname) { From 32de036490515f3d2ced152033a24a67fb563c5f Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Tue, 25 Aug 2015 20:09:12 -0600 Subject: [PATCH 4/5] Local loopback: Set the IFF_UP flags during initialization because the local loopback device is always up --- Documentation | 2 +- configs | 2 +- drivers/net/loopback.c | 4 ++++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Documentation b/Documentation index 8a30728ae9a..ce750c0899c 160000 --- a/Documentation +++ b/Documentation @@ -1 +1 @@ -Subproject commit 8a30728ae9a64496f0c9a0ff5dd62bd3b022c145 +Subproject commit ce750c0899c2138b37b52a48d020a3eceb92fd04 diff --git a/configs b/configs index e1e1873700f..e3f37812a9a 160000 --- a/configs +++ b/configs @@ -1 +1 @@ -Subproject commit e1e1873700ffda7aeb632e2b1234333d88ce3457 +Subproject commit e3f37812a9a7595a7ddab1a625ebe857d104beb2 diff --git a/drivers/net/loopback.c b/drivers/net/loopback.c index 5e2a12d1e38..83aa9836579 100644 --- a/drivers/net/loopback.c +++ b/drivers/net/loopback.c @@ -49,6 +49,7 @@ #include #include +#include #include #include @@ -532,13 +533,16 @@ int localhost_initialize(void) net_ipv4addr_copy(priv->lo_dev.d_draddr, g_lo_ipv4addr); net_ipv4addr_copy(priv->lo_dev.d_netmask, g_lo_ipv4mask); #endif + #ifdef CONFIG_NET_IPv6 net_ipv6addr_copy(priv->lo_dev.d_ipv6addr, g_lo_ipv6addr); net_ipv6addr_copy(priv->lo_dev.d_ipv6draddr, g_lo_ipv6addr); net_ipv6addr_copy(priv->lo_dev.d_ipv6netmask, g_ipv6_alloneaddr); #endif + /* Put the network in the UP state */ + priv->lo_dev.d_flags = IFF_UP; return lo_ifup(&priv->lo_dev); } From 70620d3dd6df6e6b0a095b9ebff7551e450e719e Mon Sep 17 00:00:00 2001 From: Juha Niskanen Date: Wed, 26 Aug 2015 07:18:50 -0600 Subject: [PATCH 5/5] rivers/rwbuffer: Fix some logic errors --- ChangeLog | 2 ++ Documentation | 2 +- configs | 2 +- drivers/rwbuffer.c | 10 +++++----- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 377f2b110ab..2bda7e474b1 100755 --- a/ChangeLog +++ b/ChangeLog @@ -10881,4 +10881,6 @@ device (2015-08-24). * networking: Correct return value from psock_tcp_accept(). From SaeHie Park (2015-08-25). + * drivers/rwbuffer.c: Fix some logic errors. From Dmitry Nikolaev + via Juha Niskanen (2015-08-26). diff --git a/Documentation b/Documentation index ce750c0899c..8a30728ae9a 160000 --- a/Documentation +++ b/Documentation @@ -1 +1 @@ -Subproject commit ce750c0899c2138b37b52a48d020a3eceb92fd04 +Subproject commit 8a30728ae9a64496f0c9a0ff5dd62bd3b022c145 diff --git a/configs b/configs index e3f37812a9a..e1e1873700f 160000 --- a/configs +++ b/configs @@ -1 +1 @@ -Subproject commit e3f37812a9a7595a7ddab1a625ebe857d104beb2 +Subproject commit e1e1873700ffda7aeb632e2b1234333d88ce3457 diff --git a/drivers/rwbuffer.c b/drivers/rwbuffer.c index fd2f73c77ae..9c443df7b59 100644 --- a/drivers/rwbuffer.c +++ b/drivers/rwbuffer.c @@ -96,7 +96,7 @@ static void rwb_semtake(sem_t *sem) while (sem_wait(sem) != 0) { - /* The only case that an error should occr here is if + /* The only case that an error should occur here is if * the wait was awakened by a signal. */ @@ -117,8 +117,8 @@ static void rwb_semtake(sem_t *sem) static inline bool rwb_overlap(off_t blockstart1, size_t nblocks1, off_t blockstart2, size_t nblocks2) { - off_t blockend1 = blockstart1 + nblocks1; - off_t blockend2 = blockstart2 + nblocks2; + off_t blockend1 = blockstart1 + nblocks1 - 1; + off_t blockend2 = blockstart2 + nblocks2 - 1; /* If the buffer 1 is wholly outside of buffer 2, return false */ @@ -257,7 +257,7 @@ static ssize_t rwb_writebuffer(FAR struct rwbuffer_s *rwb, /* Flush the write buffer */ - ret = rwb->wrflush(rwb, rwb->wrbuffer, rwb->wrblockstart, rwb->wrnblocks); + ret = rwb->wrflush(rwb->dev, rwb->wrbuffer, rwb->wrblockstart, rwb->wrnblocks); if (ret < 0) { fdbg("ERROR: Error writing multiple from cache: %d\n", -ret); @@ -842,7 +842,7 @@ int rwb_read(FAR struct rwbuffer_s *rwb, off_t startblock, uint32_t nblocks, * the user buffer. */ - ret = rwb->rhreload(rwb->dev, startblock, nblocks, rdbuffer); + ret = rwb->rhreload(rwb->dev, rdbuffer, startblock, nblocks); } #endif