aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Hutchings <bhutchings@solarflare.com>2009-10-23 04:32:04 -0400
committerDavid S. Miller <davem@davemloft.net>2009-10-24 07:27:14 -0400
commit0484e0db7c4293d6202cff730ee359d8a7a6b085 (patch)
treed9eb02ef14b821323dc2548e303a8360aaf7357d
parent59cf09cc2fdbb651193e95d7c3335e751b8f748d (diff)
sfc: Move shared members of struct falcon_nic_data into struct efx_nic
These will also be used with Siena NICs. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/sfc/falcon.c23
-rw-r--r--drivers/net/sfc/net_driver.h7
2 files changed, 14 insertions, 16 deletions
diff --git a/drivers/net/sfc/falcon.c b/drivers/net/sfc/falcon.c
index 34b475e9b29d..1582df7aba7b 100644
--- a/drivers/net/sfc/falcon.c
+++ b/drivers/net/sfc/falcon.c
@@ -35,19 +35,12 @@
35 35
36/** 36/**
37 * struct falcon_nic_data - Falcon NIC state 37 * struct falcon_nic_data - Falcon NIC state
38 * @next_buffer_table: First available buffer table id
39 * @pci_dev2: The secondary PCI device if present 38 * @pci_dev2: The secondary PCI device if present
40 * @i2c_data: Operations and state for I2C bit-bashing algorithm 39 * @i2c_data: Operations and state for I2C bit-bashing algorithm
41 * @int_error_count: Number of internal errors seen recently
42 * @int_error_expire: Time at which error count will be expired
43 */ 40 */
44struct falcon_nic_data { 41struct falcon_nic_data {
45 unsigned next_buffer_table;
46 struct pci_dev *pci_dev2; 42 struct pci_dev *pci_dev2;
47 struct i2c_algo_bit_data i2c_data; 43 struct i2c_algo_bit_data i2c_data;
48
49 unsigned int_error_count;
50 unsigned long int_error_expire;
51}; 44};
52 45
53/************************************************************************** 46/**************************************************************************
@@ -304,8 +297,6 @@ static int falcon_alloc_special_buffer(struct efx_nic *efx,
304 struct efx_special_buffer *buffer, 297 struct efx_special_buffer *buffer,
305 unsigned int len) 298 unsigned int len)
306{ 299{
307 struct falcon_nic_data *nic_data = efx->nic_data;
308
309 len = ALIGN(len, FALCON_BUF_SIZE); 300 len = ALIGN(len, FALCON_BUF_SIZE);
310 301
311 buffer->addr = pci_alloc_consistent(efx->pci_dev, len, 302 buffer->addr = pci_alloc_consistent(efx->pci_dev, len,
@@ -320,8 +311,8 @@ static int falcon_alloc_special_buffer(struct efx_nic *efx,
320 memset(buffer->addr, 0xff, len); 311 memset(buffer->addr, 0xff, len);
321 312
322 /* Select new buffer ID */ 313 /* Select new buffer ID */
323 buffer->index = nic_data->next_buffer_table; 314 buffer->index = efx->next_buffer_table;
324 nic_data->next_buffer_table += buffer->entries; 315 efx->next_buffer_table += buffer->entries;
325 316
326 EFX_LOG(efx, "allocating special buffers %d-%d at %llx+%x " 317 EFX_LOG(efx, "allocating special buffers %d-%d at %llx+%x "
327 "(virt %p phys %llx)\n", buffer->index, 318 "(virt %p phys %llx)\n", buffer->index,
@@ -1411,13 +1402,13 @@ static irqreturn_t falcon_fatal_interrupt(struct efx_nic *efx)
1411 falcon_disable_interrupts(efx); 1402 falcon_disable_interrupts(efx);
1412 1403
1413 /* Count errors and reset or disable the NIC accordingly */ 1404 /* Count errors and reset or disable the NIC accordingly */
1414 if (nic_data->int_error_count == 0 || 1405 if (efx->int_error_count == 0 ||
1415 time_after(jiffies, nic_data->int_error_expire)) { 1406 time_after(jiffies, efx->int_error_expire)) {
1416 nic_data->int_error_count = 0; 1407 efx->int_error_count = 0;
1417 nic_data->int_error_expire = 1408 efx->int_error_expire =
1418 jiffies + FALCON_INT_ERROR_EXPIRE * HZ; 1409 jiffies + FALCON_INT_ERROR_EXPIRE * HZ;
1419 } 1410 }
1420 if (++nic_data->int_error_count < FALCON_MAX_INT_ERRORS) { 1411 if (++efx->int_error_count < FALCON_MAX_INT_ERRORS) {
1421 EFX_ERR(efx, "SYSTEM ERROR - reset scheduled\n"); 1412 EFX_ERR(efx, "SYSTEM ERROR - reset scheduled\n");
1422 efx_schedule_reset(efx, RESET_TYPE_INT_ERROR); 1413 efx_schedule_reset(efx, RESET_TYPE_INT_ERROR);
1423 } else { 1414 } else {
diff --git a/drivers/net/sfc/net_driver.h b/drivers/net/sfc/net_driver.h
index 8e7b854c11aa..25b793327c1b 100644
--- a/drivers/net/sfc/net_driver.h
+++ b/drivers/net/sfc/net_driver.h
@@ -688,10 +688,13 @@ union efx_multicast_hash {
688 * @tx_queue: TX DMA queues 688 * @tx_queue: TX DMA queues
689 * @rx_queue: RX DMA queues 689 * @rx_queue: RX DMA queues
690 * @channel: Channels 690 * @channel: Channels
691 * @next_buffer_table: First available buffer table id
691 * @n_rx_queues: Number of RX queues 692 * @n_rx_queues: Number of RX queues
692 * @n_channels: Number of channels in use 693 * @n_channels: Number of channels in use
693 * @rx_buffer_len: RX buffer length 694 * @rx_buffer_len: RX buffer length
694 * @rx_buffer_order: Order (log2) of number of pages for each RX buffer 695 * @rx_buffer_order: Order (log2) of number of pages for each RX buffer
696 * @int_error_count: Number of internal errors seen recently
697 * @int_error_expire: Time at which error count will be expired
695 * @irq_status: Interrupt status buffer 698 * @irq_status: Interrupt status buffer
696 * @last_irq_cpu: Last CPU to handle interrupt. 699 * @last_irq_cpu: Last CPU to handle interrupt.
697 * This register is written with the SMP processor ID whenever an 700 * This register is written with the SMP processor ID whenever an
@@ -775,11 +778,15 @@ struct efx_nic {
775 struct efx_rx_queue rx_queue[EFX_MAX_RX_QUEUES]; 778 struct efx_rx_queue rx_queue[EFX_MAX_RX_QUEUES];
776 struct efx_channel channel[EFX_MAX_CHANNELS]; 779 struct efx_channel channel[EFX_MAX_CHANNELS];
777 780
781 unsigned next_buffer_table;
778 int n_rx_queues; 782 int n_rx_queues;
779 int n_channels; 783 int n_channels;
780 unsigned int rx_buffer_len; 784 unsigned int rx_buffer_len;
781 unsigned int rx_buffer_order; 785 unsigned int rx_buffer_order;
782 786
787 unsigned int_error_count;
788 unsigned long int_error_expire;
789
783 struct efx_buffer irq_status; 790 struct efx_buffer irq_status;
784 volatile signed int last_irq_cpu; 791 volatile signed int last_irq_cpu;
785 792