diff options
author | Ben Hutchings <bhutchings@solarflare.com> | 2008-04-27 07:55:59 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@redhat.com> | 2008-04-29 01:42:43 -0400 |
commit | 8ceee660aacb29721e26f08e336c58dc4847d1bd (patch) | |
tree | 158122642e6f21fe85d072c50d6185a0d0cf6834 /drivers/net/sfc/efx.h | |
parent | 358c12953b88c5a06a57c33eb27c753b2e7934d1 (diff) |
New driver "sfc" for Solarstorm SFC4000 controller.
The driver supports the 10Xpress PHY and XFP modules on our reference
designs SFE4001 and SFE4002 and the SMC models SMC10GPCIe-XFP and
SMC10GPCIe-10BT.
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'drivers/net/sfc/efx.h')
-rw-r--r-- | drivers/net/sfc/efx.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/drivers/net/sfc/efx.h b/drivers/net/sfc/efx.h new file mode 100644 index 000000000000..3b2f69f4a9ab --- /dev/null +++ b/drivers/net/sfc/efx.h | |||
@@ -0,0 +1,67 @@ | |||
1 | /**************************************************************************** | ||
2 | * Driver for Solarflare Solarstorm network controllers and boards | ||
3 | * Copyright 2005-2006 Fen Systems Ltd. | ||
4 | * Copyright 2006-2008 Solarflare Communications Inc. | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify it | ||
7 | * under the terms of the GNU General Public License version 2 as published | ||
8 | * by the Free Software Foundation, incorporated herein by reference. | ||
9 | */ | ||
10 | |||
11 | #ifndef EFX_EFX_H | ||
12 | #define EFX_EFX_H | ||
13 | |||
14 | #include "net_driver.h" | ||
15 | |||
16 | /* PCI IDs */ | ||
17 | #define EFX_VENDID_SFC 0x1924 | ||
18 | #define FALCON_A_P_DEVID 0x0703 | ||
19 | #define FALCON_A_S_DEVID 0x6703 | ||
20 | #define FALCON_B_P_DEVID 0x0710 | ||
21 | |||
22 | /* TX */ | ||
23 | extern int efx_xmit(struct efx_nic *efx, | ||
24 | struct efx_tx_queue *tx_queue, struct sk_buff *skb); | ||
25 | extern void efx_stop_queue(struct efx_nic *efx); | ||
26 | extern void efx_wake_queue(struct efx_nic *efx); | ||
27 | |||
28 | /* RX */ | ||
29 | extern void efx_xmit_done(struct efx_tx_queue *tx_queue, unsigned int index); | ||
30 | extern void efx_rx_packet(struct efx_rx_queue *rx_queue, unsigned int index, | ||
31 | unsigned int len, int checksummed, int discard); | ||
32 | extern void efx_schedule_slow_fill(struct efx_rx_queue *rx_queue, int delay); | ||
33 | |||
34 | /* Channels */ | ||
35 | extern void efx_process_channel_now(struct efx_channel *channel); | ||
36 | extern int efx_flush_queues(struct efx_nic *efx); | ||
37 | |||
38 | /* Ports */ | ||
39 | extern void efx_reconfigure_port(struct efx_nic *efx); | ||
40 | |||
41 | /* Global */ | ||
42 | extern void efx_schedule_reset(struct efx_nic *efx, enum reset_type type); | ||
43 | extern void efx_suspend(struct efx_nic *efx); | ||
44 | extern void efx_resume(struct efx_nic *efx); | ||
45 | extern void efx_init_irq_moderation(struct efx_nic *efx, int tx_usecs, | ||
46 | int rx_usecs); | ||
47 | extern int efx_request_power(struct efx_nic *efx, int mw, const char *name); | ||
48 | extern void efx_hex_dump(const u8 *, unsigned int, const char *); | ||
49 | |||
50 | /* Dummy PHY ops for PHY drivers */ | ||
51 | extern int efx_port_dummy_op_int(struct efx_nic *efx); | ||
52 | extern void efx_port_dummy_op_void(struct efx_nic *efx); | ||
53 | extern void efx_port_dummy_op_blink(struct efx_nic *efx, int blink); | ||
54 | |||
55 | |||
56 | extern unsigned int efx_monitor_interval; | ||
57 | |||
58 | static inline void efx_schedule_channel(struct efx_channel *channel) | ||
59 | { | ||
60 | EFX_TRACE(channel->efx, "channel %d scheduling NAPI poll on CPU%d\n", | ||
61 | channel->channel, raw_smp_processor_id()); | ||
62 | channel->work_pending = 1; | ||
63 | |||
64 | netif_rx_schedule(channel->napi_dev, &channel->napi_str); | ||
65 | } | ||
66 | |||
67 | #endif /* EFX_EFX_H */ | ||