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 > > 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(-) >