[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 12/22] vmxnet3: Move some definitions to head
From: |
Dmitry Fleytman |
Subject: |
Re: [Qemu-devel] [PATCH v2 12/22] vmxnet3: Move some definitions to header file |
Date: |
Mon, 12 Nov 2018 15:56:51 +0200 |
On Thu, Nov 8, 2018 at 6:09 PM Yuval Shaia <address@hidden> wrote:
>
> pvrdma setup requires vmxnet3 device on PCI function 0 and PVRDMA device
> on PCI function 1.
> pvrdma device needs to access vmxnet3 device object for several reasons:
> 1. Make sure PCI function 0 is vmxnet3.
> 2. To monitor vmxnet3 device state.
> 3. To configure node_guid accoring to vmxnet3 device's MAC address.
>
> To be able to access vmxnet3 device the definition of VMXNET3State is
> moved to a new header file.
>
> Signed-off-by: Yuval Shaia <address@hidden>
Reviewed-by: Dmitry Fleytman <address@hidden>
> ---
> hw/net/vmxnet3.c | 116 +-----------------------------------
> hw/net/vmxnet3_defs.h | 133 ++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 134 insertions(+), 115 deletions(-)
> create mode 100644 hw/net/vmxnet3_defs.h
>
> diff --git a/hw/net/vmxnet3.c b/hw/net/vmxnet3.c
> index 3648630386..54746a4030 100644
> --- a/hw/net/vmxnet3.c
> +++ b/hw/net/vmxnet3.c
> @@ -18,7 +18,6 @@
> #include "qemu/osdep.h"
> #include "hw/hw.h"
> #include "hw/pci/pci.h"
> -#include "net/net.h"
> #include "net/tap.h"
> #include "net/checksum.h"
> #include "sysemu/sysemu.h"
> @@ -29,6 +28,7 @@
> #include "migration/register.h"
>
> #include "vmxnet3.h"
> +#include "vmxnet3_defs.h"
> #include "vmxnet_debug.h"
> #include "vmware_utils.h"
> #include "net_tx_pkt.h"
> @@ -131,23 +131,11 @@ typedef struct VMXNET3Class {
> DeviceRealize parent_dc_realize;
> } VMXNET3Class;
>
> -#define TYPE_VMXNET3 "vmxnet3"
> -#define VMXNET3(obj) OBJECT_CHECK(VMXNET3State, (obj), TYPE_VMXNET3)
> -
> #define VMXNET3_DEVICE_CLASS(klass) \
> OBJECT_CLASS_CHECK(VMXNET3Class, (klass), TYPE_VMXNET3)
> #define VMXNET3_DEVICE_GET_CLASS(obj) \
> OBJECT_GET_CLASS(VMXNET3Class, (obj), TYPE_VMXNET3)
>
> -/* Cyclic ring abstraction */
> -typedef struct {
> - hwaddr pa;
> - uint32_t size;
> - uint32_t cell_size;
> - uint32_t next;
> - uint8_t gen;
> -} Vmxnet3Ring;
> -
> static inline void vmxnet3_ring_init(PCIDevice *d,
> Vmxnet3Ring *ring,
> hwaddr pa,
> @@ -245,108 +233,6 @@ vmxnet3_dump_rx_descr(struct Vmxnet3_RxDesc *descr)
> descr->rsvd, descr->dtype, descr->ext1, descr->btype);
> }
>
> -/* Device state and helper functions */
> -#define VMXNET3_RX_RINGS_PER_QUEUE (2)
> -
> -typedef struct {
> - Vmxnet3Ring tx_ring;
> - Vmxnet3Ring comp_ring;
> -
> - uint8_t intr_idx;
> - hwaddr tx_stats_pa;
> - struct UPT1_TxStats txq_stats;
> -} Vmxnet3TxqDescr;
> -
> -typedef struct {
> - Vmxnet3Ring rx_ring[VMXNET3_RX_RINGS_PER_QUEUE];
> - Vmxnet3Ring comp_ring;
> - uint8_t intr_idx;
> - hwaddr rx_stats_pa;
> - struct UPT1_RxStats rxq_stats;
> -} Vmxnet3RxqDescr;
> -
> -typedef struct {
> - bool is_masked;
> - bool is_pending;
> - bool is_asserted;
> -} Vmxnet3IntState;
> -
> -typedef struct {
> - PCIDevice parent_obj;
> - NICState *nic;
> - NICConf conf;
> - MemoryRegion bar0;
> - MemoryRegion bar1;
> - MemoryRegion msix_bar;
> -
> - Vmxnet3RxqDescr rxq_descr[VMXNET3_DEVICE_MAX_RX_QUEUES];
> - Vmxnet3TxqDescr txq_descr[VMXNET3_DEVICE_MAX_TX_QUEUES];
> -
> - /* Whether MSI-X support was installed successfully */
> - bool msix_used;
> - hwaddr drv_shmem;
> - hwaddr temp_shared_guest_driver_memory;
> -
> - uint8_t txq_num;
> -
> - /* This boolean tells whether RX packet being indicated has to */
> - /* be split into head and body chunks from different RX rings */
> - bool rx_packets_compound;
> -
> - bool rx_vlan_stripping;
> - bool lro_supported;
> -
> - uint8_t rxq_num;
> -
> - /* Network MTU */
> - uint32_t mtu;
> -
> - /* Maximum number of fragments for indicated TX packets */
> - uint32_t max_tx_frags;
> -
> - /* Maximum number of fragments for indicated RX packets */
> - uint16_t max_rx_frags;
> -
> - /* Index for events interrupt */
> - uint8_t event_int_idx;
> -
> - /* Whether automatic interrupts masking enabled */
> - bool auto_int_masking;
> -
> - bool peer_has_vhdr;
> -
> - /* TX packets to QEMU interface */
> - struct NetTxPkt *tx_pkt;
> - uint32_t offload_mode;
> - uint32_t cso_or_gso_size;
> - uint16_t tci;
> - bool needs_vlan;
> -
> - struct NetRxPkt *rx_pkt;
> -
> - bool tx_sop;
> - bool skip_current_tx_pkt;
> -
> - uint32_t device_active;
> - uint32_t last_command;
> -
> - uint32_t link_status_and_speed;
> -
> - Vmxnet3IntState interrupt_states[VMXNET3_MAX_INTRS];
> -
> - uint32_t temp_mac; /* To store the low part first */
> -
> - MACAddr perm_mac;
> - uint32_t vlan_table[VMXNET3_VFT_SIZE];
> - uint32_t rx_mode;
> - MACAddr *mcast_list;
> - uint32_t mcast_list_len;
> - uint32_t mcast_list_buff_size; /* needed for live migration. */
> -
> - /* Compatibility flags for migration */
> - uint32_t compat_flags;
> -} VMXNET3State;
> -
> /* Interrupt management */
>
> /*
> diff --git a/hw/net/vmxnet3_defs.h b/hw/net/vmxnet3_defs.h
> new file mode 100644
> index 0000000000..6c19d29b12
> --- /dev/null
> +++ b/hw/net/vmxnet3_defs.h
> @@ -0,0 +1,133 @@
> +/*
> + * QEMU VMWARE VMXNET3 paravirtual NIC
> + *
> + * Copyright (c) 2012 Ravello Systems LTD (http://ravellosystems.com)
> + *
> + * Developed by Daynix Computing LTD (http://www.daynix.com)
> + *
> + * Authors:
> + * Dmitry Fleytman <address@hidden>
> + * Tamir Shomer <address@hidden>
> + * Yan Vugenfirer <address@hidden>
> + *
> + * This work is licensed under the terms of the GNU GPL, version 2.
> + * See the COPYING file in the top-level directory.
> + *
> + */
> +
> +#include "net/net.h"
> +#include "hw/net/vmxnet3.h"
> +
> +#define TYPE_VMXNET3 "vmxnet3"
> +#define VMXNET3(obj) OBJECT_CHECK(VMXNET3State, (obj), TYPE_VMXNET3)
> +
> +/* Device state and helper functions */
> +#define VMXNET3_RX_RINGS_PER_QUEUE (2)
> +
> +/* Cyclic ring abstraction */
> +typedef struct {
> + hwaddr pa;
> + uint32_t size;
> + uint32_t cell_size;
> + uint32_t next;
> + uint8_t gen;
> +} Vmxnet3Ring;
> +
> +typedef struct {
> + Vmxnet3Ring tx_ring;
> + Vmxnet3Ring comp_ring;
> +
> + uint8_t intr_idx;
> + hwaddr tx_stats_pa;
> + struct UPT1_TxStats txq_stats;
> +} Vmxnet3TxqDescr;
> +
> +typedef struct {
> + Vmxnet3Ring rx_ring[VMXNET3_RX_RINGS_PER_QUEUE];
> + Vmxnet3Ring comp_ring;
> + uint8_t intr_idx;
> + hwaddr rx_stats_pa;
> + struct UPT1_RxStats rxq_stats;
> +} Vmxnet3RxqDescr;
> +
> +typedef struct {
> + bool is_masked;
> + bool is_pending;
> + bool is_asserted;
> +} Vmxnet3IntState;
> +
> +typedef struct {
> + PCIDevice parent_obj;
> + NICState *nic;
> + NICConf conf;
> + MemoryRegion bar0;
> + MemoryRegion bar1;
> + MemoryRegion msix_bar;
> +
> + Vmxnet3RxqDescr rxq_descr[VMXNET3_DEVICE_MAX_RX_QUEUES];
> + Vmxnet3TxqDescr txq_descr[VMXNET3_DEVICE_MAX_TX_QUEUES];
> +
> + /* Whether MSI-X support was installed successfully */
> + bool msix_used;
> + hwaddr drv_shmem;
> + hwaddr temp_shared_guest_driver_memory;
> +
> + uint8_t txq_num;
> +
> + /* This boolean tells whether RX packet being indicated has to */
> + /* be split into head and body chunks from different RX rings */
> + bool rx_packets_compound;
> +
> + bool rx_vlan_stripping;
> + bool lro_supported;
> +
> + uint8_t rxq_num;
> +
> + /* Network MTU */
> + uint32_t mtu;
> +
> + /* Maximum number of fragments for indicated TX packets */
> + uint32_t max_tx_frags;
> +
> + /* Maximum number of fragments for indicated RX packets */
> + uint16_t max_rx_frags;
> +
> + /* Index for events interrupt */
> + uint8_t event_int_idx;
> +
> + /* Whether automatic interrupts masking enabled */
> + bool auto_int_masking;
> +
> + bool peer_has_vhdr;
> +
> + /* TX packets to QEMU interface */
> + struct NetTxPkt *tx_pkt;
> + uint32_t offload_mode;
> + uint32_t cso_or_gso_size;
> + uint16_t tci;
> + bool needs_vlan;
> +
> + struct NetRxPkt *rx_pkt;
> +
> + bool tx_sop;
> + bool skip_current_tx_pkt;
> +
> + uint32_t device_active;
> + uint32_t last_command;
> +
> + uint32_t link_status_and_speed;
> +
> + Vmxnet3IntState interrupt_states[VMXNET3_MAX_INTRS];
> +
> + uint32_t temp_mac; /* To store the low part first */
> +
> + MACAddr perm_mac;
> + uint32_t vlan_table[VMXNET3_VFT_SIZE];
> + uint32_t rx_mode;
> + MACAddr *mcast_list;
> + uint32_t mcast_list_len;
> + uint32_t mcast_list_buff_size; /* needed for live migration. */
> +
> + /* Compatibility flags for migration */
> + uint32_t compat_flags;
> +} VMXNET3State;
> --
> 2.17.2
>
- [Qemu-devel] [PATCH v2 20/22] hw/pvrdma: Clean device's resource when system is shutdown, (continued)
- [Qemu-devel] [PATCH v2 20/22] hw/pvrdma: Clean device's resource when system is shutdown, Yuval Shaia, 2018/11/08
- [Qemu-devel] [PATCH v2 14/22] hw/rdma: Initialize node_guid from vmxnet3 mac address, Yuval Shaia, 2018/11/08
- [Qemu-devel] [PATCH v2 18/22] hw/rdma: Remove unneeded code that handles more that one port, Yuval Shaia, 2018/11/08
- [Qemu-devel] [PATCH v2 15/22] hw/pvrdma: Make device state depend on Ethernet function state, Yuval Shaia, 2018/11/08
- [Qemu-devel] [PATCH v2 16/22] hw/pvrdma: Fill all CQE fields, Yuval Shaia, 2018/11/08
- [Qemu-devel] [PATCH v2 19/22] vl: Introduce shutdown_notifiers, Yuval Shaia, 2018/11/08
- [Qemu-devel] [PATCH v2 17/22] hw/pvrdma: Fill error code in command's response, Yuval Shaia, 2018/11/08
- [Qemu-devel] [PATCH v2 12/22] vmxnet3: Move some definitions to header file, Yuval Shaia, 2018/11/08
- Re: [Qemu-devel] [PATCH v2 12/22] vmxnet3: Move some definitions to header file,
Dmitry Fleytman <=
- [Qemu-devel] [PATCH v2 21/22] rdma: Do not use bitmap_zero_extend to fee bitmap, Yuval Shaia, 2018/11/08
- [Qemu-devel] [PATCH v2 22/22] rdma: Do not call rdma_backend_del_gid on an empty gid, Yuval Shaia, 2018/11/08