162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 262306a36Sopenharmony_ci/* Atlantic Network Driver 362306a36Sopenharmony_ci * 462306a36Sopenharmony_ci * Copyright (C) 2014-2019 aQuantia Corporation 562306a36Sopenharmony_ci * Copyright (C) 2019-2020 Marvell International Ltd. 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci/* File aq_vec.h: Definition of common structures for vector of Rx and Tx rings. 962306a36Sopenharmony_ci * Declaration of functions for Rx and Tx rings. 1062306a36Sopenharmony_ci */ 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#ifndef AQ_VEC_H 1362306a36Sopenharmony_ci#define AQ_VEC_H 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci#include "aq_common.h" 1662306a36Sopenharmony_ci#include "aq_nic.h" 1762306a36Sopenharmony_ci#include "aq_ring.h" 1862306a36Sopenharmony_ci#include "aq_hw.h" 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci#include <linux/irqreturn.h> 2162306a36Sopenharmony_ci#include <linux/filter.h> 2262306a36Sopenharmony_ci#include <linux/netdevice.h> 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_cistruct aq_hw_s; 2562306a36Sopenharmony_cistruct aq_hw_ops; 2662306a36Sopenharmony_cistruct aq_nic_s; 2762306a36Sopenharmony_cistruct aq_nic_cfg_s; 2862306a36Sopenharmony_cistruct aq_ring_stats_rx_s; 2962306a36Sopenharmony_cistruct aq_ring_stats_tx_s; 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ciirqreturn_t aq_vec_isr(int irq, void *private); 3262306a36Sopenharmony_ciirqreturn_t aq_vec_isr_legacy(int irq, void *private); 3362306a36Sopenharmony_cistruct aq_vec_s *aq_vec_alloc(struct aq_nic_s *aq_nic, unsigned int idx, 3462306a36Sopenharmony_ci struct aq_nic_cfg_s *aq_nic_cfg); 3562306a36Sopenharmony_ciint aq_vec_ring_alloc(struct aq_vec_s *self, struct aq_nic_s *aq_nic, 3662306a36Sopenharmony_ci unsigned int idx, struct aq_nic_cfg_s *aq_nic_cfg); 3762306a36Sopenharmony_ciint aq_vec_init(struct aq_vec_s *self, const struct aq_hw_ops *aq_hw_ops, 3862306a36Sopenharmony_ci struct aq_hw_s *aq_hw); 3962306a36Sopenharmony_civoid aq_vec_deinit(struct aq_vec_s *self); 4062306a36Sopenharmony_civoid aq_vec_free(struct aq_vec_s *self); 4162306a36Sopenharmony_civoid aq_vec_ring_free(struct aq_vec_s *self); 4262306a36Sopenharmony_ciint aq_vec_start(struct aq_vec_s *self); 4362306a36Sopenharmony_civoid aq_vec_stop(struct aq_vec_s *self); 4462306a36Sopenharmony_cicpumask_t *aq_vec_get_affinity_mask(struct aq_vec_s *self); 4562306a36Sopenharmony_cibool aq_vec_is_valid_tc(struct aq_vec_s *self, const unsigned int tc); 4662306a36Sopenharmony_ciunsigned int aq_vec_get_sw_stats(struct aq_vec_s *self, const unsigned int tc, u64 *data); 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ci#endif /* AQ_VEC_H */ 49