[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 5/6] e1000: Choose which set of props to migr
From: |
Ed Swierk |
Subject: |
Re: [Qemu-devel] [PATCH v2 5/6] e1000: Choose which set of props to migrate |
Date: |
Wed, 28 Mar 2018 15:47:26 -0700 |
On Wed, Mar 28, 2018 at 9:36 AM, Dr. David Alan Gilbert (git)
<address@hidden> wrote:
> From: "Dr. David Alan Gilbert" <address@hidden>
>
> When we're using the subsection we migrate both
> the 'props' and 'tso_props' data; when we're not using
> the subsection (to migrate to 2.11 or old machine types) we've
> got to choose what to migrate in the main structure.
>
> If we're using the subsection migrate 'props' in the main structure.
> If we're not using the subsection then migrate the last one
> that changed, which gives behaviour similar to the old behaviour.
>
> Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Acked-by: Ed Swierk <address@hidden>
> ---
> hw/net/e1000.c | 18 +++++++++++++++++-
> 1 file changed, 17 insertions(+), 1 deletion(-)
>
> diff --git a/hw/net/e1000.c b/hw/net/e1000.c
> index 4e606d4b2a..13a9494a8d 100644
> --- a/hw/net/e1000.c
> +++ b/hw/net/e1000.c
> @@ -130,6 +130,7 @@ typedef struct E1000State_st {
> #define E1000_FLAG_TSO (1 << E1000_FLAG_TSO_BIT)
> uint32_t compat_flags;
> bool received_tx_tso;
> + bool use_tso_for_migration;
> e1000x_txd_props mig_props;
> } E1000State;
>
> @@ -622,9 +623,11 @@ process_tx_desc(E1000State *s, struct e1000_tx_desc *dp)
> if (dtype == E1000_TXD_CMD_DEXT) { /* context descriptor */
> if (le32_to_cpu(xp->cmd_and_length) & E1000_TXD_CMD_TSE) {
> e1000x_read_tx_ctx_descr(xp, &tp->tso_props);
> + s->use_tso_for_migration = 1;
> tp->tso_frames = 0;
> } else {
> e1000x_read_tx_ctx_descr(xp, &tp->props);
> + s->use_tso_for_migration = 0;
> }
> return;
> } else if (dtype == (E1000_TXD_CMD_DEXT | E1000_TXD_DTYP_D)) {
> @@ -1366,7 +1369,20 @@ static int e1000_pre_save(void *opaque)
> s->phy_reg[PHY_STATUS] |= MII_SR_AUTONEG_COMPLETE;
> }
>
> - s->mig_props = s->tx.props;
> + /* Decide which set of props to migrate in the main structure */
> + if (chkflag(TSO) || !s->use_tso_for_migration) {
> + /* Either we're migrating with the extra subsection, in which
> + * case the mig_props is always 'props' OR
> + * we've not got the subsection, but 'props' was the last
> + * updated.
> + */
> + s->mig_props = s->tx.props;
> + } else {
> + /* We're not using the subsection, and 'tso_props' was
> + * the last updated.
> + */
> + s->mig_props = s->tx.tso_props;
> + }
> return 0;
> }
>
> --
> 2.14.3
>
- [Qemu-devel] [PATCH v2 0/6] e1000 migration changes for 2.12, Dr. David Alan Gilbert (git), 2018/03/28
- [Qemu-devel] [PATCH v2 2/6] e1000: Dupe offload data on reading old stream, Dr. David Alan Gilbert (git), 2018/03/28
- [Qemu-devel] [PATCH v2 1/6] e1000: Convert v3 fields to subsection, Dr. David Alan Gilbert (git), 2018/03/28
- [Qemu-devel] [PATCH v2 3/6] e1000: wire new subsection to property, Dr. David Alan Gilbert (git), 2018/03/28
- [Qemu-devel] [PATCH v2 4/6] e1000: Migrate props via a temporary structure, Dr. David Alan Gilbert (git), 2018/03/28
- [Qemu-devel] [PATCH v2 6/6] e1000: Old machine types, turn new subsection off, Dr. David Alan Gilbert (git), 2018/03/28
- [Qemu-devel] [PATCH v2 5/6] e1000: Choose which set of props to migrate, Dr. David Alan Gilbert (git), 2018/03/28
Re: [Qemu-devel] [PATCH v2 0/6] e1000 migration changes for 2.12, Jason Wang, 2018/03/29