#include "e1000.h"
#include <net/ip6_checksum.h>
#include <linux/io.h>
#include <linux/prefetch.h>
#include <linux/bitops.h>
#include <linux/if_vlan.h>
char e1000_driver_name[] = …;
static char e1000_driver_string[] = …;
static const char e1000_copyright[] = …;
static const struct pci_device_id e1000_pci_tbl[] = …;
MODULE_DEVICE_TABLE(pci, e1000_pci_tbl);
int e1000_up(struct e1000_adapter *adapter);
void e1000_down(struct e1000_adapter *adapter);
void e1000_reinit_locked(struct e1000_adapter *adapter);
void e1000_reset(struct e1000_adapter *adapter);
int e1000_setup_all_tx_resources(struct e1000_adapter *adapter);
int e1000_setup_all_rx_resources(struct e1000_adapter *adapter);
void e1000_free_all_tx_resources(struct e1000_adapter *adapter);
void e1000_free_all_rx_resources(struct e1000_adapter *adapter);
static int e1000_setup_tx_resources(struct e1000_adapter *adapter,
struct e1000_tx_ring *txdr);
static int e1000_setup_rx_resources(struct e1000_adapter *adapter,
struct e1000_rx_ring *rxdr);
static void e1000_free_tx_resources(struct e1000_adapter *adapter,
struct e1000_tx_ring *tx_ring);
static void e1000_free_rx_resources(struct e1000_adapter *adapter,
struct e1000_rx_ring *rx_ring);
void e1000_update_stats(struct e1000_adapter *adapter);
static int e1000_init_module(void);
static void e1000_exit_module(void);
static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
static void e1000_remove(struct pci_dev *pdev);
static int e1000_alloc_queues(struct e1000_adapter *adapter);
static int e1000_sw_init(struct e1000_adapter *adapter);
int e1000_open(struct net_device *netdev);
int e1000_close(struct net_device *netdev);
static void e1000_configure_tx(struct e1000_adapter *adapter);
static void e1000_configure_rx(struct e1000_adapter *adapter);
static void e1000_setup_rctl(struct e1000_adapter *adapter);
static void e1000_clean_all_tx_rings(struct e1000_adapter *adapter);
static void e1000_clean_all_rx_rings(struct e1000_adapter *adapter);
static void e1000_clean_tx_ring(struct e1000_adapter *adapter,
struct e1000_tx_ring *tx_ring);
static void e1000_clean_rx_ring(struct e1000_adapter *adapter,
struct e1000_rx_ring *rx_ring);
static void e1000_set_rx_mode(struct net_device *netdev);
static void e1000_update_phy_info_task(struct work_struct *work);
static void e1000_watchdog(struct work_struct *work);
static void e1000_82547_tx_fifo_stall_task(struct work_struct *work);
static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb,
struct net_device *netdev);
static int e1000_change_mtu(struct net_device *netdev, int new_mtu);
static int e1000_set_mac(struct net_device *netdev, void *p);
static irqreturn_t e1000_intr(int irq, void *data);
static bool e1000_clean_tx_irq(struct e1000_adapter *adapter,
struct e1000_tx_ring *tx_ring);
static int e1000_clean(struct napi_struct *napi, int budget);
static bool e1000_clean_rx_irq(struct e1000_adapter *adapter,
struct e1000_rx_ring *rx_ring,
int *work_done, int work_to_do);
static bool e1000_clean_jumbo_rx_irq(struct e1000_adapter *adapter,
struct e1000_rx_ring *rx_ring,
int *work_done, int work_to_do);
static void e1000_alloc_dummy_rx_buffers(struct e1000_adapter *adapter,
struct e1000_rx_ring *rx_ring,
int cleaned_count)
{ … }
static void e1000_alloc_rx_buffers(struct e1000_adapter *adapter,
struct e1000_rx_ring *rx_ring,
int cleaned_count);
static void e1000_alloc_jumbo_rx_buffers(struct e1000_adapter *adapter,
struct e1000_rx_ring *rx_ring,
int cleaned_count);
static int e1000_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd);
static int e1000_mii_ioctl(struct net_device *netdev, struct ifreq *ifr,
int cmd);
static void e1000_enter_82542_rst(struct e1000_adapter *adapter);
static void e1000_leave_82542_rst(struct e1000_adapter *adapter);
static void e1000_tx_timeout(struct net_device *dev, unsigned int txqueue);
static void e1000_reset_task(struct work_struct *work);
static void e1000_smartspeed(struct e1000_adapter *adapter);
static int e1000_82547_fifo_workaround(struct e1000_adapter *adapter,
struct sk_buff *skb);
static bool e1000_vlan_used(struct e1000_adapter *adapter);
static void e1000_vlan_mode(struct net_device *netdev,
netdev_features_t features);
static void e1000_vlan_filter_on_off(struct e1000_adapter *adapter,
bool filter_on);
static int e1000_vlan_rx_add_vid(struct net_device *netdev,
__be16 proto, u16 vid);
static int e1000_vlan_rx_kill_vid(struct net_device *netdev,
__be16 proto, u16 vid);
static void e1000_restore_vlan(struct e1000_adapter *adapter);
static int e1000_suspend(struct device *dev);
static int e1000_resume(struct device *dev);
static void e1000_shutdown(struct pci_dev *pdev);
#ifdef CONFIG_NET_POLL_CONTROLLER
static void e1000_netpoll (struct net_device *netdev);
#endif
#define COPYBREAK_DEFAULT …
static unsigned int copybreak __read_mostly = …;
module_param(copybreak, uint, 0644);
MODULE_PARM_DESC(…) …;
static pci_ers_result_t e1000_io_error_detected(struct pci_dev *pdev,
pci_channel_state_t state);
static pci_ers_result_t e1000_io_slot_reset(struct pci_dev *pdev);
static void e1000_io_resume(struct pci_dev *pdev);
static const struct pci_error_handlers e1000_err_handler = …;
static DEFINE_SIMPLE_DEV_PM_OPS(e1000_pm_ops, e1000_suspend, e1000_resume);
static struct pci_driver e1000_driver = …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
#define DEFAULT_MSG_ENABLE …
static int debug = …;
module_param(debug, int, 0);
MODULE_PARM_DESC(…) …;
struct net_device *e1000_get_hw_dev(struct e1000_hw *hw)
{ … }
static int __init e1000_init_module(void)
{ … }
module_init(…) …;
static void __exit e1000_exit_module(void)
{ … }
module_exit(e1000_exit_module);
static int e1000_request_irq(struct e1000_adapter *adapter)
{ … }
static void e1000_free_irq(struct e1000_adapter *adapter)
{ … }
static void e1000_irq_disable(struct e1000_adapter *adapter)
{ … }
static void e1000_irq_enable(struct e1000_adapter *adapter)
{ … }
static void e1000_update_mng_vlan(struct e1000_adapter *adapter)
{ … }
static void e1000_init_manageability(struct e1000_adapter *adapter)
{ … }
static void e1000_release_manageability(struct e1000_adapter *adapter)
{ … }
static void e1000_configure(struct e1000_adapter *adapter)
{ … }
int e1000_up(struct e1000_adapter *adapter)
{ … }
void e1000_power_up_phy(struct e1000_adapter *adapter)
{ … }
static void e1000_power_down_phy(struct e1000_adapter *adapter)
{ … }
static void e1000_down_and_stop(struct e1000_adapter *adapter)
{ … }
void e1000_down(struct e1000_adapter *adapter)
{ … }
void e1000_reinit_locked(struct e1000_adapter *adapter)
{ … }
void e1000_reset(struct e1000_adapter *adapter)
{ … }
static void e1000_dump_eeprom(struct e1000_adapter *adapter)
{ … }
static int e1000_is_need_ioport(struct pci_dev *pdev)
{ … }
static netdev_features_t e1000_fix_features(struct net_device *netdev,
netdev_features_t features)
{ … }
static int e1000_set_features(struct net_device *netdev,
netdev_features_t features)
{ … }
static const struct net_device_ops e1000_netdev_ops = …;
static int e1000_init_hw_struct(struct e1000_adapter *adapter,
struct e1000_hw *hw)
{ … }
static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
{ … }
static void e1000_remove(struct pci_dev *pdev)
{ … }
static int e1000_sw_init(struct e1000_adapter *adapter)
{ … }
static int e1000_alloc_queues(struct e1000_adapter *adapter)
{ … }
int e1000_open(struct net_device *netdev)
{ … }
int e1000_close(struct net_device *netdev)
{ … }
static bool e1000_check_64k_bound(struct e1000_adapter *adapter, void *start,
unsigned long len)
{ … }
static int e1000_setup_tx_resources(struct e1000_adapter *adapter,
struct e1000_tx_ring *txdr)
{ … }
int e1000_setup_all_tx_resources(struct e1000_adapter *adapter)
{ … }
static void e1000_configure_tx(struct e1000_adapter *adapter)
{ … }
static int e1000_setup_rx_resources(struct e1000_adapter *adapter,
struct e1000_rx_ring *rxdr)
{ … }
int e1000_setup_all_rx_resources(struct e1000_adapter *adapter)
{ … }
static void e1000_setup_rctl(struct e1000_adapter *adapter)
{ … }
static void e1000_configure_rx(struct e1000_adapter *adapter)
{ … }
static void e1000_free_tx_resources(struct e1000_adapter *adapter,
struct e1000_tx_ring *tx_ring)
{ … }
void e1000_free_all_tx_resources(struct e1000_adapter *adapter)
{ … }
static void
e1000_unmap_and_free_tx_resource(struct e1000_adapter *adapter,
struct e1000_tx_buffer *buffer_info,
int budget)
{ … }
static void e1000_clean_tx_ring(struct e1000_adapter *adapter,
struct e1000_tx_ring *tx_ring)
{ … }
static void e1000_clean_all_tx_rings(struct e1000_adapter *adapter)
{ … }
static void e1000_free_rx_resources(struct e1000_adapter *adapter,
struct e1000_rx_ring *rx_ring)
{ … }
void e1000_free_all_rx_resources(struct e1000_adapter *adapter)
{ … }
#define E1000_HEADROOM …
static unsigned int e1000_frag_len(const struct e1000_adapter *a)
{ … }
static void *e1000_alloc_frag(const struct e1000_adapter *a)
{ … }
static void e1000_clean_rx_ring(struct e1000_adapter *adapter,
struct e1000_rx_ring *rx_ring)
{ … }
static void e1000_clean_all_rx_rings(struct e1000_adapter *adapter)
{ … }
static void e1000_enter_82542_rst(struct e1000_adapter *adapter)
{ … }
static void e1000_leave_82542_rst(struct e1000_adapter *adapter)
{ … }
static int e1000_set_mac(struct net_device *netdev, void *p)
{ … }
static void e1000_set_rx_mode(struct net_device *netdev)
{ … }
static void e1000_update_phy_info_task(struct work_struct *work)
{ … }
static void e1000_82547_tx_fifo_stall_task(struct work_struct *work)
{ … }
bool e1000_has_link(struct e1000_adapter *adapter)
{ … }
static void e1000_watchdog(struct work_struct *work)
{ … }
enum latency_range { … };
static unsigned int e1000_update_itr(struct e1000_adapter *adapter,
u16 itr_setting, int packets, int bytes)
{ … }
static void e1000_set_itr(struct e1000_adapter *adapter)
{ … }
#define E1000_TX_FLAGS_CSUM …
#define E1000_TX_FLAGS_VLAN …
#define E1000_TX_FLAGS_TSO …
#define E1000_TX_FLAGS_IPV4 …
#define E1000_TX_FLAGS_NO_FCS …
#define E1000_TX_FLAGS_VLAN_MASK …
#define E1000_TX_FLAGS_VLAN_SHIFT …
static int e1000_tso(struct e1000_adapter *adapter,
struct e1000_tx_ring *tx_ring, struct sk_buff *skb,
__be16 protocol)
{ … }
static bool e1000_tx_csum(struct e1000_adapter *adapter,
struct e1000_tx_ring *tx_ring, struct sk_buff *skb,
__be16 protocol)
{ … }
#define E1000_MAX_TXD_PWR …
#define E1000_MAX_DATA_PER_TXD …
static int e1000_tx_map(struct e1000_adapter *adapter,
struct e1000_tx_ring *tx_ring,
struct sk_buff *skb, unsigned int first,
unsigned int max_per_txd, unsigned int nr_frags,
unsigned int mss)
{ … }
static void e1000_tx_queue(struct e1000_adapter *adapter,
struct e1000_tx_ring *tx_ring, int tx_flags,
int count)
{ … }
#define E1000_FIFO_HDR …
#define E1000_82547_PAD_LEN …
static int e1000_82547_fifo_workaround(struct e1000_adapter *adapter,
struct sk_buff *skb)
{ … }
static int __e1000_maybe_stop_tx(struct net_device *netdev, int size)
{ … }
static int e1000_maybe_stop_tx(struct net_device *netdev,
struct e1000_tx_ring *tx_ring, int size)
{ … }
#define TXD_USE_COUNT(S, X) …
static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb,
struct net_device *netdev)
{ … }
#define NUM_REGS …
static void e1000_regdump(struct e1000_adapter *adapter)
{ … }
static void e1000_dump(struct e1000_adapter *adapter)
{ … }
static void e1000_tx_timeout(struct net_device *netdev, unsigned int __always_unused txqueue)
{ … }
static void e1000_reset_task(struct work_struct *work)
{ … }
static int e1000_change_mtu(struct net_device *netdev, int new_mtu)
{ … }
void e1000_update_stats(struct e1000_adapter *adapter)
{ … }
static irqreturn_t e1000_intr(int irq, void *data)
{ … }
static int e1000_clean(struct napi_struct *napi, int budget)
{ … }
static bool e1000_clean_tx_irq(struct e1000_adapter *adapter,
struct e1000_tx_ring *tx_ring)
{ … }
static void e1000_rx_checksum(struct e1000_adapter *adapter, u32 status_err,
u32 csum, struct sk_buff *skb)
{ … }
static void e1000_consume_page(struct e1000_rx_buffer *bi, struct sk_buff *skb,
u16 length)
{ … }
static void e1000_receive_skb(struct e1000_adapter *adapter, u8 status,
__le16 vlan, struct sk_buff *skb)
{ … }
static void e1000_tbi_adjust_stats(struct e1000_hw *hw,
struct e1000_hw_stats *stats,
u32 frame_len, const u8 *mac_addr)
{ … }
static bool e1000_tbi_should_accept(struct e1000_adapter *adapter,
u8 status, u8 errors,
u32 length, const u8 *data)
{ … }
static struct sk_buff *e1000_alloc_rx_skb(struct e1000_adapter *adapter,
unsigned int bufsz)
{ … }
static bool e1000_clean_jumbo_rx_irq(struct e1000_adapter *adapter,
struct e1000_rx_ring *rx_ring,
int *work_done, int work_to_do)
{ … }
static struct sk_buff *e1000_copybreak(struct e1000_adapter *adapter,
struct e1000_rx_buffer *buffer_info,
u32 length, const void *data)
{ … }
static bool e1000_clean_rx_irq(struct e1000_adapter *adapter,
struct e1000_rx_ring *rx_ring,
int *work_done, int work_to_do)
{ … }
static void
e1000_alloc_jumbo_rx_buffers(struct e1000_adapter *adapter,
struct e1000_rx_ring *rx_ring, int cleaned_count)
{ … }
static void e1000_alloc_rx_buffers(struct e1000_adapter *adapter,
struct e1000_rx_ring *rx_ring,
int cleaned_count)
{ … }
static void e1000_smartspeed(struct e1000_adapter *adapter)
{ … }
static int e1000_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd)
{ … }
static int e1000_mii_ioctl(struct net_device *netdev, struct ifreq *ifr,
int cmd)
{ … }
void e1000_pci_set_mwi(struct e1000_hw *hw)
{ … }
void e1000_pci_clear_mwi(struct e1000_hw *hw)
{ … }
int e1000_pcix_get_mmrbc(struct e1000_hw *hw)
{ … }
void e1000_pcix_set_mmrbc(struct e1000_hw *hw, int mmrbc)
{ … }
void e1000_io_write(struct e1000_hw *hw, unsigned long port, u32 value)
{ … }
static bool e1000_vlan_used(struct e1000_adapter *adapter)
{ … }
static void __e1000_vlan_mode(struct e1000_adapter *adapter,
netdev_features_t features)
{ … }
static void e1000_vlan_filter_on_off(struct e1000_adapter *adapter,
bool filter_on)
{ … }
static void e1000_vlan_mode(struct net_device *netdev,
netdev_features_t features)
{ … }
static int e1000_vlan_rx_add_vid(struct net_device *netdev,
__be16 proto, u16 vid)
{ … }
static int e1000_vlan_rx_kill_vid(struct net_device *netdev,
__be16 proto, u16 vid)
{ … }
static void e1000_restore_vlan(struct e1000_adapter *adapter)
{ … }
int e1000_set_spd_dplx(struct e1000_adapter *adapter, u32 spd, u8 dplx)
{ … }
static int __e1000_shutdown(struct pci_dev *pdev, bool *enable_wake)
{ … }
static int e1000_suspend(struct device *dev)
{ … }
static int e1000_resume(struct device *dev)
{ … }
static void e1000_shutdown(struct pci_dev *pdev)
{ … }
#ifdef CONFIG_NET_POLL_CONTROLLER
static void e1000_netpoll(struct net_device *netdev)
{ … }
#endif
static pci_ers_result_t e1000_io_error_detected(struct pci_dev *pdev,
pci_channel_state_t state)
{ … }
static pci_ers_result_t e1000_io_slot_reset(struct pci_dev *pdev)
{ … }
static void e1000_io_resume(struct pci_dev *pdev)
{ … }