1 /*******************************************************************************
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License (the "License").
6  * You may not use this file except in compliance with the License.
7  *
8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9  * or http://www.opensolaris.org/os/licensing.
10  * See the License for the specific language governing permissions
11  * and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL HEADER in each
14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15  * If applicable, add the following below this CDDL HEADER, with the
16  * fields enclosed by brackets "[]" replaced with your own identifying
17  * information: Portions Copyright [yyyy] [name of copyright owner]
18  *
19  * CDDL HEADER END
20  *
21  * Copyright 2014 QLogic Corporation
22  * The contents of this file are subject to the terms of the
23  * QLogic End User License (the "License").
24  * You may not use this file except in compliance with the License.
25  *
26  * You can obtain a copy of the License at
27  * http://www.qlogic.com/Resources/Documents/DriverDownloadHelp/
28  * QLogic_End_User_Software_License.txt
29  * See the License for the specific language governing permissions
30  * and limitations under the License.
31  *
32  *
33  *
34  * Module Description:
35  *
36  ******************************************************************************/
37 
38 #ifndef _L4DEBUG_H
39 #define _L4DEBUG_H
40 
41 #include "bcmtype.h"
42 
43 #define L4_DEBUG_BIT_FIELDS 0
44 // Use _l4_tcp_const_state_t _pad[0] for L4 debug
45 // PbfQueue		- bits 7-5
46 // VOQ          - bits 4-2
47 // cos			- bits 1-0
48 #define L4_DEBUG_PBF_Q_MASK 		0xE0
49 #define L4_DEBUG_PBF_Q_SHIFT 		5
50 
51 #define L4_DEBUG_VOQ_MASK    		0x1C
52 #define L4_DEBUG_VOQ_SHIFT 	    	2
53 
54 #define L4_DEBUG_COS_MASK 			0x3
55 #define L4_DEBUG_COS_SHIFT 			0
56 
57 
58 
59 #define L4_DEBUG_FLAGS 1
60 // DPM test EN     - bit 4
61 // QmOpportunistic - bit 3
62 // TestingEn	   - bit 2
63 // LbEn 		   - bit 1
64 // CosEn 		   - bit 0
65 
66 #define L4_DEBUG_DPM_TEST_EN_MASK	0x10
67 #define L4_DEBUG_QM_OPPORT_EN_MASK	0x08
68 #define L4_DEBUG_TESTING_EN_MASK 	0x04
69 #define L4_DEBUG_LB_EN_MASK 		0x02
70 #define L4_DEBUG_COS_EN_MASK 		0x01
71 
72 
73 
74 #define L4_DEBUG_GET_COS(_data)		 		((_data[L4_DEBUG_BIT_FIELDS] & L4_DEBUG_COS_MASK) >> L4_DEBUG_COS_SHIFT)
75 #define L4_DEBUG_GET_PBFQUEUE(_data) 		((_data[L4_DEBUG_BIT_FIELDS] & L4_DEBUG_PBF_Q_MASK) >> L4_DEBUG_PBF_Q_SHIFT)
76 #define L4_DEBUG_GET_VOQ(_data) 		    ((_data[L4_DEBUG_BIT_FIELDS] & L4_DEBUG_VOQ_MASK) >> L4_DEBUG_VOQ_SHIFT)
77 #define L4_DEBUG_GET_FLAGS(_data)           (_data[L4_DEBUG_FLAGS])
78 
79 #define L4_DEBUG_SET_COS(_data, cos) 		\
80     (_data[L4_DEBUG_BIT_FIELDS] &= (~L4_DEBUG_COS_MASK)); \
81     (_data[L4_DEBUG_BIT_FIELDS] |= ((cos << L4_DEBUG_COS_SHIFT) & L4_DEBUG_COS_MASK))
82 
83 #define L4_DEBUG_SET_PBFQUEUE(_data, pbf_q) \
84     (_data[L4_DEBUG_BIT_FIELDS] &= (~L4_DEBUG_PBF_Q_MASK)); \
85     (_data[L4_DEBUG_BIT_FIELDS] |= ((pbf_q << L4_DEBUG_PBF_Q_SHIFT) & L4_DEBUG_PBF_Q_MASK))
86 
87 #define L4_DEBUG_SET_VOQ(_data, voq)        \
88     (_data[L4_DEBUG_BIT_FIELDS] &= (~L4_DEBUG_VOQ_MASK)); \
89     (_data[L4_DEBUG_BIT_FIELDS] |= ((voq << L4_DEBUG_VOQ_SHIFT) & L4_DEBUG_VOQ_MASK))
90 
91 #define L4_DEBUG_SET_FLAGS(_data, flags) (_data[L4_DEBUG_FLAGS] |= flags)
92 
93 
94 
95 #endif /* _L4DEBUG_H */
96 
97