mbrown at fensystems.co.uk
Tue Mar 13 16:20:08 GMT 2012
On Tuesday 13 Mar 2012 15:48:13 Frediano Ziglio wrote:
> > What is your motivation for wanting PXENV_UDP_WRITE to block?
> Here at Citrix we support a product called PVS (Provisioning System)
> that has software that allow pc to download disk images while booting.
> The part of software that handle PXE booting expects this UDP behaviour.
> I think your patch is an improve cause packet get transmitted just after
> the ARP reply arrives. But caller should know that this packet as been
> queued in order to avoid trying sending a new one.
> Also ARP should know that client does not want to send packet anymore
> and dequeue the packet.
So the problem is that PVS retransmits immediately if PXENV_UDP_WRITE returns
any kind of error, and this results in PVS effectively sending lots of
duplicates of the first packet?
If so, then the only sensible solution would seem to be to treat ARP enqueing
as a "success", and change "return -EAGAIN;" in arp_tx() to "return 0;". This
would result in PVS thinking that the packet had been transmitted
successfully; in practice the packet would end up being transmitted as soon as
the ARP response arrived.
Could you let me know if this change solves your problem?
More information about the ipxe-devel