xref: /illumos-gate/usr/src/uts/common/io/qede/qede_dbg.c (revision 14b24e2b)
1*14b24e2bSVaishali Kulkarni /*
2*14b24e2bSVaishali Kulkarni * CDDL HEADER START
3*14b24e2bSVaishali Kulkarni *
4*14b24e2bSVaishali Kulkarni * The contents of this file are subject to the terms of the
5*14b24e2bSVaishali Kulkarni * Common Development and Distribution License, v.1,  (the "License").
6*14b24e2bSVaishali Kulkarni * You may not use this file except in compliance with the License.
7*14b24e2bSVaishali Kulkarni *
8*14b24e2bSVaishali Kulkarni * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*14b24e2bSVaishali Kulkarni * or http://opensource.org/licenses/CDDL-1.0.
10*14b24e2bSVaishali Kulkarni * See the License for the specific language governing permissions
11*14b24e2bSVaishali Kulkarni * and limitations under the License.
12*14b24e2bSVaishali Kulkarni *
13*14b24e2bSVaishali Kulkarni * When distributing Covered Code, include this CDDL HEADER in each
14*14b24e2bSVaishali Kulkarni * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*14b24e2bSVaishali Kulkarni * If applicable, add the following below this CDDL HEADER, with the
16*14b24e2bSVaishali Kulkarni * fields enclosed by brackets "[]" replaced with your own identifying
17*14b24e2bSVaishali Kulkarni * information: Portions Copyright [yyyy] [name of copyright owner]
18*14b24e2bSVaishali Kulkarni *
19*14b24e2bSVaishali Kulkarni * CDDL HEADER END
20*14b24e2bSVaishali Kulkarni */
21*14b24e2bSVaishali Kulkarni 
22*14b24e2bSVaishali Kulkarni /*
23*14b24e2bSVaishali Kulkarni * Copyright 2014-2017 Cavium, Inc.
24*14b24e2bSVaishali Kulkarni * The contents of this file are subject to the terms of the Common Development
25*14b24e2bSVaishali Kulkarni * and Distribution License, v.1,  (the "License").
26*14b24e2bSVaishali Kulkarni 
27*14b24e2bSVaishali Kulkarni * You may not use this file except in compliance with the License.
28*14b24e2bSVaishali Kulkarni 
29*14b24e2bSVaishali Kulkarni * You can obtain a copy of the License at available
30*14b24e2bSVaishali Kulkarni * at http://opensource.org/licenses/CDDL-1.0
31*14b24e2bSVaishali Kulkarni 
32*14b24e2bSVaishali Kulkarni * See the License for the specific language governing permissions and
33*14b24e2bSVaishali Kulkarni * limitations under the License.
34*14b24e2bSVaishali Kulkarni */
35*14b24e2bSVaishali Kulkarni 
36*14b24e2bSVaishali Kulkarni 
37*14b24e2bSVaishali Kulkarni #include "qede.h"
38*14b24e2bSVaishali Kulkarni 
39*14b24e2bSVaishali Kulkarni /*
40*14b24e2bSVaishali Kulkarni  * Compliments of Larry W. and qlc team.
41*14b24e2bSVaishali Kulkarni  */
42*14b24e2bSVaishali Kulkarni void
qede_stacktrace(qede_t * qede)43*14b24e2bSVaishali Kulkarni qede_stacktrace(qede_t *qede)
44*14b24e2bSVaishali Kulkarni {
45*14b24e2bSVaishali Kulkarni 	int depth, i;
46*14b24e2bSVaishali Kulkarni 	pc_t pcstack[16];
47*14b24e2bSVaishali Kulkarni 	char *sym;
48*14b24e2bSVaishali Kulkarni 	ulong_t	off;
49*14b24e2bSVaishali Kulkarni 
50*14b24e2bSVaishali Kulkarni 	depth = getpcstack(&pcstack[0], 16);
51*14b24e2bSVaishali Kulkarni 
52*14b24e2bSVaishali Kulkarni 	cmn_err(CE_CONT, "qede(%d): ---------- \n", qede->instance);
53*14b24e2bSVaishali Kulkarni 	for (i = 0; i < OSAL_MIN_T(int, depth, 16); i++) {
54*14b24e2bSVaishali Kulkarni 		sym = kobj_getsymname((uintptr_t)pcstack[i], &off);
55*14b24e2bSVaishali Kulkarni 
56*14b24e2bSVaishali Kulkarni 		if (sym == NULL) {
57*14b24e2bSVaishali Kulkarni 			cmn_err(CE_CONT, "qede(%d): sym is NULL\n",
58*14b24e2bSVaishali Kulkarni 			    qede->instance);
59*14b24e2bSVaishali Kulkarni 		} else {
60*14b24e2bSVaishali Kulkarni 			cmn_err(CE_CONT, "%s(%d): %s+%lx\n", __func__,
61*14b24e2bSVaishali Kulkarni 			    qede->instance, sym ? sym : "?", off);
62*14b24e2bSVaishali Kulkarni 		}
63*14b24e2bSVaishali Kulkarni 	}
64*14b24e2bSVaishali Kulkarni 	cmn_err(CE_CONT, "qede(%d): ---------- \n", qede->instance);
65*14b24e2bSVaishali Kulkarni }
66*14b24e2bSVaishali Kulkarni 
67*14b24e2bSVaishali Kulkarni void
qede_dbg_ipv6_ext_hdr(qede_tx_pktinfo_t * pktinfo,mblk_t * mp)68*14b24e2bSVaishali Kulkarni qede_dbg_ipv6_ext_hdr(qede_tx_pktinfo_t *pktinfo, mblk_t *mp)
69*14b24e2bSVaishali Kulkarni {
70*14b24e2bSVaishali Kulkarni 	struct ether_header *eth_hdr =
71*14b24e2bSVaishali Kulkarni 	    (struct ether_header *)(void *)mp->b_rptr;
72*14b24e2bSVaishali Kulkarni 	ipha_t *ip_hdr;
73*14b24e2bSVaishali Kulkarni 	struct ip6_hdr *ipv6hdr = NULL;
74*14b24e2bSVaishali Kulkarni 
75*14b24e2bSVaishali Kulkarni 	/* mac header type and len */
76*14b24e2bSVaishali Kulkarni 	if (ntohs(eth_hdr->ether_type) == ETHERTYPE_IP) {
77*14b24e2bSVaishali Kulkarni 		pktinfo->ether_type = ntohs(eth_hdr->ether_type);
78*14b24e2bSVaishali Kulkarni 		pktinfo->mac_hlen = sizeof (struct ether_header);
79*14b24e2bSVaishali Kulkarni 	} else if (ntohs(eth_hdr->ether_type) == ETHERTYPE_VLAN) {
80*14b24e2bSVaishali Kulkarni 		struct ether_vlan_header *vlan_hdr =
81*14b24e2bSVaishali Kulkarni 		    (struct ether_vlan_header *)(void *)mp->b_rptr;
82*14b24e2bSVaishali Kulkarni 		pktinfo->ether_type = ntohs(vlan_hdr->ether_type);
83*14b24e2bSVaishali Kulkarni 		pktinfo->mac_hlen = sizeof (struct ether_vlan_header);
84*14b24e2bSVaishali Kulkarni 	}
85*14b24e2bSVaishali Kulkarni 
86*14b24e2bSVaishali Kulkarni 	ip_hdr = (ipha_t *)(void *)((u8 *)mp->b_rptr + pktinfo->mac_hlen);
87*14b24e2bSVaishali Kulkarni 
88*14b24e2bSVaishali Kulkarni 	if (IPH_HDR_VERSION(ip_hdr) == IPV6_VERSION) {
89*14b24e2bSVaishali Kulkarni 		ipv6hdr = (struct ip6_hdr *)(void *)ip_hdr;
90*14b24e2bSVaishali Kulkarni 
91*14b24e2bSVaishali Kulkarni 		if (ipv6hdr->ip6_ctlun.ip6_un1.ip6_un1_nxt == IPPROTO_IPV6) {
92*14b24e2bSVaishali Kulkarni 			cmn_err(CE_NOTE, "%s: ipv6 extenstion header found !",
93*14b24e2bSVaishali Kulkarni 			    __func__);
94*14b24e2bSVaishali Kulkarni 		}
95*14b24e2bSVaishali Kulkarni 	}
96*14b24e2bSVaishali Kulkarni }
97*14b24e2bSVaishali Kulkarni 
98*14b24e2bSVaishali Kulkarni char *
qede_get_L4_type(uint16_t parse_flags)99*14b24e2bSVaishali Kulkarni qede_get_L4_type(uint16_t parse_flags)
100*14b24e2bSVaishali Kulkarni {
101*14b24e2bSVaishali Kulkarni 	parse_flags = (parse_flags >> PARSING_AND_ERR_FLAGS_L4PROTOCOL_SHIFT)
102*14b24e2bSVaishali Kulkarni 	    & PARSING_AND_ERR_FLAGS_L4PROTOCOL_MASK;
103*14b24e2bSVaishali Kulkarni 	if (parse_flags == 1)  {
104*14b24e2bSVaishali Kulkarni 		return ("TCP");
105*14b24e2bSVaishali Kulkarni 	} else if (parse_flags == 2) {
106*14b24e2bSVaishali Kulkarni 		return ("UDP");
107*14b24e2bSVaishali Kulkarni 	} else {
108*14b24e2bSVaishali Kulkarni 		return ("UNKNOWN");
109*14b24e2bSVaishali Kulkarni 	}
110*14b24e2bSVaishali Kulkarni }
111*14b24e2bSVaishali Kulkarni 
112*14b24e2bSVaishali Kulkarni char *
qede_get_L3_type(uint16_t parse_flags)113*14b24e2bSVaishali Kulkarni qede_get_L3_type(uint16_t parse_flags)
114*14b24e2bSVaishali Kulkarni {
115*14b24e2bSVaishali Kulkarni 	parse_flags = (parse_flags >> PARSING_AND_ERR_FLAGS_L3TYPE_SHIFT)
116*14b24e2bSVaishali Kulkarni 	    & PARSING_AND_ERR_FLAGS_L3TYPE_MASK;
117*14b24e2bSVaishali Kulkarni 	if (parse_flags == 1) {
118*14b24e2bSVaishali Kulkarni 		return ("IPv4");
119*14b24e2bSVaishali Kulkarni 	} else if (parse_flags == 2) {
120*14b24e2bSVaishali Kulkarni 		return ("IPv6");
121*14b24e2bSVaishali Kulkarni 	} else {
122*14b24e2bSVaishali Kulkarni 		return ("UNKNOWN");
123*14b24e2bSVaishali Kulkarni 	}
124*14b24e2bSVaishali Kulkarni }
125*14b24e2bSVaishali Kulkarni 
126*14b24e2bSVaishali Kulkarni 
127*14b24e2bSVaishali Kulkarni void
qede_print_vport_params(qede_t * qede,struct ecore_sp_vport_update_params * vport_params)128*14b24e2bSVaishali Kulkarni qede_print_vport_params(qede_t *qede,
129*14b24e2bSVaishali Kulkarni     struct ecore_sp_vport_update_params *vport_params)
130*14b24e2bSVaishali Kulkarni {
131*14b24e2bSVaishali Kulkarni 	struct ecore_filter_accept_flags *accept_flags;
132*14b24e2bSVaishali Kulkarni 
133*14b24e2bSVaishali Kulkarni 	accept_flags = &vport_params->accept_flags;
134*14b24e2bSVaishali Kulkarni 
135*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "opaque_fid = %d",
136*14b24e2bSVaishali Kulkarni 		vport_params->opaque_fid);
137*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "vport_id = %d",
138*14b24e2bSVaishali Kulkarni 		vport_params->vport_id);
139*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "update_vport_active_rx_flg = %d",
140*14b24e2bSVaishali Kulkarni 		vport_params->update_vport_active_rx_flg);
141*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "vport_active_rx_flg = %d",
142*14b24e2bSVaishali Kulkarni 		vport_params->vport_active_rx_flg);
143*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "update_vport_active_tx_flg = %d",
144*14b24e2bSVaishali Kulkarni 		vport_params->update_vport_active_tx_flg);
145*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "vport_active_tx_flg = %d",
146*14b24e2bSVaishali Kulkarni 		vport_params->vport_active_tx_flg);
147*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "update_inner_vlan_removal_flg = %d",
148*14b24e2bSVaishali Kulkarni 		vport_params->update_inner_vlan_removal_flg);
149*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "inner_vlan_removal_flg = %d",
150*14b24e2bSVaishali Kulkarni 		vport_params->inner_vlan_removal_flg);
151*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "update_default_vlan_enable_flg = %d",
152*14b24e2bSVaishali Kulkarni 		vport_params->update_default_vlan_enable_flg);
153*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "default_vlan_enable_flg = %d",
154*14b24e2bSVaishali Kulkarni 		vport_params->default_vlan_enable_flg);
155*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "update_default_vlan_flg = %d",
156*14b24e2bSVaishali Kulkarni 		vport_params->update_default_vlan_flg);
157*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "default_vlan = %d",
158*14b24e2bSVaishali Kulkarni 		vport_params->default_vlan);
159*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "update_tx_switching_flg = %d",
160*14b24e2bSVaishali Kulkarni 		vport_params->update_tx_switching_flg);
161*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "tx_switching_flg = %d",
162*14b24e2bSVaishali Kulkarni 		vport_params->tx_switching_flg);
163*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "update_approx_mcast_flg = %d",
164*14b24e2bSVaishali Kulkarni 		vport_params->update_approx_mcast_flg);
165*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "update_anti_spoofing_en_flg = %d",
166*14b24e2bSVaishali Kulkarni 		vport_params->update_anti_spoofing_en_flg);
167*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "anti_spoofing_en = %d",
168*14b24e2bSVaishali Kulkarni 		vport_params->anti_spoofing_en);
169*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "update_accept_any_vlan_flg = %d",
170*14b24e2bSVaishali Kulkarni 		vport_params->update_accept_any_vlan_flg);
171*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "accept_any_vlan = %d",
172*14b24e2bSVaishali Kulkarni 		vport_params->accept_any_vlan);
173*14b24e2bSVaishali Kulkarni 
174*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "update_rx_mode_config; = %d",
175*14b24e2bSVaishali Kulkarni 		accept_flags->update_rx_mode_config);
176*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "update_tx_mode_config; = %d",
177*14b24e2bSVaishali Kulkarni 		accept_flags->update_tx_mode_config);
178*14b24e2bSVaishali Kulkarni }
179*14b24e2bSVaishali Kulkarni 
180*14b24e2bSVaishali Kulkarni void
qede_dump_bytes(char * buf,int len)181*14b24e2bSVaishali Kulkarni qede_dump_bytes(char *buf, int len)
182*14b24e2bSVaishali Kulkarni {
183*14b24e2bSVaishali Kulkarni 	int i;
184*14b24e2bSVaishali Kulkarni 	for (i = 0; i < len; i += 8, buf+=8) {
185*14b24e2bSVaishali Kulkarni 		cmn_err(CE_NOTE,
186*14b24e2bSVaishali Kulkarni 		    "!%.02x %.02x %.02x %.02x %.02x %.02x %.02x %.02x",
187*14b24e2bSVaishali Kulkarni 		    buf[i + 0] & 0xff, buf[i + 1] & 0xff,
188*14b24e2bSVaishali Kulkarni 		    buf[i + 2] & 0xff, buf[i + 3] & 0xff,
189*14b24e2bSVaishali Kulkarni 		    buf[i + 4] & 0xff, buf[i + 5] & 0xff,
190*14b24e2bSVaishali Kulkarni 		    buf[i + 6] & 0xff, buf[i + 7] & 0xff);
191*14b24e2bSVaishali Kulkarni 	}
192*14b24e2bSVaishali Kulkarni }
193*14b24e2bSVaishali Kulkarni 
194*14b24e2bSVaishali Kulkarni void
qede_dump_single_mblk(qede_t * qede,mblk_t * mp)195*14b24e2bSVaishali Kulkarni qede_dump_single_mblk(qede_t *qede, mblk_t *mp)
196*14b24e2bSVaishali Kulkarni {
197*14b24e2bSVaishali Kulkarni 	int len = MBLKL(mp);
198*14b24e2bSVaishali Kulkarni 	u8 *buf = mp->b_rptr;
199*14b24e2bSVaishali Kulkarni 	int i;
200*14b24e2bSVaishali Kulkarni 
201*14b24e2bSVaishali Kulkarni 	for (i = 0; i < len; i += 8) {
202*14b24e2bSVaishali Kulkarni 		cmn_err(CE_NOTE, "!%p: %2x %2x %2x %2x %2x %2x %2x %2x",
203*14b24e2bSVaishali Kulkarni 		    buf, buf[i], buf[i + 1],
204*14b24e2bSVaishali Kulkarni 		    buf[i + 2], buf[i + 3],
205*14b24e2bSVaishali Kulkarni 		    buf[i + 4], buf[i + 5],
206*14b24e2bSVaishali Kulkarni 		    buf[i + 6], buf[i + 7]);
207*14b24e2bSVaishali Kulkarni 	}
208*14b24e2bSVaishali Kulkarni }
209*14b24e2bSVaishali Kulkarni 
210*14b24e2bSVaishali Kulkarni void
qede_dump_mblk_chain_bcont_ptr(qede_t * qede,mblk_t * mp)211*14b24e2bSVaishali Kulkarni qede_dump_mblk_chain_bcont_ptr(qede_t *qede, mblk_t *mp)
212*14b24e2bSVaishali Kulkarni {
213*14b24e2bSVaishali Kulkarni 	mblk_t *bp;
214*14b24e2bSVaishali Kulkarni 	int len, num_mblk = 0;
215*14b24e2bSVaishali Kulkarni 	int total_len = 0;
216*14b24e2bSVaishali Kulkarni 
217*14b24e2bSVaishali Kulkarni 	for (bp = mp; bp != NULL; bp = bp->b_cont) {
218*14b24e2bSVaishali Kulkarni 		len = MBLKL(bp);
219*14b24e2bSVaishali Kulkarni 		total_len += len;
220*14b24e2bSVaishali Kulkarni 		num_mblk++;
221*14b24e2bSVaishali Kulkarni 
222*14b24e2bSVaishali Kulkarni 		qede_info(qede, "b_cont bp len %d", len);
223*14b24e2bSVaishali Kulkarni 		qede_dump_single_mblk(qede, bp);
224*14b24e2bSVaishali Kulkarni 	}
225*14b24e2bSVaishali Kulkarni 
226*14b24e2bSVaishali Kulkarni 	qede_info(qede, "Total b_cont mblks %d, total_len %d",
227*14b24e2bSVaishali Kulkarni 	    num_mblk, total_len);
228*14b24e2bSVaishali Kulkarni }
229*14b24e2bSVaishali Kulkarni /*
230*14b24e2bSVaishali Kulkarni  * Loop through all data elements in mp
231*14b24e2bSVaishali Kulkarni  * and print them
232*14b24e2bSVaishali Kulkarni  */
233*14b24e2bSVaishali Kulkarni void
qede_dump_mblk_chain_bnext_ptr(qede_t * qede,mblk_t * mp)234*14b24e2bSVaishali Kulkarni qede_dump_mblk_chain_bnext_ptr(qede_t *qede, mblk_t *mp)
235*14b24e2bSVaishali Kulkarni {
236*14b24e2bSVaishali Kulkarni 	mblk_t *bp;
237*14b24e2bSVaishali Kulkarni 	int len, num_mblk = 0;
238*14b24e2bSVaishali Kulkarni 	int total_len = 0;
239*14b24e2bSVaishali Kulkarni 
240*14b24e2bSVaishali Kulkarni 	for (bp = mp; bp != NULL; bp = bp->b_next) {
241*14b24e2bSVaishali Kulkarni 		len = MBLKL(bp);
242*14b24e2bSVaishali Kulkarni 		total_len += len;
243*14b24e2bSVaishali Kulkarni 		num_mblk++;
244*14b24e2bSVaishali Kulkarni 
245*14b24e2bSVaishali Kulkarni 		qede_info(qede, "b_next bp len %d", len);
246*14b24e2bSVaishali Kulkarni 	}
247*14b24e2bSVaishali Kulkarni 
248*14b24e2bSVaishali Kulkarni 	qede_info(qede, "Total b_next mblks %d, total_len %d",
249*14b24e2bSVaishali Kulkarni 	    num_mblk, total_len);
250*14b24e2bSVaishali Kulkarni }
251*14b24e2bSVaishali Kulkarni 
252*14b24e2bSVaishali Kulkarni void
qede_print_intr_ctx(qede_intr_context_t * intr_ctx)253*14b24e2bSVaishali Kulkarni qede_print_intr_ctx(qede_intr_context_t *intr_ctx)
254*14b24e2bSVaishali Kulkarni {
255*14b24e2bSVaishali Kulkarni }
256*14b24e2bSVaishali Kulkarni 
257*14b24e2bSVaishali Kulkarni void
qede_print_tx_ring(qede_tx_ring_t * tx_ring)258*14b24e2bSVaishali Kulkarni qede_print_tx_ring(qede_tx_ring_t *tx_ring)
259*14b24e2bSVaishali Kulkarni {
260*14b24e2bSVaishali Kulkarni }
261*14b24e2bSVaishali Kulkarni 
262*14b24e2bSVaishali Kulkarni void
qede_print_rx_ring(qede_rx_ring_t * rx_ring)263*14b24e2bSVaishali Kulkarni qede_print_rx_ring(qede_rx_ring_t *rx_ring)
264*14b24e2bSVaishali Kulkarni {
265*14b24e2bSVaishali Kulkarni }
266*14b24e2bSVaishali Kulkarni 
267*14b24e2bSVaishali Kulkarni void
qede_print_fastpath(qede_fastpath_t * fp)268*14b24e2bSVaishali Kulkarni qede_print_fastpath(qede_fastpath_t *fp)
269*14b24e2bSVaishali Kulkarni {
270*14b24e2bSVaishali Kulkarni }
271*14b24e2bSVaishali Kulkarni 
272*14b24e2bSVaishali Kulkarni void
qede_print_qede(qede_t * qede)273*14b24e2bSVaishali Kulkarni qede_print_qede(qede_t *qede)
274*14b24e2bSVaishali Kulkarni {
275*14b24e2bSVaishali Kulkarni }
276*14b24e2bSVaishali Kulkarni 
277*14b24e2bSVaishali Kulkarni /*
278*14b24e2bSVaishali Kulkarni  * This function is called from ecore in the init path
279*14b24e2bSVaishali Kulkarni  * just before starting the function
280*14b24e2bSVaishali Kulkarni  */
281*14b24e2bSVaishali Kulkarni void
qede_debug_before_pf_start(struct ecore_dev * edev,u8 id)282*14b24e2bSVaishali Kulkarni qede_debug_before_pf_start(struct ecore_dev *edev, u8 id)
283*14b24e2bSVaishali Kulkarni {
284*14b24e2bSVaishali Kulkarni }
285*14b24e2bSVaishali Kulkarni 
286*14b24e2bSVaishali Kulkarni void
qede_debug_after_pf_stop(void * cdev,u8 my_id)287*14b24e2bSVaishali Kulkarni qede_debug_after_pf_stop(void *cdev, u8 my_id)
288*14b24e2bSVaishali Kulkarni {
289*14b24e2bSVaishali Kulkarni }
290*14b24e2bSVaishali Kulkarni 
291*14b24e2bSVaishali Kulkarni 
292*14b24e2bSVaishali Kulkarni void
qede_dump_reg_cqe(struct eth_fast_path_rx_reg_cqe * cqe)293*14b24e2bSVaishali Kulkarni qede_dump_reg_cqe(struct eth_fast_path_rx_reg_cqe *cqe)
294*14b24e2bSVaishali Kulkarni {
295*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "qede_dump_reg_cqe");
296*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "    pkt_len = %d", LE_16(cqe->pkt_len));
297*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "    bd_num = %d", cqe->bd_num);
298*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "    len_on_first_bd = %d",
299*14b24e2bSVaishali Kulkarni 	    LE_16(cqe->len_on_first_bd));
300*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "    placement_offset = %d", cqe->placement_offset);
301*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "    vlan_tag = %d", LE_16(cqe->vlan_tag));
302*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "    rss_hash = %d", LE_32(cqe->rss_hash));
303*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "    pars_flags = %x",
304*14b24e2bSVaishali Kulkarni 	    LE_16((uint16_t)cqe->pars_flags.flags));
305*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "    tunnel_pars_flags = %x",
306*14b24e2bSVaishali Kulkarni 	    cqe->tunnel_pars_flags.flags);
307*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "    bitfields = %x", cqe->bitfields);
308*14b24e2bSVaishali Kulkarni }
309*14b24e2bSVaishali Kulkarni 
310*14b24e2bSVaishali Kulkarni void
qede_dump_start_lro_cqe(struct eth_fast_path_rx_tpa_start_cqe * cqe)311*14b24e2bSVaishali Kulkarni qede_dump_start_lro_cqe(struct eth_fast_path_rx_tpa_start_cqe *cqe)
312*14b24e2bSVaishali Kulkarni {
313*14b24e2bSVaishali Kulkarni 	int i;
314*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "qede_dump_start_lro_cqe");
315*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "    tpa_agg_index = %d", cqe->tpa_agg_index);
316*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "    seg_len = %d", LE_16(cqe->seg_len));
317*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "    vlan_tag = %d", LE_16(cqe->vlan_tag));
318*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "    rss_hash = %d", LE_32(cqe->rss_hash));
319*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "    len_on_first_bd = %d",
320*14b24e2bSVaishali Kulkarni 	    LE_16(cqe->len_on_first_bd));
321*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "    placement_offset = %d", cqe->placement_offset);
322*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "    header_len = %d", cqe->header_len);
323*14b24e2bSVaishali Kulkarni 	for (i = 0; i < ETH_TPA_CQE_START_LEN_LIST_SIZE; i++)
324*14b24e2bSVaishali Kulkarni 		cmn_err(CE_WARN, "    ext_bd_len_list[%d] = %d", i,
325*14b24e2bSVaishali Kulkarni 		    LE_16(cqe->ext_bd_len_list[i]));
326*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "    pars_flags = 0x%x",
327*14b24e2bSVaishali Kulkarni 	    LE_16((uint16_t)cqe->pars_flags.flags));
328*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "    tunnel_pars_flags = 0x%x",
329*14b24e2bSVaishali Kulkarni 	    cqe->tunnel_pars_flags.flags);
330*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "    bitfields = 0x%x", cqe->bitfields );
331*14b24e2bSVaishali Kulkarni }
332*14b24e2bSVaishali Kulkarni 
333*14b24e2bSVaishali Kulkarni void
qede_dump_cont_lro_cqe(struct eth_fast_path_rx_tpa_cont_cqe * cqe)334*14b24e2bSVaishali Kulkarni qede_dump_cont_lro_cqe(struct eth_fast_path_rx_tpa_cont_cqe *cqe)
335*14b24e2bSVaishali Kulkarni {
336*14b24e2bSVaishali Kulkarni 	int i;
337*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "qede_dump_cont_lro_cqe");
338*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "    tpa_agg_index = %d", cqe->tpa_agg_index);
339*14b24e2bSVaishali Kulkarni 	for (i = 0; i < ETH_TPA_CQE_CONT_LEN_LIST_SIZE; i++) {
340*14b24e2bSVaishali Kulkarni 		cmn_err(CE_WARN, "    len_list[%d] = %d", i,
341*14b24e2bSVaishali Kulkarni 		    LE_16(cqe->len_list[i]));
342*14b24e2bSVaishali Kulkarni 	}
343*14b24e2bSVaishali Kulkarni }
344*14b24e2bSVaishali Kulkarni 
345*14b24e2bSVaishali Kulkarni void
qede_dump_end_lro_cqe(struct eth_fast_path_rx_tpa_end_cqe * cqe)346*14b24e2bSVaishali Kulkarni qede_dump_end_lro_cqe(struct eth_fast_path_rx_tpa_end_cqe *cqe)
347*14b24e2bSVaishali Kulkarni {
348*14b24e2bSVaishali Kulkarni 	int i;
349*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "qede_dump_end_lro_cqe");
350*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "    tpa_agg_index = %d", cqe->tpa_agg_index );
351*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "    total_packet_len = %d",
352*14b24e2bSVaishali Kulkarni 	    LE_16(cqe->total_packet_len));
353*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "    num_of_bds = %d", cqe->num_of_bds);
354*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "    num_of_coalesced_segs = %d",
355*14b24e2bSVaishali Kulkarni 	    LE_16(cqe->num_of_coalesced_segs));
356*14b24e2bSVaishali Kulkarni 	for (i = 0; i < ETH_TPA_CQE_END_LEN_LIST_SIZE; i++) {
357*14b24e2bSVaishali Kulkarni 		cmn_err(CE_WARN, "    len_list[%d] = %d", i,
358*14b24e2bSVaishali Kulkarni 		    LE_16(cqe->len_list[i]));
359*14b24e2bSVaishali Kulkarni 	}
360*14b24e2bSVaishali Kulkarni 	cmn_err(CE_WARN, "    ts_delta = %d", LE_32(cqe->ts_delta));
361*14b24e2bSVaishali Kulkarni }
362