From: Ben Hutchings <bhutchings@solarflare•com>
To: Jeff Garzik <jgarzik@pobox•com>
Cc: netdev@vger•kernel.org, linux-net-drivers@solarflare•com
Subject: [PATCH 23/52] sfc: Remove efx_channel::has_interrupt
Date: Mon, 1 Sep 2008 12:47:38 +0100 [thread overview]
Message-ID: <20080901114737.GQ7908@solarflare.com> (raw)
In-Reply-To: <20080901111621.GT7908@solarflare.com>
efx_channel::has_interrupt is redundant with efx_channel::used_flags.
Remove efx_test_eventq() because it is now obviously unreachable.
Signed-off-by: Ben Hutchings <bhutchings@solarflare•com>
---
drivers/net/sfc/efx.c | 16 ++++----------
drivers/net/sfc/falcon.c | 8 +++---
drivers/net/sfc/net_driver.h | 11 ----------
drivers/net/sfc/selftest.c | 44 ++---------------------------------------
4 files changed, 12 insertions(+), 67 deletions(-)
diff --git a/drivers/net/sfc/efx.c b/drivers/net/sfc/efx.c
index 487df94..2deac7b 100644
--- a/drivers/net/sfc/efx.c
+++ b/drivers/net/sfc/efx.c
@@ -259,7 +259,7 @@ void efx_process_channel_now(struct efx_channel *channel)
falcon_disable_interrupts(efx);
if (efx->legacy_irq)
synchronize_irq(efx->legacy_irq);
- if (channel->has_interrupt && channel->irq)
+ if (channel->irq)
synchronize_irq(channel->irq);
/* Wait for any NAPI processing to complete */
@@ -872,10 +872,8 @@ static void efx_probe_interrupts(struct efx_nic *efx)
}
if (rc == 0) {
- for (i = 0; i < efx->rss_queues; i++) {
- efx->channel[i].has_interrupt = true;
+ for (i = 0; i < efx->rss_queues; i++)
efx->channel[i].irq = xentries[i].vector;
- }
} else {
/* Fall back to single channel MSI */
efx->interrupt_mode = EFX_INT_MODE_MSI;
@@ -889,7 +887,6 @@ static void efx_probe_interrupts(struct efx_nic *efx)
rc = pci_enable_msi(efx->pci_dev);
if (rc == 0) {
efx->channel[0].irq = efx->pci_dev->irq;
- efx->channel[0].has_interrupt = true;
} else {
EFX_ERR(efx, "could not enable MSI\n");
efx->interrupt_mode = EFX_INT_MODE_LEGACY;
@@ -899,9 +896,6 @@ static void efx_probe_interrupts(struct efx_nic *efx)
/* Assume legacy interrupts */
if (efx->interrupt_mode == EFX_INT_MODE_LEGACY) {
efx->rss_queues = 1;
- /* Every channel is interruptible */
- for (i = 0; i < EFX_MAX_CHANNELS; i++)
- efx->channel[i].has_interrupt = true;
efx->legacy_irq = efx->pci_dev->irq;
}
}
@@ -911,7 +905,7 @@ static void efx_remove_interrupts(struct efx_nic *efx)
struct efx_channel *channel;
/* Remove MSI/MSI-X interrupts */
- efx_for_each_channel_with_interrupt(channel, efx)
+ efx_for_each_channel(channel, efx)
channel->irq = 0;
pci_disable_msi(efx->pci_dev);
pci_disable_msix(efx->pci_dev);
@@ -1106,7 +1100,7 @@ static void efx_stop_all(struct efx_nic *efx)
falcon_disable_interrupts(efx);
if (efx->legacy_irq)
synchronize_irq(efx->legacy_irq);
- efx_for_each_channel_with_interrupt(channel, efx) {
+ efx_for_each_channel(channel, efx) {
if (channel->irq)
synchronize_irq(channel->irq);
}
@@ -1303,7 +1297,7 @@ static void efx_netpoll(struct net_device *net_dev)
struct efx_nic *efx = netdev_priv(net_dev);
struct efx_channel *channel;
- efx_for_each_channel_with_interrupt(channel, efx)
+ efx_for_each_channel(channel, efx)
efx_schedule_channel(channel);
}
diff --git a/drivers/net/sfc/falcon.c b/drivers/net/sfc/falcon.c
index 3017639..40dd643 100644
--- a/drivers/net/sfc/falcon.c
+++ b/drivers/net/sfc/falcon.c
@@ -1317,7 +1317,7 @@ void falcon_enable_interrupts(struct efx_nic *efx)
/* Force processing of all the channels to get the EVQ RPTRs up to
date */
- efx_for_each_channel_with_interrupt(channel, efx)
+ efx_for_each_channel(channel, efx)
efx_schedule_channel(channel);
}
@@ -1567,7 +1567,7 @@ int falcon_init_interrupt(struct efx_nic *efx)
}
/* Hook MSI or MSI-X interrupt */
- efx_for_each_channel_with_interrupt(channel, efx) {
+ efx_for_each_channel(channel, efx) {
rc = request_irq(channel->irq, falcon_msi_interrupt,
IRQF_PROBE_SHARED, /* Not shared */
efx->name, channel);
@@ -1580,7 +1580,7 @@ int falcon_init_interrupt(struct efx_nic *efx)
return 0;
fail2:
- efx_for_each_channel_with_interrupt(channel, efx)
+ efx_for_each_channel(channel, efx)
free_irq(channel->irq, channel);
fail1:
return rc;
@@ -1592,7 +1592,7 @@ void falcon_fini_interrupt(struct efx_nic *efx)
efx_oword_t reg;
/* Disable MSI/MSI-X interrupts */
- efx_for_each_channel_with_interrupt(channel, efx) {
+ efx_for_each_channel(channel, efx) {
if (channel->irq)
free_irq(channel->irq, channel);
}
diff --git a/drivers/net/sfc/net_driver.h b/drivers/net/sfc/net_driver.h
index 3902757..1fa134a 100644
--- a/drivers/net/sfc/net_driver.h
+++ b/drivers/net/sfc/net_driver.h
@@ -329,7 +329,6 @@ enum efx_rx_alloc_method {
* @used_flags: Channel is used by net driver
* @enabled: Channel enabled indicator
* @irq: IRQ number (MSI and MSI-X only)
- * @has_interrupt: Channel has an interrupt
* @irq_moderation: IRQ moderation value (in us)
* @napi_dev: Net device used with NAPI
* @napi_str: NAPI control structure
@@ -361,7 +360,6 @@ struct efx_channel {
int used_flags;
bool enabled;
int irq;
- bool has_interrupt;
unsigned int irq_moderation;
struct net_device *napi_dev;
struct napi_struct napi_str;
@@ -834,15 +832,6 @@ struct efx_nic_type {
continue; \
else
-/* Iterate over all used channels with interrupts */
-#define efx_for_each_channel_with_interrupt(_channel, _efx) \
- for (_channel = &_efx->channel[0]; \
- _channel < &_efx->channel[EFX_MAX_CHANNELS]; \
- _channel++) \
- if (!(_channel->used_flags && _channel->has_interrupt)) \
- continue; \
- else
-
/* Iterate over all used TX queues */
#define efx_for_each_tx_queue(_tx_queue, _efx) \
for (_tx_queue = &_efx->tx_queue[0]; \
diff --git a/drivers/net/sfc/selftest.c b/drivers/net/sfc/selftest.c
index ff7b84c..2f7def6 100644
--- a/drivers/net/sfc/selftest.c
+++ b/drivers/net/sfc/selftest.c
@@ -111,7 +111,7 @@ static int efx_test_interrupts(struct efx_nic *efx,
/* ACK each interrupting event queue. Receiving an interrupt due to
* traffic before a test event is raised is considered a pass */
- efx_for_each_channel_with_interrupt(channel, efx) {
+ efx_for_each_channel(channel, efx) {
if (channel->work_pending)
efx_process_channel_now(channel);
if (efx->last_irq_cpu >= 0)
@@ -136,41 +136,6 @@ static int efx_test_interrupts(struct efx_nic *efx,
return 0;
}
-/* Test generation and receipt of non-interrupting events */
-static int efx_test_eventq(struct efx_channel *channel,
- struct efx_self_tests *tests)
-{
- unsigned int magic;
-
- /* Channel specific code, limited to 20 bits */
- magic = (0x00010150 + channel->channel);
- EFX_LOG(channel->efx, "channel %d testing event queue with code %x\n",
- channel->channel, magic);
-
- tests->eventq_dma[channel->channel] = -1;
- tests->eventq_int[channel->channel] = 1; /* fake pass */
- tests->eventq_poll[channel->channel] = 1; /* fake pass */
-
- /* Reset flag and zero magic word */
- channel->efx->last_irq_cpu = -1;
- channel->eventq_magic = 0;
- smp_wmb();
-
- falcon_generate_test_event(channel, magic);
- udelay(1);
-
- efx_process_channel_now(channel);
- if (channel->eventq_magic != magic) {
- EFX_ERR(channel->efx, "channel %d failed to see test event\n",
- channel->channel);
- return -ETIMEDOUT;
- } else {
- tests->eventq_dma[channel->channel] = 1;
- }
-
- return 0;
-}
-
/* Test generation and receipt of interrupting events */
static int efx_test_eventq_irq(struct efx_channel *channel,
struct efx_self_tests *tests)
@@ -456,7 +421,7 @@ static int efx_poll_loopback(struct efx_nic *efx)
/* NAPI polling is not enabled, so process channels
* synchronously */
- efx_for_each_channel_with_interrupt(channel, efx) {
+ efx_for_each_channel(channel, efx) {
if (channel->work_pending)
efx_process_channel_now(channel);
}
@@ -689,10 +654,7 @@ int efx_online_test(struct efx_nic *efx, struct efx_self_tests *tests)
if (rc)
return rc;
efx_for_each_channel(channel, efx) {
- if (channel->has_interrupt)
- rc = efx_test_eventq_irq(channel, tests);
- else
- rc = efx_test_eventq(channel, tests);
+ rc = efx_test_eventq_irq(channel, tests);
if (rc)
return rc;
}
--
Ben Hutchings, Senior Software Engineer, Solarflare Communications
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
next prev parent reply other threads:[~2008-09-01 11:47 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-01 11:16 [PATCH 00/52] sfc: Changes for 2.6.28 Ben Hutchings
2008-09-01 11:43 ` [PATCH 01/52] sfc: Replace net_dev->priv with netdev_priv(net_dev) Ben Hutchings
2008-09-01 11:43 ` [PATCH 02/52] sfc: Change first parameter type of {set,clear}_bit_le() to unsigned Ben Hutchings
2008-09-01 11:44 ` [PATCH 03/52] sfc: Remove unused field efx_channel::reset_work Ben Hutchings
2008-09-01 11:44 ` [PATCH 04/52] sfc: Use separate hardware TX queues to select checksum generation Ben Hutchings
2008-09-01 11:45 ` [PATCH 05/52] sfc: Avoid mangling error codes in efx_test_loopback() Ben Hutchings
2008-09-01 11:45 ` [PATCH 06/52] sfc: Reduce delays in SFE4001 initialisation Ben Hutchings
2008-09-01 11:46 ` [PATCH 07/52] sfc: Remove mistaken hardware workaround Ben Hutchings
2008-09-01 11:46 ` [PATCH 08/52] sfc: XMAC statistics fix-ups Ben Hutchings
2008-09-01 11:46 ` [PATCH 09/52] sfc: Remove inclusion of workarounds.h from efx.c Ben Hutchings
2008-09-01 11:46 ` [PATCH 10/52] sfc: Reverse the XOFF/XON pause frame control fifo thresholds Ben Hutchings
2008-09-01 11:46 ` [PATCH 11/52] sfc: Reduce log level for XGXS lane status Ben Hutchings
2008-09-01 11:46 ` [PATCH 12/52] sfc: Self-test reporting cleanup Ben Hutchings
2008-09-01 11:46 ` [PATCH 13/52] sfc: Speed up loopback self-test Ben Hutchings
2008-09-01 11:46 ` [PATCH 14/52] sfc: Don't leak PCI DMA maps in the TSO code when the queue fills up Ben Hutchings
2008-09-01 11:46 ` [PATCH 15/52] sfc: Use pci_map_single() to map the skb header when doing TSO Ben Hutchings
2008-09-01 11:46 ` [PATCH 16/52] sfc: Reduce the size of struct efx_tx_buffer Ben Hutchings
2008-09-01 11:46 ` [PATCH 17/52] sfc: Use explicit bool for boolean variables, parameters and return values Ben Hutchings
2008-09-01 11:46 ` [PATCH 18/52] sfc: Set net_device::vlan_features appropriately Ben Hutchings
2008-09-01 11:47 ` [PATCH 19/52] sfc: Cleaned up struct tso_state fields Ben Hutchings
2008-09-01 11:47 ` [PATCH 20/52] sfc: Removed forced inlining of long functions Ben Hutchings
2008-09-01 11:47 ` [PATCH 21/52] sfc: Export boot configuration in EEPROM through ethtool Ben Hutchings
2008-09-01 11:47 ` [PATCH 22/52] sfc: Move CPU counting for RSS into a separate function, efx_wanted_rx_queues() Ben Hutchings
2008-09-01 11:47 ` Ben Hutchings [this message]
2008-09-01 11:47 ` [PATCH 24/52] sfc: Cleanup RX queue information Ben Hutchings
2008-09-01 11:47 ` [PATCH 25/52] sfc: Remove initialisation of RX_FILTER_CTL_REG.NUM_KER Ben Hutchings
2008-09-01 11:47 ` [PATCH 26/52] sfc: Make efx_for_each_channel_rx_queue() more efficient Ben Hutchings
2008-09-01 11:48 ` [PATCH 27/52] sfc: Remove efx_channel::evqnum field Ben Hutchings
2008-09-01 11:48 ` [PATCH 28/52] sfc: Cleanup RX event processing Ben Hutchings
2008-09-01 11:48 ` [PATCH 29/52] sfc: Implement get_sset_count, replacing get_stats_count and self_test_count Ben Hutchings
2008-09-01 11:48 ` [PATCH 30/52] sfc: Make PHY flash mode a device attribute, not a module parameter Ben Hutchings
2008-09-01 11:48 ` [PATCH 31/52] sfc: Do not call netif_{stop,wake}_queue() before register_netdev Ben Hutchings
2008-09-01 11:48 ` [PATCH 32/52] sfc: Enable TSO for 802.1q VLAN devices Ben Hutchings
2008-09-01 11:48 ` [PATCH 33/52] sfc: Remove efx_nic_dummy_op_int() as redundant with efx_port_dummy_op_int() Ben Hutchings
2008-09-01 11:48 ` [PATCH 34/52] sfc: Remove remnants of multi-port abstraction for MAC registers Ben Hutchings
2008-09-01 11:48 ` [PATCH 35/52] sfc: Remove some unreachable error paths Ben Hutchings
2008-09-01 11:48 ` [PATCH 36/52] sfc: Cleanup reset code Ben Hutchings
2008-09-01 11:48 ` [PATCH 37/52] sfc: Rework the bitfield header so that we can identify fields by bit number Ben Hutchings
2008-09-01 11:49 ` [PATCH 38/52] sfc: Extend self-tests Ben Hutchings
2008-09-01 11:49 ` [PATCH 39/52] sfc: Remove the STATE_RESETTING flag Ben Hutchings
2008-09-01 11:49 ` [PATCH 40/52] sfc: Rework efx_set_multicast_hash() Ben Hutchings
2008-09-03 13:54 ` Jeff Garzik
2008-09-01 11:49 ` [PATCH 42/52] sfc: Fix memory BAR release call on error path Ben Hutchings
2008-09-01 11:49 ` [PATCH 43/52] sfc: Remove workaround for old firmware bug Ben Hutchings
2008-09-01 11:49 ` [PATCH 44/52] sfc: Serialise tenxpress_special_reset() with statistics fetches Ben Hutchings
2008-09-01 11:49 ` [PATCH 45/52] sfc: Don't use EFX_OWORD_FIELD on an event (64-bit, quad-word) Ben Hutchings
2008-09-01 11:49 ` [PATCH 46/52] sfc: Make queue flushes more reliable Ben Hutchings
2008-09-01 11:49 ` [PATCH 47/52] sfc: Don't include net_driver.h from falcon_io.h Ben Hutchings
2008-09-01 11:50 ` [PATCH 48/52] sfc: Stop generating bogus events in tenxpress_check_hw() Ben Hutchings
2008-09-01 11:50 ` [PATCH 49/52] sfc: Insert read memory barrier after checking MAC statistics flag Ben Hutchings
2008-09-01 11:50 ` [PATCH 50/52] sfc: Disable interrupts after a fatal interrupt occurs until reset Ben Hutchings
2008-09-01 11:50 ` [PATCH 51/52] sfc: Remove obsolete comment about PCI modes Ben Hutchings
2008-09-01 11:50 ` [PATCH 52/52] sfc: Use CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS where appropriate Ben Hutchings
2008-09-03 14:07 ` [PATCH 41/52] sfc: Add check for memory allocation failure in falcon_probe_nic() Ben Hutchings
2008-09-13 19:29 ` Jeff Garzik
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080901114737.GQ7908@solarflare.com \
--to=bhutchings@solarflare$(echo .)com \
--cc=jgarzik@pobox$(echo .)com \
--cc=linux-net-drivers@solarflare$(echo .)com \
--cc=netdev@vger$(echo .)kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox