1*ae9b4017SNavdeep Parhar /*- 2*ae9b4017SNavdeep Parhar * SPDX-License-Identifier: BSD-2-Clause-FreeBSD 3*ae9b4017SNavdeep Parhar * 4*ae9b4017SNavdeep Parhar * Copyright (c) 2018 Chelsio Communications, Inc. 5*ae9b4017SNavdeep Parhar * All rights reserved. 6*ae9b4017SNavdeep Parhar * 7*ae9b4017SNavdeep Parhar * Redistribution and use in source and binary forms, with or without 8*ae9b4017SNavdeep Parhar * modification, are permitted provided that the following conditions 9*ae9b4017SNavdeep Parhar * are met: 10*ae9b4017SNavdeep Parhar * 1. Redistributions of source code must retain the above copyright 11*ae9b4017SNavdeep Parhar * notice, this list of conditions and the following disclaimer. 12*ae9b4017SNavdeep Parhar * 2. Redistributions in binary form must reproduce the above copyright 13*ae9b4017SNavdeep Parhar * notice, this list of conditions and the following disclaimer in the 14*ae9b4017SNavdeep Parhar * documentation and/or other materials provided with the distribution. 15*ae9b4017SNavdeep Parhar * 16*ae9b4017SNavdeep Parhar * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 17*ae9b4017SNavdeep Parhar * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18*ae9b4017SNavdeep Parhar * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19*ae9b4017SNavdeep Parhar * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 20*ae9b4017SNavdeep Parhar * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21*ae9b4017SNavdeep Parhar * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22*ae9b4017SNavdeep Parhar * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23*ae9b4017SNavdeep Parhar * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24*ae9b4017SNavdeep Parhar * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25*ae9b4017SNavdeep Parhar * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26*ae9b4017SNavdeep Parhar * SUCH DAMAGE. 27*ae9b4017SNavdeep Parhar */ 28*ae9b4017SNavdeep Parhar 29*ae9b4017SNavdeep Parhar #include <sys/cdefs.h> 30*ae9b4017SNavdeep Parhar __FBSDID("$FreeBSD$"); 31*ae9b4017SNavdeep Parhar 32*ae9b4017SNavdeep Parhar /* Auto-generated file. Avoid direct editing. */ 33*ae9b4017SNavdeep Parhar /* Edits will be lost when file regenerated. */ 34*ae9b4017SNavdeep Parhar #include <stdio.h> 35*ae9b4017SNavdeep Parhar #include "tcb_common.h" 36*ae9b4017SNavdeep Parhar 37*ae9b4017SNavdeep Parhar void t4_display_tcb_aux_0 (_TCBVAR *tvp, int aux) 38*ae9b4017SNavdeep Parhar { 39*ae9b4017SNavdeep Parhar 40*ae9b4017SNavdeep Parhar 41*ae9b4017SNavdeep Parhar 42*ae9b4017SNavdeep Parhar 43*ae9b4017SNavdeep Parhar 44*ae9b4017SNavdeep Parhar 45*ae9b4017SNavdeep Parhar 46*ae9b4017SNavdeep Parhar PR("STATE:\n"); 47*ae9b4017SNavdeep Parhar PR(" %-12s (%-2u), %s, lock_tid %u, init %u\n", 48*ae9b4017SNavdeep Parhar spr_tcp_state(val("t_state")), 49*ae9b4017SNavdeep Parhar val("t_state"), 50*ae9b4017SNavdeep Parhar spr_ip_version(val("ip_version")), 51*ae9b4017SNavdeep Parhar val("lock_tid"), 52*ae9b4017SNavdeep Parhar val("init") 53*ae9b4017SNavdeep Parhar ); 54*ae9b4017SNavdeep Parhar PR(" l2t_ix 0x%x, smac sel 0x%x, tos 0x%x\n", 55*ae9b4017SNavdeep Parhar val("l2t_ix"), 56*ae9b4017SNavdeep Parhar val("smac_sel"), 57*ae9b4017SNavdeep Parhar val("tos") 58*ae9b4017SNavdeep Parhar ); 59*ae9b4017SNavdeep Parhar PR(" maxseg %u, recv_scaleflag %u, recv_tstmp %u, recv_sack %u\n", 60*ae9b4017SNavdeep Parhar val("t_maxseg"), val("recv_scale"), 61*ae9b4017SNavdeep Parhar val("recv_tstmp"), val("recv_sack")); 62*ae9b4017SNavdeep Parhar 63*ae9b4017SNavdeep Parhar 64*ae9b4017SNavdeep Parhar PR("TIMERS:\n"); /* **************************************** */ 65*ae9b4017SNavdeep Parhar PR(" timer %u, dack_timer %u\n", 66*ae9b4017SNavdeep Parhar val("timer"), val("dack_timer")); 67*ae9b4017SNavdeep Parhar PR(" mod_schd: tx: %u, rx: %u, reason 0x%1x\n", 68*ae9b4017SNavdeep Parhar val("mod_schd_tx"), 69*ae9b4017SNavdeep Parhar val("mod_schd_rx"), 70*ae9b4017SNavdeep Parhar ((val("mod_schd_reason2")<<2) | (val("mod_schd_reason1")<<1) | 71*ae9b4017SNavdeep Parhar val("mod_schd_reason0")) 72*ae9b4017SNavdeep Parhar ); 73*ae9b4017SNavdeep Parhar 74*ae9b4017SNavdeep Parhar 75*ae9b4017SNavdeep Parhar PR(" max_rt %-2u, rxtshift %u, keepalive %u\n", 76*ae9b4017SNavdeep Parhar val("max_rt"), val("t_rxtshift"), 77*ae9b4017SNavdeep Parhar val("keepalive")); 78*ae9b4017SNavdeep Parhar PR(" timestamp_offset 0x%x, timestamp 0x%x\n", 79*ae9b4017SNavdeep Parhar val("timestamp_offset"),val("timestamp")); 80*ae9b4017SNavdeep Parhar 81*ae9b4017SNavdeep Parhar 82*ae9b4017SNavdeep Parhar PR(" t_rtt_ts_recent_age %u t_rttseq_recent %u\n", 83*ae9b4017SNavdeep Parhar val("t_rtt_ts_recent_age"), val("t_rtseq_recent")); 84*ae9b4017SNavdeep Parhar PR(" t_srtt %u, t_rttvar %u\n", 85*ae9b4017SNavdeep Parhar val("t_srtt"),val("t_rttvar")); 86*ae9b4017SNavdeep Parhar 87*ae9b4017SNavdeep Parhar 88*ae9b4017SNavdeep Parhar 89*ae9b4017SNavdeep Parhar 90*ae9b4017SNavdeep Parhar 91*ae9b4017SNavdeep Parhar 92*ae9b4017SNavdeep Parhar PR("TRANSMIT BUFFER:\n"); /* *************************** */ 93*ae9b4017SNavdeep Parhar PR(" snd_una %u, snd_nxt %u, snd_max %u, tx_max %u\n", 94*ae9b4017SNavdeep Parhar val("snd_una"),val("snd_nxt"), 95*ae9b4017SNavdeep Parhar val("snd_max"),val("tx_max")); 96*ae9b4017SNavdeep Parhar PR(" core_fin %u, tx_hdr_offset %u\n", 97*ae9b4017SNavdeep Parhar val("core_fin"), SEQ_SUB(val("tx_max"),val("snd_una")) 98*ae9b4017SNavdeep Parhar ); 99*ae9b4017SNavdeep Parhar if (val("recv_scale") && !val("active_open")) { 100*ae9b4017SNavdeep Parhar PR(" rcv_adv %-5u << %-2u == %u (recv_scaleflag %u rcv_scale %u active open %u)\n", 101*ae9b4017SNavdeep Parhar val("rcv_adv"), val("rcv_scale"), 102*ae9b4017SNavdeep Parhar val("rcv_adv") << val("rcv_scale"), 103*ae9b4017SNavdeep Parhar val("recv_scale"), val("rcv_scale"), val("active_open")); 104*ae9b4017SNavdeep Parhar } else { 105*ae9b4017SNavdeep Parhar PR(" rcv_adv %-5u (rcv_scale %-2u recv_scaleflag %u active_open %u)\n", 106*ae9b4017SNavdeep Parhar val("rcv_adv"), val("rcv_scale"), 107*ae9b4017SNavdeep Parhar val("recv_scale"), val("active_open")); 108*ae9b4017SNavdeep Parhar } 109*ae9b4017SNavdeep Parhar 110*ae9b4017SNavdeep Parhar PR(" snd_cwnd %-5u snd_ssthresh %u snd_rec %u\n", 111*ae9b4017SNavdeep Parhar val("snd_cwnd") , val("snd_ssthresh"), val("snd_rec") 112*ae9b4017SNavdeep Parhar ); 113*ae9b4017SNavdeep Parhar 114*ae9b4017SNavdeep Parhar 115*ae9b4017SNavdeep Parhar 116*ae9b4017SNavdeep Parhar 117*ae9b4017SNavdeep Parhar PR(" cctrl: sel %s, ecn %u, ece %u, cwr %u, rfr %u\n", 118*ae9b4017SNavdeep Parhar spr_cctrl_sel(val("cctrl_sel0"),val("cctrl_sel1")), 119*ae9b4017SNavdeep Parhar val("cctrl_ecn"), val("cctrl_ece"), val("cctrl_cwr"), 120*ae9b4017SNavdeep Parhar val("cctrl_rfr")); 121*ae9b4017SNavdeep Parhar PR(" t_dupacks %u, dupack_count_odd %u, fast_recovery %u\n", 122*ae9b4017SNavdeep Parhar val("t_dupacks"), val("dupack_count_odd"),val("fast_recovery")); 123*ae9b4017SNavdeep Parhar PR(" core_more %u, core_urg, %u core_push %u,", 124*ae9b4017SNavdeep Parhar val("core_more"),val("core_urg"),val("core_push")); 125*ae9b4017SNavdeep Parhar PR(" core_flush %u\n",val("core_flush")); 126*ae9b4017SNavdeep Parhar PR(" nagle %u, ssws_disable %u, turbo %u,", 127*ae9b4017SNavdeep Parhar val("nagle"), val("ssws_disabled"), val("turbo")); 128*ae9b4017SNavdeep Parhar PR(" tx_pdu_out %u\n",val("tx_pdu_out")); 129*ae9b4017SNavdeep Parhar PR(" tx_pace_auto %u, tx_pace_fixed %u, tx_queue %u", 130*ae9b4017SNavdeep Parhar val("tx_pace_auto"),val("tx_pace_fixed"),val("tx_queue")); 131*ae9b4017SNavdeep Parhar 132*ae9b4017SNavdeep Parhar 133*ae9b4017SNavdeep Parhar PR(" tx_quiesce %u\n",val("tx_quiesce")); 134*ae9b4017SNavdeep Parhar PR(" tx_channel %u, tx_channel1 %u, tx_channel0 %u\n", 135*ae9b4017SNavdeep Parhar val("tx_channel"), 136*ae9b4017SNavdeep Parhar (val("tx_channel")>>1)&1, 137*ae9b4017SNavdeep Parhar val("tx_channel")&1 138*ae9b4017SNavdeep Parhar ); 139*ae9b4017SNavdeep Parhar 140*ae9b4017SNavdeep Parhar 141*ae9b4017SNavdeep Parhar 142*ae9b4017SNavdeep Parhar 143*ae9b4017SNavdeep Parhar PR(" tx_hdr_ptr 0x%-6x tx_last_ptr 0x%-6x tx_compact %u\n", 144*ae9b4017SNavdeep Parhar val("tx_hdr_ptr"),val("tx_last_ptr"),val("tx_compact")); 145*ae9b4017SNavdeep Parhar 146*ae9b4017SNavdeep Parhar 147*ae9b4017SNavdeep Parhar 148*ae9b4017SNavdeep Parhar 149*ae9b4017SNavdeep Parhar PR("RECEIVE BUFFER:\n"); /* *************************** */ 150*ae9b4017SNavdeep Parhar PR(" last_ack_sent %-10u rx_compact %u\n", 151*ae9b4017SNavdeep Parhar val("ts_last_ack_sent"),val("rx_compact")); 152*ae9b4017SNavdeep Parhar PR(" rcv_nxt %-10u hdr_off %-10u\n", 153*ae9b4017SNavdeep Parhar val("rcv_nxt"), val("rx_hdr_offset")); 154*ae9b4017SNavdeep Parhar PR(" frag0_idx %-10u length %-10u frag0_ptr 0x%-8x\n", 155*ae9b4017SNavdeep Parhar val("rx_frag0_start_idx"), 156*ae9b4017SNavdeep Parhar val("rx_frag0_len"), 157*ae9b4017SNavdeep Parhar val("rx_ptr")); 158*ae9b4017SNavdeep Parhar PR(" frag1_idx %-10u length %-10u ", 159*ae9b4017SNavdeep Parhar val("rx_frag1_start_idx_offset"), 160*ae9b4017SNavdeep Parhar val("rx_frag1_len")); 161*ae9b4017SNavdeep Parhar 162*ae9b4017SNavdeep Parhar 163*ae9b4017SNavdeep Parhar 164*ae9b4017SNavdeep Parhar 165*ae9b4017SNavdeep Parhar if (val("ulp_type")!=4) { /* RDMA has FRAG1 idx && len, but no ptr? Should I not display frag1 at all? */ 166*ae9b4017SNavdeep Parhar PR("frag1_ptr 0x%-8x\n",val("rx_frag1_ptr")); 167*ae9b4017SNavdeep Parhar } else { 168*ae9b4017SNavdeep Parhar PR("\n"); 169*ae9b4017SNavdeep Parhar } 170*ae9b4017SNavdeep Parhar 171*ae9b4017SNavdeep Parhar 172*ae9b4017SNavdeep Parhar if (val("ulp_type") !=6 && val("ulp_type") != 5 && val("ulp_type") !=4) { 173*ae9b4017SNavdeep Parhar PR(" frag2_idx %-10u length %-10u frag2_ptr 0x%-8x\n", 174*ae9b4017SNavdeep Parhar val("rx_frag2_start_idx_offset"), 175*ae9b4017SNavdeep Parhar val("rx_frag2_len"), 176*ae9b4017SNavdeep Parhar val("rx_frag2_ptr")); 177*ae9b4017SNavdeep Parhar PR(" frag3_idx %-10u length %-10u frag3_ptr 0x%-8x\n", 178*ae9b4017SNavdeep Parhar val("rx_frag3_start_idx_offset"), 179*ae9b4017SNavdeep Parhar val("rx_frag3_len"), 180*ae9b4017SNavdeep Parhar val("rx_frag3_ptr")); 181*ae9b4017SNavdeep Parhar } 182*ae9b4017SNavdeep Parhar 183*ae9b4017SNavdeep Parhar 184*ae9b4017SNavdeep Parhar 185*ae9b4017SNavdeep Parhar 186*ae9b4017SNavdeep Parhar 187*ae9b4017SNavdeep Parhar 188*ae9b4017SNavdeep Parhar PR(" peer_fin %u, rx_pdu_out %u, pdu_len %u\n", 189*ae9b4017SNavdeep Parhar val("peer_fin"),val("rx_pdu_out"), val("pdu_len")); 190*ae9b4017SNavdeep Parhar 191*ae9b4017SNavdeep Parhar 192*ae9b4017SNavdeep Parhar 193*ae9b4017SNavdeep Parhar 194*ae9b4017SNavdeep Parhar if (val("recv_scale")) { 195*ae9b4017SNavdeep Parhar PR(" rcv_wnd %u >> snd_scale %u == %u, recv_scaleflag = %u\n", 196*ae9b4017SNavdeep Parhar val("rcv_wnd"), val("snd_scale"), 197*ae9b4017SNavdeep Parhar val("rcv_wnd") >> val("snd_scale"), 198*ae9b4017SNavdeep Parhar val("recv_scale")); 199*ae9b4017SNavdeep Parhar } else { 200*ae9b4017SNavdeep Parhar PR(" rcv_wnd %u. (snd_scale %u, recv_scaleflag = %u)\n", 201*ae9b4017SNavdeep Parhar val("rcv_wnd"), val("snd_scale"), 202*ae9b4017SNavdeep Parhar val("recv_scale")); 203*ae9b4017SNavdeep Parhar } 204*ae9b4017SNavdeep Parhar 205*ae9b4017SNavdeep Parhar 206*ae9b4017SNavdeep Parhar 207*ae9b4017SNavdeep Parhar 208*ae9b4017SNavdeep Parhar PR(" dack_mss %u dack %u, dack_not_acked: %u\n", 209*ae9b4017SNavdeep Parhar val("dack_mss"),val("dack"),val("dack_not_acked")); 210*ae9b4017SNavdeep Parhar PR(" rcv_coal %u rcv_co_psh %u rcv_co_last_psh %u heart %u\n", 211*ae9b4017SNavdeep Parhar val("rcv_coalesce_enable"), 212*ae9b4017SNavdeep Parhar val("rcv_coalesce_push"), 213*ae9b4017SNavdeep Parhar val("rcv_coalesce_last_psh"), 214*ae9b4017SNavdeep Parhar val("rcv_coalesce_heartbeat")); 215*ae9b4017SNavdeep Parhar 216*ae9b4017SNavdeep Parhar PR(" rx_channel %u rx_quiesce %u rx_flow_ctrl_dis %u,", 217*ae9b4017SNavdeep Parhar val("rx_channel"), val("rx_quiesce"), 218*ae9b4017SNavdeep Parhar val("rx_flow_control_disable")); 219*ae9b4017SNavdeep Parhar PR(" rx_flow_ctrl_ddp %u\n", 220*ae9b4017SNavdeep Parhar val("rx_flow_control_ddp")); 221*ae9b4017SNavdeep Parhar 222*ae9b4017SNavdeep Parhar 223*ae9b4017SNavdeep Parhar PR("MISCELANEOUS:\n"); /* *************************** */ 224*ae9b4017SNavdeep Parhar PR(" pend_ctl: 0x%1x, unused_flags: 0x%x, main_slush: 0x%x\n", 225*ae9b4017SNavdeep Parhar ((val("pend_ctl2")<<2) | (val("pend_ctl1")<<1) | 226*ae9b4017SNavdeep Parhar val("pend_ctl0")), 227*ae9b4017SNavdeep Parhar val("unused"),val("main_slush")); 228*ae9b4017SNavdeep Parhar PR(" Migrating %u, ask_mode %u, non_offload %u, rss_info %u\n", 229*ae9b4017SNavdeep Parhar val("migrating"), 230*ae9b4017SNavdeep Parhar val("ask_mode"), val("non_offload"), val("rss_info")); 231*ae9b4017SNavdeep Parhar PR(" ULP: ulp_type %u (%s), ulp_raw %u\n", 232*ae9b4017SNavdeep Parhar val("ulp_type"), spr_ulp_type(val("ulp_type")),val("ulp_raw")); 233*ae9b4017SNavdeep Parhar PR(" RDMA: error %u, flm_err %u\n", 234*ae9b4017SNavdeep Parhar val("rdma_error"), val("rdma_flm_error")); 235*ae9b4017SNavdeep Parhar 236*ae9b4017SNavdeep Parhar 237*ae9b4017SNavdeep Parhar } 238*ae9b4017SNavdeep Parhar void t4_display_tcb_aux_1 (_TCBVAR *tvp, int aux) 239*ae9b4017SNavdeep Parhar { 240*ae9b4017SNavdeep Parhar 241*ae9b4017SNavdeep Parhar 242*ae9b4017SNavdeep Parhar 243*ae9b4017SNavdeep Parhar PR(" aux1_slush0: 0x%x aux1_slush1 0x%x\n", 244*ae9b4017SNavdeep Parhar val("aux1_slush0"), val("aux1_slush1")); 245*ae9b4017SNavdeep Parhar PR(" pdu_hdr_len %u\n",val("pdu_hdr_len")); 246*ae9b4017SNavdeep Parhar 247*ae9b4017SNavdeep Parhar 248*ae9b4017SNavdeep Parhar 249*ae9b4017SNavdeep Parhar } 250*ae9b4017SNavdeep Parhar void t4_display_tcb_aux_2 (_TCBVAR *tvp, int aux) 251*ae9b4017SNavdeep Parhar { 252*ae9b4017SNavdeep Parhar 253*ae9b4017SNavdeep Parhar 254*ae9b4017SNavdeep Parhar 255*ae9b4017SNavdeep Parhar 256*ae9b4017SNavdeep Parhar PR(" qp_id %u, pd_id %u, stag %u\n", 257*ae9b4017SNavdeep Parhar val("qp_id"), val("pd_id"),val("stag")); 258*ae9b4017SNavdeep Parhar PR(" irs_ulp %u, iss_ulp %u\n", 259*ae9b4017SNavdeep Parhar val("irs_ulp"),val("iss_ulp")); 260*ae9b4017SNavdeep Parhar PR(" tx_pdu_len %u\n", 261*ae9b4017SNavdeep Parhar val("tx_pdu_len")); 262*ae9b4017SNavdeep Parhar PR(" cq_idx_sq %u, cq_idx_rq %u\n", 263*ae9b4017SNavdeep Parhar val("cq_idx_sq"),val("cq_idx_rq")); 264*ae9b4017SNavdeep Parhar PR(" rq_start %u, rq_MSN %u, rq_max_off %u, rq_write_ptr %u\n", 265*ae9b4017SNavdeep Parhar val("rq_start"),val("rq_msn"),val("rq_max_offset"), 266*ae9b4017SNavdeep Parhar val("rq_write_ptr")); 267*ae9b4017SNavdeep Parhar PR(" L_valid %u, rdmap opcode %u\n", 268*ae9b4017SNavdeep Parhar val("ord_l_bit_vld"),val("rdmap_opcode")); 269*ae9b4017SNavdeep Parhar PR(" tx_flush: %u, tx_oos_rxmt %u, tx_oos_txmt %u\n", 270*ae9b4017SNavdeep Parhar val("tx_flush"),val("tx_oos_rxmt"),val("tx_oos_txmt")); 271*ae9b4017SNavdeep Parhar 272*ae9b4017SNavdeep Parhar 273*ae9b4017SNavdeep Parhar 274*ae9b4017SNavdeep Parhar 275*ae9b4017SNavdeep Parhar } 276*ae9b4017SNavdeep Parhar void t4_display_tcb_aux_3 (_TCBVAR *tvp, int aux) 277*ae9b4017SNavdeep Parhar { 278*ae9b4017SNavdeep Parhar 279*ae9b4017SNavdeep Parhar 280*ae9b4017SNavdeep Parhar 281*ae9b4017SNavdeep Parhar 282*ae9b4017SNavdeep Parhar PR(" aux3_slush: 0x%x, unused: buf0 0x%x, buf1: 0x%x, main: 0x%x\n", 283*ae9b4017SNavdeep Parhar val("aux3_slush"),val("ddp_buf0_unused"),val("ddp_buf1_unused"), 284*ae9b4017SNavdeep Parhar val("ddp_main_unused")); 285*ae9b4017SNavdeep Parhar 286*ae9b4017SNavdeep Parhar 287*ae9b4017SNavdeep Parhar 288*ae9b4017SNavdeep Parhar 289*ae9b4017SNavdeep Parhar 290*ae9b4017SNavdeep Parhar PR(" DDP: DDPOFF ActBuf IndOut WaitFrag Rx2Tx BufInf\n"); 291*ae9b4017SNavdeep Parhar PR(" %u %u %u %u %u %u\n", 292*ae9b4017SNavdeep Parhar val("ddp_off"),val("ddp_active_buf"),val("ddp_indicate_out"), 293*ae9b4017SNavdeep Parhar val("ddp_wait_frag"),val("ddp_rx2tx"),val("ddp_buf_inf") 294*ae9b4017SNavdeep Parhar ); 295*ae9b4017SNavdeep Parhar 296*ae9b4017SNavdeep Parhar 297*ae9b4017SNavdeep Parhar 298*ae9b4017SNavdeep Parhar 299*ae9b4017SNavdeep Parhar 300*ae9b4017SNavdeep Parhar PR(" Ind PshfEn PushDis Flush NoInvalidate\n"); 301*ae9b4017SNavdeep Parhar PR(" Buf0: %u %u %u %u %u\n", 302*ae9b4017SNavdeep Parhar val("ddp_buf0_indicate"), 303*ae9b4017SNavdeep Parhar val("ddp_pshf_enable_0"), val("ddp_push_disable_0"), 304*ae9b4017SNavdeep Parhar val("ddp_buf0_flush"), val("ddp_psh_no_invalidate0") 305*ae9b4017SNavdeep Parhar ); 306*ae9b4017SNavdeep Parhar PR(" Buf1: %u %u %u %u %u\n", 307*ae9b4017SNavdeep Parhar val("ddp_buf1_indicate"), 308*ae9b4017SNavdeep Parhar val("ddp_pshf_enable_1"), val("ddp_push_disable_1"), 309*ae9b4017SNavdeep Parhar val("ddp_buf1_flush"), val("ddp_psh_no_invalidate1") 310*ae9b4017SNavdeep Parhar ); 311*ae9b4017SNavdeep Parhar 312*ae9b4017SNavdeep Parhar 313*ae9b4017SNavdeep Parhar 314*ae9b4017SNavdeep Parhar 315*ae9b4017SNavdeep Parhar 316*ae9b4017SNavdeep Parhar 317*ae9b4017SNavdeep Parhar 318*ae9b4017SNavdeep Parhar 319*ae9b4017SNavdeep Parhar 320*ae9b4017SNavdeep Parhar 321*ae9b4017SNavdeep Parhar PR(" Valid Offset Length Tag\n"); 322*ae9b4017SNavdeep Parhar PR(" Buf0: %u 0x%6.6x 0x%6.6x 0x%8.8x", 323*ae9b4017SNavdeep Parhar val("ddp_buf0_valid"),val("rx_ddp_buf0_offset"), 324*ae9b4017SNavdeep Parhar val("rx_ddp_buf0_len"),val("rx_ddp_buf0_tag") 325*ae9b4017SNavdeep Parhar 326*ae9b4017SNavdeep Parhar 327*ae9b4017SNavdeep Parhar ); 328*ae9b4017SNavdeep Parhar if (0==val("ddp_off") && 1==val("ddp_buf0_valid") && 0==val("ddp_active_buf")) { 329*ae9b4017SNavdeep Parhar PR(" (Active)\n"); 330*ae9b4017SNavdeep Parhar } else { 331*ae9b4017SNavdeep Parhar PR(" (Inactive)\n"); 332*ae9b4017SNavdeep Parhar } 333*ae9b4017SNavdeep Parhar 334*ae9b4017SNavdeep Parhar 335*ae9b4017SNavdeep Parhar PR(" Buf1: %u 0x%6.6x 0x%6.6x 0x%8.8x", 336*ae9b4017SNavdeep Parhar val("ddp_buf1_valid"),val("rx_ddp_buf1_offset"), 337*ae9b4017SNavdeep Parhar val("rx_ddp_buf1_len"),val("rx_ddp_buf1_tag") 338*ae9b4017SNavdeep Parhar 339*ae9b4017SNavdeep Parhar 340*ae9b4017SNavdeep Parhar ); 341*ae9b4017SNavdeep Parhar 342*ae9b4017SNavdeep Parhar 343*ae9b4017SNavdeep Parhar if (0==val("ddp_off") && 1==val("ddp_buf1_valid") && 1==val("ddp_active_buf")) { 344*ae9b4017SNavdeep Parhar PR(" (Active)\n"); 345*ae9b4017SNavdeep Parhar } else { 346*ae9b4017SNavdeep Parhar PR(" (Inactive)\n"); 347*ae9b4017SNavdeep Parhar } 348*ae9b4017SNavdeep Parhar 349*ae9b4017SNavdeep Parhar 350*ae9b4017SNavdeep Parhar 351*ae9b4017SNavdeep Parhar 352*ae9b4017SNavdeep Parhar 353*ae9b4017SNavdeep Parhar 354*ae9b4017SNavdeep Parhar if (1==val("ddp_off")) { 355*ae9b4017SNavdeep Parhar PR(" DDP is off (which also disables indicate)\n"); 356*ae9b4017SNavdeep Parhar } else if (1==val("ddp_buf0_valid") && 0==val("ddp_active_buf")) { 357*ae9b4017SNavdeep Parhar PR(" Data being DDP'ed to buf 0, "); 358*ae9b4017SNavdeep Parhar PR("which has %u - %u = %u bytes of space left\n", 359*ae9b4017SNavdeep Parhar val("rx_ddp_buf0_len"),val("rx_ddp_buf0_offset"), 360*ae9b4017SNavdeep Parhar val("rx_ddp_buf0_len")-val("rx_ddp_buf0_offset") 361*ae9b4017SNavdeep Parhar ); 362*ae9b4017SNavdeep Parhar if (1==val("ddp_buf1_valid")) { 363*ae9b4017SNavdeep Parhar PR(" And buf1, which is also valid, has %u - %u = %u bytes of space left\n", 364*ae9b4017SNavdeep Parhar val("rx_ddp_buf1_len"),val("rx_ddp_buf1_offset"), 365*ae9b4017SNavdeep Parhar val("rx_ddp_buf1_len")-val("rx_ddp_buf1_offset") 366*ae9b4017SNavdeep Parhar ); 367*ae9b4017SNavdeep Parhar } 368*ae9b4017SNavdeep Parhar } else if (1==val("ddp_buf1_valid") && 1==val("ddp_active_buf")) { 369*ae9b4017SNavdeep Parhar PR(" Data being DDP'ed to buf 1, "); 370*ae9b4017SNavdeep Parhar PR("which has %u - %u = %u bytes of space left\n", 371*ae9b4017SNavdeep Parhar val("rx_ddp_buf1_len"),val("rx_ddp_buf1_offset"), 372*ae9b4017SNavdeep Parhar val("rx_ddp_buf1_len")-val("rx_ddp_buf1_offset") 373*ae9b4017SNavdeep Parhar ); 374*ae9b4017SNavdeep Parhar if (1==val("ddp_buf0_valid")) { 375*ae9b4017SNavdeep Parhar PR(" And buf0, which is also valid, has %u - %u = %u bytes of space left\n", 376*ae9b4017SNavdeep Parhar val("rx_ddp_buf0_len"),val("rx_ddp_buf0_offset"), 377*ae9b4017SNavdeep Parhar val("rx_ddp_buf0_len")-val("rx_ddp_buf0_offset") 378*ae9b4017SNavdeep Parhar ); 379*ae9b4017SNavdeep Parhar } 380*ae9b4017SNavdeep Parhar } else if (0==val("ddp_buf0_valid") && 1==val("ddp_buf1_valid") && 0==val("ddp_active_buf")) { 381*ae9b4017SNavdeep Parhar PR(" !!! Invalid DDP buf 1 valid, but buf 0 active.\n"); 382*ae9b4017SNavdeep Parhar } else if (1==val("ddp_buf0_valid") && 0==val("ddp_buf1_valid") && 1==val("ddp_active_buf")) { 383*ae9b4017SNavdeep Parhar PR(" !!! Invalid DDP buf 0 valid, but buf 1 active.\n"); 384*ae9b4017SNavdeep Parhar } else { 385*ae9b4017SNavdeep Parhar PR(" DDP is enabled, but no buffers are active && valid.\n"); 386*ae9b4017SNavdeep Parhar 387*ae9b4017SNavdeep Parhar 388*ae9b4017SNavdeep Parhar 389*ae9b4017SNavdeep Parhar 390*ae9b4017SNavdeep Parhar if (0==val("ddp_indicate_out")) { 391*ae9b4017SNavdeep Parhar if (0==val("ddp_buf0_indicate") && 0==val("ddp_buf1_indicate")) { 392*ae9b4017SNavdeep Parhar PR(" 0 length Indicate buffers "); 393*ae9b4017SNavdeep Parhar if (0==val("rx_hdr_offset")) { 394*ae9b4017SNavdeep Parhar PR("will cause new data to be held in PMRX.\n"); 395*ae9b4017SNavdeep Parhar } else { 396*ae9b4017SNavdeep Parhar PR("is causing %u bytes to be held in PMRX\n", 397*ae9b4017SNavdeep Parhar val("rx_hdr_offset")); 398*ae9b4017SNavdeep Parhar } 399*ae9b4017SNavdeep Parhar } else { 400*ae9b4017SNavdeep Parhar PR(" Data being indicated to host\n"); 401*ae9b4017SNavdeep Parhar } 402*ae9b4017SNavdeep Parhar } else if (1==val("ddp_indicate_out")) { 403*ae9b4017SNavdeep Parhar PR(" Indicate is off, which "); 404*ae9b4017SNavdeep Parhar if (0==val("rx_hdr_offset")) { 405*ae9b4017SNavdeep Parhar PR("will cause new data to be held in PMRX.\n"); 406*ae9b4017SNavdeep Parhar } else { 407*ae9b4017SNavdeep Parhar PR("is causing %u bytes to be held in PMRX\n", 408*ae9b4017SNavdeep Parhar val("rx_hdr_offset")); 409*ae9b4017SNavdeep Parhar } 410*ae9b4017SNavdeep Parhar } 411*ae9b4017SNavdeep Parhar } 412*ae9b4017SNavdeep Parhar 413*ae9b4017SNavdeep Parhar 414*ae9b4017SNavdeep Parhar 415*ae9b4017SNavdeep Parhar 416*ae9b4017SNavdeep Parhar } 417