aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2016-02-08virtio-net: make net_hdr_size a variableNikunj A Dadhania1-9/+12
Size of the net_hdr_size is different in legacy and modern devices. This helps in conversion of the driver to 1.0. Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2016-02-08virtio-net: replace vq array with vq_{tx,rx}Nikunj A Dadhania1-29/+30
Using an array here is not necassary, simplifies the code for readability. Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2016-02-08virtio-net: use virtio_fill_descNikunj A Dadhania1-24/+11
Simplifies the driver code and is helpful for migration to virtio 1.0 enablement. Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2016-02-08virtio-{net,blk,scsi,9p}: use status variableNikunj A Dadhania4-28/+43
The virtio_set_status lines were getting too long because of OR'ing the status on the same line of the call. Moreover, going forward we need to add FEATURES_OK status as well. The state progress is quite straight forward, so use status variable instead. Code looks cleaner and can easily make out the change in the state. Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2016-02-08virtio-blk: add helpers for filling descriptorsNikunj A Dadhania3-15/+44
Enable virtio_fill_desc/fill_blk_hdr with legacy and modern mode for further use Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2016-02-08virtio-{blk,9p}: enable resetting the deviceNikunj A Dadhania2-9/+2
With the lack of the virtio_queue_init_vq routine, driver like virtio-blk and virtio-9p had disabled device reset in the initialization code. This helper will fix that problem, as the initialization can be done after the device reset. Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2016-02-08virtio: introduce helper for initializing virt queueNikunj A Dadhania8-69/+53
The routine takes care to allocate and set the queue address in the device. Add these calls in virtio-net, virtio-blk and virtio-9p. With the lack of this routine, devices like virtio-blk and virtio-9p did not do a device reset in the driver initialization code. This helper will fix that problem Change the signature of virtio_set_qaddr, accepting queue address as unsigned long argument. Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2016-02-08virtio: fix code style/design issues.Nikunj A Dadhania5-123/+117
The patch does not make any functional changes. Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2016-02-08fix code style in byteorder.hNikunj A Dadhania1-12/+6
Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2016-02-08pci: add byte read/write helper routinesNikunj A Dadhania2-0/+16
Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2016-02-08virtio-net: fix gcc warnings (-Wextra)Nikunj A Dadhania4-6/+6
Change rx_size type which originally should have been uint32_t. This also requires a change in the function prototype. Also change the return type of virtio_9p_load() to silence another gcc warning Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2016-02-08virtio-blk: fix gcc warnings (-Wextra)Nikunj A Dadhania2-2/+2
Change the prototype of virtioblk_read as blocknum wont be negative Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2016-02-08readme: Add a note about coding styleAlexey Kardashevskiy1-0/+22
This is an attempt to standartize the coding style in the project. Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> Reviewed-by: Thomas Huth <thuth@redhat.com>
2016-01-29dhcp: Remove duplicated strtoip()Alexey Kardashevskiy1-48/+2
There is another implementation in netapps/args.c which is used by netboot.c and ping.c so switch to it. Suggested-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> Reviewed-by: Thomas Huth <thuth@redhat.com>
2016-01-29ethernet: Fix gcc warningsAlexey Kardashevskiy1-1/+4
This fixes gcc warnings but unlike other places, this does not change the type of bytes_received as recv() may return a negative value; instead this adds: 1) casting to size_t when comparing the size; 2) an additional check for a negative value returned from recv(). The make command used to test: make qemu WARNFLAGS=-Wextra Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> Reviewed-by: Thomas Huth <thuth@redhat.com>
2016-01-29net-snk: Fix gcc warningsAlexey Kardashevskiy7-12/+12
This replaces some local variable types and some function parameters from signed to unsigned to fix gcc warnings. Tested DHCP+TFTP on both IPv4 and IPv6. The make command used to test: make qemu WARNFLAGS=-Wextra Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> Reviewed-by: Thomas Huth <thuth@redhat.com>
2016-01-29net-snk: Fix coding styleAlexey Kardashevskiy8-262/+194
This restyles function prototypes: - return types on the same line; - opening brace is on the next line. VIM configs used for this was: set noexpandtab set tabstop=8 set shiftwidth=4 set cino=:0,(0 This replaces [><]* with "*" as >< are also used to resolve merge conflicts. This removes trailing spaces. This removes some redundant braces. This should cause no behavioural change. Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> Reviewed-by: Thomas Huth <thuth@redhat.com>
2016-01-18net-snk: Fix memory leak in dhcp6_process_options()Thomas Huth2-16/+2
The dhcp6_process_options() function allocates a struct dhcp6_received_options each time it is called - but that struct never gets used - and especially is also never freed again. Fix this memory leak by simply removing the unused code. Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2016-01-18net-snk: Fix memory leak in ip6_to_multicast_mac() / send_ipv6()Thomas Huth1-8/+3
ip6_to_multicast_mac() uses a malloc to allocate a 6 bytes buffer for the MAC address - which never gets freed again! That means we're leaking memory for every multicast IPv6 packet that gets send out. Fix it by simply using the "uint8_t mac[6]" array from send_ipv6() instead. Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2016-01-18net-snk: Remove bad NEIGHBOUR_SOLICITATION code in send_ipv6()Thomas Huth1-9/+1
The code that checks for NEIGHBOUR_SOLICITATION packets is bad in two ways: First, it does not check that the packet is really an ICMPv6 packet, so it could accidentially be triggered for UDP or TCP packets, too. Second, the fill_ethhdr() is redundant (since it is done at the end of the function again) and also wrong (it uses the wrong buffer pointer to fill in the ethernet header). All we really need here is to get the right MAC address via ip6_to_multicast_mac() - and this is handled in the following if-statement already (NEIGHBOUR_SOLICITATIONs are always sent as multicast in the send_neighbour_solicitation() function), so the bad code block can simply be removed to fix the two issues. Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2016-01-14Fix dma-alloc and dma-map-in functions on board-js2xThomas Huth3-21/+32
Since slof/fs/dma-function.fs has been introduced for board-qemu, these function definitions shadow the original js2x functions from slof/fs/pci-config-bridge.fs, because dma-functions.fs is included after pci-config-bridge.fs in slof/fs/pci-bridge.fs. To restore the original behavior, move the js2x functions into a board-specific dma-function.fs file instead and include that one into the ROM-fs instead of the version for board-qemu. Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2016-01-14net-snk: Allow stateless autoconfig IPv6 addresses with IP_INIT_IPV6_MANUALThomas Huth1-4/+11
When manually specifying the TFTP server address and boot file name in IPv6 mode, we can still get the client IPv6 address via link-local or stateless IPv6 address autoconfiguration. So the netboot should not abort if just the client IPv6 address has not been specified yet. Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2016-01-14net-snk: Simplify the ip6_is_multicast() functionThomas Huth1-2/+1
Using a memcpy to just compare one byte looks very cumbersome. Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2016-01-14net-snk: Move global variable definition out of the header fileThomas Huth6-33/+38
The IPv6 code declares a bunch of global variables (without "extern" keyword!) in the ipv6.h header file. This is bad style and does not work when linking with "-fno-common" for example. So let's move the variables to the files where they are used instead. Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2016-01-14net-snk: Prefer non-link-local unicast IPv6 addresses if possibleThomas Huth1-0/+16
When the IPv6 code is told to create IPv6 addresses automatically (by passing NULL as parameter to set_ipv6_address()), the netboot code currently only uses link-local IPv6 addresses - which is bad since they can not be routed, e.g. if the TFTP server is not on the same link. So set_ipv6_address(NULL) should set own_ip6 preferably to a non-local unicast address if it has been generated successfully during ipv6_init(). Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2016-01-14net-snk: Fix the check for link-local addresses when receiving RAsThomas Huth2-2/+9
The code that checks whether the router advertisments contain only a link-local address has a bug: It must check the full first 10 bits of the address, not only the first 9 bits. Otherwise, site-local addresses (which start with 0xFEC0...) are also recognized as link-local, which is wrong, of course. Fix it by also introducing a proper wrapper functions for link-local addresses (which will be used in a later patch, too). Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2016-01-14net-snk: Remove junk at the end of IPv6 TFTP ACK and error packetsThomas Huth1-4/+2
While looking at the network traffic from SLOF with Wireshark, I noticed that there are some junk bytes at the end of TFTP ACK packets. The problem is that send_ack() adds sizeof(struct ethhdr) to the length of the packet that it wants to transmit. But adding the sizeof(struct ethhdr) to the length of the packet is done within send_ipv6() already, so this value got added twice. Removing it from send_ack() fixes this issue - the packets then look fine in Wireshark again. send_error() apparently suffers from the same issue, so let's also remove the sizeof(struct ethhdr) from that function. Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2016-01-11Fix format strings in usb-ohci.cThomas Huth1-6/+6
When compiling with OHCI_DEBUG enabled, gcc complains about a lot of bad format strings. So let's use more appropriate format modifiers to fix these warnings. Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2015-12-23net-snk: Get rid of junk at the end of sent DHCPv6 packetsThomas Huth2-6/+6
Wireshark reports bad FCS values and trailing zeros for SLOF's DHCPv6 packets. This happens due to two bugs. First, the length given to send_ipv6() contained sizeof(struct ethhdr) - but adding that length is the responsibility of the send_ipv6() function itself, the upper layers must not add this length yet. Second, struct option_request was defined with 5 options, but the code only uses 3 options instead. So when the code uses sizeof(struct dhcp_message_header) (which contains the struct option_request), there were additional unused bytes appended to the message. Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2015-12-23net-snk: Use transaction IDs in DHCPv4, tooThomas Huth3-2/+18
Generate a proper transaction ID before sending DHCPv4 packets and check whether the DHCPv4 replies contain that correct XID, too. Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2015-12-23net-snk: Make use of DHCPv6 transaction IDsThomas Huth3-8/+13
Generate a proper transaction ID before sending DHCPv6 packets and check whether the DHCPv6 replies contain that correct XID, too. Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2015-12-23net-snk: Seed the pseudo-random number generatorThomas Huth1-0/+14
Use the MAC address and the current timebase value to seed the pseudo-random number generator - this will hopefully give use enough pseudo-randomness so that two guests that are booting in parallel won't use the same rand() numbers. Signed-off-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Stefan Berger <stefanb@linux.vnet.ibm.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2015-12-23libc: Add srand() callThomas Huth2-0/+6
Needed for seeding the state of the pseudo-random number generator. Signed-off-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Stefan Berger <stefanb@linux.vnet.ibm.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2015-12-23libc: Fix the rand() function to return non-zero valuesThomas Huth1-2/+2
The rand() function in SLOF's libc has a bug which caused the function to always return zero: The _rand value was shifted left by 16, and then ANDed with 0x7fff. Obviously, the shift operation should be ">>" instead of "<<". And while we're at it, also increase the constant for the multiplaction in there so that more upper bits are affected. Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2015-12-23net-snk: Improve printed text when booting via networkThomas Huth2-13/+14
The output of net-snk is bad in a couple of places: 1) The hard-coded "Bootloader 1.6" message is pretty useless for the users (we never changed the version number in the past five years) - so let's change that into printing "Initializing NIC" instead. 2) "Requesting IP address via DHCP" is wrong for DHCPv6 since in this case, the net-snk might only request the boot file name via DHCPv6. In the IPv6-only case, the net-snk was already printing "Requesting information..." instead, so let's unify these texts to always print "information" instead of "IP address" 3) The client IPv6 address is never printed out, so do that now, too. Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2015-12-23Increase temporary buffer size of ibm,client-architecture-support callThomas Huth1-6/+7
The buffer size that we currently use for the client-architecture- support call currently only works if there is not more than 1 TiB of hot-pluggable RAM for the guest. This will likely not be enough in the near future, so increase the buffer size from 128 kiB to 2 MiB instead. That should be enough to accomodate for 16 TiB of hot-pluggable memory. While we're at it, also rename the "size" variable to something more specific (since it is put into the namespace of the root node), and add a proper error message in case the alloc-mem fails. Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2015-12-23Move archsupport.fs into board-qemu directoryThomas Huth3-1/+2
The "hv-cas" hypercall is only available on board-qemu. Including archsupport.fs on board-js2x breaks the boot process there. Thus the archsupport.fs file should reside in the board-qemu/slof directory instead and only be included from there. Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2015-12-23boot: stop booting when we encounter HALTNikunj A Dadhania1-0/+1
QEMU when started with "-boot strict=on", appends "HALT" at the end of the bootlist. Handle this in the boot order. Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2015-12-09fat-files: Fix bug with root-entries = 0 on certain FAT32 file systemsThomas Huth1-2/+13
The maximum number of root directory entries can be zero on certain FAT32 file systems. In this case, we've got to read the cluster number of the root directory from the extended BPB instead. See also the following URL for details: https://en.wikipedia.org/wiki/Design_of_the_FAT_file_system#BPB20_OFS_06h Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2015-12-09usb: print unhandled descriptor in debug modeNikunj A Dadhania1-1/+1
Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2015-12-02Improve stack usage with libnvram get_partition functionThomas Huth3-16/+14
The Forth-to-C wrapper for get-named-nvram-partition also uses the STRING_INIT macro. This causes heavy stack usage in the engine() function due to the static array in that macro. So let's rework the wrapper to do the string convertion in a separate function instead. Now that all users of the STRING_INIT and STRING_FROM_STACK macros are gone, the macros can be removed, too. Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2015-12-02Improve stack usage in libnvram environment variable codeThomas Huth3-40/+48
The Forth-to-C wrapper code in libnvram.code uses a temporary buffer of 255 bytes via the STRING_INIT macro for each Forth string that has to be converted to a C string. However, using such big arrays in the wrapper code is a bad idea: Each of the buffers is put into the stack frame of the engine() function (from paflof.c)! That means the 7 strings from libnvram.code increase the stack usage of engine() by 7 * 255 = 1785 bytes! This can cause stack overflows since engine() can be called recursively, e.g. via the forth_eval() macro. To fix this issue in the functions from envvar.c, we can simply pass the Forth strings directly to the functions by adding the string length as additional function parameter, since the functions in envvar.c don't really depend on NUL-terminated strings. And while we're at it (i.e. we touch the function prototypes here anyway), also rename the functions to have a proper "nvram_" prefix, so we clearly mark them as part of libnvram instead of cluttering the global name space with rather trivial function names. Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2015-12-02libc: Port vsnprintf back from skibootAlexey Kardashevskiy1-62/+118
Since initial port from slof to skiboot, vsnprintf() has improved in skiboot so let's port the improved version back. Suggested-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2015-12-01Move the code for rfill into a separate functionThomas Huth3-12/+41
The code from the FAST_RFILL macro uses a local array as a temporary buffer - which gets allocated in the stack frame of the engine() function. Since engine() can be called recursively, this can cause stack overflows. So let's move the rfill code into a separate function to avoid these problems. Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2015-12-01Rework wrapper for new_nvram_partition() and fix possible bug in thereThomas Huth3-12/+22
The wrapper for new_nvram_partition() is using a 12 bytes buffer to create a zero-terminated string. However, if the string has exactly 12 characters, the final NUL-terminator is missing. new_nvram_partition() then calls create_nvram_partition() internally which depends on proper NUL-terminated strings. So fix this by making sure that the copied string is always NUL-terminated - and while we're at it, also move the copy code out of libnvram.code to save some precious bytes in the stack space of the engine() function. Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2015-12-01Stack optimization in libusb: split up setup_new_device()Thomas Huth7-40/+52
When scanning hubs, the code in libusb can be called recursively, for example usb_hub_init() calls setup_new_device(), which then calls slof_usb_handle() to execute Forth code for the next device. If that next device is a hub, we end up recursively in usb_hub_init() again. Since stack space is limited in SLOF, we can optimize here a little bit by splitting up the setup_new_device() function into the part that retrieves the descriptors (which takes most of the stack space in this code path since the descriptors are placed on the stack), and the part that populates the the device tree node of the new device (which is responsible for the recursion). Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2015-12-01Check for stack overflow in paflof engineThomas Huth2-1/+10
Since engine() can be called recursively, this function is prone for causing stack overflows. Add a sanity check and spill out an error message if we detect an overflow. It's not a bullet-proof check, but still, it should catch at least the larger overflows and thus hopefully help detecting and debugging these overflow problems in the future. Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2015-12-01Clean up pending packet variable in ipv4 codeThomas Huth1-8/+8
The pending_pkt structure is not really an ARP cache entry, and the fields .ipv4_addr, .mac_addr and .pkt_pending were only set but never read again. So to avoid confusion, convert the pending packet structure into a simple array for storing the packet and an additional length variable. Reported-by: Laszlo Ersek <lersek@redhat.com> Signed-off-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2015-12-01Fix tracking of pending outgoing packets when handling ARP repliesThomas Huth1-1/+1
pending_pkt.pkt_pending is never read, thus setting it to 0 in handle_arp() does not make much sense. On the other hand, arp_table[i].pkt_pending is never set back to 0, but it is checked for tracking which packets still have to be sent in handle_arp(), thus we might send out the same queued packet multiple times when receiving more than one ARP packet from the other side. So setting "pending_pkt.pkt_pending = 0" seems to be a typo, and "arp_table[i].pkt_pending = 0" should be right instead. Signed-off-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2015-11-03version: update to 20151103qemu-slof-20151103Alexey Kardashevskiy1-1/+1
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>