aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/sfc/ethtool.c
diff options
context:
space:
mode:
authorBen Hutchings <bhutchings@solarflare.com>2011-02-07 18:04:38 -0500
committerBen Hutchings <bhutchings@solarflare.com>2011-02-15 14:45:34 -0500
commit525da9072c28df815bff64bf00f3b11ab88face8 (patch)
tree0649a1fff4d110796dd7f22168c9413cd8eb5caa /drivers/net/sfc/ethtool.c
parent60031fcc17057e21566ed34ba23e93fffda1aa27 (diff)
sfc: Distinguish queue lookup from test for queue existence
efx_channel_get_{rx,tx}_queue() currently return NULL if the channel isn't used for traffic in that direction. In most cases this is a bug, but some callers rely on it as an existence test. Add existence test functions efx_channel_has_{rx_queue,tx_queues}() and use them as appropriate. Change efx_channel_get_{rx,tx}_queue() to assert that the requested queue exists. Remove now-redundant initialisation from efx_set_channels(). Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Diffstat (limited to 'drivers/net/sfc/ethtool.c')
-rw-r--r--drivers/net/sfc/ethtool.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/net/sfc/ethtool.c b/drivers/net/sfc/ethtool.c
index 713969accdb..272cfe724e1 100644
--- a/drivers/net/sfc/ethtool.c
+++ b/drivers/net/sfc/ethtool.c
@@ -631,7 +631,7 @@ static int efx_ethtool_get_coalesce(struct net_device *net_dev,
631 /* Find lowest IRQ moderation across all used TX queues */ 631 /* Find lowest IRQ moderation across all used TX queues */
632 coalesce->tx_coalesce_usecs_irq = ~((u32) 0); 632 coalesce->tx_coalesce_usecs_irq = ~((u32) 0);
633 efx_for_each_channel(channel, efx) { 633 efx_for_each_channel(channel, efx) {
634 if (!efx_channel_get_tx_queue(channel, 0)) 634 if (!efx_channel_has_tx_queues(channel))
635 continue; 635 continue;
636 if (channel->irq_moderation < coalesce->tx_coalesce_usecs_irq) { 636 if (channel->irq_moderation < coalesce->tx_coalesce_usecs_irq) {
637 if (channel->channel < efx->n_rx_channels) 637 if (channel->channel < efx->n_rx_channels)
@@ -676,8 +676,8 @@ static int efx_ethtool_set_coalesce(struct net_device *net_dev,
676 676
677 /* If the channel is shared only allow RX parameters to be set */ 677 /* If the channel is shared only allow RX parameters to be set */
678 efx_for_each_channel(channel, efx) { 678 efx_for_each_channel(channel, efx) {
679 if (efx_channel_get_rx_queue(channel) && 679 if (efx_channel_has_rx_queue(channel) &&
680 efx_channel_get_tx_queue(channel, 0) && 680 efx_channel_has_tx_queues(channel) &&
681 tx_usecs) { 681 tx_usecs) {
682 netif_err(efx, drv, efx->net_dev, "Channel is shared. " 682 netif_err(efx, drv, efx->net_dev, "Channel is shared. "
683 "Only RX coalescing may be set\n"); 683 "Only RX coalescing may be set\n");