Re: [Qemu-devel] [PATCH 2/2] vmxnet3: VMStatify rx/tx q_descr and int_state

2017-02-23 Thread Jason Wang



On 2017年02月01日 03:44, Dr. David Alan Gilbert wrote:

* Dmitry Fleytman (dmi...@daynix.com) wrote:

On 3 Jan 2017, at 21:40 PM, Dr. David Alan Gilbert  wrote:

* Dmitry Fleytman (dmi...@daynix.com  ) wrote:

On 16 Dec 2016, at 14:19 PM, Dr. David Alan Gilbert  wrote:

* Dr. David Alan Gilbert (git) (dgilb...@redhat.com) wrote:

From: "Dr. David Alan Gilbert"

Fairly simple mechanical conversion of all fields.

TODO
The problem is vmxnet3-ring size/cell_size/next are declared as size_t
but written as 32bit.

Oops, I should have removed that warning in the commit message when
I added the 1st patch in.


Acked-by: Dmitry Fleytman

Any reason for Acked-by rather than Reviewed-by ?
Are you going to pull those?

Hi,

There is no specific reason, the patch is OK as for me.
Reviewed-by: Dmitry Fleytman

Jason, would you pick up this patch?

Hi Jason,
   Did you see 

Dave



Applied to -net, thanks.



Re: [Qemu-devel] [PATCH 2/2] vmxnet3: VMStatify rx/tx q_descr and int_state

2017-01-31 Thread Dr. David Alan Gilbert
* Dmitry Fleytman (dmi...@daynix.com) wrote:
> 
> > On 3 Jan 2017, at 21:40 PM, Dr. David Alan Gilbert  
> > wrote:
> > 
> > * Dmitry Fleytman (dmi...@daynix.com ) wrote:
> >>> 
> >>> On 16 Dec 2016, at 14:19 PM, Dr. David Alan Gilbert  
> >>> wrote:
> >>> 
> >>> * Dr. David Alan Gilbert (git) (dgilb...@redhat.com) wrote:
>  From: "Dr. David Alan Gilbert" 
>  
>  Fairly simple mechanical conversion of all fields.
>  
>  TODO
>  The problem is vmxnet3-ring size/cell_size/next are declared as size_t
>  but written as 32bit.
> >>> 
> >>> Oops, I should have removed that warning in the commit message when
> >>> I added the 1st patch in.
> >> 
> >> 
> >> 
> >> Acked-by: Dmitry Fleytman 
> > 
> > Any reason for Acked-by rather than Reviewed-by ?
> > Are you going to pull those? 
> 
> Hi,
> 
> There is no specific reason, the patch is OK as for me.
> Reviewed-by: Dmitry Fleytman 
> 
> Jason, would you pick up this patch?

Hi Jason,
  Did you see 

Dave

