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