Lines Matching refs:ndlp

39 emlxs_node_close(emlxs_port_t *port, NODELIST *ndlp, uint32_t channelno,
53 if (!ndlp || !ndlp->nlp_active) {
71 ndlp->nlp_Xri = 0;
75 if (ndlp->nlp_flag[channelno] & NLP_CLOSED) {
76 if (ndlp->nlp_flag[channelno] & NLP_OFFLINE) {
82 ndlp->nlp_tics[channelno] = hba->timer_tics + timeout;
83 ndlp->nlp_flag[channelno] |= NLP_OFFLINE;
88 ndlp, ndlp->nlp_DID, channelno, timeout);
91 ndlp->nlp_tics[channelno] = hba->timer_tics + timeout;
96 ndlp, ndlp->nlp_DID, channelno, timeout);
105 ndlp->nlp_flag[channelno] |= NLP_CLOSED;
108 ndlp->nlp_tics[channelno] = hba->timer_tics + timeout;
109 ndlp->nlp_flag[channelno] |= NLP_OFFLINE;
113 ndlp, ndlp->nlp_DID, channelno, timeout);
116 ndlp->nlp_tics[channelno] = hba->timer_tics + timeout;
120 ndlp, ndlp->nlp_DID, channelno, timeout);
124 ndlp, ndlp->nlp_DID, channelno);
129 * ndlp->nlp_next[] and cp->nodeq list have to be updated
132 if (ndlp->nlp_next[channelno]) {
137 if (cp->nodeq.q_first == (void *)ndlp &&
138 cp->nodeq.q_last == (void *)ndlp) {
142 } else if (cp->nodeq.q_first == (void *)ndlp) {
143 cp->nodeq.q_first = ndlp->nlp_next[channelno];
150 prev = ndlp;
151 while (prev->nlp_next[channelno] != ndlp) {
155 prev->nlp_next[channelno] = ndlp->nlp_next[channelno];
157 if (cp->nodeq.q_last == (void *)ndlp) {
165 ndlp->nlp_next[channelno] = NULL;
177 emlxs_node_timeout(emlxs_port_t *port, NODELIST *ndlp, uint32_t channelno)
185 if (!ndlp || !ndlp->nlp_active) {
191 if (!(ndlp->nlp_flag[channelno] & NLP_OFFLINE)) {
195 "node=%p did=%06x channel=%d Opening.", ndlp, ndlp->nlp_DID,
198 emlxs_node_open(port, ndlp, channelno);
205 ndlp->nlp_tics[channelno] = 0;
210 "node=%p did=%06x channel=%d. Flushing.", ndlp, ndlp->nlp_DID,
214 (void) emlxs_tx_node_flush(port, ndlp, &hba->chan[channelno], 0, 0);
217 (void) emlxs_chipq_node_flush(port, &hba->chan[channelno], ndlp, 0);
225 emlxs_node_open(emlxs_port_t *port, NODELIST *ndlp, uint32_t channelno)
239 if (!ndlp || !ndlp->nlp_active) {
246 if (!(ndlp->nlp_flag[channelno] & NLP_CLOSED)) {
253 ndlp->nlp_flag[channelno] &= ~(NLP_CLOSED|NLP_OFFLINE);
256 ndlp->nlp_tics[channelno] = 0;
262 if ((ndlp->nlp_ptx[channelno].q_first ||
263 ndlp->nlp_tx[channelno].q_first) && !ndlp->nlp_next[channelno]) {
269 (uint8_t *)ndlp;
270 ndlp->nlp_next[channelno] = cp->nodeq.q_first;
274 if (!ndlp->nlp_base) {
275 cp->nodeq.q_last = (uint8_t *)ndlp;
279 cp->nodeq.q_first = (uint8_t *)ndlp;
284 cp->nodeq.q_first = (uint8_t *)ndlp;
285 cp->nodeq.q_last = (uint8_t *)ndlp;
286 ndlp->nlp_next[channelno] = ndlp;
294 "node=%p did=%06x rpi=%d channel=%d", ndlp, ndlp->nlp_DID,
295 ndlp->nlp_Rpi, channelno);
359 emlxs_node_close(port, ndlp, channelno, 5);
378 emlxs_node_match_did(emlxs_port_t *port, NODELIST *ndlp, uint32_t did)
384 if (ndlp->nlp_DID == did)
396 odid.un.word = ndlp->nlp_DID;
400 ndid.un.word = ndlp->nlp_DID;
408 ndid.un.word = ndlp->nlp_DID;
411 odid.un.word = ndlp->nlp_DID;
713 NODELIST *ndlp;
721 ndlp = port->node_table[i];
723 while (ndlp != NULL) {
724 next = ndlp->nlp_list_next;
725 ndlp->nlp_list_next = NULL;
726 ndlp->nlp_list_prev = NULL;
727 ndlp->nlp_active = 0;
733 wwn = (uint8_t *)&ndlp->nlp_portname;
737 "count=%d", ndlp->nlp_DID, ndlp->nlp_Rpi, wwn[0],
741 (void) emlxs_tx_node_flush(port, ndlp, 0, 0, 0);
744 if (ndlp->rpip) {
745 rpip = ndlp->rpip;
747 ndlp->rpip = NULL;
753 emlxs_mem_put(hba, MEM_NLP, (void *)ndlp);
755 ndlp = next;
781 NODELIST *ndlp, *ndlp_wwn;
788 ndlp = emlxs_node_find_did(port, did, 0);
792 if (ndlp_wwn && (ndlp != ndlp_wwn)) {
798 if (ndlp) {
799 ndlp->nlp_Rpi = (uint16_t)rpi;
800 ndlp->nlp_DID = did;
802 bcopy((uint8_t *)sp, (uint8_t *)&ndlp->sparm,
806 (uint8_t *)&ndlp->nlp_nodename,
810 (uint8_t *)&ndlp->nlp_portname,
818 rpip->node = ndlp;
819 ndlp->rpip = rpip;
821 ndlp->rpip = NULL;
829 ndlp->rpip = NULL;
832 wwn = (uint8_t *)&ndlp->nlp_portname;
836 ndlp, ndlp->nlp_DID, ndlp->nlp_Rpi, wwn[0],
843 ndlp = (NODELIST *)emlxs_mem_get(hba, MEM_NLP);
845 if (ndlp) {
846 ndlp->nlp_Rpi = (uint16_t)rpi;
847 ndlp->nlp_DID = did;
849 bcopy((uint8_t *)sp, (uint8_t *)&ndlp->sparm,
853 (uint8_t *)&ndlp->nlp_nodename,
857 (uint8_t *)&ndlp->nlp_portname,
860 ndlp->nlp_active = 1;
861 ndlp->nlp_flag[hba->channel_ct] |= NLP_CLOSED;
862 ndlp->nlp_flag[hba->channel_els] |= NLP_CLOSED;
863 ndlp->nlp_flag[hba->channel_fcp] |= NLP_CLOSED;
864 ndlp->nlp_flag[hba->channel_ip] |= NLP_CLOSED;
871 rpip->node = ndlp;
872 ndlp->rpip = rpip;
874 ndlp->rpip = NULL;
882 ndlp->rpip = NULL;
886 emlxs_node_throttle_set(port, ndlp);
890 emlxs_node_add(port, ndlp);
917 ndlp->nlp_fcp_info |= NLP_EMLX_VPORT;
922 emlxs_node_open(port, ndlp, hba->channel_ct);
923 emlxs_node_open(port, ndlp, hba->channel_els);
924 emlxs_node_open(port, ndlp, hba->channel_ip);
925 emlxs_node_open(port, ndlp, hba->channel_fcp);
927 EMLXS_SET_DFC_STATE(ndlp, NODE_LOGIN);
929 return (ndlp);
936 emlxs_node_add(emlxs_port_t *port, NODELIST *ndlp)
942 hash = EMLXS_DID_HASH(ndlp->nlp_DID);
948 port->node_table[hash] = ndlp;
950 ndlp->nlp_list_next = NULL;
952 ndlp->nlp_list_next = np;
956 wwn = (uint8_t *)&ndlp->nlp_portname;
959 "count=%d", ndlp, ndlp->nlp_DID, ndlp->nlp_Rpi, wwn[0], wwn[1],
968 emlxs_node_rm(emlxs_port_t *port, NODELIST *ndlp)
978 hash = EMLXS_DID_HASH(ndlp->nlp_DID);
982 if (np->nlp_DID == ndlp->nlp_DID) {
993 wwn = (uint8_t *)&ndlp->nlp_portname;
997 "count=%d", ndlp->nlp_DID, ndlp->nlp_Rpi, wwn[0],
1001 (void) emlxs_tx_node_flush(port, ndlp, 0, 1, 0);
1003 ndlp->nlp_active = 0;
1006 if (ndlp->rpip) {
1007 rpip = ndlp->rpip;
1009 ndlp->rpip = NULL;
1015 emlxs_mem_put(hba, MEM_NLP, (void *)ndlp);
1030 emlxs_node_throttle_set(emlxs_port_t *port, NODELIST *ndlp)
1039 throttle = (ndlp->nlp_fcp_info & NLP_FCP_TGT_DEVICE)?
1045 (uint8_t *)&ndlp->nlp_portname));
1053 (uint8_t *)&ndlp->nlp_portname));
1061 ndlp->io_throttle = throttle;