Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b68a60e5 authored by Jim Lewis's avatar Jim Lewis Committed by Jeff Garzik
Browse files

[PATCH] Add ethtool -g support to Spidernet network driver



Add ethtool -g (show ring sizes) support to the Spidernet network driver.

Signed-off-by: default avatarJames K Lewis <jklewis@us.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent 7e29f8bf
Loading
Loading
Loading
Loading
+7 −5
Original line number Original line Diff line number Diff line
@@ -1611,13 +1611,12 @@ spider_net_open(struct net_device *netdev)
	int result;
	int result;


	result = -ENOMEM;
	result = -ENOMEM;
	if (spider_net_init_chain(card, &card->tx_chain,
	if (spider_net_init_chain(card, &card->tx_chain, card->descr,
			card->descr,
			PCI_DMA_TODEVICE, card->tx_desc))
			PCI_DMA_TODEVICE, tx_descriptors))
		goto alloc_tx_failed;
		goto alloc_tx_failed;
	if (spider_net_init_chain(card, &card->rx_chain,
	if (spider_net_init_chain(card, &card->rx_chain,
			card->descr + tx_descriptors,
			card->descr + card->rx_desc,
			PCI_DMA_FROMDEVICE, rx_descriptors))
			PCI_DMA_FROMDEVICE, card->rx_desc))
		goto alloc_rx_failed;
		goto alloc_rx_failed;


	/* allocate rx skbs */
	/* allocate rx skbs */
@@ -2005,6 +2004,9 @@ spider_net_setup_netdev(struct spider_net_card *card)


	card->options.rx_csum = SPIDER_NET_RX_CSUM_DEFAULT;
	card->options.rx_csum = SPIDER_NET_RX_CSUM_DEFAULT;


	card->tx_desc = tx_descriptors;
	card->rx_desc = rx_descriptors;

	spider_net_setup_netdev_ops(netdev);
	spider_net_setup_netdev_ops(netdev);


	netdev->features = NETIF_F_HW_CSUM | NETIF_F_LLTX;
	netdev->features = NETIF_F_HW_CSUM | NETIF_F_LLTX;
+3 −0
Original line number Original line Diff line number Diff line
@@ -440,6 +440,9 @@ struct spider_net_card {
	/* for ethtool */
	/* for ethtool */
	int msg_enable;
	int msg_enable;


	int rx_desc;
	int tx_desc;

	struct spider_net_descr descr[0];
	struct spider_net_descr descr[0];
};
};


+13 −0
Original line number Original line Diff line number Diff line
@@ -130,6 +130,18 @@ spider_net_ethtool_set_tx_csum(struct net_device *netdev, uint32_t data)
        return 0;
        return 0;
}
}


static void
spider_net_ethtool_get_ringparam(struct net_device *netdev,
				 struct ethtool_ringparam *ering)
{
	struct spider_net_card *card = netdev->priv;

	ering->tx_max_pending = SPIDER_NET_TX_DESCRIPTORS_MAX;
	ering->tx_pending = card->tx_desc;
	ering->rx_max_pending = SPIDER_NET_RX_DESCRIPTORS_MAX;
	ering->rx_pending = card->rx_desc;
}

struct ethtool_ops spider_net_ethtool_ops = {
struct ethtool_ops spider_net_ethtool_ops = {
	.get_settings		= spider_net_ethtool_get_settings,
	.get_settings		= spider_net_ethtool_get_settings,
	.get_drvinfo		= spider_net_ethtool_get_drvinfo,
	.get_drvinfo		= spider_net_ethtool_get_drvinfo,
@@ -141,5 +153,6 @@ struct ethtool_ops spider_net_ethtool_ops = {
	.set_rx_csum		= spider_net_ethtool_set_rx_csum,
	.set_rx_csum		= spider_net_ethtool_set_rx_csum,
	.get_tx_csum		= spider_net_ethtool_get_tx_csum,
	.get_tx_csum		= spider_net_ethtool_get_tx_csum,
	.set_tx_csum		= spider_net_ethtool_set_tx_csum,
	.set_tx_csum		= spider_net_ethtool_set_tx_csum,
	.get_ringparam          = spider_net_ethtool_get_ringparam,
};
};