18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 28c2ecf20Sopenharmony_ci/**************************************************************************** 38c2ecf20Sopenharmony_ci * Driver for Solarflare network controllers and boards 48c2ecf20Sopenharmony_ci * Copyright 2018 Solarflare Communications Inc. 58c2ecf20Sopenharmony_ci * 68c2ecf20Sopenharmony_ci * This program is free software; you can redistribute it and/or modify it 78c2ecf20Sopenharmony_ci * under the terms of the GNU General Public License version 2 as published 88c2ecf20Sopenharmony_ci * by the Free Software Foundation, incorporated herein by reference. 98c2ecf20Sopenharmony_ci */ 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci#ifndef EFX_CHANNELS_H 128c2ecf20Sopenharmony_ci#define EFX_CHANNELS_H 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ciextern unsigned int efx_interrupt_mode; 158c2ecf20Sopenharmony_ciextern unsigned int rss_cpus; 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ciint efx_probe_interrupts(struct efx_nic *efx); 188c2ecf20Sopenharmony_civoid efx_remove_interrupts(struct efx_nic *efx); 198c2ecf20Sopenharmony_ciint efx_soft_enable_interrupts(struct efx_nic *efx); 208c2ecf20Sopenharmony_civoid efx_soft_disable_interrupts(struct efx_nic *efx); 218c2ecf20Sopenharmony_ciint efx_enable_interrupts(struct efx_nic *efx); 228c2ecf20Sopenharmony_civoid efx_disable_interrupts(struct efx_nic *efx); 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_civoid efx_set_interrupt_affinity(struct efx_nic *efx); 258c2ecf20Sopenharmony_civoid efx_clear_interrupt_affinity(struct efx_nic *efx); 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_ciint efx_probe_eventq(struct efx_channel *channel); 288c2ecf20Sopenharmony_ciint efx_init_eventq(struct efx_channel *channel); 298c2ecf20Sopenharmony_civoid efx_start_eventq(struct efx_channel *channel); 308c2ecf20Sopenharmony_civoid efx_stop_eventq(struct efx_channel *channel); 318c2ecf20Sopenharmony_civoid efx_fini_eventq(struct efx_channel *channel); 328c2ecf20Sopenharmony_civoid efx_remove_eventq(struct efx_channel *channel); 338c2ecf20Sopenharmony_ci 348c2ecf20Sopenharmony_ciint efx_realloc_channels(struct efx_nic *efx, u32 rxq_entries, u32 txq_entries); 358c2ecf20Sopenharmony_civoid efx_get_channel_name(struct efx_channel *channel, char *buf, size_t len); 368c2ecf20Sopenharmony_civoid efx_set_channel_names(struct efx_nic *efx); 378c2ecf20Sopenharmony_ciint efx_init_channels(struct efx_nic *efx); 388c2ecf20Sopenharmony_ciint efx_probe_channels(struct efx_nic *efx); 398c2ecf20Sopenharmony_ciint efx_set_channels(struct efx_nic *efx); 408c2ecf20Sopenharmony_cibool efx_default_channel_want_txqs(struct efx_channel *channel); 418c2ecf20Sopenharmony_civoid efx_remove_channel(struct efx_channel *channel); 428c2ecf20Sopenharmony_civoid efx_remove_channels(struct efx_nic *efx); 438c2ecf20Sopenharmony_civoid efx_fini_channels(struct efx_nic *efx); 448c2ecf20Sopenharmony_cistruct efx_channel *efx_copy_channel(const struct efx_channel *old_channel); 458c2ecf20Sopenharmony_civoid efx_start_channels(struct efx_nic *efx); 468c2ecf20Sopenharmony_civoid efx_stop_channels(struct efx_nic *efx); 478c2ecf20Sopenharmony_ci 488c2ecf20Sopenharmony_civoid efx_init_napi_channel(struct efx_channel *channel); 498c2ecf20Sopenharmony_civoid efx_init_napi(struct efx_nic *efx); 508c2ecf20Sopenharmony_civoid efx_fini_napi_channel(struct efx_channel *channel); 518c2ecf20Sopenharmony_civoid efx_fini_napi(struct efx_nic *efx); 528c2ecf20Sopenharmony_ci 538c2ecf20Sopenharmony_ciint efx_channel_dummy_op_int(struct efx_channel *channel); 548c2ecf20Sopenharmony_civoid efx_channel_dummy_op_void(struct efx_channel *channel); 558c2ecf20Sopenharmony_ci 568c2ecf20Sopenharmony_ci#endif 57