All of lore.kernel.org
 help / color / mirror / Atom feed
From: Joe Hershberger <joe.hershberger@ni.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v5 26/27] sandbox: eth: Add support for using the 'lo' interface
Date: Tue, 3 Mar 2015 20:41:20 -0600	[thread overview]
Message-ID: <1425436881-10323-27-git-send-email-joe.hershberger@ni.com> (raw)
In-Reply-To: <1425436881-10323-1-git-send-email-joe.hershberger@ni.com>

The 'lo' interface on Linux doesn't support thinks like ARP or
link-layer access like we use to talk to a normal network interface.
A higher-level network API must be used to access localhost.

As written, this interface is limited to not supporting ICMP since the
API doesn't allow the socket to be opened for all IP traffic and be able
to receive at the same time. UDP is far more useful to test with, so it
was selected over ICMP. Ping won't work, but things like TFTP should
work.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>

---

Changes in v5:
-Add details about lo support to the README
-Remove socket timeout
-Separate init to 2 helper static functions
-Set the socket to non-blocking
-Use INADDR_LOOPBACK
-Use more verbose comments

Changes in v4:
-Added support for the 'lo' network interface

Changes in v3: None
Changes in v2: None

 arch/sandbox/cpu/eth-raw-os.c         | 113 +++++++++++++++++++++++++++++++++-
 arch/sandbox/dts/sandbox.dts          |  10 +++
 arch/sandbox/include/asm/eth-raw-os.h |  10 ++-
 board/sandbox/README.sandbox          |  22 +++++++
 drivers/net/sandbox-raw.c             |  71 ++++++++++++++++++++-
 5 files changed, 221 insertions(+), 5 deletions(-)

diff --git a/arch/sandbox/cpu/eth-raw-os.c b/arch/sandbox/cpu/eth-raw-os.c
index 601205a..b76a731 100644
--- a/arch/sandbox/cpu/eth-raw-os.c
+++ b/arch/sandbox/cpu/eth-raw-os.c
@@ -12,6 +12,8 @@
 #include <fcntl.h>
 #include <net/if.h>
 #include <netinet/in.h>
+#include <netinet/ip.h>
+#include <netinet/udp.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -20,10 +22,11 @@
 #include <sys/socket.h>
 #include <unistd.h>
 
+#include <arpa/inet.h>
 #include <linux/if_ether.h>
 #include <linux/if_packet.h>
 
-int sandbox_eth_raw_os_start(const char *ifname, unsigned char *ethmac,
+static int _raw_packet_start(const char *ifname, unsigned char *ethmac,
 			    struct eth_sandbox_raw_priv *priv)
 {
 	struct sockaddr_ll *device;
@@ -89,14 +92,114 @@ int sandbox_eth_raw_os_start(const char *ifname, unsigned char *ethmac,
 	return 0;
 }
 
+static int _local_inet_start(struct eth_sandbox_raw_priv *priv)
+{
+	struct sockaddr_in *device;
+	int ret;
+	int flags;
+	int one = 1;
+
+	/* Prepare device struct */
+	priv->device = malloc(sizeof(struct sockaddr_in));
+	if (priv->device == NULL)
+		return -ENOMEM;
+	device = priv->device;
+	memset(device, 0, sizeof(struct sockaddr_in));
+	device->sin_family = AF_INET;
+	device->sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+
+	/**
+	 * Open socket
+	 *  Since we specify UDP here, any incoming ICMP packets will
+	 *  not be received, so things like ping will not work on this
+	 *  localhost interface.
+	 */
+	priv->sd = socket(AF_INET, SOCK_RAW, IPPROTO_UDP);
+	if (priv->sd < 0) {
+		printf("Failed to open socket: %d %s\n", errno,
+		       strerror(errno));
+		return -errno;
+	}
+
+	/* Make the socket non-blocking */
+	flags = fcntl(priv->sd, F_GETFL, 0);
+	fcntl(priv->sd, F_SETFL, flags | O_NONBLOCK);
+
+	/* Include the UDP/IP headers on send and receive */
+	ret = setsockopt(priv->sd, IPPROTO_IP, IP_HDRINCL, &one,
+			 sizeof(one));
+	if (ret < 0) {
+		printf("Failed to set header include option: %d %s\n", errno,
+		       strerror(errno));
+		return -errno;
+	}
+	priv->local_bind_sd = -1;
+	priv->local_bind_udp_port = 0;
+	return 0;
+}
+
+int sandbox_eth_raw_os_start(const char *ifname, unsigned char *ethmac,
+			    struct eth_sandbox_raw_priv *priv)
+{
+	if (priv->local)
+		return _local_inet_start(priv);
+	else
+		return _raw_packet_start(ifname, ethmac, priv);
+}
+
 int sandbox_eth_raw_os_send(void *packet, int length,
-			    const struct eth_sandbox_raw_priv *priv)
+			    struct eth_sandbox_raw_priv *priv)
 {
 	int retval;
+	struct udphdr *udph = packet + sizeof(struct iphdr);
 
 	if (!priv->sd || !priv->device)
 		return -EINVAL;
 
+	/*
+	 * This block of code came about when testing tftp on the localhost
+	 * interface. When using the RAW AF_INET API, the network stack is still
+	 * in play responding to incoming traffic based on open "ports". Since
+	 * it is raw (at the IP layer, no Ethernet) the network stack tells the
+	 * TFTP server that the port it responded to is closed. This causes the
+	 * TFTP transfer to be aborted. This block of code inspects the outgoing
+	 * packet as formulated by the u-boot network stack to determine the
+	 * source port (that the TFTP server will send packets back to) and
+	 * opens a typical UDP socket on that port, thus preventing the network
+	 * stack from sending that ICMP message claiming that the port has no
+	 * bound socket.
+	 */
+	if (priv->local && (priv->local_bind_sd == -1 ||
+			    priv->local_bind_udp_port != udph->source)) {
+		struct iphdr *iph = packet;
+		struct sockaddr_in addr;
+
+		if (priv->local_bind_sd != -1)
+			close(priv->local_bind_sd);
+
+		/* A normal UDP socket is required to bind */
+		priv->local_bind_sd = socket(AF_INET, SOCK_DGRAM, 0);
+		if (priv->local_bind_sd < 0) {
+			printf("Failed to open bind sd: %d %s\n", errno,
+			       strerror(errno));
+			return -errno;
+		}
+		priv->local_bind_udp_port = udph->source;
+
+		/**
+		 * Bind the UDP port that we intend to use as our source port
+		 * so that the kernel will not send an ICMP port unreachable
+		 * message to the server
+		 */
+		addr.sin_family = AF_INET;
+		addr.sin_port = udph->source;
+		addr.sin_addr.s_addr = iph->saddr;
+		retval = bind(priv->local_bind_sd, &addr, sizeof(addr));
+		if (retval < 0)
+			printf("Failed to bind: %d %s\n", errno,
+			       strerror(errno));
+	}
+
 	retval = sendto(priv->sd, packet, length, 0,
 			(struct sockaddr *)priv->device,
 			sizeof(struct sockaddr_ll));
@@ -137,4 +240,10 @@ void sandbox_eth_raw_os_stop(struct eth_sandbox_raw_priv *priv)
 	priv->device = NULL;
 	close(priv->sd);
 	priv->sd = -1;
+	if (priv->local) {
+		if (priv->local_bind_sd != -1)
+			close(priv->local_bind_sd);
+		priv->local_bind_sd = -1;
+		priv->local_bind_udp_port = 0;
+	}
 }
diff --git a/arch/sandbox/dts/sandbox.dts b/arch/sandbox/dts/sandbox.dts
index 8002196..0eaa5a5 100644
--- a/arch/sandbox/dts/sandbox.dts
+++ b/arch/sandbox/dts/sandbox.dts
@@ -4,6 +4,10 @@
 	#address-cells = <1>;
 	#size-cells = <0>;
 
+	aliases {
+		eth5 = "/eth at 90000000";
+	};
+
 	chosen {
 		stdout-path = "/serial";
 	};
@@ -192,4 +196,10 @@
 		reg = <0x80000000 0x1000>;
 		host-raw-interface = "eth0";
 	};
