Lines Matching refs:enc
185 enc_softc_t *enc; member
413 ses_iter_init(enc_softc_t *enc, enc_cache_t *cache, struct ses_iterator *iter) in ses_iter_init() argument
415 iter->enc = enc; in ses_iter_init()
557 ses_cache_free_elm_addlstatus(enc_softc_t *enc, enc_cache_t *cache) in ses_cache_free_elm_addlstatus() argument
564 ENC_DLOG(enc, "%s: enter\n", __func__); in ses_cache_free_elm_addlstatus()
580 other_ses_cache = enc_other_cache(enc, cache)->private; in ses_cache_free_elm_addlstatus()
588 ses_cache_free_elm_descs(enc_softc_t *enc, enc_cache_t *cache) in ses_cache_free_elm_descs() argument
595 ENC_DLOG(enc, "%s: enter\n", __func__); in ses_cache_free_elm_descs()
610 other_ses_cache = enc_other_cache(enc, cache)->private; in ses_cache_free_elm_descs()
618 ses_cache_free_status(enc_softc_t *enc, enc_cache_t *cache) in ses_cache_free_status() argument
623 ENC_DLOG(enc, "%s: enter\n", __func__); in ses_cache_free_status()
628 other_ses_cache = enc_other_cache(enc, cache)->private; in ses_cache_free_status()
635 ses_cache_free_elm_map(enc_softc_t *enc, enc_cache_t *cache) in ses_cache_free_elm_map() argument
640 ENC_DLOG(enc, "%s: enter\n", __func__); in ses_cache_free_elm_map()
644 ses_cache_free_elm_descs(enc, cache); in ses_cache_free_elm_map()
645 ses_cache_free_elm_addlstatus(enc, cache); in ses_cache_free_elm_map()
653 ENC_DLOG(enc, "%s: exit\n", __func__); in ses_cache_free_elm_map()
657 ses_cache_free(enc_softc_t *enc, enc_cache_t *cache) in ses_cache_free() argument
662 ENC_DLOG(enc, "%s: enter\n", __func__); in ses_cache_free()
663 ses_cache_free_elm_addlstatus(enc, cache); in ses_cache_free()
664 ses_cache_free_status(enc, cache); in ses_cache_free()
665 ses_cache_free_elm_map(enc, cache); in ses_cache_free()
670 other_ses_cache = enc_other_cache(enc, cache)->private; in ses_cache_free()
683 ENC_DLOG(enc, "%s: exit\n", __func__); in ses_cache_free()
687 ses_cache_clone(enc_softc_t *enc, enc_cache_t *src, enc_cache_t *dst) in ses_cache_clone() argument
695 ses_cache_free(enc, dst); in ses_cache_clone()
815 ses_devids_iter(enc_softc_t *enc, enc_element_t *elm, in ses_devids_iter() argument
844 callback(enc, elm, devid, callback_arg); in ses_devids_iter()
873 ses_path_iter_devid_callback(enc_softc_t *enc, enc_element_t *elem, in ses_path_iter_devid_callback() argument
896 device_pattern->path_id = xpt_path_path_id(enc->periph->path); in ses_path_iter_devid_callback()
927 args->callback(enc, elem, path, args->callback_arg); in ses_path_iter_devid_callback()
947 ses_paths_iter(enc_softc_t *enc, enc_element_t *elm, in ses_paths_iter() argument
967 ses_devids_iter(enc, elm, ses_path_iter_devid_callback, in ses_paths_iter()
987 callback(enc, elm, path, callback_arg); in ses_paths_iter()
1006 ses_elmdevname_callback(enc_softc_t *enc, enc_element_t *elem, in ses_elmdevname_callback() argument
1034 ses_setphyspath_callback(enc_softc_t *enc, enc_element_t *elm, in ses_setphyspath_callback() argument
1082 ses_set_physpath(enc_softc_t *enc, enc_element_t *elm, in ses_set_physpath() argument
1106 xpt_setup_ccb(&cdai.ccb_h, enc->periph->path, CAM_PRIORITY_NORMAL); in ses_set_physpath()
1112 cam_periph_lock(enc->periph); in ses_set_physpath()
1116 cam_periph_unlock(enc->periph); in ses_set_physpath()
1153 ses_paths_iter(enc, elm, ses_setphyspath_callback, &args); in ses_set_physpath()
1201 ses_set_timed_completion(enc_softc_t *enc, uint8_t tc_en) in ses_set_timed_completion() argument
1210 periph = enc->periph; in ses_set_timed_completion()
1211 ses = enc->enc_private; in ses_set_timed_completion()
1230 ENC_VLOG(enc, "Timed Completion Unsupported\n"); in ses_set_timed_completion()
1253 ENC_VLOG(enc, "Timed Completion Set Failed\n"); in ses_set_timed_completion()
1259 ENC_LOG(enc, "Timed Completion Enabled\n"); in ses_set_timed_completion()
1262 ENC_LOG(enc, "Timed Completion Disabled\n"); in ses_set_timed_completion()
1282 ses_process_pages(enc_softc_t *enc, struct enc_fsm_state *state, in ses_process_pages() argument
1289 CAM_DEBUG(enc->periph->path, CAM_DEBUG_SUBTRACE, in ses_process_pages()
1291 ses = enc->enc_private; in ses_process_pages()
1299 ENC_VLOG(enc, "Unable to parse Diag Pages List Header\n"); in ses_process_pages()
1306 ENC_VLOG(enc, "Diag Pages List Too Long\n"); in ses_process_pages()
1309 ENC_DLOG(enc, "%s: page length %d, xfer_len %d\n", in ses_process_pages()
1321 ENC_DLOG(enc, "%s: exiting with err %d\n", __func__, err); in ses_process_pages()
1335 ses_process_config(enc_softc_t *enc, struct enc_fsm_state *state, in ses_process_config() argument
1359 CAM_DEBUG(enc->periph->path, CAM_DEBUG_SUBTRACE, in ses_process_config()
1361 enc_cache = &enc->enc_daemon_cache; in ses_process_config()
1371 ENC_VLOG(enc, "Unable to parse SES Config Header\n"); in ses_process_config()
1379 ENC_VLOG(enc, "Enclosure Config Page Too Long\n"); in ses_process_config()
1384 ENC_DLOG(enc, "%s: total page length %d, xfer_len %d\n", in ses_process_config()
1394 ses_cache_free(enc, enc_cache); in ses_process_config()
1395 ENC_VLOG(enc, "Generation Code 0x%x has %d SubEnclosures\n", in ses_process_config()
1425 ENC_VLOG(enc, "Enclosure %d Beyond End of " in ses_process_config()
1431 ENC_VLOG(enc, " SubEnclosure ID %d, %d Types With this ID, " in ses_process_config()
1435 ENC_VLOG(enc, "WWN: %jx\n", in ses_process_config()
1462 ENC_VLOG(enc, "Runt Enclosure Type Header %d\n", in ses_process_config()
1470 ENC_VLOG(enc, " Type Desc[%d]: Type 0x%x, MaxElt %d, In Subenc " in ses_process_config()
1487 ses_iter_init(enc, enc_cache, &iter); in ses_process_config()
1491 ENC_DLOG(enc, "%s: checking obj %d(%d,%d)\n", __func__, in ses_process_config()
1501 ENC_DLOG(enc, "%s: creating elmpriv %d(%d,%d) subenc %d " in ses_process_config()
1511 ses_cache_free(enc, enc_cache); in ses_process_config()
1513 ses_poll_status(enc); in ses_process_config()
1514 enc_update_request(enc, SES_PUBLISH_CACHE); in ses_process_config()
1516 ENC_DLOG(enc, "%s: exiting with err %d\n", __func__, err); in ses_process_config()
1530 ses_process_status(enc_softc_t *enc, struct enc_fsm_state *state, in ses_process_status() argument
1545 ses = enc->enc_private; in ses_process_status()
1546 enc_cache = &enc->enc_daemon_cache; in ses_process_status()
1550 ENC_DLOG(enc, "%s: enter (%p, %p, %d)\n", __func__, enc, buf, xfer_len); in ses_process_status()
1566 ENC_VLOG(enc, "Enclosure Status Page Too Long\n"); in ses_process_status()
1572 ENC_DLOG(enc, "Got Short Enclosure Status page\n"); in ses_process_status()
1574 ses_cache_free(enc, enc_cache); in ses_process_status()
1576 enc_update_request(enc, SES_PUBLISH_CACHE); in ses_process_status()
1583 ENC_VLOG(enc, "Enclosure Status Page Too Short\n"); in ses_process_status()
1588 ENC_DLOG(enc, "%s: Generation count change detected\n", in ses_process_status()
1590 enc_update_request(enc, SES_UPDATE_GETCONFIG); in ses_process_status()
1594 ses_cache_free_status(enc, enc_cache); in ses_process_status()
1605 ses_iter_init(enc, enc_cache, &iter); in ses_process_status()
1609 ENC_DLOG(enc, "%s: total page length %d, xfer_len %d\n", in ses_process_status()
1613 ENC_DLOG(enc, "%s: obj %d(%d,%d) off=0x%tx status=%jx\n", in ses_process_status()
1624 ENC_VLOG(enc, "Status page, length insufficient for " in ses_process_status()
1628 ENC_VLOG(enc, "Status page, exhausted objects before " in ses_process_status()
1630 enc_update_request(enc, SES_PUBLISH_CACHE); in ses_process_status()
1634 ENC_DLOG(enc, "%s: exiting with error %d\n", __func__, err); in ses_process_status()
1674 ses_typehasaddlstatus(enc_softc_t *enc, uint8_t typidx) in ses_typehasaddlstatus() argument
1679 enc_cache = &enc->enc_daemon_cache; in ses_typehasaddlstatus()
1715 ses_process_elm_addlstatus(enc_softc_t *enc, struct enc_fsm_state *state, in ses_process_elm_addlstatus() argument
1730 enc_cache = &enc->enc_daemon_cache; in ses_process_elm_addlstatus()
1739 ses_cache_free_elm_addlstatus(enc, enc_cache); in ses_process_elm_addlstatus()
1752 ENC_DLOG(enc, "Additional Element Status Page Length 0x%x\n", length); in ses_process_elm_addlstatus()
1755 ENC_VLOG(enc, "Runt Additional Element Status Page\n"); in ses_process_elm_addlstatus()
1759 ENC_VLOG(enc, "Additional Element Status Page Too Long\n"); in ses_process_elm_addlstatus()
1764 ENC_DLOG(enc, "%s: Generation count change detected\n", in ses_process_elm_addlstatus()
1766 enc_update_request(enc, SES_UPDATE_GETCONFIG); in ses_process_elm_addlstatus()
1771 ses_iter_init(enc, enc_cache, &iter); in ses_process_elm_addlstatus()
1784 status_type = ses_typehasaddlstatus(enc, iter.type_index); in ses_process_elm_addlstatus()
1805 ENC_VLOG(enc, "%s: provided %selement index " in ses_process_elm_addlstatus()
1816 ENC_VLOG(enc, "%s: provided %selement index " in ses_process_elm_addlstatus()
1822 if (ses_typehasaddlstatus(enc, titer.type_index) == in ses_process_elm_addlstatus()
1824 ENC_VLOG(enc, "%s: provided %selement index " in ses_process_elm_addlstatus()
1849 ENC_VLOG(enc, "%s: provided %s element" in ses_process_elm_addlstatus()
1858 ENC_DLOG(enc, "%s: global element index=%d, type index=%d " in ses_process_elm_addlstatus()
1870 ENC_VLOG(enc, "Element %d Beyond End " in ses_process_elm_addlstatus()
1893 ses_get_elm_addlstatus_fc(enc, enc_cache, in ses_process_elm_addlstatus()
1899 ses_get_elm_addlstatus_sas(enc, enc_cache, in ses_process_elm_addlstatus()
1906 ses_get_elm_addlstatus_ata(enc, enc_cache, in ses_process_elm_addlstatus()
1913 ENC_VLOG(enc, "Element %d: Unknown Additional Element " in ses_process_elm_addlstatus()
1924 ses_cache_free_elm_addlstatus(enc, enc_cache); in ses_process_elm_addlstatus()
1925 enc_update_request(enc, SES_PUBLISH_PHYSPATHS); in ses_process_elm_addlstatus()
1926 enc_update_request(enc, SES_PUBLISH_CACHE); in ses_process_elm_addlstatus()
1931 ses_process_control_request(enc_softc_t *enc, struct enc_fsm_state *state, in ses_process_control_request() argument
1936 ses = enc->enc_private; in ses_process_control_request()
1943 ses_poll_status(enc); in ses_process_control_request()
1948 ses_publish_physpaths(enc_softc_t *enc, struct enc_fsm_state *state, in ses_publish_physpaths() argument
1955 enc_cache = &enc->enc_daemon_cache; in ses_publish_physpaths()
1957 ses_iter_init(enc, enc_cache, &iter); in ses_publish_physpaths()
1965 if (ses_set_physpath(enc, element, &iter) == 0) in ses_publish_physpaths()
1966 ses_print_addl_data(enc, element); in ses_publish_physpaths()
1973 ses_publish_cache(enc_softc_t *enc, struct enc_fsm_state *state, in ses_publish_cache() argument
1977 sx_xlock(&enc->enc_cache_lock); in ses_publish_cache()
1978 ses_cache_clone(enc, /*src*/&enc->enc_daemon_cache, in ses_publish_cache()
1979 /*dst*/&enc->enc_cache); in ses_publish_cache()
1980 sx_xunlock(&enc->enc_cache_lock); in ses_publish_cache()
2024 ses_process_elm_descs(enc_softc_t *enc, struct enc_fsm_state *state, in ses_process_elm_descs() argument
2040 ses = enc->enc_private; in ses_process_elm_descs()
2041 enc_cache = &enc->enc_daemon_cache; in ses_process_elm_descs()
2050 ses_cache_free_elm_descs(enc, enc_cache); in ses_process_elm_descs()
2057 ENC_VLOG(enc, "Runt Element Descriptor Page\n"); in ses_process_elm_descs()
2061 ENC_VLOG(enc, "Element Descriptor Page Too Long\n"); in ses_process_elm_descs()
2066 ENC_VLOG(enc, "%s: Generation count change detected\n", in ses_process_elm_descs()
2068 enc_update_request(enc, SES_UPDATE_GETCONFIG); in ses_process_elm_descs()
2074 ses_iter_init(enc, enc_cache, &iter); in ses_process_elm_descs()
2078 ENC_VLOG(enc, "Element %d Descriptor Header Past " in ses_process_elm_descs()
2084 ENC_DLOG(enc, "%s: obj %d(%d,%d) length=%d off=%d\n", __func__, in ses_process_elm_descs()
2088 ENC_VLOG(enc, "Element%d Descriptor Past " in ses_process_elm_descs()
2109 enc_update_request(enc, SES_UPDATE_GETELMADDLSTATUS); in ses_process_elm_descs()
2111 enc_update_request(enc, SES_PUBLISH_CACHE); in ses_process_elm_descs()
2116 ses_fill_rcv_diag_io(enc_softc_t *enc, struct enc_fsm_state *state, in ses_fill_rcv_diag_io() argument
2120 if (enc->enc_type == ENC_SEMB_SES) { in ses_fill_rcv_diag_io()
2148 ses_encode(enc_softc_t *enc, uint8_t *buf, int amt, ses_control_request_t *req) in ses_encode() argument
2155 ses_iter_init(enc, &enc->enc_cache, &iter); in ses_encode()
2163 ENC_DLOG(enc, "Set EncStat %x\n", hdr->control_flags); in ses_encode()
2185 ENC_DLOG(enc, "Set Type 0x%x Obj 0x%x (offset %d) with %x %x %x %x\n", in ses_encode()
2194 ses_fill_control_request(enc_softc_t *enc, struct enc_fsm_state *state, in ses_fill_control_request() argument
2205 ses = enc->enc_private; in ses_fill_control_request()
2206 enc_cache = &enc->enc_daemon_cache; in ses_fill_control_request()
2231 req->result = ses_encode(enc, buf, plength, req); in ses_fill_control_request()
2243 if (enc->enc_type == ENC_SEMB_SES) { in ses_fill_control_request()
2260 ses_get_elm_addlstatus_fc(enc_softc_t *enc, enc_cache_t *enc_cache, in ses_get_elm_addlstatus_fc() argument
2263 ENC_VLOG(enc, "FC Device Support Stubbed in Additional Status Page\n"); in ses_get_elm_addlstatus_fc()
2403 ses_print_addl_data(enc_softc_t *enc, enc_element_t *obj) in ses_print_addl_data() argument
2420 ses_paths_iter(enc, obj, ses_elmdevname_callback, &name); in ses_print_addl_data()
2424 sbuf_printf(&sesname, "%s%d", enc->periph->periph_name, in ses_print_addl_data()
2425 enc->periph->unit_number); in ses_print_addl_data()
2488 ses_get_elm_addlstatus_sas_type0(enc_softc_t *enc, enc_cache_t *enc_cache, in ses_get_elm_addlstatus_sas_type0() argument
2520 ENC_VLOG(enc, "Element %d Device Phy List Beyond End Of Buffer\n", in ses_get_elm_addlstatus_sas_type0()
2547 ses_get_elm_addlstatus_sas_type1(enc_softc_t *enc, enc_cache_t *enc_cache, in ses_get_elm_addlstatus_sas_type1() argument
2575 ENC_VLOG(enc, "Element %d: Expander Phy List Beyond " in ses_get_elm_addlstatus_sas_type1()
2587 ENC_VLOG(enc, "Element %d: Port Phy List Beyond End " in ses_get_elm_addlstatus_sas_type1()
2614 ses_get_elm_addlstatus_sas(enc_softc_t *enc, enc_cache_t *enc_cache, in ses_get_elm_addlstatus_sas() argument
2639 ENC_VLOG(enc, "Element %d has Additional Status type 0, " in ses_get_elm_addlstatus_sas()
2645 err = ses_get_elm_addlstatus_sas_type0(enc, enc_cache, in ses_get_elm_addlstatus_sas()
2657 ENC_VLOG(enc, "Element %d has Additional Status type 1, " in ses_get_elm_addlstatus_sas()
2663 err = ses_get_elm_addlstatus_sas_type1(enc, enc_cache, buf, in ses_get_elm_addlstatus_sas()
2667 ENC_VLOG(enc, "Element %d of type 0x%x has Additional Status " in ses_get_elm_addlstatus_sas()
2692 ses_get_elm_addlstatus_ata(enc_softc_t *enc, enc_cache_t *enc_cache, in ses_get_elm_addlstatus_ata() argument
2710 ENC_VLOG(enc, "Element %d has Additional Status, " in ses_get_elm_addlstatus_ata()
2726 ses_softc_invalidate(enc_softc_t *enc) in ses_softc_invalidate() argument
2730 ses = enc->enc_private; in ses_softc_invalidate()
2735 ses_softc_cleanup(enc_softc_t *enc) in ses_softc_cleanup() argument
2738 ses_cache_free(enc, &enc->enc_cache); in ses_softc_cleanup()
2739 ses_cache_free(enc, &enc->enc_daemon_cache); in ses_softc_cleanup()
2740 ENC_FREE_AND_NULL(enc->enc_private); in ses_softc_cleanup()
2741 ENC_FREE_AND_NULL(enc->enc_cache.private); in ses_softc_cleanup()
2742 ENC_FREE_AND_NULL(enc->enc_daemon_cache.private); in ses_softc_cleanup()
2746 ses_init_enc(enc_softc_t *enc) in ses_init_enc() argument
2752 ses_set_enc_status(enc_softc_t *enc, uint8_t encstat, int slpflag) in ses_set_enc_status() argument
2757 ses = enc->enc_private; in ses_set_enc_status()
2762 enc_update_request(enc, SES_PROCESS_CONTROL_REQS); in ses_set_enc_status()
2763 cam_periph_sleep(enc->periph, &req, PUSER, "encstat", 0); in ses_set_enc_status()
2769 ses_get_elm_status(enc_softc_t *enc, encioc_elm_status_t *elms, int slpflag) in ses_get_elm_status() argument
2773 memcpy(elms->cstat, &enc->enc_cache.elm_map[i].encstat, 4); in ses_get_elm_status()
2778 ses_set_elm_status(enc_softc_t *enc, encioc_elm_status_t *elms, int slpflag) in ses_set_elm_status() argument
2787 ses = enc->enc_private; in ses_set_elm_status()
2792 enc_update_request(enc, SES_PROCESS_CONTROL_REQS); in ses_set_elm_status()
2793 cam_periph_sleep(enc->periph, &req, PUSER, "encstat", 0); in ses_set_elm_status()
2799 ses_get_elm_desc(enc_softc_t *enc, encioc_elm_desc_t *elmd) in ses_get_elm_desc() argument
2805 elmpriv = enc->enc_cache.elm_map[i].elm_private; in ses_get_elm_desc()
2827 ses_get_elm_devnames(enc_softc_t *enc, encioc_elm_devnames_t *elmdn) in ses_get_elm_devnames() argument
2836 cam_periph_unlock(enc->periph); in ses_get_elm_devnames()
2838 ses_paths_iter(enc, &enc->enc_cache.elm_map[elmdn->elm_idx], in ses_get_elm_devnames()
2845 cam_periph_lock(enc->periph); in ses_get_elm_devnames()
2862 ses_handle_string(enc_softc_t *enc, encioc_string_t *sstr, unsigned long ioc) in ses_handle_string() argument
2876 enc_cache = &enc->enc_daemon_cache; in ses_handle_string()
2947 ret = enc_runcmd(enc, cdb, 6, buf, &amt); in ses_handle_string()
2959 ses_poll_status(enc_softc_t *enc) in ses_poll_status() argument
2963 ses = enc->enc_private; in ses_poll_status()
2964 enc_update_request(enc, SES_UPDATE_GETSTATUS); in ses_poll_status()
2966 enc_update_request(enc, SES_UPDATE_GETELMDESCS); in ses_poll_status()
2968 enc_update_request(enc, SES_UPDATE_GETELMADDLSTATUS); in ses_poll_status()
2978 ses_device_found(enc_softc_t *enc) in ses_device_found() argument
2980 ses_poll_status(enc); in ses_device_found()
2981 enc_update_request(enc, SES_PUBLISH_PHYSPATHS); in ses_device_found()
3008 ses_softc_init(enc_softc_t *enc) in ses_softc_init() argument
3012 CAM_DEBUG(enc->periph->path, CAM_DEBUG_SUBTRACE, in ses_softc_init()
3013 ("entering enc_softc_init(%p)\n", enc)); in ses_softc_init()
3015 enc->enc_vec = ses_enc_vec; in ses_softc_init()
3016 enc->enc_fsm_states = enc_fsm_states; in ses_softc_init()
3018 if (enc->enc_private == NULL) in ses_softc_init()
3019 enc->enc_private = ENC_MALLOCZ(sizeof(ses_softc_t)); in ses_softc_init()
3020 if (enc->enc_cache.private == NULL) in ses_softc_init()
3021 enc->enc_cache.private = ENC_MALLOCZ(sizeof(ses_cache_t)); in ses_softc_init()
3022 if (enc->enc_daemon_cache.private == NULL) in ses_softc_init()
3023 enc->enc_daemon_cache.private = in ses_softc_init()
3026 if (enc->enc_private == NULL in ses_softc_init()
3027 || enc->enc_cache.private == NULL in ses_softc_init()
3028 || enc->enc_daemon_cache.private == NULL) { in ses_softc_init()
3029 ENC_FREE_AND_NULL(enc->enc_private); in ses_softc_init()
3030 ENC_FREE_AND_NULL(enc->enc_cache.private); in ses_softc_init()
3031 ENC_FREE_AND_NULL(enc->enc_daemon_cache.private); in ses_softc_init()
3035 ses_softc = enc->enc_private; in ses_softc_init()
3039 enc_update_request(enc, SES_UPDATE_PAGES); in ses_softc_init()
3042 if (0) (void) ses_set_timed_completion(enc, 1); in ses_softc_init()