Lines Matching refs:sge
92 static inline uint32_t t1_sge_rx(pesge *sge, freelQ_t *Q,
95 static void t1_sge_check_pause(pesge *sge, struct freelQ *Q);
97 static void alloc_freelQ_buffers(pesge *sge, struct freelQ *Q);
98 static void freelQs_empty(pesge *sge);
99 static void free_cmdQ_buffers(pesge *sge, cmdQ_t *Q, uint32_t credits_pend);
100 static int alloc_rx_resources(pesge *sge, struct sge_params *p);
101 static int alloc_tx_resources(pesge *sge, struct sge_params *p);
104 static void configure_sge(pesge *sge, struct sge_params *p);
105 static void free_freelQ_buffers(pesge *sge, struct freelQ *Q);
106 static void free_rx_resources(pesge *sge);
107 static void free_tx_resources(pesge *sge);
108 static inline unsigned int jumbo_payload_capacity(pesge *sge);
119 static inline void sge_ring_doorbell(pesge *sge, u32 control_reg);
122 sge_ring_doorbell(pesge *sge, u32 control_reg) in sge_ring_doorbell() argument
125 t1_write_reg_4(sge->obj, A_SG_DOORBELL, control_reg); in sge_ring_doorbell()
137 pesge *sge; in t1_sge_create() local
139 sge = t1_os_malloc_wait_zero(sizeof (pesge)); in t1_sge_create()
141 if (sge == NULL) in t1_sge_create()
144 memset(sge, 0, sizeof (*sge)); in t1_sge_create()
152 sge->ptimeout = 1; in t1_sge_create()
154 sge->obj = sa; in t1_sge_create()
156 if (sge_kstat_setup(sge) != 0) in t1_sge_create()
173 cmn_err(CE_NOTE, "sge: %p\n", sge); in t1_sge_create()
174 cmn_err(CE_NOTE, "&sge->cmdQ[0]: %p\n", &sge->cmdQ[0]); in t1_sge_create()
175 cmn_err(CE_NOTE, "&sge->freelQ[0]: %p\n", &sge->freelQ[0]); in t1_sge_create()
176 cmn_err(CE_NOTE, "&sge->freelQ[1]: %p\n", &sge->freelQ[1]); in t1_sge_create()
177 cmn_err(CE_NOTE, "&sge->respQ: %p\n", &sge->respQ); in t1_sge_create()
178 cmn_err(CE_NOTE, "&sge->intr_cnt: %p\n", &sge->intr_cnt); in t1_sge_create()
184 t1_os_free(sge, sizeof (pesge)); in t1_sge_create()
185 sge = NULL; in t1_sge_create()
188 return (sge); in t1_sge_create()
192 t1_sge_destroy(pesge* sge) in t1_sge_destroy() argument
194 if (sge != NULL) { in t1_sge_destroy()
195 free_tx_resources(sge); in t1_sge_destroy()
196 free_rx_resources(sge); in t1_sge_destroy()
199 if ((is_T2(sge->obj)) && (sge->pskb)) in t1_sge_destroy()
200 pe_free_fake_arp(sge->pskb); in t1_sge_destroy()
202 sge_kstat_remove(sge); in t1_sge_destroy()
204 t1_os_free(sge, sizeof (pesge)); in t1_sge_destroy()
230 pesge *sge = adapter->sge; in t1_espi_workaround() local
231 ch_t *chp = (ch_t *)sge->obj; in t1_espi_workaround()
235 atomic_read(&sge->cmdQ[0].cq_asleep)) { in t1_espi_workaround()
240 if (sge->pskb) in t1_espi_workaround()
241 rv = pe_start(adapter, (mblk_t *)sge->pskb, in t1_espi_workaround()
244 sge->intr_cnt.arp_sent++; in t1_espi_workaround()
254 t1_sge_check_pause(sge, &sge->freelQ[0]); in t1_espi_workaround()
255 t1_sge_check_pause(sge, &sge->freelQ[1]); in t1_espi_workaround()
262 sge_start(pesge *sge) in sge_start() argument
264 t1_write_reg_4(sge->obj, A_SG_CONTROL, sge->sge_control); in sge_start()
266 ch_init_cyclic(sge->obj, &sge->espi_wa_cyclic, in sge_start()
267 (void (*)(void *))t1_espi_workaround, sge->obj); in sge_start()
268 ch_start_cyclic(&sge->espi_wa_cyclic, sge->ptimeout); in sge_start()
276 sge_stop(pesge *sge) in sge_stop() argument
281 DBGASSERT(sge); in sge_stop()
284 t1_write_reg_4(sge->obj, A_SG_CONTROL, 0x0); in sge_stop()
289 status = t1_read_reg_4(sge->obj, A_SG_INT_CAUSE); in sge_stop()
290 t1_write_reg_4(sge->obj, A_SG_INT_CAUSE, status); in sge_stop()
295 ch_stop_cyclic(&sge->espi_wa_cyclic); in sge_stop()
303 sge_data_out(pesge* sge, int qid, mblk_t *m0, in sge_data_out() argument
306 struct cmdQ *Q = &sge->cmdQ[qid]; in sge_data_out()
307 ddi_dma_handle_t dh = (ddi_dma_handle_t)sge->cmdQ[qid].cq_dh; in sge_data_out()
350 sge->do_udp_csum = 3; in sge_data_out()
351 } else if ((flg & CH_UDP) && (sge->do_udp_csum != 0)) { in sge_data_out()
362 sge->intr_cnt.tx_soft_cksums++; in sge_data_out()
366 sge->do_udp_csum--; in sge_data_out()
368 sge->do_tcp_csum = 3; in sge_data_out()
369 } else if (sge->do_tcp_csum != 0) { in sge_data_out()
371 sge->intr_cnt.tx_soft_cksums++; in sge_data_out()
376 sge->do_tcp_csum--; in sge_data_out()
382 sge->intr_cnt.tx_reclaims[qid]++; in sge_data_out()
383 free_cmdQ_buffers(sge, Q, reclaim_cnt); in sge_data_out()
393 sge->intr_cnt.cmdQ_full[qid]++; in sge_data_out()
408 sge->intr_cnt.tx_descs[MBLK_MAX - 1]++; in sge_data_out()
410 sge->intr_cnt.tx_descs[count]++; in sge_data_out()
486 doorbell_pio(sge, F_CMDQ1_ENABLE); in sge_data_out()
494 doorbell_pio(sge, F_CMDQ0_ENABLE); in sge_data_out()
505 t1_sge_intr_disable(pesge* sge) in t1_sge_intr_disable() argument
507 u32 val = t1_read_reg_4(sge->obj, A_PL_ENABLE); in t1_sge_intr_disable()
509 t1_write_reg_4(sge->obj, A_PL_ENABLE, val & ~SGE_PL_INTR_MASK); in t1_sge_intr_disable()
510 t1_write_reg_4(sge->obj, A_SG_INT_ENABLE, 0); in t1_sge_intr_disable()
521 t1_sge_intr_enable(pesge* sge) in t1_sge_intr_enable() argument
524 u32 val = t1_read_reg_4(sge->obj, A_PL_ENABLE); in t1_sge_intr_enable()
526 t1_write_reg_4(sge->obj, A_PL_ENABLE, val | SGE_PL_INTR_MASK); in t1_sge_intr_enable()
528 if (sge->obj->ch_flags & TSO_CAPABLE) in t1_sge_intr_enable()
530 t1_write_reg_4(sge->obj, A_SG_INT_ENABLE, en); in t1_sge_intr_enable()
538 t1_sge_intr_clear(pesge* sge) in t1_sge_intr_clear() argument
540 t1_write_reg_4(sge->obj, A_PL_CAUSE, SGE_PL_INTR_MASK); in t1_sge_intr_clear()
541 t1_write_reg_4(sge->obj, A_SG_INT_CAUSE, 0xffffffff); in t1_sge_intr_clear()
548 t1_sge_intr_error_handler(pesge *sge) in t1_sge_intr_error_handler() argument
550 peobj *obj = sge->obj; in t1_sge_intr_error_handler()
554 sge->intr_cnt.respQ_empty++; in t1_sge_intr_error_handler()
556 sge->intr_cnt.respQ_overflow++; in t1_sge_intr_error_handler()
561 sge->intr_cnt.freelistQ_empty++; in t1_sge_intr_error_handler()
562 freelQs_empty(sge); in t1_sge_intr_error_handler()
565 sge->intr_cnt.pkt_too_big++; in t1_sge_intr_error_handler()
570 sge->intr_cnt.pkt_mismatch++; in t1_sge_intr_error_handler()
586 sge_data_in(pesge *sge) in sge_data_in() argument
588 peobj *adapter = sge->obj; in sge_data_in()
589 struct respQ *Q = &sge->respQ; in sge_data_in()
629 (void) t1_sge_rx(sge, &sge->freelQ[e->FreelistQid], in sge_data_in()
632 sge->intr_cnt.rx_badEopSop++; in sge_data_in()
640 sge->intr_cnt.rx_cmdq0++; in sge_data_in()
642 sge->intr_cnt.rx_cmdq1++; in sge_data_in()
644 sge->intr_cnt.rx_flq0++; in sge_data_in()
646 sge->intr_cnt.rx_flq1++; in sge_data_in()
648 spin_lock(&sge->cmdQ[0].cq_qlock); in sge_data_in()
649 sge->cmdQ[0].cq_complete += e->Cmdq0CreditReturn; in sge_data_in()
650 spin_unlock(&sge->cmdQ[0].cq_qlock); in sge_data_in()
651 spin_lock(&sge->cmdQ[1].cq_qlock); in sge_data_in()
652 sge->cmdQ[1].cq_complete += e->Cmdq1CreditReturn; in sge_data_in()
654 (sge->cmdQ[0].cq_complete + in sge_data_in()
655 sge->cmdQ[1].cq_complete) > 16) { in sge_data_in()
659 spin_unlock(&sge->cmdQ[1].cq_qlock); in sge_data_in()
665 free_cmdQ_buffers(sge, &sge->cmdQ[0], credits_pend[0]); in sge_data_in()
669 free_cmdQ_buffers(sge, &sge->cmdQ[1], credits_pend[1]); in sge_data_in()
675 t1_sge_check_pause(sge, &sge->freelQ[e->FreelistQid]); in sge_data_in()
693 free_cmdQ_buffers(sge, &sge->cmdQ[0], credits_pend[0]); in sge_data_in()
695 free_cmdQ_buffers(sge, &sge->cmdQ[1], credits_pend[1]); in sge_data_in()
698 struct cmdQ *cmdQ = &sge->cmdQ[0]; in sge_data_in()
701 doorbell_pio(sge, F_CMDQ0_ENABLE); in sge_data_in()
708 freelQs_empty(sge); in sge_data_in()
714 (sge->cmdQ[0].cq_credits > (sge->cmdQ[0].cq_entries_n>>2)) && in sge_data_in()
715 (sge->cmdQ[1].cq_credits > (sge->cmdQ[1].cq_entries_n>>2))) { in sge_data_in()
726 (sge->cmdQ[0].cq_credits > (sge->cmdQ[0].cq_entries_n>>1)) && in sge_data_in()
727 (sge->cmdQ[1].cq_credits > (sge->cmdQ[1].cq_entries_n>>1))) { in sge_data_in()
759 uint32_t rxoff = sa->sge->rx_offset; in os_freelist_buffer_alloc()
803 t1_sge_rx(pesge *sge, struct freelQ *Q, unsigned int len, unsigned int offload) in t1_sge_rx() argument
806 peobj *adapter = sge->obj; in t1_sge_rx()
814 uint32_t rxoff = sge->rx_offset; in t1_sge_rx()
820 sge->intr_cnt.rx_flq1_cnt++; in t1_sge_rx()
822 sge->intr_cnt.rx_flq0_cnt++; in t1_sge_rx()
849 sge->intr_cnt.rx_pkt_drops++; in t1_sge_rx()
879 src += sge->rx_pkt_pad; in t1_sge_rx()
888 sge->intr_cnt.rx_pkt_copied++; in t1_sge_rx()
899 if (!offload && sge->rx_pkt_pad) in t1_sge_rx()
1011 alloc_freelQ_buffers(sge, Q); in t1_sge_rx()
1017 t1_sge_check_pause(pesge *sge, struct freelQ *Q) in t1_sge_check_pause() argument
1019 peobj *adapter = sge->obj; in t1_sge_check_pause()
1031 sge->intr_cnt.rx_pause_on++; in t1_sge_check_pause()
1040 alloc_freelQ_buffers(sge, Q); in t1_sge_check_pause()
1044 sge->intr_cnt.rx_pause_off++; in t1_sge_check_pause()
1051 sge->intr_cnt.rx_pause_ms += time; in t1_sge_check_pause()
1052 if (time > sge->intr_cnt.rx_pause_spike) in t1_sge_check_pause()
1053 sge->intr_cnt.rx_pause_spike = (uint32_t)time; in t1_sge_check_pause()
1055 sge->intr_cnt.rx_fl_credits = Q->fq_credits; in t1_sge_check_pause()
1060 alloc_freelQ_buffers(pesge *sge, struct freelQ *Q) in alloc_freelQ_buffers() argument
1067 uint32_t rxoff = sge->rx_offset; in alloc_freelQ_buffers()
1081 mapping = os_freelist_buffer_alloc(sge->obj, sz, in alloc_freelQ_buffers()
1084 sge->intr_cnt.rx_flbuf_fails++; in alloc_freelQ_buffers()
1087 sge->intr_cnt.rx_flbuf_allocs++; in alloc_freelQ_buffers()
1136 freelQs_empty(pesge *sge) in freelQs_empty() argument
1138 u32 irq_reg = t1_read_reg_4(sge->obj, A_SG_INT_ENABLE); in freelQs_empty()
1141 alloc_freelQ_buffers(sge, &sge->freelQ[0]); in freelQs_empty()
1142 alloc_freelQ_buffers(sge, &sge->freelQ[1]); in freelQs_empty()
1144 if ((sge->freelQ[0].fq_credits > sge->freelQ[0].fq_entries_n >> 2) && in freelQs_empty()
1145 (sge->freelQ[1].fq_credits > sge->freelQ[1].fq_entries_n >> 2)) { in freelQs_empty()
1147 irqholdoff_reg = sge->intrtimer[sge->currIndex]; in freelQs_empty()
1151 irqholdoff_reg = sge->intrtimer_nres; in freelQs_empty()
1153 t1_write_reg_4(sge->obj, A_SG_INTRTIMER, irqholdoff_reg); in freelQs_empty()
1154 t1_write_reg_4(sge->obj, A_SG_INT_ENABLE, irq_reg); in freelQs_empty()
1157 doorbell_pio(sge, F_FL0_ENABLE | F_FL1_ENABLE); in freelQs_empty()
1165 free_cmdQ_buffers(pesge *sge, struct cmdQ *Q, unsigned int credits_pend) in free_cmdQ_buffers() argument
1174 ch_t *chp = sge->obj; in free_cmdQ_buffers()
1184 ch_unbind_dma_handle(sge->obj, ce->ce_dh); in free_cmdQ_buffers()
1197 ch_unbind_dvma_handle(sge->obj, ce->ce_dh); in free_cmdQ_buffers()
1216 ch_unbind_dma_handle(sge->obj, ce->ce_dh); in free_cmdQ_buffers()
1220 ch_unbind_dvma_handle(sge->obj, ce->ce_dh); in free_cmdQ_buffers()
1245 sge_get_stat(pesge *sge) in sge_get_stat() argument
1247 return (&sge->intr_cnt); in sge_get_stat()
1258 t1_sge_configure(pesge *sge, struct sge_params *p) in t1_sge_configure() argument
1260 sge->rx_pkt_pad = t1_is_T1B(sge->obj) ? 0 : SGE_RX_OFFSET; in t1_sge_configure()
1261 sge->jumbo_fl = t1_is_T1B(sge->obj) ? 1 : 0; in t1_sge_configure()
1263 sge->rx_offset = t1_is_T1B(sge->obj) ? SGE_RX_OFFSET: 0; in t1_sge_configure()
1265 if (alloc_rx_resources(sge, p)) in t1_sge_configure()
1267 if (alloc_tx_resources(sge, p)) { in t1_sge_configure()
1268 free_rx_resources(sge); in t1_sge_configure()
1271 configure_sge(sge, p); in t1_sge_configure()
1279 p->large_buf_capacity = jumbo_payload_capacity(sge); in t1_sge_configure()
1288 alloc_rx_resources(pesge *sge, struct sge_params *p) in alloc_rx_resources() argument
1293 struct freelQ *Q = &sge->freelQ[i]; in alloc_rx_resources()
1304 Q->fq_entries = pe_os_malloc_contig_wait_zero(sge->obj, in alloc_rx_resources()
1325 sge->freelQ[1 ^ sge->jumbo_fl].fq_rx_buffer_size = SGE_RX_SM_BUF_SIZE + in alloc_rx_resources()
1327 SGE_RX_OFFSET - sge->rx_pkt_pad; in alloc_rx_resources()
1329 sge->freelQ[1 ^ sge->jumbo_fl].fq_rx_buffer_size = in alloc_rx_resources()
1330 sge->obj->ch_sm_buf_sz; in alloc_rx_resources()
1331 if (is_T2(sge->obj)) in alloc_rx_resources()
1332 sge->intr_cnt.rx_flq1_sz = sge->obj->ch_sm_buf_sz; in alloc_rx_resources()
1334 sge->intr_cnt.rx_flq0_sz = sge->obj->ch_sm_buf_sz; in alloc_rx_resources()
1337 sge->freelQ[sge->jumbo_fl].fq_rx_buffer_size = (16 * 1024) - in alloc_rx_resources()
1340 sge->freelQ[sge->jumbo_fl].fq_rx_buffer_size = sge->obj->ch_bg_buf_sz; in alloc_rx_resources()
1341 if (is_T2(sge->obj)) in alloc_rx_resources()
1342 sge->intr_cnt.rx_flq0_sz = sge->obj->ch_bg_buf_sz; in alloc_rx_resources()
1344 sge->intr_cnt.rx_flq1_sz = sge->obj->ch_bg_buf_sz; in alloc_rx_resources()
1347 sge->respQ.rq_genbit = 1; in alloc_rx_resources()
1348 sge->respQ.rq_entries_n = sge_respq_cnt; in alloc_rx_resources()
1349 sge->respQ.rq_credits = sge_respq_cnt; in alloc_rx_resources()
1350 sge->respQ.rq_credits_thresh = sge_respq_cnt - (sge_respq_cnt >> 2); in alloc_rx_resources()
1351 size = sizeof (respQ_e) * sge->respQ.rq_entries_n; in alloc_rx_resources()
1353 sge->respQ.rq_entries = pe_os_malloc_contig_wait_zero(sge->obj, in alloc_rx_resources()
1354 size, &(sge->respQ.rq_pa), &(sge->respQ.rq_dh), in alloc_rx_resources()
1355 &(sge->respQ.rq_ah), 0); in alloc_rx_resources()
1357 if (!sge->respQ.rq_entries) in alloc_rx_resources()
1359 memset(sge->respQ.rq_entries, 0, size); in alloc_rx_resources()
1363 free_rx_resources(sge); in alloc_rx_resources()
1371 alloc_tx_resources(pesge *sge, struct sge_params *p) in alloc_tx_resources() argument
1376 struct cmdQ *Q = &sge->cmdQ[i]; in alloc_tx_resources()
1384 sge->obj->ch_icookp); in alloc_tx_resources()
1387 Q->cq_entries = pe_os_malloc_contig_wait_zero(sge->obj, in alloc_tx_resources()
1400 pe_dma_handle_init(sge->obj, Q->cq_entries_n); in alloc_tx_resources()
1406 free_tx_resources(sge); in alloc_tx_resources()
1418 t1_sge_set_coalesce_params(pesge *sge, struct sge_params *p) in t1_sge_set_coalesce_params() argument
1422 (board_info(sge->obj)->clock_core / 1000000); in t1_sge_set_coalesce_params()
1424 t1_write_reg_4(sge->obj, A_SG_INTRTIMER, newTimer); in t1_sge_set_coalesce_params()
1434 configure_sge(pesge *sge, struct sge_params *p) in configure_sge() argument
1436 ch_t *ap = sge->obj; in configure_sge()
1441 setup_ring_params(ap, sge->cmdQ[0].cq_pa, sge->cmdQ[0].cq_entries_n, in configure_sge()
1443 setup_ring_params(ap, sge->cmdQ[1].cq_pa, sge->cmdQ[1].cq_entries_n, in configure_sge()
1445 setup_ring_params(ap, sge->freelQ[0].fq_pa, in configure_sge()
1446 sge->freelQ[0].fq_entries_n, A_SG_FL0BASELWR, in configure_sge()
1448 setup_ring_params(ap, sge->freelQ[1].fq_pa, in configure_sge()
1449 sge->freelQ[1].fq_entries_n, A_SG_FL1BASELWR, in configure_sge()
1454 SZ_CPL_RX_PKT - sge->rx_pkt_pad - sge->rx_offset + 1); in configure_sge()
1455 setup_ring_params(ap, sge->respQ.rq_pa, sge->respQ.rq_entries_n, in configure_sge()
1457 t1_write_reg_4(ap, A_SG_RSPQUEUECREDIT, (u32)sge->respQ.rq_entries_n); in configure_sge()
1458 sge->sge_control = F_CMDQ0_ENABLE | F_CMDQ1_ENABLE | F_FL0_ENABLE | in configure_sge()
1469 V_RX_PKT_OFFSET(sge->rx_pkt_pad); in configure_sge()
1472 sge->sge_control |= F_ENABLE_BIG_ENDIAN; in configure_sge()
1482 sge->intrtimer[0] = board_info(sge->obj)->clock_core / 1000000; in configure_sge()
1484 sge->intrtimer[i] = SGE_INTRTIMER0 + (2 * i); in configure_sge()
1485 sge->intrtimer[i] *= sge->intrtimer[0]; in configure_sge()
1487 sge->intrtimer[SGE_INTR_MAXBUCKETS - 1] = in configure_sge()
1488 sge->intrtimer[0] * SGE_INTRTIMER1; in configure_sge()
1490 sge->intrtimer_nres = (uint32_t)(sge->intrtimer[0] * in configure_sge()
1493 sge->intrtimer[0] = (uint32_t)(sge->intrtimer[0] * SGE_INTRTIMER0); in configure_sge()
1495 sge->currIndex = SGE_INTR_MAXBUCKETS - 1; in configure_sge()
1499 sge->intrtimer[sge->currIndex]); in configure_sge()
1501 (void) t1_sge_set_coalesce_params(sge, p); in configure_sge()
1517 free_rx_resources(pesge *sge) in free_rx_resources() argument
1521 if (sge->respQ.rq_entries) { in free_rx_resources()
1522 size = sizeof (respQ_e) * sge->respQ.rq_entries_n; in free_rx_resources()
1524 pe_os_free_contig(sge->obj, size, sge->respQ.rq_entries, in free_rx_resources()
1525 sge->respQ.rq_pa, sge->respQ.rq_dh, sge->respQ.rq_ah); in free_rx_resources()
1529 struct freelQ *Q = &sge->freelQ[i]; in free_rx_resources()
1532 free_freelQ_buffers(sge, Q); in free_rx_resources()
1541 pe_os_free_contig(sge->obj, size, Q->fq_entries, in free_rx_resources()
1553 free_freelQ_buffers(pesge *sge, struct freelQ *Q) in free_freelQ_buffers() argument
1569 if (i != sge->jumbo_fl) { in free_freelQ_buffers()
1571 &buffers_in_use[sge->obj->ch_sm_index]); in free_freelQ_buffers()
1574 &buffers_in_use[sge->obj->ch_big_index]); in free_freelQ_buffers()
1602 free_tx_resources(pesge *sge) in free_tx_resources() argument
1608 struct cmdQ *Q = &sge->cmdQ[i]; in free_tx_resources()
1617 free_cmdQ_buffers(sge, Q, pending); in free_tx_resources()
1625 pe_os_free_contig(sge->obj, size, Q->cq_entries, in free_tx_resources()
1634 static inline unsigned int jumbo_payload_capacity(pesge *sge) in jumbo_payload_capacity() argument
1636 return (sge->freelQ[sge->jumbo_fl].fq_rx_buffer_size - in jumbo_payload_capacity()
1637 sizeof (struct cpl_rx_data) - sge->rx_pkt_pad - sge->rx_offset); in jumbo_payload_capacity()
1644 pesge *sge = adapter->sge; in t1_sge_set_ptimeout() local
1647 sge->ptimeout = max(val, 1); in t1_sge_set_ptimeout()
1654 pesge *sge = adapter->sge; in t1_sge_get_ptimeout() local
1656 return (is_T2(adapter) ? sge->ptimeout : 0); in t1_sge_get_ptimeout()
1660 sge_add_fake_arp(pesge *sge, void *bp) in sge_add_fake_arp() argument
1662 sge->pskb = bp; in sge_add_fake_arp()
1667 sge_kstat_setup(pesge *sge) in sge_kstat_setup() argument
1679 instance = ddi_get_instance(sge->obj->ch_dip); in sge_kstat_setup()
1779 ksp->ks_private = (void *)sge; in sge_kstat_setup()
1780 sge->ksp = ksp; in sge_kstat_setup()
1789 sge_kstat_remove(pesge *sge) in sge_kstat_remove() argument
1791 if (sge->ksp) in sge_kstat_remove()
1792 kstat_delete(sge->ksp); in sge_kstat_remove()
1798 pesge *sge; in sge_kstat_update() local
1803 sge = (pesge *)ksp->ks_private; in sge_kstat_update()
1804 statsp = (p_ch_stats_t)&sge->intr_cnt; in sge_kstat_update()