On Thu, Nov 12, 2015 at 10:16 AM, Jason Wang <jasow...@redhat.com> wrote: > > > On 11/11/2015 09:52 PM, Leonid Bloch wrote: >> This series fixes issues with packet/octet counting in e1000's Statistic >> registers, fixes a bug in the packet address filtering procedure, and >> implements many MAC registers that were absent before, some Statistic >> counters among them. >> >> Besides this, the series introduces a parameter which, if set to "on" >> (default), will cause the entire MAC registers' array to migrate during >> live migration (please see patches #2 and #9 for details). The rational >> behind this is the ability to implement additional MAC registers in the >> future, without worrying about migration compatibility between future >> versions. For compatibility with previous versions, the above mentioned >> parameter can be set to "off". >> >> Also, a new array is introduced to control the access to the various MAC >> registers. This takes care of situations when a MAC register requires a >> certain parameter to be accessed, or is partially implemented, and >> requires a debug warning to be printed on access attempts. >> >> Additionally, several cosmetic changes are made. >> >> Differences v1-2: >> -------------------- >> * Wording of several commit messages corrected. >> * For trivially implemented Diagnostic registers, a debug message is >> added on read/write attempts, alerting of incomplete implementation. >> * Following testing on a physical device, only the lower 16 bits can now >> be read from AIT, and only the lower 4 - from FFMT*. >> * The grow_8reg_if_not_full function is rewritten. >> * inc_tx_bcast_or_mcast_count and increase_size_stats are now called >> from within e1000_send_packet, to avoid code duplication. >> >> Differences v2-3: >> -------------------- >> * Minor rewordings of some commit messages (0002, 0003). >> * Live migration capability is added to the newly implemented registers. >> >> Differences v3-4: >> -------------------- >> * Introduction of the "full_mac_registers" parameter (see above). >> * Reversion of the live migration handling introduced in v3. >> * Small alignment changes in patch #1 to correspond with the following >> patches. >> >> Differences v4-v5: >> -------------------- >> * Introduction of an array to control the access to the MAC registers. >> * Removal of the specific functions that warned of partial >> implementation on read/write from patch 4. >> * Adequate changes to patches 4 and 8: mainly adding the registers >> introduced there to the new array. >> >> Differences v5-v6: >> -------------------- >> * The access control array now does not contain an "always accessible" >> bit. The assumption that a register is always accessible is based now >> solely on the facts that it has a read or write handler, and it does >> not require a flag to be set. That also makes place for 6 possible >> flag bits in the access control array, instead of 5 in v5. >> * The support for backward compatibility, nor the new registers >> introduced in this series, can not be turned on now until the last >> patch in this series is applied. This is done to preserve >> compatibility if bisection in-between the patches of this series will >> be needed. >> >> The majority of these changes result from Jason Wang's review - thank >> you, Jason! > > Applied in https://github.com/jasowang/qemu/commits/net with a minor > modification: > > - Move the compat property from patch 3 to patch 9 > > Thanks
Jason, thanks for your review! It was very helpful! > >> >> Leonid Bloch (9): >> e1000: Cosmetic and alignment fixes >> e1000: Add support for migrating the entire MAC registers' array >> e1000: Introduced an array to control the access to the MAC registers >> e1000: Trivial implementation of various MAC registers >> e1000: Fixing the received/transmitted packets' counters >> e1000: Fixing the received/transmitted octets' counters >> e1000: Fixing the packet address filtering procedure >> e1000: Implementing various counters >> e1000: Introducing backward compatibility command line parameter >> >> hw/net/e1000.c | 476 >> ++++++++++++++++++++++++++++++++++++++++------------ >> hw/net/e1000_regs.h | 8 +- >> include/hw/compat.h | 4 + >> 3 files changed, 379 insertions(+), 109 deletions(-) >> >