+
+	eth at 90000000 {
+		compatible = "sandbox,eth-raw";
+		reg = <0x90000000 0x1000>;
+		host-raw-interface = "lo";
+	};
 };
diff --git a/arch/sandbox/include/asm/eth-raw-os.h b/arch/sandbox/include/asm/eth-raw-os.h
index df60c4f..ed4b2e2 100644
--- a/arch/sandbox/include/asm/eth-raw-os.h
+++ b/arch/sandbox/include/asm/eth-raw-os.h
@@ -15,16 +15,24 @@
  *
  * sd: socket descriptor - the open socket during a session
  * device: struct sockaddr_ll - the host interface packets move to/from
+ * local: 1 or 0 to select the local interface ('lo') or not
+ * local_bindsd: socket descriptor to prevent the kernel from sending
+ *		 a message to the server claiming the port is
+ *		 unreachable
+ * local_bind_udp_port: The UDP port number that we bound to
  */
 struct eth_sandbox_raw_priv {
 	int sd;
 	void *device;
+	int local;
+	int local_bind_sd;
+	unsigned short local_bind_udp_port;
 };
 
 int sandbox_eth_raw_os_start(const char *ifname, unsigned char *ethmac,
 			    struct eth_sandbox_raw_priv *priv);
 int sandbox_eth_raw_os_send(void *packet, int length,
-			    const struct eth_sandbox_raw_priv *priv);
+			    struct eth_sandbox_raw_priv *priv);
 int sandbox_eth_raw_os_recv(void *packet, int *length,
 			    const struct eth_sandbox_raw_priv *priv);
 void sandbox_eth_raw_os_stop(struct eth_sandbox_raw_priv *priv);
diff --git a/board/sandbox/README.sandbox b/board/sandbox/README.sandbox
index aedf05a..73743e0 100644
--- a/board/sandbox/README.sandbox
+++ b/board/sandbox/README.sandbox
@@ -241,6 +241,28 @@ dhcp
 set serverip WWW.XXX.YYY.ZZZ
 tftpboot u-boot.bin
 
+The bridge also support (to a lesser extent) the localhost inderface, 'lo'.
+
+The 'lo' interface cannot use the RAW AF_PACKET API because the lo interface
+doesn't support Ethernet-level traffic. It is a higher-level interface that is
+expected only to be used at the AF_INET level of the API. As such, the most raw
+we can get on that interface is the RAW AF_INET API on UDP. This allows us to
+set the IP_HDRINCL option to include everything except the Ethernet header in
+the packets we send and receive.
+
+Because only UDP is supported, ICMP traffic will not work, so expect that ping
+commands will time out.
+
+The default device tree for sandbox includes an entry for lo on the sandbox
+host machine whose alias is "eth5". The following is an example of a network
+operation being tested on the lo interface.
+
+TFTP
+....
+
+set ethact eth5
+tftpboot u-boot.bin
+
 
 SPI Emulation
 -------------
