#include <linux/module.h>
#include <linux/pci.h>
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
#include <linux/crc32.h>
#include <linux/microchipphy.h>
#include <linux/net_tstamp.h>
#include <linux/of_mdio.h>
#include <linux/of_net.h>
#include <linux/phy.h>
#include <linux/phy_fixed.h>
#include <linux/rtnetlink.h>
#include <linux/iopoll.h>
#include <linux/crc16.h>
#include "lan743x_main.h"
#include "lan743x_ethtool.h"
#define MMD_ACCESS_ADDRESS …
#define MMD_ACCESS_WRITE …
#define MMD_ACCESS_READ …
#define MMD_ACCESS_READ_INC …
#define PCS_POWER_STATE_DOWN …
#define PCS_POWER_STATE_UP …
#define RFE_RD_FIFO_TH_3_DWORDS …
static void pci11x1x_strap_get_status(struct lan743x_adapter *adapter)
{ … }
static bool is_pci11x1x_chip(struct lan743x_adapter *adapter)
{ … }
static void lan743x_pci_cleanup(struct lan743x_adapter *adapter)
{ … }
static int lan743x_pci_init(struct lan743x_adapter *adapter,
struct pci_dev *pdev)
{ … }
u32 lan743x_csr_read(struct lan743x_adapter *adapter, int offset)
{ … }
void lan743x_csr_write(struct lan743x_adapter *adapter, int offset,
u32 data)
{ … }
#define LAN743X_CSR_READ_OP(offset) …
static int lan743x_csr_light_reset(struct lan743x_adapter *adapter)
{ … }
static int lan743x_csr_wait_for_bit_atomic(struct lan743x_adapter *adapter,
int offset, u32 bit_mask,
int target_value, int udelay_min,
int udelay_max, int count)
{ … }
static int lan743x_csr_wait_for_bit(struct lan743x_adapter *adapter,
int offset, u32 bit_mask,
int target_value, int usleep_min,
int usleep_max, int count)
{ … }
static int lan743x_csr_init(struct lan743x_adapter *adapter)
{ … }
static void lan743x_intr_software_isr(struct lan743x_adapter *adapter)
{ … }
static void lan743x_tx_isr(void *context, u32 int_sts, u32 flags)
{ … }
static void lan743x_rx_isr(void *context, u32 int_sts, u32 flags)
{ … }
static void lan743x_intr_shared_isr(void *context, u32 int_sts, u32 flags)
{ … }
static irqreturn_t lan743x_intr_entry_isr(int irq, void *ptr)
{ … }
static int lan743x_intr_test_isr(struct lan743x_adapter *adapter)
{ … }
static int lan743x_intr_register_isr(struct lan743x_adapter *adapter,
int vector_index, u32 flags,
u32 int_mask,
lan743x_vector_handler handler,
void *context)
{ … }
static void lan743x_intr_unregister_isr(struct lan743x_adapter *adapter,
int vector_index)
{ … }
static u32 lan743x_intr_get_vector_flags(struct lan743x_adapter *adapter,
u32 int_mask)
{ … }
static void lan743x_intr_close(struct lan743x_adapter *adapter)
{ … }
static int lan743x_intr_open(struct lan743x_adapter *adapter)
{ … }
static int lan743x_dp_write(struct lan743x_adapter *adapter,
u32 select, u32 addr, u32 length, u32 *buf)
{ … }
static u32 lan743x_mac_mii_access(u16 id, u16 index, int read)
{ … }
static int lan743x_mac_mii_wait_till_not_busy(struct lan743x_adapter *adapter)
{ … }
static int lan743x_mdiobus_read_c22(struct mii_bus *bus, int phy_id, int index)
{ … }
static int lan743x_mdiobus_write_c22(struct mii_bus *bus,
int phy_id, int index, u16 regval)
{ … }
static u32 lan743x_mac_mmd_access(int id, int dev_addr, int op)
{ … }
static int lan743x_mdiobus_read_c45(struct mii_bus *bus, int phy_id,
int dev_addr, int index)
{ … }
static int lan743x_mdiobus_write_c45(struct mii_bus *bus, int phy_id,
int dev_addr, int index, u16 regval)
{ … }
static int lan743x_sgmii_wait_till_not_busy(struct lan743x_adapter *adapter)
{ … }
int lan743x_sgmii_read(struct lan743x_adapter *adapter, u8 mmd, u16 addr)
{ … }
static int lan743x_sgmii_write(struct lan743x_adapter *adapter,
u8 mmd, u16 addr, u16 val)
{ … }
static int lan743x_sgmii_mpll_set(struct lan743x_adapter *adapter,
u16 baud)
{ … }
static int lan743x_sgmii_2_5G_mode_set(struct lan743x_adapter *adapter,
bool enable)
{ … }
static int lan743x_is_sgmii_2_5G_mode(struct lan743x_adapter *adapter,
bool *status)
{ … }
static int lan743x_sgmii_aneg_update(struct lan743x_adapter *adapter)
{ … }
static int lan743x_pcs_seq_state(struct lan743x_adapter *adapter, u8 state)
{ … }
static int lan743x_sgmii_config(struct lan743x_adapter *adapter)
{ … }
static void lan743x_mac_set_address(struct lan743x_adapter *adapter,
u8 *addr)
{ … }
static int lan743x_mac_init(struct lan743x_adapter *adapter)
{ … }
static int lan743x_mac_open(struct lan743x_adapter *adapter)
{ … }
static void lan743x_mac_close(struct lan743x_adapter *adapter)
{ … }
void lan743x_mac_flow_ctrl_set_enables(struct lan743x_adapter *adapter,
bool tx_enable, bool rx_enable)
{ … }
static int lan743x_mac_set_mtu(struct lan743x_adapter *adapter, int new_mtu)
{ … }
static int lan743x_phy_reset(struct lan743x_adapter *adapter)
{ … }
static void lan743x_phy_update_flowcontrol(struct lan743x_adapter *adapter,
u16 local_adv, u16 remote_adv)
{ … }
static int lan743x_phy_init(struct lan743x_adapter *adapter)
{ … }
static void lan743x_phy_link_status_change(struct net_device *netdev)
{ … }
static void lan743x_phy_close(struct lan743x_adapter *adapter)
{ … }
static void lan743x_phy_interface_select(struct lan743x_adapter *adapter)
{ … }
static int lan743x_phy_open(struct lan743x_adapter *adapter)
{ … }
static void lan743x_rfe_open(struct lan743x_adapter *adapter)
{ … }
static void lan743x_rfe_update_mac_address(struct lan743x_adapter *adapter)
{ … }
static void lan743x_rfe_set_multicast(struct lan743x_adapter *adapter)
{ … }
static int lan743x_dmac_init(struct lan743x_adapter *adapter)
{ … }
static int lan743x_dmac_tx_get_state(struct lan743x_adapter *adapter,
int tx_channel)
{ … }
static int lan743x_dmac_tx_wait_till_stopped(struct lan743x_adapter *adapter,
int tx_channel)
{ … }
static int lan743x_dmac_rx_get_state(struct lan743x_adapter *adapter,
int rx_channel)
{ … }
static int lan743x_dmac_rx_wait_till_stopped(struct lan743x_adapter *adapter,
int rx_channel)
{ … }
static void lan743x_tx_release_desc(struct lan743x_tx *tx,
int descriptor_index, bool cleanup)
{ … }
static int lan743x_tx_next_index(struct lan743x_tx *tx, int index)
{ … }
static void lan743x_tx_release_completed_descriptors(struct lan743x_tx *tx)
{ … }
static void lan743x_tx_release_all_descriptors(struct lan743x_tx *tx)
{ … }
static int lan743x_tx_get_desc_cnt(struct lan743x_tx *tx,
struct sk_buff *skb)
{ … }
static int lan743x_tx_get_avail_desc(struct lan743x_tx *tx)
{ … }
static void lan743x_rx_cfg_b_tstamp_config(struct lan743x_adapter *adapter,
int rx_ts_config)
{ … }
int lan743x_rx_set_tstamp_mode(struct lan743x_adapter *adapter,
int rx_filter)
{ … }
void lan743x_tx_set_timestamping_mode(struct lan743x_tx *tx,
bool enable_timestamping,
bool enable_onestep_sync)
{ … }
static int lan743x_tx_frame_start(struct lan743x_tx *tx,
unsigned char *first_buffer,
unsigned int first_buffer_length,
unsigned int frame_length,
bool time_stamp,
bool check_sum)
{ … }
static void lan743x_tx_frame_add_lso(struct lan743x_tx *tx,
unsigned int frame_length,
int nr_frags)
{ … }
static int lan743x_tx_frame_add_fragment(struct lan743x_tx *tx,
const skb_frag_t *fragment,
unsigned int frame_length)
{ … }
static void lan743x_tx_frame_end(struct lan743x_tx *tx,
struct sk_buff *skb,
bool time_stamp,
bool ignore_sync)
{ … }
static netdev_tx_t lan743x_tx_xmit_frame(struct lan743x_tx *tx,
struct sk_buff *skb)
{ … }
static int lan743x_tx_napi_poll(struct napi_struct *napi, int weight)
{ … }
static void lan743x_tx_ring_cleanup(struct lan743x_tx *tx)
{ … }
static int lan743x_tx_ring_init(struct lan743x_tx *tx)
{ … }
static void lan743x_tx_close(struct lan743x_tx *tx)
{ … }
static int lan743x_tx_open(struct lan743x_tx *tx)
{ … }
static int lan743x_rx_next_index(struct lan743x_rx *rx, int index)
{ … }
static void lan743x_rx_update_tail(struct lan743x_rx *rx, int index)
{ … }
static int lan743x_rx_init_ring_element(struct lan743x_rx *rx, int index,
gfp_t gfp)
{ … }
static void lan743x_rx_reuse_ring_element(struct lan743x_rx *rx, int index)
{ … }
static void lan743x_rx_release_ring_element(struct lan743x_rx *rx, int index)
{ … }
static struct sk_buff *
lan743x_rx_trim_skb(struct sk_buff *skb, int frame_length)
{ … }
static int lan743x_rx_process_buffer(struct lan743x_rx *rx)
{ … }
static int lan743x_rx_napi_poll(struct napi_struct *napi, int weight)
{ … }
static void lan743x_rx_ring_cleanup(struct lan743x_rx *rx)
{ … }
static int lan743x_rx_ring_init(struct lan743x_rx *rx)
{ … }
static void lan743x_rx_close(struct lan743x_rx *rx)
{ … }
static int lan743x_rx_open(struct lan743x_rx *rx)
{ … }
static int lan743x_netdev_close(struct net_device *netdev)
{ … }
static int lan743x_netdev_open(struct net_device *netdev)
{ … }
static netdev_tx_t lan743x_netdev_xmit_frame(struct sk_buff *skb,
struct net_device *netdev)
{ … }
static int lan743x_netdev_ioctl(struct net_device *netdev,
struct ifreq *ifr, int cmd)
{ … }
static void lan743x_netdev_set_multicast(struct net_device *netdev)
{ … }
static int lan743x_netdev_change_mtu(struct net_device *netdev, int new_mtu)
{ … }
static void lan743x_netdev_get_stats64(struct net_device *netdev,
struct rtnl_link_stats64 *stats)
{ … }
static int lan743x_netdev_set_mac_address(struct net_device *netdev,
void *addr)
{ … }
static const struct net_device_ops lan743x_netdev_ops = …;
static void lan743x_hardware_cleanup(struct lan743x_adapter *adapter)
{ … }
static void lan743x_mdiobus_cleanup(struct lan743x_adapter *adapter)
{ … }
static void lan743x_full_cleanup(struct lan743x_adapter *adapter)
{ … }
static void pci11x1x_set_rfe_rd_fifo_threshold(struct lan743x_adapter *adapter)
{ … }
static int lan743x_hardware_init(struct lan743x_adapter *adapter,
struct pci_dev *pdev)
{ … }
static int lan743x_mdiobus_init(struct lan743x_adapter *adapter)
{ … }
static int lan743x_pcidev_probe(struct pci_dev *pdev,
const struct pci_device_id *id)
{ … }
static void lan743x_pcidev_remove(struct pci_dev *pdev)
{ … }
static void lan743x_pcidev_shutdown(struct pci_dev *pdev)
{ … }
#ifdef CONFIG_PM_SLEEP
static u16 lan743x_pm_wakeframe_crc16(const u8 *buf, int len)
{ … }
static void lan743x_pm_set_wol(struct lan743x_adapter *adapter)
{ … }
static int lan743x_pm_suspend(struct device *dev)
{ … }
static int lan743x_pm_resume(struct device *dev)
{ … }
static const struct dev_pm_ops lan743x_pm_ops = …;
#endif
static const struct pci_device_id lan743x_pcidev_tbl[] = …;
MODULE_DEVICE_TABLE(pci, lan743x_pcidev_tbl);
static struct pci_driver lan743x_pcidev_driver = …;
module_pci_driver(…) …;
MODULE_AUTHOR(…);
MODULE_DESCRIPTION(…);
MODULE_LICENSE(…) …;