1b1396c2bSRahul Lakkireddy /* SPDX-License-Identifier: GPL-2.0-only */
2b1396c2bSRahul Lakkireddy /* Copyright (C) 2019 Chelsio Communications.  All rights reserved. */
3b1396c2bSRahul Lakkireddy 
4b1396c2bSRahul Lakkireddy #ifndef __CXGB4_TC_MQPRIO_H__
5b1396c2bSRahul Lakkireddy #define __CXGB4_TC_MQPRIO_H__
6b1396c2bSRahul Lakkireddy 
7b1396c2bSRahul Lakkireddy #include <net/pkt_cls.h>
8b1396c2bSRahul Lakkireddy 
9b1396c2bSRahul Lakkireddy #define CXGB4_EOSW_TXQ_DEFAULT_DESC_NUM 128
10b1396c2bSRahul Lakkireddy 
11b1396c2bSRahul Lakkireddy enum cxgb4_mqprio_state {
12b1396c2bSRahul Lakkireddy 	CXGB4_MQPRIO_STATE_DISABLED = 0,
13b1396c2bSRahul Lakkireddy 	CXGB4_MQPRIO_STATE_ACTIVE,
14b1396c2bSRahul Lakkireddy };
15b1396c2bSRahul Lakkireddy 
16b1396c2bSRahul Lakkireddy struct cxgb4_tc_port_mqprio {
17b1396c2bSRahul Lakkireddy 	enum cxgb4_mqprio_state state; /* Current MQPRIO offload state */
18b1396c2bSRahul Lakkireddy 	struct tc_mqprio_qopt_offload mqprio; /* MQPRIO offload params */
19b1396c2bSRahul Lakkireddy 	struct sge_eosw_txq *eosw_txq; /* Netdev SW Tx queue array */
20b1396c2bSRahul Lakkireddy };
21b1396c2bSRahul Lakkireddy 
22b1396c2bSRahul Lakkireddy struct cxgb4_tc_mqprio {
23b1396c2bSRahul Lakkireddy 	struct cxgb4_tc_port_mqprio *port_mqprio; /* Per port MQPRIO info */
24b1396c2bSRahul Lakkireddy };
25b1396c2bSRahul Lakkireddy 
26b1396c2bSRahul Lakkireddy int cxgb4_setup_tc_mqprio(struct net_device *dev,
27b1396c2bSRahul Lakkireddy 			  struct tc_mqprio_qopt_offload *mqprio);
28b1396c2bSRahul Lakkireddy int cxgb4_init_tc_mqprio(struct adapter *adap);
29b1396c2bSRahul Lakkireddy void cxgb4_cleanup_tc_mqprio(struct adapter *adap);
30b1396c2bSRahul Lakkireddy #endif /* __CXGB4_TC_MQPRIO_H__ */
31