diff --git a/drivers/net/sandbox-raw.c b/drivers/net/sandbox-raw.c
index 435b874..91da5f5 100644
--- a/drivers/net/sandbox-raw.c
+++ b/drivers/net/sandbox-raw.c
@@ -15,6 +15,8 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
+static int reply_arp;
+static IPaddr_t arp_ip;
 
 static int sb_eth_raw_start(struct udevice *dev)
 {
@@ -29,6 +31,11 @@ static int sb_eth_raw_start(struct udevice *dev)
 	if (interface == NULL)
 		return -EINVAL;
 
+	if (strcmp(interface, "lo") == 0) {
+		priv->local = 1;
+		setenv("ipaddr", "127.0.0.1");
+		setenv("serverip", "127.0.0.1");
+	}
 	return sandbox_eth_raw_os_start(interface, pdata->enetaddr, priv);
 }
 
@@ -38,18 +45,78 @@ static int sb_eth_raw_send(struct udevice *dev, void *packet, int length)
 
 	debug("eth_sandbox_raw: Send packet %d\n", length);
 
+	if (priv->local) {
+		struct ethernet_hdr *eth = packet;
+
+		if (ntohs(eth->et_protlen) == PROT_ARP) {
+			struct arp_hdr *arp = packet + ETHER_HDR_SIZE;
+
+			/**
+			 * localhost works on a higher-level API in Linux than
+			 * ARP packets, so fake it
+			 */
+			arp_ip = NetReadIP(&arp->ar_tpa);
+			reply_arp = 1;
+			return 0;
+		}
+		packet += ETHER_HDR_SIZE;
+		length -= ETHER_HDR_SIZE;
+	}
 	return sandbox_eth_raw_os_send(packet, length, priv);
 }
 
 static int sb_eth_raw_recv(struct udevice *dev, uchar **packetp)
 {
+	struct eth_pdata *pdata = dev_get_platdata(dev);
 	struct eth_sandbox_raw_priv *priv = dev_get_priv(dev);
-	int retval;
+	int retval = 0;
 	int length;
 
-	retval = sandbox_eth_raw_os_recv(net_rx_packets[0], &length, priv);
+	if (reply_arp) {
+		struct arp_hdr *arp = (void *)net_rx_packets[0] +
+			ETHER_HDR_SIZE;
+
+		/*
+		 * Fake an ARP response. The u-boot network stack is sending an
+		 * ARP request (to find the MAC address to address the actual
+		 * packet to) and requires an ARP response to continue. Since
+		 * this is the localhost interface, there is no Etherent level
+		 * traffic at all, so there is no way to send an ARP request or
+		 * to get a response. For this reason we fake the response to
+		 * make the u-boot network stack happy.
+		 */
+		arp->ar_hrd = htons(ARP_ETHER);
+		arp->ar_pro = htons(PROT_IP);
+		arp->ar_hln = ARP_HLEN;
+		arp->ar_pln = ARP_PLEN;
+		arp->ar_op = htons(ARPOP_REPLY);
+		/* Any non-zero MAC address will work */
+		memset(&arp->ar_sha, 0x01, ARP_HLEN);
+		/* Use whatever IP we were looking for (always 127.0.0.1?) */
+		NetWriteIP(&arp->ar_spa, arp_ip);
+		memcpy(&arp->ar_tha, pdata->enetaddr, ARP_HLEN);
+		NetWriteIP(&arp->ar_tpa, NetOurIP);
+		length = ARP_HDR_SIZE;
+	} else {
+		/* If local, the Ethernet header won't be included; skip it */
+		uchar *pktptr = priv->local ?
+			net_rx_packets[0] + ETHER_HDR_SIZE : net_rx_packets[0];
+
+		retval = sandbox_eth_raw_os_recv(pktptr, &length, priv);
+	}
 
 	if (!retval && length) {
+		if (priv->local) {
+			struct ethernet_hdr *eth = (void *)net_rx_packets[0];
+
+			/* Fill in enough of the missing Ethernet header */
+			memcpy(eth->et_dest, pdata->enetaddr, ARP_HLEN);
+			memset(eth->et_src, 0x01, ARP_HLEN);
+			eth->et_protlen = htons(reply_arp ? PROT_ARP : PROT_IP);
+			reply_arp = 0;
+			length += ETHER_HDR_SIZE;
+		}
+
 		debug("eth_sandbox_raw: received packet %d\n",
 		      length);
 		*packetp = net_rx_packets[0];
-- 
1.7.11.5

  parent reply	other threads:[~2015-03-04  2:41 UTC|newest]

Thread overview: 282+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-27 23:27 [U-Boot] [RFC PATCH 0/7] Add Driver Model support to network stack Joe Hershberger
2015-01-27 23:27 ` [U-Boot] [RFC PATCH 1/7] net: Provide a function to get the current MAC address Joe Hershberger
2015-01-28  2:33   ` Simon Glass
2015-01-28  9:45     ` Joe Hershberger
2015-01-29  1:46       ` Simon Glass
2015-01-27 23:27 ` [U-Boot] [RFC PATCH 2/7] net: Rename helper function to be more clear Joe Hershberger
2015-01-28  2:34   ` Simon Glass
2015-01-27 23:27 ` [U-Boot] [RFC PATCH 3/7] net: Remove unneeded "extern" in net.h Joe Hershberger
2015-01-28  2:34   ` Simon Glass
2015-01-27 23:27 ` [U-Boot] [RFC PATCH 4/7] net: Refactor in preparation for driver model Joe Hershberger
2015-01-28  2:34   ` Simon Glass
2015-01-27 23:27 ` [U-Boot] [RFC PATCH 5/7] net: Add basic driver model support to Ethernet stack Joe Hershberger
2015-01-28  2:34   ` Simon Glass
2015-01-28 10:22     ` Joe Hershberger
2015-01-29  1:56       ` Simon Glass
2015-01-27 23:27 ` [U-Boot] [RFC PATCH 6/7] net: Add network support to sandbox Joe Hershberger
2015-01-28  2:34   ` Simon Glass
2015-01-28 10:24     ` Joe Hershberger
2015-01-27 23:27 ` [U-Boot] [RFC PATCH 7/7] net: Add ARP and PING response to sandbox driver Joe Hershberger
2015-01-28  2:34   ` Simon Glass
     [not found]     ` <CANr=Z=YcT=OvcA8ggaMCrOfyS5ShjFzgK6AW9gpfsNsZqcgfPA@mail.gmail.com>
2015-01-29  1:58       ` Simon Glass
2015-01-28  2:33 ` [U-Boot] [RFC PATCH 0/7] Add Driver Model support to network stack Simon Glass
2015-02-03  0:38 ` [U-Boot] [RFC PATCH v2 0/8] " Joe Hershberger
2015-02-03  0:38   ` [U-Boot] [RFC PATCH v2 1/8] net: Provide a function to get the current MAC address Joe Hershberger
2015-02-07  1:25     ` Simon Glass
2015-02-03  0:38   ` [U-Boot] [RFC PATCH v2 2/8] net: Rename helper function to be more clear Joe Hershberger
2015-02-07  1:25     ` Simon Glass
2015-02-03  0:38   ` [U-Boot] [RFC PATCH v2 3/8] net: Remove unneeded "extern" in net.h Joe Hershberger
2015-02-07  1:25     ` Simon Glass
2015-02-03  0:38   ` [U-Boot] [RFC PATCH v2 4/8] net: Refactor in preparation for driver model Joe Hershberger
2015-02-07  1:25     ` Simon Glass
2015-02-03  0:38   ` [U-Boot] [RFC PATCH v2 5/8] net: Add basic driver model support to Ethernet stack Joe Hershberger
2015-02-07  1:25     ` Simon Glass
2015-02-11  6:25       ` Joe Hershberger
2015-02-13  5:20         ` Simon Glass
2015-02-14  2:43           ` Joe Hershberger
2015-02-03  0:38   ` [U-Boot] [RFC PATCH v2 6/8] net: Add network support to sandbox Joe Hershberger
2015-02-07  1:25     ` Simon Glass
2015-02-03  0:38   ` [U-Boot] [RFC PATCH v2 7/8] net: Add ARP and PING response to sandbox driver Joe Hershberger
2015-02-07  1:25     ` Simon Glass
2015-02-03  0:38   ` [U-Boot] [RFC PATCH v2 8/8] net: Add actual networking support to sandbox's driver Joe Hershberger
2015-02-07  1:25     ` Simon Glass
2015-02-11  1:30   ` [U-Boot] [RFC PATCH v3 0/14] Add Driver Model support to network stack Joe Hershberger
2015-02-11  1:30     ` [U-Boot] [RFC PATCH v3 01/14] dm: core: Allow seq numbers to be resolved before probe Joe Hershberger
2015-02-11  4:39       ` Simon Glass
2015-02-11  6:08         ` Joe Hershberger
2015-02-13  5:14           ` Simon Glass
2015-02-14  2:33             ` Joe Hershberger
2015-02-15 15:59               ` Simon Glass
2015-02-17  4:17                 ` Joe Hershberger
2015-02-18  5:02                   ` Simon Glass
2015-02-11  1:30     ` [U-Boot] [RFC PATCH v3 02/14] test: dm: Reorder the objects to build Joe Hershberger
2015-02-11  4:39       ` Simon Glass
2015-02-11  1:30     ` [U-Boot] [RFC PATCH v3 03/14] net: Provide a function to get the current MAC address Joe Hershberger
2015-02-11  1:30     ` [U-Boot] [RFC PATCH v3 04/14] net: Rename helper function to be more clear Joe Hershberger
2015-02-11  1:30     ` [U-Boot] [RFC PATCH v3 05/14] net: Remove unneeded "extern" in net.h Joe Hershberger
2015-02-11  1:30     ` [U-Boot] [RFC PATCH v3 06/14] net: Refactor in preparation for driver model Joe Hershberger
2015-02-11  1:30     ` [U-Boot] [RFC PATCH v3 07/14] dm: eth: Add basic driver model support to Ethernet stack Joe Hershberger
2015-02-15 15:49       ` Simon Glass
2015-02-17  4:37         ` Joe Hershberger
2015-02-18  5:02           ` Simon Glass
2015-02-11  1:30     ` [U-Boot] [RFC PATCH v3 08/14] dm: eth: Add network support to sandbox Joe Hershberger
2015-02-15 15:49       ` Simon Glass
2015-02-11  1:30     ` [U-Boot] [RFC PATCH v3 09/14] dm: eth: Add ARP and PING response to sandbox driver Joe Hershberger
2015-02-15 15:49       ` Simon Glass
2015-02-17  4:46         ` Joe Hershberger
2015-02-18  5:02           ` Simon Glass
2015-02-11  1:30     ` [U-Boot] [RFC PATCH v3 10/14] test: dm: eth: Add tests for the eth dm implementation Joe Hershberger
2015-02-15 15:50       ` Simon Glass
2015-02-11  1:30     ` [U-Boot] [RFC PATCH v3 11/14] dm: eth: Add support for aliases Joe Hershberger
2015-02-15 15:50       ` Simon Glass
2015-02-17  5:04         ` Joe Hershberger
2015-02-18  5:02           ` Simon Glass
2015-02-11  1:30     ` [U-Boot] [RFC PATCH v3 12/14] dm: eth: Add support for ethprime env var Joe Hershberger
2015-02-15 15:50       ` Simon Glass
2015-02-11  1:30     ` [U-Boot] [RFC PATCH v3 13/14] dm: eth: Add testing for netretry " Joe Hershberger
2015-02-15 15:50       ` Simon Glass
2015-02-11  1:30     ` [U-Boot] [RFC PATCH v3 14/14] dm: eth: Add a bridge to a real network for sandbox Joe Hershberger
2015-02-15 15:50       ` Simon Glass
2015-02-17  5:16         ` Joe Hershberger
2015-02-18  5:02           ` Simon Glass
2015-02-19 23:44             ` Joe Hershberger
2015-02-20 19:33               ` Simon Glass
2015-02-25  0:02     ` [U-Boot] [RFC PATCH v4 0/23] Add Driver Model support to network stack Joe Hershberger
2015-02-25  0:02       ` [U-Boot] [RFC PATCH v4 01/23] test: dm: Reorder the objects to build Joe Hershberger
2015-02-25  0:02       ` [U-Boot] [RFC PATCH v4 02/23] common: Make sure arch-specific map_sysmem() is defined Joe Hershberger
2015-03-01 18:07         ` Simon Glass
2015-03-01 21:16           ` Joe Hershberger
2015-03-02  2:24             ` Simon Glass
2015-02-25  0:02       ` [U-Boot] [RFC PATCH v4 03/23] net: Provide a function to get the current MAC address Joe Hershberger
2015-02-25  0:02       ` [U-Boot] [RFC PATCH v4 04/23] net: Rename helper function to be more clear Joe Hershberger
2015-02-25  0:02       ` [U-Boot] [RFC PATCH v4 05/23] net: Remove unneeded "extern" in net.h Joe Hershberger
2015-02-25  0:02       ` [U-Boot] [RFC PATCH v4 06/23] net: Refactor in preparation for driver model Joe Hershberger
2015-03-01 18:08         ` Simon Glass
2015-02-25  0:02       ` [U-Boot] [RFC PATCH v4 07/23] net: Change return codes from net/eth.c to use errorno constants Joe Hershberger
2015-02-26  0:53         ` Simon Glass
2015-02-25  0:02       ` [U-Boot] [RFC PATCH v4 08/23] net: Use int instead of u8 for boolean flag Joe Hershberger
2015-02-26  0:53         ` Simon Glass
2015-02-25  0:02       ` [U-Boot] [RFC PATCH v4 09/23] net: Remove the bd* parameter from net stack functions Joe Hershberger
2015-03-01 18:07         ` Simon Glass
2015-02-25  0:02       ` [U-Boot] [RFC PATCH v4 10/23] net: Make netretry actually do something Joe Hershberger
2015-03-01 18:07         ` Simon Glass
2015-03-01 21:53           ` Joe Hershberger
2015-03-02  2:24             ` Simon Glass
2015-02-25  0:02       ` [U-Boot] [RFC PATCH v4 11/23] net: Access mapped physmem in net functions Joe Hershberger
2015-03-01 18:07         ` Simon Glass
2015-02-25  0:02       ` [U-Boot] [RFC PATCH v4 12/23] dm: eth: Add basic driver model support to Ethernet stack Joe Hershberger
2015-03-01 18:07         ` Simon Glass
2015-03-01 21:45           ` Joe Hershberger
2015-03-02  2:26             ` Simon Glass
2015-02-25  0:02       ` [U-Boot] [RFC PATCH v4 13/23] sandbox: eth: Add network support to sandbox Joe Hershberger
2015-03-01 18:07         ` Simon Glass
2015-02-25  0:02       ` [U-Boot] [RFC PATCH v4 14/23] sandbox: eth: Add ARP and PING response to sandbox driver Joe Hershberger
2015-02-25  0:02       ` [U-Boot] [RFC PATCH v4 15/23] test: dm: eth: Add tests for the eth dm implementation Joe Hershberger
2015-02-25  0:02       ` [U-Boot] [RFC PATCH v4 16/23] dm: eth: Add support for aliases Joe Hershberger
2015-03-01 18:07         ` Simon Glass
2015-03-01 22:04           ` Joe Hershberger
2015-03-02  2:23             ` Simon Glass
2015-02-25  0:02       ` [U-Boot] [RFC PATCH v4 17/23] dm: eth: Add support for ethprime env var Joe Hershberger
2015-03-01 18:07         ` Simon Glass
2015-03-01 22:06           ` Joe Hershberger
2015-02-25  0:02       ` [U-Boot] [RFC PATCH v4 18/23] test: dm: eth: Add testing for ethrotate " Joe Hershberger
2015-03-01 18:07         ` Simon Glass
2015-02-25  0:02       ` [U-Boot] [RFC PATCH v4 19/23] sandbox: eth: Add ability to disable ping reply in sandbox eth driver Joe Hershberger
2015-03-01 18:07         ` Simon Glass
2015-02-25  0:02       ` [U-Boot] [RFC PATCH v4 20/23] test: dm: net: Add a test of the netretry behavior Joe Hershberger
2015-03-01 18:07         ` Simon Glass
2015-02-25  0:02       ` [U-Boot] [RFC PATCH v4 21/23] sandbox: eth: Add a bridge to a real network for sandbox Joe Hershberger
2015-03-01 18:07         ` Simon Glass
2015-03-02  7:17           ` Joe Hershberger
2015-03-02 15:48             ` Simon Glass
2015-02-25  0:02       ` [U-Boot] [RFC PATCH v4 22/23] sandbox: Enable DHCP and IP defrag Joe Hershberger
2015-03-01 18:07         ` Simon Glass
2015-02-25  0:02       ` [U-Boot] [RFC PATCH v4 23/23] sandbox: eth: Add support for using the 'lo' interface Joe Hershberger
2015-03-01 18:07         ` Simon Glass
2015-03-02  7:18           ` Joe Hershberger
2015-03-02 22:16             ` Simon Glass
2015-03-01 16:13       ` [U-Boot] [RFC PATCH v4 0/23] Add Driver Model support to network stack Simon Glass
2015-03-01 22:12         ` Joe Hershberger
2015-03-02  2:23           ` Simon Glass
2015-03-03 22:29         ` Joe Hershberger
2015-03-03 23:14           ` Simon Glass
2015-03-03 23:32             ` Joe Hershberger
2015-03-03 23:40               ` Simon Glass
2015-03-04  2:40       ` [U-Boot] [PATCH v5 0/27] " Joe Hershberger
2015-03-04  2:40         ` [U-Boot] [PATCH v5 01/27] test: dm: Reorder the objects to build Joe Hershberger
2015-03-04  2:40         ` [U-Boot] [PATCH v5 02/27] common: Make sure arch-specific map_sysmem() is defined Joe Hershberger
2015-03-04 19:18           ` Simon Glass
2015-03-04  2:40         ` [U-Boot] [PATCH v5 03/27] net: Provide a function to get the current MAC address Joe Hershberger
2015-03-04  2:40         ` [U-Boot] [PATCH v5 04/27] net: Rename helper function to be more clear Joe Hershberger
2015-03-04  2:40         ` [U-Boot] [PATCH v5 05/27] net: Remove unneeded "extern" in net.h Joe Hershberger
2015-03-04  2:41         ` [U-Boot] [PATCH v5 06/27] net: Refactor in preparation for driver model Joe Hershberger
2015-03-04  2:41         ` [U-Boot] [PATCH v5 07/27] net: Change return codes from net/eth.c to use errorno constants Joe Hershberger
2015-03-04  2:41         ` [U-Boot] [PATCH v5 08/27] net: Use int instead of u8 for boolean flag Joe Hershberger
2015-03-04  2:41         ` [U-Boot] [PATCH v5 09/27] net: Remove the bd* parameter from net stack functions Joe Hershberger
2015-03-04  2:41         ` [U-Boot] [PATCH v5 10/27] net: Make netretry actually do something Joe Hershberger
2015-03-04  2:41         ` [U-Boot] [PATCH v5 11/27] net: Access mapped physmem in net functions Joe Hershberger
2015-03-04 18:34           ` Simon Glass
2015-03-04  2:41         ` [U-Boot] [PATCH v5 12/27] cmd: net: Clean up return codes Joe Hershberger
2015-03-04 18:35           ` Simon Glass
2015-03-04  2:41         ` [U-Boot] [PATCH v5 13/27] dm: eth: Add basic driver model support to Ethernet stack Joe Hershberger
2015-03-04 18:35           ` Simon Glass
2015-03-04  2:41         ` [U-Boot] [PATCH v5 14/27] net: Clean up network stack names used in DM drivers Joe Hershberger
2015-03-04 18:35           ` Simon Glass
2015-03-04  2:41         ` [U-Boot] [PATCH v5 15/27] dm: eth: Pass the packet pointer as a parameter to recv Joe Hershberger
2015-03-04 18:35           ` Simon Glass
2015-03-10 23:28             ` Joe Hershberger
2015-03-10 23:31               ` Simon Glass
2015-03-10 23:41                 ` Joe Hershberger
2015-03-04  2:41         ` [U-Boot] [PATCH v5 16/27] sandbox: eth: Add network support to sandbox Joe Hershberger
2015-03-04 18:35           ` Simon Glass
2015-03-04  2:41         ` [U-Boot] [PATCH v5 17/27] sandbox: eth: Add ARP and PING response to sandbox driver Joe Hershberger
2015-03-04  2:41         ` [U-Boot] [PATCH v5 18/27] test: dm: eth: Add tests for the eth dm implementation Joe Hershberger
2015-03-04  2:41         ` [U-Boot] [PATCH v5 19/27] dm: eth: Add support for aliases Joe Hershberger
2015-03-04 18:35           ` Simon Glass
2015-03-04  2:41         ` [U-Boot] [PATCH v5 20/27] dm: eth: Add support for ethprime env var Joe Hershberger
2015-03-04  2:41         ` [U-Boot] [PATCH v5 21/27] test: dm: eth: Add testing for ethrotate " Joe Hershberger
2015-03-04 18:35           ` Simon Glass
2015-03-04  2:41         ` [U-Boot] [PATCH v5 22/27] sandbox: eth: Add ability to disable ping reply in sandbox eth driver Joe Hershberger
2015-03-04 18:35           ` Simon Glass
2015-03-04  2:41         ` [U-Boot] [PATCH v5 23/27] test: dm: net: Add a test of the netretry behavior Joe Hershberger
2015-03-04 18:35           ` Simon Glass
2015-03-04  2:41         ` [U-Boot] [PATCH v5 24/27] sandbox: eth: Add a bridge to a real network for sandbox Joe Hershberger
2015-03-04 18:35           ` Simon Glass
2015-03-04  2:41         ` [U-Boot] [PATCH v5 25/27] sandbox: Enable DHCP and IP defrag Joe Hershberger
2015-03-04  2:41         ` Joe Hershberger [this message]
2015-03-04 18:35           ` [U-Boot] [PATCH v5 26/27] sandbox: eth: Add support for using the 'lo' interface Simon Glass
2015-03-04  2:41         ` [U-Boot] [PATCH v5 27/27] net: Improve error handling Joe Hershberger
2015-03-04 18:35           ` Simon Glass
2015-03-10 23:10             ` Joe Hershberger
2015-03-11 23:43         ` [U-Boot] [PATCH v6 0/27] Add Driver Model support to network stack Joe Hershberger
2015-03-11 23:43           ` [U-Boot] [PATCH v6 01/27] test: dm: Reorder the objects to build Joe Hershberger
2015-03-11 23:44           ` [U-Boot] [PATCH v6 02/27] common: Make sure arch-specific map_sysmem() is defined Joe Hershberger
2015-03-11 23:44           ` [U-Boot] [PATCH v6 03/27] net: Provide a function to get the current MAC address Joe Hershberger
2015-03-11 23:44           ` [U-Boot] [PATCH v6 04/27] net: Rename helper function to be more clear Joe Hershberger
2015-03-11 23:44           ` [U-Boot] [PATCH v6 05/27] net: Remove unneeded "extern" in net.h Joe Hershberger
2015-03-11 23:44           ` [U-Boot] [PATCH v6 06/27] net: Refactor in preparation for driver model Joe Hershberger
2015-03-11 23:44           ` [U-Boot] [PATCH v6 07/27] net: Change return codes from net/eth.c to use errorno constants Joe Hershberger
2015-03-11 23:44           ` [U-Boot] [PATCH v6 08/27] net: Use int instead of u8 for boolean flag Joe Hershberger
2015-03-11 23:44           ` [U-Boot] [PATCH v6 09/27] net: Remove the bd* parameter from net stack functions Joe Hershberger
2015-03-20 23:01             ` Simon Glass
2015-03-22  3:42               ` Joe Hershberger
2015-03-22 21:09                 ` Simon Glass
2015-03-11 23:44           ` [U-Boot] [PATCH v6 10/27] net: Make netretry actually do something Joe Hershberger
2015-03-11 23:44           ` [U-Boot] [PATCH v6 11/27] net: Access mapped physmem in net functions Joe Hershberger
2015-03-11 23:44           ` [U-Boot] [PATCH v6 12/27] cmd: net: Clean up return codes Joe Hershberger
2015-03-11 23:44           ` [U-Boot] [PATCH v6 13/27] dm: eth: Add basic driver model support to Ethernet stack Joe Hershberger
2015-03-11 23:44           ` [U-Boot] [PATCH v6 14/27] net: Clean up network stack names used in DM drivers Joe Hershberger
2015-03-11 23:44           ` [U-Boot] [PATCH v6 15/27] dm: eth: Pass the packet pointer as a parameter to recv Joe Hershberger
2015-03-20 12:10             ` Simon Glass
2015-03-11 23:44           ` [U-Boot] [PATCH v6 16/27] sandbox: eth: Add network support to sandbox Joe Hershberger
2015-03-11 23:44           ` [U-Boot] [PATCH v6 17/27] sandbox: eth: Add ARP and PING response to sandbox driver Joe Hershberger
2015-03-11 23:44           ` [U-Boot] [PATCH v6 18/27] test: dm: eth: Add tests for the eth dm implementation Joe Hershberger
2015-03-11 23:44           ` [U-Boot] [PATCH v6 19/27] dm: eth: Add support for aliases Joe Hershberger
2015-03-11 23:44           ` [U-Boot] [PATCH v6 20/27] dm: eth: Add support for ethprime env var Joe Hershberger
2015-03-11 23:44           ` [U-Boot] [PATCH v6 21/27] test: dm: eth: Add testing for ethrotate " Joe Hershberger
2015-03-11 23:44           ` [U-Boot] [PATCH v6 22/27] sandbox: eth: Add ability to disable ping reply in sandbox eth driver Joe Hershberger
2015-03-11 23:44           ` [U-Boot] [PATCH v6 23/27] test: dm: net: Add a test of the netretry behavior Joe Hershberger
2015-03-11 23:44           ` [U-Boot] [PATCH v6 24/27] sandbox: eth: Add a bridge to a real network for sandbox Joe Hershberger
2015-03-11 23:44           ` [U-Boot] [PATCH v6 25/27] sandbox: Enable DHCP and IP defrag Joe Hershberger
2015-03-11 23:44           ` [U-Boot] [PATCH v6 26/27] sandbox: eth: Add support for using the 'lo' interface Joe Hershberger
2015-03-11 23:44           ` [U-Boot] [PATCH v6 27/27] net: Improve error handling Joe Hershberger
2015-03-20 12:17           ` [U-Boot] [PATCH v6 0/27] Add Driver Model support to network stack Simon Glass
2015-03-20 12:45             ` Joe Hershberger
2015-03-20 13:21             ` Tom Rini
2015-03-20 14:33               ` Joe Hershberger
2015-03-22 22:16                 ` Simon Glass
2015-03-22 22:08           ` [U-Boot] [PATCH v7 " Joe Hershberger
2015-03-22 22:08             ` [U-Boot] [PATCH v7 01/27] test: dm: Reorder the objects to build Joe Hershberger
2015-03-23 16:01               ` Simon Glass
2015-03-22 22:08             ` [U-Boot] [PATCH v7 02/27] common: Make sure arch-specific map_sysmem() is defined Joe Hershberger
2015-03-23 16:03               ` Simon Glass
2015-03-22 22:09             ` [U-Boot] [PATCH v7 03/27] net: Provide a function to get the current MAC address Joe Hershberger
2015-03-23 16:03               ` Simon Glass
2015-03-22 22:09             ` [U-Boot] [PATCH v7 04/27] net: Rename helper function to be more clear Joe Hershberger
2015-03-23 16:03               ` Simon Glass
2015-03-22 22:09             ` [U-Boot] [PATCH v7 05/27] net: Remove unneeded "extern" in net.h Joe Hershberger
2015-03-23 16:03               ` Simon Glass
2015-03-22 22:09             ` [U-Boot] [PATCH v7 06/27] net: Refactor in preparation for driver model Joe Hershberger
2015-03-23 16:04               ` Simon Glass
2015-03-22 22:09             ` [U-Boot] [PATCH v7 07/27] net: Change return codes from net/eth.c to use errorno constants Joe Hershberger
2015-03-23 16:04               ` Simon Glass
2015-03-22 22:09             ` [U-Boot] [PATCH v7 08/27] net: Use int instead of u8 for boolean flag Joe Hershberger
2015-03-23 16:04               ` Simon Glass
2015-03-22 22:09             ` [U-Boot] [PATCH v7 09/27] net: Remove the bd* parameter from net stack functions Joe Hershberger
2015-03-23 16:04               ` Simon Glass
2015-03-22 22:09             ` [U-Boot] [PATCH v7 10/27] net: Make netretry actually do something Joe Hershberger
2015-03-23 16:04               ` Simon Glass
2015-03-22 22:09             ` [U-Boot] [PATCH v7 11/27] net: Access mapped physmem in net functions Joe Hershberger
2015-03-23 16:05               ` Simon Glass
2015-03-22 22:09             ` [U-Boot] [PATCH v7 12/27] cmd: net: Clean up return codes Joe Hershberger
2015-03-23 16:05               ` Simon Glass
2015-03-22 22:09             ` [U-Boot] [PATCH v7 13/27] dm: eth: Add basic driver model support to Ethernet stack Joe Hershberger
2015-03-23 16:05               ` Simon Glass
2015-03-22 22:09             ` [U-Boot] [PATCH v7 14/27] net: Clean up network stack names used in DM drivers Joe Hershberger
2015-03-23 16:05               ` Simon Glass
2015-03-22 22:09             ` [U-Boot] [PATCH v7 15/27] dm: eth: Pass the packet pointer as a parameter to recv Joe Hershberger
2015-03-23 16:05               ` Simon Glass
2015-03-22 22:09             ` [U-Boot] [PATCH v7 16/27] sandbox: eth: Add network support to sandbox Joe Hershberger
2015-03-23 16:05               ` Simon Glass
2015-03-22 22:09             ` [U-Boot] [PATCH v7 17/27] sandbox: eth: Add ARP and PING response to sandbox driver Joe Hershberger
2015-03-23 16:06               ` Simon Glass
2015-03-22 22:09             ` [U-Boot] [PATCH v7 18/27] test: dm: eth: Add tests for the eth dm implementation Joe Hershberger
2015-03-23 16:06               ` Simon Glass
2015-03-22 22:09             ` [U-Boot] [PATCH v7 19/27] dm: eth: Add support for aliases Joe Hershberger
2015-03-23 16:06               ` Simon Glass
2015-03-22 22:09             ` [U-Boot] [PATCH v7 20/27] dm: eth: Add support for ethprime env var Joe Hershberger
2015-03-23 16:06               ` Simon Glass
2015-03-22 22:09             ` [U-Boot] [PATCH v7 21/27] test: dm: eth: Add testing for ethrotate " Joe Hershberger
2015-03-23 16:07               ` Simon Glass
2015-03-22 22:09             ` [U-Boot] [PATCH v7 22/27] sandbox: eth: Add ability to disable ping reply in sandbox eth driver Joe Hershberger
2015-03-23 16:07               ` Simon Glass
2015-03-22 22:09             ` [U-Boot] [PATCH v7 23/27] test: dm: net: Add a test of the netretry behavior Joe Hershberger
2015-03-23 16:07               ` Simon Glass
2015-03-22 22:09             ` [U-Boot] [PATCH v7 24/27] sandbox: eth: Add a bridge to a real network for sandbox Joe Hershberger
2015-03-23 16:07               ` Simon Glass
2015-03-22 22:09             ` [U-Boot] [PATCH v7 25/27] sandbox: Enable DHCP and IP defrag Joe Hershberger
2015-03-23 16:08               ` Simon Glass
2015-03-22 22:09             ` [U-Boot] [PATCH v7 26/27] sandbox: eth: Add support for using the 'lo' interface Joe Hershberger
2015-03-23 16:08               ` Simon Glass
2015-03-22 22:09             ` [U-Boot] [PATCH v7 27/27] net: Improve error handling Joe Hershberger
2015-03-23 16:08               ` Simon Glass

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1425436881-10323-27-git-send-email-joe.hershberger@ni.com \
    --to=joe.hershberger@ni.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.