> ~Dmitry
> 
> > 
> > Dave
> > 
> >> 
> >>> 
> >>> Dave
> >>> 
>  Signed-off-by: Dr. David Alan Gilbert 
>  ---
>  hw/net/vmxnet3.c | 272 
>  ++-
>  1 file changed, 90 insertions(+), 182 deletions(-)
>  
>  diff --git a/hw/net/vmxnet3.c b/hw/net/vmxnet3.c
>  index 7853174..4f7dbaf 100644
>  --- a/hw/net/vmxnet3.c
>  +++ b/hw/net/vmxnet3.c
>  @@ -2403,155 +2403,87 @@ static const VMStateDescription 
>  vmxstate_vmxnet3_mcast_list = {
> }
>  };
>  
>  -static void vmxnet3_get_ring_from_file(QEMUFile *f, Vmxnet3Ring *r)
>  -{
>  -r->pa = qemu_get_be64(f);
>  -r->size = qemu_get_be32(f);
>  -r->cell_size = qemu_get_be32(f);
>  -r->next = qemu_get_be32(f);
>  -r->gen = qemu_get_byte(f);
>  -}
>  -
>  -static void vmxnet3_put_ring_to_file(QEMUFile *f, Vmxnet3Ring *r)
>  -{
>  -qemu_put_be64(f, r->pa);
>  -qemu_put_be32(f, r->size);
>  -qemu_put_be32(f, r->cell_size);
>  -qemu_put_be32(f, r->next);
>  -qemu_put_byte(f, r->gen);
>  -}
>  -
>  -static void vmxnet3_get_tx_stats_from_file(QEMUFile *f,
>  -struct UPT1_TxStats *tx_stat)
>  -{
>  -tx_stat->TSOPktsTxOK = qemu_get_be64(f);
>  -tx_stat->TSOBytesTxOK = qemu_get_be64(f);
>  -tx_stat->ucastPktsTxOK = qemu_get_be64(f);
>  -tx_stat->ucastBytesTxOK = qemu_get_be64(f);
>  -tx_stat->mcastPktsTxOK = qemu_get_be64(f);
>  -tx_stat->mcastBytesTxOK = qemu_get_be64(f);
>  -tx_stat->bcastPktsTxOK = qemu_get_be64(f);
>  -tx_stat->bcastBytesTxOK = qemu_get_be64(f);
>  -tx_stat->pktsTxError = qemu_get_be64(f);
>  -tx_stat->pktsTxDiscard = qemu_get_be64(f);
>  -}
>  -
>  -static void vmxnet3_put_tx_stats_to_file(QEMUFile *f,
>  -struct UPT1_TxStats *tx_stat)
>  -{
>  -qemu_put_be64(f, tx_stat->TSOPktsTxOK);
>  -qemu_put_be64(f, tx_stat->TSOBytesTxOK);
>  -qemu_put_be64(f, tx_stat->ucastPktsTxOK);
>  -qemu_put_be64(f, tx_stat->ucastBytesTxOK);
>  -qemu_put_be64(f, tx_stat->mcastPktsTxOK);
>  -qemu_put_be64(f, tx_stat->mcastBytesTxOK);
>  -qemu_put_be64(f, tx_stat->bcastPktsTxOK);
>  -qemu_put_be64(f, tx_stat->bcastBytesTxOK);
>  -qemu_put_be64(f, tx_stat->pktsTxError);
>  -qemu_put_be64(f, tx_stat->pktsTxDiscard);
>  -}
>  -
>  -static int vmxnet3_get_txq_descr(QEMUFile *f, void *pv, size_t size,
>  -VMStateField *field)
>  -{
>  -Vmxnet3TxqDescr *r = pv;
>  -
>  -vmxnet3_get_ring_from_file(f, >tx_ring);
>  -vmxnet3_get_ring_from_file(f, >comp_ring);
>  -r->intr_idx = qemu_get_byte(f);
>  -r->tx_stats_pa = qemu_get_be64(f);
>  -
>  -vmxnet3_get_tx_stats_from_file(f, >txq_stats);
>  -
>  -return 0;
>  -}
>  -
>  -static int vmxnet3_put_txq_descr(QEMUFile *f, void *pv, size_t size,
>  - VMStateField *field, QJSON *vmdesc)
>  -{
>  -Vmxnet3TxqDescr *r = pv;
>  -
>  -vmxnet3_put_ring_to_file(f, >tx_ring);
>  -vmxnet3_put_ring_to_file(f, >comp_ring);
>  -qemu_put_byte(f, r->intr_idx);
>  -qemu_put_be64(f, r->tx_stats_pa);
>  -vmxnet3_put_tx_stats_to_file(f, >txq_stats);
>  -
>  -return 0;
>  -}
>  -
>  -static const VMStateInfo txq_descr_info = {
>  -.name = "txq_descr",
>  -.get = vmxnet3_get_txq_descr,
>  -.put = vmxnet3_put_txq_descr
>  +static const VMStateDescription vmstate_vmxnet3_ring = {
>  +.name = "vmxnet3-ring",
>  +.version_id = 0,
>  +.fields = 

Re: [Qemu-devel] [PATCH 2/2] vmxnet3: VMStatify rx/tx q_descr and int_state

2017-01-04 Thread Dmitry Fleytman

> On 3 Jan 2017, at 21:40 PM, Dr. David Alan Gilbert  
> wrote:
> 
> * Dmitry Fleytman (dmi...@daynix.com ) wrote:
>>> 
>>> On 16 Dec 2016, at 14:19 PM, Dr. David Alan Gilbert  
>>> wrote:
>>> 
>>> * Dr. David Alan Gilbert (git) (dgilb...@redhat.com) wrote:
 From: "Dr. David Alan Gilbert" 
 
 Fairly simple mechanical conversion of all fields.
 
 TODO
 The problem is vmxnet3-ring size/cell_size/next are declared as size_t
 but written as 32bit.
>>> 
>>> Oops, I should have removed that warning in the commit message when
>>> I added the 1st patch in.
>> 
>> 
>> 
>> Acked-by: Dmitry Fleytman 
> 
> Any reason for Acked-by rather than Reviewed-by ?
> Are you going to pull those? 

Hi,

There is no specific reason, the patch is OK as for me.
Reviewed-by: Dmitry Fleytman 

Jason, would you pick up this patch?

~Dmitry

> 
> Dave
> 
>> 
>>> 
>>> Dave
>>> 
 Signed-off-by: Dr. David Alan Gilbert 
 ---
 hw/net/vmxnet3.c | 272 
 ++-
 1 file changed, 90 insertions(+), 182 deletions(-)
 
 diff --git a/hw/net/vmxnet3.c b/hw/net/vmxnet3.c
 index 7853174..4f7dbaf 100644
 --- a/hw/net/vmxnet3.c
 +++ b/hw/net/vmxnet3.c
 @@ -2403,155 +2403,87 @@ static const VMStateDescription 
 vmxstate_vmxnet3_mcast_list = {
}
 };
 
 -static void vmxnet3_get_ring_from_file(QEMUFile *f, Vmxnet3Ring *r)
 -{
 -r->pa = qemu_get_be64(f);
 -r->size = qemu_get_be32(f);
 -r->cell_size = qemu_get_be32(f);
 -r->next = qemu_get_be32(f);
 -r->gen = qemu_get_byte(f);
 -}
 -
 -static void vmxnet3_put_ring_to_file(QEMUFile *f, Vmxnet3Ring *r)
 -{
 -qemu_put_be64(f, r->pa);
 -qemu_put_be32(f, r->size);
 -qemu_put_be32(f, r->cell_size);
 -qemu_put_be32(f, r->next);
 -qemu_put_byte(f, r->gen);
 -}
 -
 -static void vmxnet3_get_tx_stats_from_file(QEMUFile *f,
 -struct UPT1_TxStats *tx_stat)
 -{
 -tx_stat->TSOPktsTxOK = qemu_get_be64(f);
 -tx_stat->TSOBytesTxOK = qemu_get_be64(f);
 -tx_stat->ucastPktsTxOK = qemu_get_be64(f);
 -tx_stat->ucastBytesTxOK = qemu_get_be64(f);
 -tx_stat->mcastPktsTxOK = qemu_get_be64(f);
 -tx_stat->mcastBytesTxOK = qemu_get_be64(f);
 -tx_stat->bcastPktsTxOK = qemu_get_be64(f);
 -tx_stat->bcastBytesTxOK = qemu_get_be64(f);
 -tx_stat->pktsTxError = qemu_get_be64(f);
 -tx_stat->pktsTxDiscard = qemu_get_be64(f);
 -}
 -
 -static void vmxnet3_put_tx_stats_to_file(QEMUFile *f,
 -struct UPT1_TxStats *tx_stat)
 -{
 -qemu_put_be64(f, tx_stat->TSOPktsTxOK);
 -qemu_put_be64(f, tx_stat->TSOBytesTxOK);
 -qemu_put_be64(f, tx_stat->ucastPktsTxOK);
 -qemu_put_be64(f, tx_stat->ucastBytesTxOK);
 -qemu_put_be64(f, tx_stat->mcastPktsTxOK);
 -qemu_put_be64(f, tx_stat->mcastBytesTxOK);
 -qemu_put_be64(f, tx_stat->bcastPktsTxOK);
 -qemu_put_be64(f, tx_stat->bcastBytesTxOK);
 -qemu_put_be64(f, tx_stat->pktsTxError);
 -qemu_put_be64(f, tx_stat->pktsTxDiscard);
 -}
 -
 -static int vmxnet3_get_txq_descr(QEMUFile *f, void *pv, size_t size,
 -VMStateField *field)
 -{
 -Vmxnet3TxqDescr *r = pv;
 -
 -vmxnet3_get_ring_from_file(f, >tx_ring);
 -vmxnet3_get_ring_from_file(f, >comp_ring);
 -r->intr_idx = qemu_get_byte(f);
 -r->tx_stats_pa = qemu_get_be64(f);
 -
 -vmxnet3_get_tx_stats_from_file(f, >txq_stats);
 -
 -return 0;
 -}
 -
 -static int vmxnet3_put_txq_descr(QEMUFile *f, void *pv, size_t size,
 - VMStateField *field, QJSON *vmdesc)
 -{
 -Vmxnet3TxqDescr *r = pv;
 -
 -vmxnet3_put_ring_to_file(f, >tx_ring);
 -vmxnet3_put_ring_to_file(f, >comp_ring);
 -qemu_put_byte(f, r->intr_idx);
 -qemu_put_be64(f, r->tx_stats_pa);
 -vmxnet3_put_tx_stats_to_file(f, >txq_stats);
 -
 -return 0;
 -}
 -
 -static const VMStateInfo txq_descr_info = {
 -.name = "txq_descr",
 -.get = vmxnet3_get_txq_descr,
 -.put = vmxnet3_put_txq_descr
 +static const VMStateDescription vmstate_vmxnet3_ring = {
 +.name = "vmxnet3-ring",
 +.version_id = 0,
 +.fields = (VMStateField[]) {
 +VMSTATE_UINT64(pa, Vmxnet3Ring),
 +VMSTATE_UINT32(size, Vmxnet3Ring),
 +VMSTATE_UINT32(cell_size, Vmxnet3Ring),
 +VMSTATE_UINT32(next, Vmxnet3Ring),
 +VMSTATE_UINT8(gen, Vmxnet3Ring),
 +VMSTATE_END_OF_LIST()
 +}
 };
 
 -static void 

Re: [Qemu-devel] [PATCH 2/2] vmxnet3: VMStatify rx/tx q_descr and int_state

2017-01-03 Thread Dr. David Alan Gilbert
* Dmitry Fleytman (dmi...@daynix.com) wrote:
> > 
> > On 16 Dec 2016, at 14:19 PM, Dr. David Alan Gilbert  
> > wrote:
> > 
> > * Dr. David Alan Gilbert (git) (dgilb...@redhat.com) wrote:
> >> From: "Dr. David Alan Gilbert" 
> >> 
> >> Fairly simple mechanical conversion of all fields.
> >> 
> >> TODO
> >> The problem is vmxnet3-ring size/cell_size/next are declared as size_t
> >> but written as 32bit.
> > 
> > Oops, I should have removed that warning in the commit message when
> > I added the 1st patch in.
> 
> 
> 
> Acked-by: Dmitry Fleytman 

Any reason for Acked-by rather than Reviewed-by ?
Are you going to pull those? 

Dave

> 
> > 
> > Dave
> > 
> >> Signed-off-by: Dr. David Alan Gilbert 
> >> ---
> >> hw/net/vmxnet3.c | 272 
> >> ++-
> >> 1 file changed, 90 insertions(+), 182 deletions(-)
> >> 
> >> diff --git a/hw/net/vmxnet3.c b/hw/net/vmxnet3.c
> >> index 7853174..4f7dbaf 100644
> >> --- a/hw/net/vmxnet3.c
> >> +++ b/hw/net/vmxnet3.c
> >> @@ -2403,155 +2403,87 @@ static const VMStateDescription 
> >> vmxstate_vmxnet3_mcast_list = {
> >> }
> >> };
> >> 
> >> -static void vmxnet3_get_ring_from_file(QEMUFile *f, Vmxnet3Ring *r)
> >> -{
> >> -r->pa = qemu_get_be64(f);
> >> -r->size = qemu_get_be32(f);
> >> -r->cell_size = qemu_get_be32(f);
> >> -r->next = qemu_get_be32(f);
> >> -r->gen = qemu_get_byte(f);
> >> -}
> >> -
> >> -static void vmxnet3_put_ring_to_file(QEMUFile *f, Vmxnet3Ring *r)
> >> -{
> >> -qemu_put_be64(f, r->pa);
> >> -qemu_put_be32(f, r->size);
> >> -qemu_put_be32(f, r->cell_size);
> >> -qemu_put_be32(f, r->next);
> >> -qemu_put_byte(f, r->gen);
> >> -}
> >> -
> >> -static void vmxnet3_get_tx_stats_from_file(QEMUFile *f,
> >> -struct UPT1_TxStats *tx_stat)
> >> -{
> >> -tx_stat->TSOPktsTxOK = qemu_get_be64(f);
> >> -tx_stat->TSOBytesTxOK = qemu_get_be64(f);
> >> -tx_stat->ucastPktsTxOK = qemu_get_be64(f);
> >> -tx_stat->ucastBytesTxOK = qemu_get_be64(f);
> >> -tx_stat->mcastPktsTxOK = qemu_get_be64(f);
> >> -tx_stat->mcastBytesTxOK = qemu_get_be64(f);
> >> -tx_stat->bcastPktsTxOK = qemu_get_be64(f);
> >> -tx_stat->bcastBytesTxOK = qemu_get_be64(f);
> >> -tx_stat->pktsTxError = qemu_get_be64(f);
> >> -tx_stat->pktsTxDiscard = qemu_get_be64(f);
> >> -}
> >> -
> >> -static void vmxnet3_put_tx_stats_to_file(QEMUFile *f,
> >> -struct UPT1_TxStats *tx_stat)
> >> -{
> >> -qemu_put_be64(f, tx_stat->TSOPktsTxOK);
> >> -qemu_put_be64(f, tx_stat->TSOBytesTxOK);
> >> -qemu_put_be64(f, tx_stat->ucastPktsTxOK);
> >> -qemu_put_be64(f, tx_stat->ucastBytesTxOK);
> >> -qemu_put_be64(f, tx_stat->mcastPktsTxOK);
> >> -qemu_put_be64(f, tx_stat->mcastBytesTxOK);
> >> -qemu_put_be64(f, tx_stat->bcastPktsTxOK);
> >> -qemu_put_be64(f, tx_stat->bcastBytesTxOK);
> >> -qemu_put_be64(f, tx_stat->pktsTxError);
> >> -qemu_put_be64(f, tx_stat->pktsTxDiscard);
> >> -}
> >> -
> >> -static int vmxnet3_get_txq_descr(QEMUFile *f, void *pv, size_t size,
> >> -VMStateField *field)
> >> -{
> >> -Vmxnet3TxqDescr *r = pv;
> >> -
> >> -vmxnet3_get_ring_from_file(f, >tx_ring);
> >> -vmxnet3_get_ring_from_file(f, >comp_ring);
> >> -r->intr_idx = qemu_get_byte(f);
> >> -r->tx_stats_pa = qemu_get_be64(f);
> >> -
> >> -vmxnet3_get_tx_stats_from_file(f, >txq_stats);
> >> -
> >> -return 0;
> >> -}
> >> -
> >> -static int vmxnet3_put_txq_descr(QEMUFile *f, void *pv, size_t size,
> >> - VMStateField *field, QJSON *vmdesc)
> >> -{
> >> -Vmxnet3TxqDescr *r = pv;
> >> -
> >> -vmxnet3_put_ring_to_file(f, >tx_ring);
> >> -vmxnet3_put_ring_to_file(f, >comp_ring);
> >> -qemu_put_byte(f, r->intr_idx);
> >> -qemu_put_be64(f, r->tx_stats_pa);
> >> -vmxnet3_put_tx_stats_to_file(f, >txq_stats);
> >> -
> >> -return 0;
> >> -}
> >> -
> >> -static const VMStateInfo txq_descr_info = {
> >> -.name = "txq_descr",
> >> -.get = vmxnet3_get_txq_descr,
> >> -.put = vmxnet3_put_txq_descr
> >> +static const VMStateDescription vmstate_vmxnet3_ring = {
> >> +.name = "vmxnet3-ring",
> >> +.version_id = 0,
> >> +.fields = (VMStateField[]) {
> >> +VMSTATE_UINT64(pa, Vmxnet3Ring),
> >> +VMSTATE_UINT32(size, Vmxnet3Ring),
> >> +VMSTATE_UINT32(cell_size, Vmxnet3Ring),
> >> +VMSTATE_UINT32(next, Vmxnet3Ring),
> >> +VMSTATE_UINT8(gen, Vmxnet3Ring),
> >> +VMSTATE_END_OF_LIST()
> >> +}
> >> };
> >> 
> >> -static void vmxnet3_get_rx_stats_from_file(QEMUFile *f,
> >> -struct UPT1_RxStats *rx_stat)
> >> -{
> >> -rx_stat->LROPktsRxOK = qemu_get_be64(f);
> >> -rx_stat->LROBytesRxOK = qemu_get_be64(f);
> >> -rx_stat->ucastPktsRxOK = qemu_get_be64(f);
> >> -rx_stat->ucastBytesRxOK = qemu_get_be64(f);
> >> -

Re: [Qemu-devel] [PATCH 2/2] vmxnet3: VMStatify rx/tx q_descr and int_state

2016-12-17 Thread Dmitry Fleytman
> 
> On 16 Dec 2016, at 14:19 PM, Dr. David Alan Gilbert  
> wrote:
> 
> * Dr. David Alan Gilbert (git) (dgilb...@redhat.com) wrote:
>> From: "Dr. David Alan Gilbert" 
>> 
>> Fairly simple mechanical conversion of all fields.
>> 
>> TODO
>> The problem is vmxnet3-ring size/cell_size/next are declared as size_t
>> but written as 32bit.
> 
> Oops, I should have removed that warning in the commit message when
> I added the 1st patch in.



Acked-by: Dmitry Fleytman 

> 
> Dave
> 
>> Signed-off-by: Dr. David Alan Gilbert 
>> ---
>> hw/net/vmxnet3.c | 272 
>> ++-
>> 1 file changed, 90 insertions(+), 182 deletions(-)
>> 
>> diff --git a/hw/net/vmxnet3.c b/hw/net/vmxnet3.c
>> index 7853174..4f7dbaf 100644
>> --- a/hw/net/vmxnet3.c
>> +++ b/hw/net/vmxnet3.c
>> @@ -2403,155 +2403,87 @@ static const VMStateDescription 
>> vmxstate_vmxnet3_mcast_list = {
>> }
>> };
>> 
>> -static void vmxnet3_get_ring_from_file(QEMUFile *f, Vmxnet3Ring *r)
>> -{
>> -r->pa = qemu_get_be64(f);
>> -r->size = qemu_get_be32(f);
>> -r->cell_size = qemu_get_be32(f);
>> -r->next = qemu_get_be32(f);
>> -r->gen = qemu_get_byte(f);
>> -}
>> -
>> -static void vmxnet3_put_ring_to_file(QEMUFile *f, Vmxnet3Ring *r)
>> -{
>> -qemu_put_be64(f, r->pa);
>> -qemu_put_be32(f, r->size);
>> -qemu_put_be32(f, r->cell_size);
>> -qemu_put_be32(f, r->next);
>> -qemu_put_byte(f, r->gen);
>> -}
>> -
>> -static void vmxnet3_get_tx_stats_from_file(QEMUFile *f,
>> -struct UPT1_TxStats *tx_stat)
>> -{
>> -tx_stat->TSOPktsTxOK = qemu_get_be64(f);
>> -tx_stat->TSOBytesTxOK = qemu_get_be64(f);
>> -tx_stat->ucastPktsTxOK = qemu_get_be64(f);
>> -tx_stat->ucastBytesTxOK = qemu_get_be64(f);
>> -tx_stat->mcastPktsTxOK = qemu_get_be64(f);
>> -tx_stat->mcastBytesTxOK = qemu_get_be64(f);
>> -tx_stat->bcastPktsTxOK = qemu_get_be64(f);
>> -tx_stat->bcastBytesTxOK = qemu_get_be64(f);
>> -tx_stat->pktsTxError = qemu_get_be64(f);
>> -tx_stat->pktsTxDiscard = qemu_get_be64(f);
>> -}
>> -
>> -static void vmxnet3_put_tx_stats_to_file(QEMUFile *f,
>> -struct UPT1_TxStats *tx_stat)
>> -{
>> -qemu_put_be64(f, tx_stat->TSOPktsTxOK);
>> -qemu_put_be64(f, tx_stat->TSOBytesTxOK);
>> -qemu_put_be64(f, tx_stat->ucastPktsTxOK);
>> -qemu_put_be64(f, tx_stat->ucastBytesTxOK);
>> -qemu_put_be64(f, tx_stat->mcastPktsTxOK);
>> -qemu_put_be64(f, tx_stat->mcastBytesTxOK);
>> -qemu_put_be64(f, tx_stat->bcastPktsTxOK);
>> -qemu_put_be64(f, tx_stat->bcastBytesTxOK);
>> -qemu_put_be64(f, tx_stat->pktsTxError);
>> -qemu_put_be64(f, tx_stat->pktsTxDiscard);
>> -}
>> -
>> -static int vmxnet3_get_txq_descr(QEMUFile *f, void *pv, size_t size,
>> -VMStateField *field)
>> -{
>> -Vmxnet3TxqDescr *r = pv;
>> -
>> -vmxnet3_get_ring_from_file(f, >tx_ring);
>> -vmxnet3_get_ring_from_file(f, >comp_ring);
>> -r->intr_idx = qemu_get_byte(f);
>> -r->tx_stats_pa = qemu_get_be64(f);
>> -
>> -vmxnet3_get_tx_stats_from_file(f, >txq_stats);
>> -
>> -return 0;
>> -}
>> -
>> -static int vmxnet3_put_txq_descr(QEMUFile *f, void *pv, size_t size,
>> - VMStateField *field, QJSON *vmdesc)
>> -{
>> -Vmxnet3TxqDescr *r = pv;
>> -
>> -vmxnet3_put_ring_to_file(f, >tx_ring);
>> -vmxnet3_put_ring_to_file(f, >comp_ring);
>> -qemu_put_byte(f, r->intr_idx);
>> -qemu_put_be64(f, r->tx_stats_pa);
>> -vmxnet3_put_tx_stats_to_file(f, >txq_stats);
>> -
>> -return 0;
>> -}
>> -
>> -static const VMStateInfo txq_descr_info = {
>> -.name = "txq_descr",
>> -.get = vmxnet3_get_txq_descr,
>> -.put = vmxnet3_put_txq_descr
>> +static const VMStateDescription vmstate_vmxnet3_ring = {
>> +.name = "vmxnet3-ring",
>> +.version_id = 0,
>> +.fields = (VMStateField[]) {
>> +VMSTATE_UINT64(pa, Vmxnet3Ring),
>> +VMSTATE_UINT32(size, Vmxnet3Ring),
>> +VMSTATE_UINT32(cell_size, Vmxnet3Ring),
>> +VMSTATE_UINT32(next, Vmxnet3Ring),
>> +VMSTATE_UINT8(gen, Vmxnet3Ring),
>> +VMSTATE_END_OF_LIST()
>> +}
>> };
>> 
>> -static void vmxnet3_get_rx_stats_from_file(QEMUFile *f,
>> -struct UPT1_RxStats *rx_stat)
>> -{
>> -rx_stat->LROPktsRxOK = qemu_get_be64(f);
>> -rx_stat->LROBytesRxOK = qemu_get_be64(f);
>> -rx_stat->ucastPktsRxOK = qemu_get_be64(f);
>> -rx_stat->ucastBytesRxOK = qemu_get_be64(f);
>> -rx_stat->mcastPktsRxOK = qemu_get_be64(f);
>> -rx_stat->mcastBytesRxOK = qemu_get_be64(f);
>> -rx_stat->bcastPktsRxOK = qemu_get_be64(f);
>> -rx_stat->bcastBytesRxOK = qemu_get_be64(f);
>> -rx_stat->pktsRxOutOfBuf = qemu_get_be64(f);
>> -rx_stat->pktsRxError = qemu_get_be64(f);
>> -}
>> -
>> -static void vmxnet3_put_rx_stats_to_file(QEMUFile *f,
>> -struct UPT1_RxStats *rx_stat)
>> -{
>> -

Re: [Qemu-devel] [PATCH 2/2] vmxnet3: VMStatify rx/tx q_descr and int_state

2016-12-16 Thread Dr. David Alan Gilbert
* Dr. David Alan Gilbert (git) (dgilb...@redhat.com) wrote:
> From: "Dr. David Alan Gilbert" 
> 
> Fairly simple mechanical conversion of all fields.
> 
> TODO
> The problem is vmxnet3-ring size/cell_size/next are declared as size_t
> but written as 32bit.

Oops, I should have removed that warning in the commit message when
I added the 1st patch in.

Dave

> Signed-off-by: Dr. David Alan Gilbert 
> ---
>  hw/net/vmxnet3.c | 272 
> ++-
>  1 file changed, 90 insertions(+), 182 deletions(-)
> 
> diff --git a/hw/net/vmxnet3.c b/hw/net/vmxnet3.c
> index 7853174..4f7dbaf 100644
> --- a/hw/net/vmxnet3.c
> +++ b/hw/net/vmxnet3.c
> @@ -2403,155 +2403,87 @@ static const VMStateDescription 
> vmxstate_vmxnet3_mcast_list = {
>  }
>  };
>  
> -static void vmxnet3_get_ring_from_file(QEMUFile *f, Vmxnet3Ring *r)
> -{
> -r->pa = qemu_get_be64(f);
> -r->size = qemu_get_be32(f);
> -r->cell_size = qemu_get_be32(f);
> -r->next = qemu_get_be32(f);
> -r->gen = qemu_get_byte(f);
> -}
> -
> -static void vmxnet3_put_ring_to_file(QEMUFile *f, Vmxnet3Ring *r)
> -{
> -qemu_put_be64(f, r->pa);
> -qemu_put_be32(f, r->size);
> -qemu_put_be32(f, r->cell_size);
> -qemu_put_be32(f, r->next);
> -qemu_put_byte(f, r->gen);
> -}
> -
> -static void vmxnet3_get_tx_stats_from_file(QEMUFile *f,
> -struct UPT1_TxStats *tx_stat)
> -{
> -tx_stat->TSOPktsTxOK = qemu_get_be64(f);
> -tx_stat->TSOBytesTxOK = qemu_get_be64(f);
> -tx_stat->ucastPktsTxOK = qemu_get_be64(f);
> -tx_stat->ucastBytesTxOK = qemu_get_be64(f);
> -tx_stat->mcastPktsTxOK = qemu_get_be64(f);
> -tx_stat->mcastBytesTxOK = qemu_get_be64(f);
> -tx_stat->bcastPktsTxOK = qemu_get_be64(f);
> -tx_stat->bcastBytesTxOK = qemu_get_be64(f);
> -tx_stat->pktsTxError = qemu_get_be64(f);
> -tx_stat->pktsTxDiscard = qemu_get_be64(f);
> -}
> -
> -static void vmxnet3_put_tx_stats_to_file(QEMUFile *f,
> -struct UPT1_TxStats *tx_stat)
> -{
> -qemu_put_be64(f, tx_stat->TSOPktsTxOK);
> -qemu_put_be64(f, tx_stat->TSOBytesTxOK);
> -qemu_put_be64(f, tx_stat->ucastPktsTxOK);
> -qemu_put_be64(f, tx_stat->ucastBytesTxOK);
> -qemu_put_be64(f, tx_stat->mcastPktsTxOK);
> -qemu_put_be64(f, tx_stat->mcastBytesTxOK);
> -qemu_put_be64(f, tx_stat->bcastPktsTxOK);
> -qemu_put_be64(f, tx_stat->bcastBytesTxOK);
> -qemu_put_be64(f, tx_stat->pktsTxError);
> -qemu_put_be64(f, tx_stat->pktsTxDiscard);
> -}
> -
> -static int vmxnet3_get_txq_descr(QEMUFile *f, void *pv, size_t size,
> -VMStateField *field)
> -{
> -Vmxnet3TxqDescr *r = pv;
> -
> -vmxnet3_get_ring_from_file(f, >tx_ring);
> -vmxnet3_get_ring_from_file(f, >comp_ring);
> -r->intr_idx = qemu_get_byte(f);
> -r->tx_stats_pa = qemu_get_be64(f);
> -
> -vmxnet3_get_tx_stats_from_file(f, >txq_stats);
> -
> -return 0;
> -}
> -
> -static int vmxnet3_put_txq_descr(QEMUFile *f, void *pv, size_t size,
> - VMStateField *field, QJSON *vmdesc)
> -{
> -Vmxnet3TxqDescr *r = pv;
> -
> -vmxnet3_put_ring_to_file(f, >tx_ring);
> -vmxnet3_put_ring_to_file(f, >comp_ring);
> -qemu_put_byte(f, r->intr_idx);
> -qemu_put_be64(f, r->tx_stats_pa);
> -vmxnet3_put_tx_stats_to_file(f, >txq_stats);
> -
> -return 0;
> -}
> -
> -static const VMStateInfo txq_descr_info = {
> -.name = "txq_descr",
> -.get = vmxnet3_get_txq_descr,
> -.put = vmxnet3_put_txq_descr
> +static const VMStateDescription vmstate_vmxnet3_ring = {
> +.name = "vmxnet3-ring",
> +.version_id = 0,
> +.fields = (VMStateField[]) {
> +VMSTATE_UINT64(pa, Vmxnet3Ring),
> +VMSTATE_UINT32(size, Vmxnet3Ring),
> +VMSTATE_UINT32(cell_size, Vmxnet3Ring),
> +VMSTATE_UINT32(next, Vmxnet3Ring),
> +VMSTATE_UINT8(gen, Vmxnet3Ring),
> +VMSTATE_END_OF_LIST()
> +}
>  };
>  
> -static void vmxnet3_get_rx_stats_from_file(QEMUFile *f,
> -struct UPT1_RxStats *rx_stat)
> -{
> -rx_stat->LROPktsRxOK = qemu_get_be64(f);
> -rx_stat->LROBytesRxOK = qemu_get_be64(f);
> -rx_stat->ucastPktsRxOK = qemu_get_be64(f);
> -rx_stat->ucastBytesRxOK = qemu_get_be64(f);
> -rx_stat->mcastPktsRxOK = qemu_get_be64(f);
> -rx_stat->mcastBytesRxOK = qemu_get_be64(f);
> -rx_stat->bcastPktsRxOK = qemu_get_be64(f);
> -rx_stat->bcastBytesRxOK = qemu_get_be64(f);
> -rx_stat->pktsRxOutOfBuf = qemu_get_be64(f);
> -rx_stat->pktsRxError = qemu_get_be64(f);
> -}
> -
> -static void vmxnet3_put_rx_stats_to_file(QEMUFile *f,
> -struct UPT1_RxStats *rx_stat)
> -{
> -qemu_put_be64(f, rx_stat->LROPktsRxOK);
> -qemu_put_be64(f, rx_stat->LROBytesRxOK);
> -qemu_put_be64(f, rx_stat->ucastPktsRxOK);
> -qemu_put_be64(f, rx_stat->ucastBytesRxOK);
> -qemu_put_be64(f, rx_stat->mcastPktsRxOK);
> -qemu_put_be64(f, rx_stat->mcastBytesRxOK);
> -

[Qemu-devel] [PATCH 2/2] vmxnet3: VMStatify rx/tx q_descr and int_state

2016-12-15 Thread Dr. David Alan Gilbert (git)
From: "Dr. David Alan Gilbert" 

Fairly simple mechanical conversion of all fields.

TODO
The problem is vmxnet3-ring size/cell_size/next are declared as size_t
but written as 32bit.

Signed-off-by: Dr. David Alan Gilbert 
---
 hw/net/vmxnet3.c | 272 ++-
 1 file changed, 90 insertions(+), 182 deletions(-)

diff --git a/hw/net/vmxnet3.c b/hw/net/vmxnet3.c
index 7853174..4f7dbaf 100644
--- a/hw/net/vmxnet3.c
+++ b/hw/net/vmxnet3.c
@@ -2403,155 +2403,87 @@ static const VMStateDescription 
vmxstate_vmxnet3_mcast_list = {
 }
 };
 
-static void vmxnet3_get_ring_from_file(QEMUFile *f, Vmxnet3Ring *r)
-{
-r->pa = qemu_get_be64(f);
-r->size = qemu_get_be32(f);
-r->cell_size = qemu_get_be32(f);
-r->next = qemu_get_be32(f);
-r->gen = qemu_get_byte(f);
-}
-
-static void vmxnet3_put_ring_to_file(QEMUFile *f, Vmxnet3Ring *r)
-{
-qemu_put_be64(f, r->pa);
-qemu_put_be32(f, r->size);
-qemu_put_be32(f, r->cell_size);
-qemu_put_be32(f, r->next);
-qemu_put_byte(f, r->gen);
-}
-
-static void vmxnet3_get_tx_stats_from_file(QEMUFile *f,
-struct UPT1_TxStats *tx_stat)
-{
-tx_stat->TSOPktsTxOK = qemu_get_be64(f);
-tx_stat->TSOBytesTxOK = qemu_get_be64(f);
-tx_stat->ucastPktsTxOK = qemu_get_be64(f);
-tx_stat->ucastBytesTxOK = qemu_get_be64(f);
-tx_stat->mcastPktsTxOK = qemu_get_be64(f);
-tx_stat->mcastBytesTxOK = qemu_get_be64(f);
-tx_stat->bcastPktsTxOK = qemu_get_be64(f);
-tx_stat->bcastBytesTxOK = qemu_get_be64(f);
-tx_stat->pktsTxError = qemu_get_be64(f);
-tx_stat->pktsTxDiscard = qemu_get_be64(f);
-}
-
-static void vmxnet3_put_tx_stats_to_file(QEMUFile *f,
-struct UPT1_TxStats *tx_stat)
-{
-qemu_put_be64(f, tx_stat->TSOPktsTxOK);
-qemu_put_be64(f, tx_stat->TSOBytesTxOK);
-qemu_put_be64(f, tx_stat->ucastPktsTxOK);
-qemu_put_be64(f, tx_stat->ucastBytesTxOK);
-qemu_put_be64(f, tx_stat->mcastPktsTxOK);
-qemu_put_be64(f, tx_stat->mcastBytesTxOK);
-qemu_put_be64(f, tx_stat->bcastPktsTxOK);
-qemu_put_be64(f, tx_stat->bcastBytesTxOK);
-qemu_put_be64(f, tx_stat->pktsTxError);
-qemu_put_be64(f, tx_stat->pktsTxDiscard);
-}
-
-static int vmxnet3_get_txq_descr(QEMUFile *f, void *pv, size_t size,
-VMStateField *field)
-{
-Vmxnet3TxqDescr *r = pv;
-
-vmxnet3_get_ring_from_file(f, >tx_ring);
-vmxnet3_get_ring_from_file(f, >comp_ring);
-r->intr_idx = qemu_get_byte(f);
-r->tx_stats_pa = qemu_get_be64(f);
-
-vmxnet3_get_tx_stats_from_file(f, >txq_stats);
-
-return 0;
-}
-
-static int vmxnet3_put_txq_descr(QEMUFile *f, void *pv, size_t size,
- VMStateField *field, QJSON *vmdesc)
-{
-Vmxnet3TxqDescr *r = pv;
-
-vmxnet3_put_ring_to_file(f, >tx_ring);
-vmxnet3_put_ring_to_file(f, >comp_ring);
-qemu_put_byte(f, r->intr_idx);
-qemu_put_be64(f, r->tx_stats_pa);
-vmxnet3_put_tx_stats_to_file(f, >txq_stats);
-
-return 0;
-}
-
-static const VMStateInfo txq_descr_info = {
-.name = "txq_descr",
-.get = vmxnet3_get_txq_descr,
-.put = vmxnet3_put_txq_descr
+static const VMStateDescription vmstate_vmxnet3_ring = {
+.name = "vmxnet3-ring",
+.version_id = 0,
+.fields = (VMStateField[]) {
+VMSTATE_UINT64(pa, Vmxnet3Ring),
+VMSTATE_UINT32(size, Vmxnet3Ring),
+VMSTATE_UINT32(cell_size, Vmxnet3Ring),
+VMSTATE_UINT32(next, Vmxnet3Ring),
+VMSTATE_UINT8(gen, Vmxnet3Ring),
+VMSTATE_END_OF_LIST()
+}
 };
 
-static void vmxnet3_get_rx_stats_from_file(QEMUFile *f,
-struct UPT1_RxStats *rx_stat)
-{
-rx_stat->LROPktsRxOK = qemu_get_be64(f);
-rx_stat->LROBytesRxOK = qemu_get_be64(f);
-rx_stat->ucastPktsRxOK = qemu_get_be64(f);
-rx_stat->ucastBytesRxOK = qemu_get_be64(f);
-rx_stat->mcastPktsRxOK = qemu_get_be64(f);
-rx_stat->mcastBytesRxOK = qemu_get_be64(f);
-rx_stat->bcastPktsRxOK = qemu_get_be64(f);
-rx_stat->bcastBytesRxOK = qemu_get_be64(f);
-rx_stat->pktsRxOutOfBuf = qemu_get_be64(f);
-rx_stat->pktsRxError = qemu_get_be64(f);
-}
-
-static void vmxnet3_put_rx_stats_to_file(QEMUFile *f,
-struct UPT1_RxStats *rx_stat)
-{
-qemu_put_be64(f, rx_stat->LROPktsRxOK);
-qemu_put_be64(f, rx_stat->LROBytesRxOK);
-qemu_put_be64(f, rx_stat->ucastPktsRxOK);
-qemu_put_be64(f, rx_stat->ucastBytesRxOK);
-qemu_put_be64(f, rx_stat->mcastPktsRxOK);
-qemu_put_be64(f, rx_stat->mcastBytesRxOK);
-qemu_put_be64(f, rx_stat->bcastPktsRxOK);
-qemu_put_be64(f, rx_stat->bcastBytesRxOK);
-qemu_put_be64(f, rx_stat->pktsRxOutOfBuf);
-qemu_put_be64(f, rx_stat->pktsRxError);
-}
-
-static int vmxnet3_get_rxq_descr(QEMUFile *f, void *pv, size_t size,
-VMStateField *field)
-{
-Vmxnet3RxqDescr *r = pv;
-int i;
-
-for (i = 0; i < VMXNET3_RX_RINGS_PER_QUEUE; i++) {
-vmxnet3_get_ring_from_file(f, >rx_ring[i]);