]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/net/sfc/selftest.c
Merge branch 'master' into csb1725
[mv-sheeva.git] / drivers / net / sfc / selftest.c
index 85f015f005d5c12afecdf1a1db7fe91fbdd8c3f1..0ebfb99f12991fc0e4a7bfe3b17799c736834798 100644 (file)
@@ -48,6 +48,16 @@ static const unsigned char payload_source[ETH_ALEN] = {
 static const char payload_msg[] =
        "Hello world! This is an Efx loopback test in progress!";
 
+/* Interrupt mode names */
+static const unsigned int efx_interrupt_mode_max = EFX_INT_MODE_MAX;
+static const char *efx_interrupt_mode_names[] = {
+       [EFX_INT_MODE_MSIX]   = "MSI-X",
+       [EFX_INT_MODE_MSI]    = "MSI",
+       [EFX_INT_MODE_LEGACY] = "legacy",
+};
+#define INT_MODE(efx) \
+       STRING_TABLE_LOOKUP(efx->interrupt_mode, efx_interrupt_mode)
+
 /**
  * efx_loopback_state - persistent state during a loopback selftest
  * @flush:             Drop all packets in efx_loopback_rx_packet
@@ -506,7 +516,7 @@ efx_test_loopback(struct efx_tx_queue *tx_queue,
 
        for (i = 0; i < 3; i++) {
                /* Determine how many packets to send */
-               state->packet_count = EFX_TXQ_SIZE / 3;
+               state->packet_count = efx->txq_entries / 3;
                state->packet_count = min(1 << (i << 2), state->packet_count);
                state->skbs = kzalloc(sizeof(state->skbs[0]) *
                                      state->packet_count, GFP_KERNEL);
@@ -567,7 +577,7 @@ static int efx_wait_for_link(struct efx_nic *efx)
                        efx->type->monitor(efx);
                        mutex_unlock(&efx->mac_lock);
                } else {
-                       struct efx_channel *channel = &efx->channel[0];
+                       struct efx_channel *channel = efx_get_channel(efx, 0);
                        if (channel->work_pending)
                                efx_process_channel_now(channel);
                }
@@ -594,6 +604,7 @@ static int efx_test_loopbacks(struct efx_nic *efx, struct efx_self_tests *tests,
 {
        enum efx_loopback_mode mode;
        struct efx_loopback_state *state;
+       struct efx_channel *channel = efx_get_channel(efx, 0);
        struct efx_tx_queue *tx_queue;
        int rc = 0;
 
@@ -634,7 +645,7 @@ static int efx_test_loopbacks(struct efx_nic *efx, struct efx_self_tests *tests,
                }
 
                /* Test both types of TX queue */
-               efx_for_each_channel_tx_queue(tx_queue, &efx->channel[0]) {
+               efx_for_each_channel_tx_queue(tx_queue, channel) {
                        state->offload_csum = (tx_queue->queue &
                                               EFX_TXQ_TYPE_OFFLOAD);
                        rc = efx_test_loopback(tx_queue,