cn_info
(uintptr_t)hdl.cn_info.cn_type_str) == -1) {
(uintptr_t)hdl.cn_info.cn_name) == -1) {
ddihp_get_cn_state(hdl.cn_info.cn_state), cn_type, cn_name);
hdl.cn_info.cn_type != DDI_HP_CN_TYPE_VIRTUAL_PORT) {
(uintptr_t)hdl.cn_info.cn_type_str) == -1) {
(uintptr_t)hdl.cn_info.cn_name) == -1) {
hdlp, ddihp_get_cn_state(hdl.cn_info.cn_state),
cn_info, /* info */
static int cn_info(dev_info_t *, ddi_info_cmd_t, void *, void **);
me->hp_connection = (int)hp_hdl->cn_info.cn_num;
me->hp_depends_on = (int)hp_hdl->cn_info.cn_num_dpd_on;
me->hp_state = (int)hp_hdl->cn_info.cn_state;
me->hp_type = (int)hp_hdl->cn_info.cn_type;
me->hp_last_change = (uint32_t)hp_hdl->cn_info.cn_last_change;
hp->hp_child = hp_hdl->cn_info.cn_child;
if (hp_hdl->cn_info.cn_name) {
size = strlen(hp_hdl->cn_info.cn_name) + 1;
hp_hdl->cn_info.cn_name);
if (hp_hdl->cn_info.cn_type_str) {
size = strlen(hp_hdl->cn_info.cn_type_str) + 1;
hp_hdl->cn_info.cn_type_str);
pcie_hp_create_port_name_num(dev_info_t *dip, ddi_hp_cn_info_t *cn_info)
ddi_hp_cn_info_t *cn_info);
cn_info->cn_name = (char *)kmem_zalloc(name_len, KM_SLEEP);
(void) snprintf(cn_info->cn_name, name_len, "pci.%x,%x",
cn_info->cn_num = (dev_num << 8) | func_num;
cn_info->cn_num_dpd_on = slot ?
ddi_hp_cn_info_t *cn_info)
cn_info->cn_state = DDI_HP_CN_STATE_PRESENT;
cn_info->cn_state = DDI_HP_CN_STATE_EMPTY;
cn_info->cn_name = ddi_strdup(cn_name, KM_SLEEP);
cn_info->cn_num = (dev_num << 8) | func_num;
cn_info->cn_num_dpd_on = slot->hs_info.cn_num;
cn_info->cn_num_dpd_on = DDI_HP_CN_NUM_NONE;
ddi_hp_cn_info_t *cn_info;
cn_info = kmem_zalloc(sizeof (ddi_hp_cn_info_t), KM_SLEEP);
ret = pcie_hp_create_port_name_num(dip, cn_info);
ret = pcie_hp_setup_port_name_num(pdip, cn_name, cn_info);
kmem_free(cn_info, sizeof (ddi_hp_cn_info_t));
cn_info->cn_child = dip;
cn_info->cn_type = DDI_HP_CN_TYPE_VIRTUAL_PORT;
cn_info->cn_type_str = DDI_HP_CN_TYPE_STR_PORT;
ret = ndi_hp_register(pdip, cn_info);
kmem_free(cn_info->cn_name, strlen(cn_info->cn_name) + 1);
kmem_free(cn_info, sizeof (ddi_hp_cn_info_t));
if (online && hdlp->cn_info.cn_state < DDI_HP_CN_STATE_ENABLED) {
if (h->cn_info.cn_type != DDI_HP_CN_TYPE_VIRTUAL_PORT)
if (h->cn_info.cn_num_dpd_on !=
hdlp->cn_info.cn_num)
cdip = h->cn_info.cn_child;
hdlp->cn_info.cn_name);
hdlp->cn_info.cn_name);
ddi_hp_cn_state_t curr_state = hdlp->cn_info.cn_state;
curr_state = hdlp->cn_info.cn_state;
hdlp->cn_info.cn_state =
hdlp->cn_info.cn_state =
ASSERT(hdlp->cn_info.cn_child == NULL);
hdlp->cn_info.cn_child = cdip;
cdip = hdlp->cn_info.cn_child;
hdlp->cn_info.cn_state =
(void *)cdip, hdlp->cn_info.cn_name));
curr_state = hdlp->cn_info.cn_state;
curr_state = hdlp->cn_info.cn_state;
hdlp->cn_info.cn_state =
hdlp->cn_info.cn_state =
cdip = hdlp->cn_info.cn_child;
hdlp->cn_info.cn_state =
curr_state = hdlp->cn_info.cn_state;
hdlp->cn_info.cn_last_change = (time_t)-1;
hdlp->cn_info.cn_last_change = (time32_t)time;
(void *)hdlp, hdlp->cn_info.cn_state, new_state));
if (new_state != hdlp->cn_info.cn_state) {
hdlp->cn_info.cn_state = new_state;
if (hdlp->cn_info.cn_state > DDI_HP_CN_STATE_OFFLINE) {
(void *)dip, (void *)hdlp, hdlp->cn_info.cn_state));
kmem_free(hdlp->cn_info.cn_name, strlen(hdlp->cn_info.cn_name) + 1);
"current cn_name: %s", hdlp->cn_info.cn_name));
if (strcmp(cn_name, hdlp->cn_info.cn_name) == 0) {
hdlp->cn_info.cn_state;
dip, hdlp->cn_info.cn_name, op, arg, result);
"hdlp=%p arg=%p\n", (void *)dip, hdlp->cn_info.cn_name,
hdlp->cn_info.cn_state, *(ddi_hp_cn_state_t *)result, rv));
state = hdlp->cn_info.cn_state;
if (hdlp->cn_info.cn_child == NULL) {
switch (i_ddi_node_state(hdlp->cn_info.cn_child)) {
ddi_get_devstate(hdlp->cn_info.cn_child) !=
ddi_hp_cn_state_t curr_state = hdlp->cn_info.cn_state;
if (curr_state != hdlp->cn_info.cn_state) {
*((ddi_hp_cn_state_t *)result) = hdlp->cn_info.cn_state;
if (hdlp->cn_info.cn_state != DDI_HP_CN_STATE_PORT_EMPTY) {
hdlp->cn_info.cn_name);
strlen(hdlp->cn_info.cn_name) + 1;
cn_path, hdlp->cn_info.cn_name);
(void) strcat(ap_id, hdlp->cn_info.cn_name);
ddi_hp_cn_state_t curr_state = hdlp->cn_info.cn_state;
hdlp->cn_info.cn_name);
dip, hdlp->cn_info.cn_name, DDI_HPOP_CN_UNPROBE,
hdlp->cn_info.cn_name);
hdlp->cn_info.cn_name));
ddi_hp_cn_state_t curr_state = hdlp->cn_info.cn_state;
hdlp->cn_info.cn_state = new_state;
if (curr_state != hdlp->cn_info.cn_state) {
dip, hdlp->cn_info.cn_name, DDI_HPOP_CN_PROBE, NULL, NULL);
dip, hdlp->cn_info.cn_name, DDI_HPOP_CN_CHANGE_STATE,
if (result_state && result_state != hdlp->cn_info.cn_state) {
hdlp->cn_info.cn_state = result_state;
hdlp->cn_info.cn_name);
hdlp->cn_info.cn_name));
bcopy(info_p, &(hdlp->cn_info), sizeof (*info_p));
hdlp->cn_info.cn_name = ddi_strdup(info_p->cn_name, KM_SLEEP);
kmem_free(hdlp->cn_info.cn_name, strlen(hdlp->cn_info.cn_name) + 1);
(void *)dip, curr->cn_info.cn_name));
switch ((*f)(&(curr->cn_info), arg)) {
if (hdlp->cn_info.cn_state != target_state) {
if (hdlp->cn_info.cn_child == dip)
hdlp->cn_info.cn_child = NULL;
(hdlp->cn_info.cn_type == DDI_HP_CN_TYPE_VIRTUAL_PORT)
ddi_hp_cn_info_t cn_info; /* Connection info */