Ejemplo n.º 1
0
static void
vmxnet3_get_drvinfo(struct net_device *netdev, struct ethtool_drvinfo *drvinfo)
{
	struct vmxnet3_adapter *adapter = netdev_priv(netdev);

	strlcpy(drvinfo->driver, vmxnet3_driver_name, sizeof(drvinfo->driver));

	strlcpy(drvinfo->version, VMXNET3_DRIVER_VERSION_REPORT,
		sizeof(drvinfo->version));

	strlcpy(drvinfo->bus_info, pci_name(adapter->pdev),
		ETHTOOL_BUSINFO_LEN);
	drvinfo->n_stats = vmxnet3_get_sset_count(netdev, ETH_SS_STATS);
	drvinfo->testinfo_len = 0;
	drvinfo->eedump_len   = 0;
	drvinfo->regdump_len  = vmxnet3_get_regs_len(netdev);
}
Ejemplo n.º 2
0
static void
vmxnet3_get_regs(struct net_device *netdev, struct ethtool_regs *regs, void *p)
{
	struct vmxnet3_adapter *adapter = netdev_priv(netdev);
	u32 *buf = p;
	int i = 0, j = 0;

	memset(p, 0, vmxnet3_get_regs_len(netdev));

	regs->version = 1;

	/* Update vmxnet3_get_regs_len if we want to dump more registers */

	/* make each ring use multiple of 16 bytes */
	for (i = 0; i < adapter->num_tx_queues; i++) {
		buf[j++] = adapter->tx_queue[i].tx_ring.next2fill;
		buf[j++] = adapter->tx_queue[i].tx_ring.next2comp;
		buf[j++] = adapter->tx_queue[i].tx_ring.gen;
		buf[j++] = 0;

		buf[j++] = adapter->tx_queue[i].comp_ring.next2proc;
		buf[j++] = adapter->tx_queue[i].comp_ring.gen;
		buf[j++] = adapter->tx_queue[i].stopped;
		buf[j++] = 0;
	}

	for (i = 0; i < adapter->num_rx_queues; i++) {
		buf[j++] = adapter->rx_queue[i].rx_ring[0].next2fill;
		buf[j++] = adapter->rx_queue[i].rx_ring[0].next2comp;
		buf[j++] = adapter->rx_queue[i].rx_ring[0].gen;
		buf[j++] = 0;

		buf[j++] = adapter->rx_queue[i].rx_ring[1].next2fill;
		buf[j++] = adapter->rx_queue[i].rx_ring[1].next2comp;
		buf[j++] = adapter->rx_queue[i].rx_ring[1].gen;
		buf[j++] = 0;

		buf[j++] = adapter->rx_queue[i].comp_ring.next2proc;
		buf[j++] = adapter->rx_queue[i].comp_ring.gen;
		buf[j++] = 0;
		buf[j++] = 0;
	}

}
Ejemplo n.º 3
0
static void
vmxnet3_get_regs(struct net_device *netdev, struct ethtool_regs *regs, void *p)
{
    struct vmxnet3_adapter *adapter = netdev_priv(netdev);
    u32 *buf = p;

    memset(p, 0, vmxnet3_get_regs_len(netdev));

    regs->version = 1;

    /* Update vmxnet3_get_regs_len if we want to dump more registers */

    /* make each ring use multiple of 16 bytes */
    buf[0] = adapter->tx_queue.tx_ring.next2fill;
    buf[1] = adapter->tx_queue.tx_ring.next2comp;
    buf[2] = adapter->tx_queue.tx_ring.gen;
    buf[3] = 0;

    buf[4] = adapter->tx_queue.comp_ring.next2proc;
    buf[5] = adapter->tx_queue.comp_ring.gen;
    buf[6] = adapter->tx_queue.stopped;
    buf[7] = 0;

    buf[8] = adapter->rx_queue.rx_ring[0].next2fill;
    buf[9] = adapter->rx_queue.rx_ring[0].next2comp;
    buf[10] = adapter->rx_queue.rx_ring[0].gen;
    buf[11] = 0;

    buf[12] = adapter->rx_queue.rx_ring[1].next2fill;
    buf[13] = adapter->rx_queue.rx_ring[1].next2comp;
    buf[14] = adapter->rx_queue.rx_ring[1].gen;
    buf[15] = 0;

    buf[16] = adapter->rx_queue.comp_ring.next2proc;
    buf[17] = adapter->rx_queue.comp_ring.gen;
    buf[18] = 0;
    buf[19] = 0;
}