[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1300129032.3423.170.camel@edumazet-laptop>
Date: Mon, 14 Mar 2011 19:57:12 +0100
From: Eric Dumazet <eric.dumazet@...il.com>
To: Ian Campbell <Ian.Campbell@...rix.com>
Cc: "netdev@...r.kernel.org" <netdev@...r.kernel.org>,
xen-devel <xen-devel@...ts.xensource.com>,
Jeremy Fitzhardinge <jeremy@...p.org>,
Herbert Xu <herbert@...dor.apana.org.au>,
Konrad Rzeszutek Wilk <konrad.wilk@...cle.com>,
Francois Romieu <romieu@...zoreil.com>,
Ben Hutchings <bhutchings@...arflare.com>,
Stephen Hemminger <shemminger@...tta.com>,
Michał Mirosław <mirqus@...il.com>
Subject: Re: [GIT/PATCH v5] xen network backend driver
Le lundi 14 mars 2011 à 14:27 +0000, Ian Campbell a écrit :
...
> +struct xenvif {
> + /* Unique identifier for this interface. */
> + domid_t domid;
> + unsigned int handle;
> +
> + /* Reference to netback processing backend. */
> + struct xen_netbk *netbk;
> +
> + u8 fe_dev_addr[6];
> +
> + /* Physical parameters of the comms window. */
> + grant_handle_t tx_shmem_handle;
> + grant_ref_t tx_shmem_ref;
> + grant_handle_t rx_shmem_handle;
> + grant_ref_t rx_shmem_ref;
> + unsigned int irq;
> +
> + /* List of frontends to notify after a batch of frames sent. */
> + struct list_head notify_list;
> +
> + /* The shared rings and indexes. */
> + struct xen_netif_tx_back_ring tx;
> + struct xen_netif_rx_back_ring rx;
> + struct vm_struct *tx_comms_area;
> + struct vm_struct *rx_comms_area;
> +
> + /* Flags that must not be set in dev->features */
> + u32 features_disabled;
> +
> + /* Frontend feature information. */
> + u8 can_sg:1;
> + u8 gso:1;
> + u8 gso_prefix:1;
> + u8 csum:1;
> +
> + /* Internal feature information. */
> + u8 can_queue:1; /* can queue packets for receiver? */
> +
> + /*
> + * Allow xenvif_start_xmit() to peek ahead in the rx request
> + * ring. This is a prediction of what rx_req_cons will be
> + * once all queued skbs are put on the ring.
> + */
> + RING_IDX rx_req_cons_peek;
> +
> + /* Transmit shaping: allow 'credit_bytes' every 'credit_usec'. */
> + unsigned long credit_bytes;
> + unsigned long credit_usec;
> + unsigned long remaining_credit;
> + struct timer_list credit_timeout;
> +
> + /* Statistics */
> + unsigned long rx_gso_checksum_fixup;
this is an "unsigned long" field
> +
> + /* Miscellaneous private stuff. */
> + struct list_head schedule_list;
> + atomic_t refcnt;
> + struct net_device *dev;
> +
> + wait_queue_head_t waiting_to_free;
> +};
> +
> +static void xenvif_get_ethtool_stats(struct net_device *dev,
> + struct ethtool_stats *stats, u64 * data)
> +{
> + void *vif = netdev_priv(dev);
> + int i;
> +
> + for (i = 0; i < ARRAY_SIZE(xenvif_stats); i++)
> + data[i] = *(int *)(vif + xenvif_stats[i].offset);
so use : data[i] = *(unsigned long *)(vif + xenvif_stats[i].offset);
> +}
> +
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists