@ -30,7 +30,7 @@ static inline int efx_nic_rev(struct efx_nic *efx)
return efx - > type - > revision ;
}
extern u32 efx_farch_fpga_ver ( struct efx_nic * efx ) ;
u32 efx_farch_fpga_ver ( struct efx_nic * efx ) ;
/* NIC has two interlinked PCI functions for the same port. */
static inline bool efx_nic_is_dual_func ( struct efx_nic * efx )
@ -497,18 +497,18 @@ static inline unsigned int efx_vf_size(struct efx_nic *efx)
return 1 < < efx - > vi_scale ;
}
extern int efx_init_sriov ( void ) ;
extern void efx_sriov_probe ( struct efx_nic * efx ) ;
extern int efx_sriov_init ( struct efx_nic * efx ) ;
extern void efx_sriov_mac_address_changed ( struct efx_nic * efx ) ;
extern void efx_sriov_tx_flush_done ( struct efx_nic * efx , efx_qword_t * event ) ;
extern void efx_sriov_rx_flush_done ( struct efx_nic * efx , efx_qword_t * event ) ;
extern void efx_sriov_event ( struct efx_channel * channel , efx_qword_t * event ) ;
extern void efx_sriov_desc_fetch_err ( struct efx_nic * efx , unsigned dmaq ) ;
extern void efx_sriov_flr ( struct efx_nic * efx , unsigned flr ) ;
extern void efx_sriov_reset ( struct efx_nic * efx ) ;
extern void efx_sriov_fini ( struct efx_nic * efx ) ;
extern void efx_fini_sriov ( void ) ;
int efx_init_sriov ( void ) ;
void efx_sriov_probe ( struct efx_nic * efx ) ;
int efx_sriov_init ( struct efx_nic * efx ) ;
void efx_sriov_mac_address_changed ( struct efx_nic * efx ) ;
void efx_sriov_tx_flush_done ( struct efx_nic * efx , efx_qword_t * event ) ;
void efx_sriov_rx_flush_done ( struct efx_nic * efx , efx_qword_t * event ) ;
void efx_sriov_event ( struct efx_channel * channel , efx_qword_t * event ) ;
void efx_sriov_desc_fetch_err ( struct efx_nic * efx , unsigned dmaq ) ;
void efx_sriov_flr ( struct efx_nic * efx , unsigned flr ) ;
void efx_sriov_reset ( struct efx_nic * efx ) ;
void efx_sriov_fini ( struct efx_nic * efx ) ;
void efx_fini_sriov ( void ) ;
# else
@ -534,22 +534,20 @@ static inline void efx_fini_sriov(void) {}
# endif
extern int efx_sriov_set_vf_mac ( struct net_device * dev , int vf , u8 * mac ) ;
extern int efx_sriov_set_vf_vlan ( struct net_device * dev , int vf ,
u16 vlan , u8 qos ) ;
extern int efx_sriov_get_vf_config ( struct net_device * dev , int vf ,
struct ifla_vf_info * ivf ) ;
extern int efx_sriov_set_vf_spoofchk ( struct net_device * net_dev , int vf ,
bool spoofchk ) ;
int efx_sriov_set_vf_mac ( struct net_device * dev , int vf , u8 * mac ) ;
int efx_sriov_set_vf_vlan ( struct net_device * dev , int vf , u16 vlan , u8 qos ) ;
int efx_sriov_get_vf_config ( struct net_device * dev , int vf ,
struct ifla_vf_info * ivf ) ;
int efx_sriov_set_vf_spoofchk ( struct net_device * net_dev , int vf ,
bool spoofchk ) ;
struct ethtool_ts_info ;
extern void efx_ptp_probe ( struct efx_nic * efx ) ;
extern int efx_ptp_ioctl ( struct efx_nic * efx , struct ifreq * ifr , int cmd ) ;
extern void efx_ptp_get_ts_info ( struct efx_nic * efx ,
struct ethtool_ts_info * ts_info ) ;
extern bool efx_ptp_is_ptp_tx ( struct efx_nic * efx , struct sk_buff * skb ) ;
extern int efx_ptp_tx ( struct efx_nic * efx , struct sk_buff * skb ) ;
extern void efx_ptp_event ( struct efx_nic * efx , efx_qword_t * ev ) ;
void efx_ptp_probe ( struct efx_nic * efx ) ;
int efx_ptp_ioctl ( struct efx_nic * efx , struct ifreq * ifr , int cmd ) ;
void efx_ptp_get_ts_info ( struct efx_nic * efx , struct ethtool_ts_info * ts_info ) ;
bool efx_ptp_is_ptp_tx ( struct efx_nic * efx , struct sk_buff * skb ) ;
int efx_ptp_tx ( struct efx_nic * efx , struct sk_buff * skb ) ;
void efx_ptp_event ( struct efx_nic * efx , efx_qword_t * ev ) ;
extern const struct efx_nic_type falcon_a1_nic_type ;
extern const struct efx_nic_type falcon_b0_nic_type ;
@ -563,7 +561,7 @@ extern const struct efx_nic_type efx_hunt_a0_nic_type;
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*/
extern int falcon_probe_board ( struct efx_nic * efx , u16 revision_info ) ;
int falcon_probe_board ( struct efx_nic * efx , u16 revision_info ) ;
/* TX data path */
static inline int efx_nic_probe_tx ( struct efx_tx_queue * tx_queue )
@ -631,58 +629,58 @@ static inline void efx_nic_eventq_read_ack(struct efx_channel *channel)
{
channel - > efx - > type - > ev_read_ack ( channel ) ;
}
extern void efx_nic_event_test_start ( struct efx_channel * channel ) ;
void efx_nic_event_test_start ( struct efx_channel * channel ) ;
/* Falcon/Siena queue operations */
extern int efx_farch_tx_probe ( struct efx_tx_queue * tx_queue ) ;
extern void efx_farch_tx_init ( struct efx_tx_queue * tx_queue ) ;
extern void efx_farch_tx_fini ( struct efx_tx_queue * tx_queue ) ;
extern void efx_farch_tx_remove ( struct efx_tx_queue * tx_queue ) ;
extern void efx_farch_tx_write ( struct efx_tx_queue * tx_queue ) ;
extern int efx_farch_rx_probe ( struct efx_rx_queue * rx_queue ) ;
extern void efx_farch_rx_init ( struct efx_rx_queue * rx_queue ) ;
extern void efx_farch_rx_fini ( struct efx_rx_queue * rx_queue ) ;
extern void efx_farch_rx_remove ( struct efx_rx_queue * rx_queue ) ;
extern void efx_farch_rx_write ( struct efx_rx_queue * rx_queue ) ;
extern void efx_farch_rx_defer_refill ( struct efx_rx_queue * rx_queue ) ;
extern int efx_farch_ev_probe ( struct efx_channel * channel ) ;
extern int efx_farch_ev_init ( struct efx_channel * channel ) ;
extern void efx_farch_ev_fini ( struct efx_channel * channel ) ;
extern void efx_farch_ev_remove ( struct efx_channel * channel ) ;
extern int efx_farch_ev_process ( struct efx_channel * channel , int quota ) ;
extern void efx_farch_ev_read_ack ( struct efx_channel * channel ) ;
extern void efx_farch_ev_test_generate ( struct efx_channel * channel ) ;
int efx_farch_tx_probe ( struct efx_tx_queue * tx_queue ) ;
void efx_farch_tx_init ( struct efx_tx_queue * tx_queue ) ;
void efx_farch_tx_fini ( struct efx_tx_queue * tx_queue ) ;
void efx_farch_tx_remove ( struct efx_tx_queue * tx_queue ) ;
void efx_farch_tx_write ( struct efx_tx_queue * tx_queue ) ;
int efx_farch_rx_probe ( struct efx_rx_queue * rx_queue ) ;
void efx_farch_rx_init ( struct efx_rx_queue * rx_queue ) ;
void efx_farch_rx_fini ( struct efx_rx_queue * rx_queue ) ;
void efx_farch_rx_remove ( struct efx_rx_queue * rx_queue ) ;
void efx_farch_rx_write ( struct efx_rx_queue * rx_queue ) ;
void efx_farch_rx_defer_refill ( struct efx_rx_queue * rx_queue ) ;
int efx_farch_ev_probe ( struct efx_channel * channel ) ;
int efx_farch_ev_init ( struct efx_channel * channel ) ;
void efx_farch_ev_fini ( struct efx_channel * channel ) ;
void efx_farch_ev_remove ( struct efx_channel * channel ) ;
int efx_farch_ev_process ( struct efx_channel * channel , int quota ) ;
void efx_farch_ev_read_ack ( struct efx_channel * channel ) ;
void efx_farch_ev_test_generate ( struct efx_channel * channel ) ;
/* Falcon/Siena filter operations */
extern int efx_farch_filter_table_probe ( struct efx_nic * efx ) ;
extern void efx_farch_filter_table_restore ( struct efx_nic * efx ) ;
extern void efx_farch_filter_table_remove ( struct efx_nic * efx ) ;
extern void efx_farch_filter_update_rx_scatter ( struct efx_nic * efx ) ;
extern s32 efx_farch_filter_insert ( struct efx_nic * efx ,
struct efx_filter_spec * spec , bool replace ) ;
extern int efx_farch_filter_remove_safe ( struct efx_nic * efx ,
enum efx_filter_priority priority ,
u32 filter_id ) ;
extern int efx_farch_filter_get_safe ( struct efx_nic * efx ,
enum efx_filter_priority priority ,
u32 filter_id , struct efx_filter_spec * ) ;
extern void efx_farch_filter_clear_rx ( struct efx_nic * efx ,
enum efx_filter_priority priority ) ;
extern u32 efx_farch_filter_count_rx_used ( struct efx_nic * efx ,
enum efx_filter_priority priority ) ;
extern u32 efx_farch_filter_get_rx_id_limit ( struct efx_nic * efx ) ;
extern s32 efx_farch_filter_get_rx_ids ( struct efx_nic * efx ,
enum efx_filter_priority priority ,
u32 * buf , u32 size ) ;
int efx_farch_filter_table_probe ( struct efx_nic * efx ) ;
void efx_farch_filter_table_restore ( struct efx_nic * efx ) ;
void efx_farch_filter_table_remove ( struct efx_nic * efx ) ;
void efx_farch_filter_update_rx_scatter ( struct efx_nic * efx ) ;
s32 efx_farch_filter_insert ( struct efx_nic * efx , struct efx_filter_spec * spec ,
bool replace ) ;
int efx_farch_filter_remove_safe ( struct efx_nic * efx ,
enum efx_filter_priority priority ,
u32 filter_id ) ;
int efx_farch_filter_get_safe ( struct efx_nic * efx ,
enum efx_filter_priority priority , u32 filter_id ,
struct efx_filter_spec * ) ;
void efx_farch_filter_clear_rx ( struct efx_nic * efx ,
enum efx_filter_priority priority ) ;
u32 efx_farch_filter_count_rx_used ( struct efx_nic * efx ,
enum efx_filter_priority priority ) ;
u32 efx_farch_filter_get_rx_id_limit ( struct efx_nic * efx ) ;
s32 efx_farch_filter_get_rx_ids ( struct efx_nic * efx ,
enum efx_filter_priority priority , u32 * buf ,
u32 size ) ;
# ifdef CONFIG_RFS_ACCEL
extern s32 efx_farch_filter_rfs_insert ( struct efx_nic * efx ,
struct efx_filter_spec * spec ) ;
extern bool efx_farch_filter_rfs_expire_one ( struct efx_nic * efx , u32 flow_id ,
unsigned int index ) ;
s32 efx_farch_filter_rfs_insert ( struct efx_nic * efx ,
struct efx_filter_spec * spec ) ;
bool efx_farch_filter_rfs_expire_one ( struct efx_nic * efx , u32 flow_id ,
unsigned int index ) ;
# endif
extern void efx_farch_filter_sync_rx_mode ( struct efx_nic * efx ) ;
void efx_farch_filter_sync_rx_mode ( struct efx_nic * efx ) ;
extern bool efx_nic_event_present ( struct efx_channel * channel ) ;
bool efx_nic_event_present ( struct efx_channel * channel ) ;
/* Some statistics are computed as A - B where A and B each increase
* linearly with some hardware counter ( s ) and the counters are read
@ -703,17 +701,17 @@ static inline void efx_update_diff_stat(u64 *stat, u64 diff)
}
/* Interrupts */
extern int efx_nic_init_interrupt ( struct efx_nic * efx ) ;
extern void efx_nic_irq_test_start ( struct efx_nic * efx ) ;
extern void efx_nic_fini_interrupt ( struct efx_nic * efx ) ;
int efx_nic_init_interrupt ( struct efx_nic * efx ) ;
void efx_nic_irq_test_start ( struct efx_nic * efx ) ;
void efx_nic_fini_interrupt ( struct efx_nic * efx ) ;
/* Falcon/Siena interrupts */
extern void efx_farch_irq_enable_master ( struct efx_nic * efx ) ;
extern void efx_farch_irq_test_generate ( struct efx_nic * efx ) ;
extern void efx_farch_irq_disable_master ( struct efx_nic * efx ) ;
extern irqreturn_t efx_farch_msi_interrupt ( int irq , void * dev_id ) ;
extern irqreturn_t efx_farch_legacy_interrupt ( int irq , void * dev_id ) ;
extern irqreturn_t efx_farch_fatal_interrupt ( struct efx_nic * efx ) ;
void efx_farch_irq_enable_master ( struct efx_nic * efx ) ;
void efx_farch_irq_test_generate ( struct efx_nic * efx ) ;
void efx_farch_irq_disable_master ( struct efx_nic * efx ) ;
irqreturn_t efx_farch_msi_interrupt ( int irq , void * dev_id ) ;
irqreturn_t efx_farch_legacy_interrupt ( int irq , void * dev_id ) ;
irqreturn_t efx_farch_fatal_interrupt ( struct efx_nic * efx ) ;
static inline int efx_nic_event_test_irq_cpu ( struct efx_channel * channel )
{
@ -725,21 +723,21 @@ static inline int efx_nic_irq_test_irq_cpu(struct efx_nic *efx)
}
/* Global Resources */
extern int efx_nic_flush_queues ( struct efx_nic * efx ) ;
extern void siena_prepare_flush ( struct efx_nic * efx ) ;
extern int efx_farch_fini_dmaq ( struct efx_nic * efx ) ;
extern void siena_finish_flush ( struct efx_nic * efx ) ;
extern void falcon_start_nic_stats ( struct efx_nic * efx ) ;
extern void falcon_stop_nic_stats ( struct efx_nic * efx ) ;
extern int falcon_reset_xaui ( struct efx_nic * efx ) ;
extern void efx_farch_dimension_resources ( struct efx_nic * efx , unsigned sram_lim_qw ) ;
extern void efx_farch_init_common ( struct efx_nic * efx ) ;
extern void efx_ef10_handle_drain_event ( struct efx_nic * efx ) ;
int efx_nic_flush_queues ( struct efx_nic * efx ) ;
void siena_prepare_flush ( struct efx_nic * efx ) ;
int efx_farch_fini_dmaq ( struct efx_nic * efx ) ;
void siena_finish_flush ( struct efx_nic * efx ) ;
void falcon_start_nic_stats ( struct efx_nic * efx ) ;
void falcon_stop_nic_stats ( struct efx_nic * efx ) ;
int falcon_reset_xaui ( struct efx_nic * efx ) ;
void efx_farch_dimension_resources ( struct efx_nic * efx , unsigned sram_lim_qw ) ;
void efx_farch_init_common ( struct efx_nic * efx ) ;
void efx_ef10_handle_drain_event ( struct efx_nic * efx ) ;
static inline void efx_nic_push_rx_indir_table ( struct efx_nic * efx )
{
efx - > type - > rx_push_indir_table ( efx ) ;
}
extern void efx_farch_rx_push_indir_table ( struct efx_nic * efx ) ;
void efx_farch_rx_push_indir_table ( struct efx_nic * efx ) ;
int efx_nic_alloc_buffer ( struct efx_nic * efx , struct efx_buffer * buffer ,
unsigned int len , gfp_t gfp_flags ) ;
@ -750,24 +748,22 @@ struct efx_farch_register_test {
unsigned address ;
efx_oword_t mask ;
} ;
extern int efx_farch_test_registers ( struct efx_nic * efx ,
const struct efx_farch_register_test * regs ,
size_t n_regs ) ;
int efx_farch_test_registers ( struct efx_nic * efx ,
const struct efx_farch_register_test * regs ,
size_t n_regs ) ;
extern size_t efx_nic_get_regs_len ( struct efx_nic * efx ) ;
extern void efx_nic_get_regs ( struct efx_nic * efx , void * buf ) ;
size_t efx_nic_get_regs_len ( struct efx_nic * efx ) ;
void efx_nic_get_regs ( struct efx_nic * efx , void * buf ) ;
extern size_t
efx_nic_describe_stats ( const struct efx_hw_stat_desc * desc , size_t count ,
const unsigned long * mask , u8 * names ) ;
extern void
efx_nic_update_stats ( const struct efx_hw_stat_desc * desc , size_t count ,
const unsigned long * mask ,
u64 * stats , const void * dma_buf , bool accumulate ) ;
size_t efx_nic_describe_stats ( const struct efx_hw_stat_desc * desc , size_t count ,
const unsigned long * mask , u8 * names ) ;
void efx_nic_update_stats ( const struct efx_hw_stat_desc * desc , size_t count ,
const unsigned long * mask , u64 * stats ,
const void * dma_buf , bool accumulate ) ;
# define EFX_MAX_FLUSH_TIME 5000
extern void efx_farch_generate_event ( struct efx_nic * efx , unsigned int evq ,
efx_qword_t * event ) ;
void efx_farch_generate_event ( struct efx_nic * efx , unsigned int evq ,
efx_qword_t * event ) ;
# endif /* EFX_NIC_H */