summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2013-09-27 08:21:33 -0600
committerGregory Nutt <gnutt@nuttx.org>2013-09-27 08:21:33 -0600
commitc83c95eb6b801da6539fa7ffbca95104ea42605d (patch)
tree69b06dccc57e11026a08df6822b2848d7a00ea01
parentcda383a549d16f8b441a423578d69a9dfdf1e579 (diff)
downloadnuttx-c83c95eb6b801da6539fa7ffbca95104ea42605d.tar.gz
nuttx-c83c95eb6b801da6539fa7ffbca95104ea42605d.tar.bz2
nuttx-c83c95eb6b801da6539fa7ffbca95104ea42605d.zip
Networking: If sending out of the subnet, device lookup by IP will fail. Fall back to ETH0 for now. From Max Holtzberg
-rw-r--r--nuttx/ChangeLog5
-rw-r--r--nuttx/net/netdev_txnotify.c14
2 files changed, 19 insertions, 0 deletions
diff --git a/nuttx/ChangeLog b/nuttx/ChangeLog
index 6f39e782e..f685333ca 100644
--- a/nuttx/ChangeLog
+++ b/nuttx/ChangeLog
@@ -5642,4 +5642,9 @@
definitions (2013-9-26).
* arch/arm/src/sama5/sam_gmac.c and include/nuttx/net/gmii.h:
Beginning of support for GMII/RGMII PHY support (2013-9-26)
+ * net/netdev_txnotify.c: Look up of device using subnet will fail
+ if the packet is being sent out of our subnet (via a router).
+ The fallback here is just to use "eth0" if the subnet lookup
+ fails. This will, of course, will have to be revisited if/when
+ multiple NICs are supported (2013-9-27).
diff --git a/nuttx/net/netdev_txnotify.c b/nuttx/net/netdev_txnotify.c
index 4cb705ea8..41f97c401 100644
--- a/nuttx/net/netdev_txnotify.c
+++ b/nuttx/net/netdev_txnotify.c
@@ -95,6 +95,20 @@ void netdev_txnotify(const uip_ipaddr_t *raddr)
/* Find the device driver that serves the subnet of the remote address */
struct uip_driver_s *dev = netdev_findbyaddr(raddr);
+
+ /* The above lookup will fail if the packet is being sent out of our
+ * out subnet to a router. REVISIT: For now, we fall back and try "eth0".
+ */
+
+ if (dev == NULL)
+ {
+ /* If the destination address is not in our subnet, assume eth0 as the
+ * default device.
+ */
+
+ dev = netdev_findbyname("eth0");
+ }
+
if (dev && dev->d_txavail)
{
/* Notify the device driver that new TX data is available. */