18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
28c2ecf20Sopenharmony_ci/* Atlantic Network Driver
38c2ecf20Sopenharmony_ci *
48c2ecf20Sopenharmony_ci * Copyright (C) 2014-2019 aQuantia Corporation
58c2ecf20Sopenharmony_ci * Copyright (C) 2019-2020 Marvell International Ltd.
68c2ecf20Sopenharmony_ci */
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_ci/* File aq_vec.h: Definition of common structures for vector of Rx and Tx rings.
98c2ecf20Sopenharmony_ci * Declaration of functions for Rx and Tx rings.
108c2ecf20Sopenharmony_ci */
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ci#ifndef AQ_VEC_H
138c2ecf20Sopenharmony_ci#define AQ_VEC_H
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_ci#include "aq_common.h"
168c2ecf20Sopenharmony_ci#include <linux/irqreturn.h>
178c2ecf20Sopenharmony_ci
188c2ecf20Sopenharmony_cistruct aq_hw_s;
198c2ecf20Sopenharmony_cistruct aq_hw_ops;
208c2ecf20Sopenharmony_cistruct aq_nic_s;
218c2ecf20Sopenharmony_cistruct aq_nic_cfg_s;
228c2ecf20Sopenharmony_cistruct aq_ring_stats_rx_s;
238c2ecf20Sopenharmony_cistruct aq_ring_stats_tx_s;
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ciirqreturn_t aq_vec_isr(int irq, void *private);
268c2ecf20Sopenharmony_ciirqreturn_t aq_vec_isr_legacy(int irq, void *private);
278c2ecf20Sopenharmony_cistruct aq_vec_s *aq_vec_alloc(struct aq_nic_s *aq_nic, unsigned int idx,
288c2ecf20Sopenharmony_ci			      struct aq_nic_cfg_s *aq_nic_cfg);
298c2ecf20Sopenharmony_ciint aq_vec_ring_alloc(struct aq_vec_s *self, struct aq_nic_s *aq_nic,
308c2ecf20Sopenharmony_ci		      unsigned int idx, struct aq_nic_cfg_s *aq_nic_cfg);
318c2ecf20Sopenharmony_ciint aq_vec_init(struct aq_vec_s *self, const struct aq_hw_ops *aq_hw_ops,
328c2ecf20Sopenharmony_ci		struct aq_hw_s *aq_hw);
338c2ecf20Sopenharmony_civoid aq_vec_deinit(struct aq_vec_s *self);
348c2ecf20Sopenharmony_civoid aq_vec_free(struct aq_vec_s *self);
358c2ecf20Sopenharmony_civoid aq_vec_ring_free(struct aq_vec_s *self);
368c2ecf20Sopenharmony_ciint aq_vec_start(struct aq_vec_s *self);
378c2ecf20Sopenharmony_civoid aq_vec_stop(struct aq_vec_s *self);
388c2ecf20Sopenharmony_cicpumask_t *aq_vec_get_affinity_mask(struct aq_vec_s *self);
398c2ecf20Sopenharmony_cibool aq_vec_is_valid_tc(struct aq_vec_s *self, const unsigned int tc);
408c2ecf20Sopenharmony_ciunsigned int aq_vec_get_sw_stats(struct aq_vec_s *self, const unsigned int tc, u64 *data);
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_ci#endif /* AQ_VEC_H */
43