qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] slirp: ensure minimum packet size


From: Anthony Liguori
Subject: Re: [Qemu-devel] [PATCH] slirp: ensure minimum packet size
Date: Fri, 11 Feb 2011 09:26:50 +0100
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.15) Gecko/20101027 Lightning/1.0b1 Thunderbird/3.0.10

On 02/10/2011 11:54 PM, Bruce Rogers wrote:
With recent gpxe eepro100 drivers, short packets are rejected,
so ensure the minimum ethernet packet size.

Signed-off-by: Bruce Rogers<address@hidden>

This doesn't make much sense. I think this is more likely a case where we're incorrectly calculating packet size. Michael fixed an issue similar to this in e1000 relating to FCR if I recall correctly. Maybe eepro100 has the same problem?

Regards,

Anthony Liguori

---
  slirp/slirp.c |    4 ++--
  1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/slirp/slirp.c b/slirp/slirp.c
index 332d83b..b611cf7 100644
--- a/slirp/slirp.c
+++ b/slirp/slirp.c
@@ -697,7 +697,7 @@ void if_encap(Slirp *slirp, const uint8_t *ip_data, int 
ip_data_len)
          return;

      if (!memcmp(slirp->client_ethaddr, zero_ethaddr, ETH_ALEN)) {
-        uint8_t arp_req[ETH_HLEN + sizeof(struct arphdr)];
+        uint8_t arp_req[max(ETH_HLEN + sizeof(struct arphdr), 64)];
          struct ethhdr *reh = (struct ethhdr *)arp_req;
          struct arphdr *rah = (struct arphdr *)(arp_req + ETH_HLEN);
          const struct ip *iph = (const struct ip *)ip_data;
@@ -734,7 +734,7 @@ void if_encap(Slirp *slirp, const uint8_t *ip_data, int 
ip_data_len)
          memcpy(&eh->h_source[2],&slirp->vhost_addr, 4);
          eh->h_proto = htons(ETH_P_IP);
          memcpy(buf + sizeof(struct ethhdr), ip_data, ip_data_len);
-        slirp_output(slirp->opaque, buf, ip_data_len + ETH_HLEN);
+        slirp_output(slirp->opaque, buf, max(ip_data_len + ETH_HLEN, 64));
      }
  }





reply via email to

[Prev in Thread] Current Thread [Next in Thread]