Lines Matching defs:rnode
2415 hw->callback.rnode = func;
2416 hw->args.rnode = arg;
2939 * @param rnode Allocated remote node object to initialize.
2946 ocs_hw_node_alloc(ocs_hw_t *hw, ocs_remote_node_t *rnode, uint32_t fc_addr,
2950 if (UINT32_MAX != rnode->indicator) {
2952 fc_addr, rnode->indicator);
2965 rnode->sport = NULL;
2967 if (sli_resource_alloc(&hw->sli, SLI_RSRC_FCOE_RPI, &rnode->indicator, &rnode->index)) {
2973 rnode->fc_id = fc_addr;
2974 rnode->sport = sport;
2984 * @param rnode Allocated remote node object to initialize.
2990 ocs_hw_node_attach(ocs_hw_t *hw, ocs_remote_node_t *rnode, ocs_dma_t *sparms)
2996 if (!hw || !rnode || !sparms) {
2997 ocs_log_err(NULL, "bad parameter(s) hw=%p rnode=%p sparms=%p\n",
2998 hw, rnode, sparms);
3020 if (rnode->index == UINT32_MAX) {
3021 ocs_log_err(NULL, "bad parameter rnode->index invalid\n");
3025 count = ocs_atomic_add_return(&hw->rpi_ref[rnode->index].rpi_count, 1);
3036 rnode->node_group = TRUE;
3037 rnode->attached = ocs_atomic_read(&hw->rpi_ref[rnode->index].rpi_attached);
3038 rc = rnode->attached ? OCS_HW_RTN_SUCCESS_SYNC : OCS_HW_RTN_SUCCESS;
3041 rnode->node_group = FALSE;
3044 if (sli_cmd_reg_rpi(&hw->sli, buf, SLI4_BMBX_SIZE, rnode->fc_id,
3045 rnode->indicator, rnode->sport->indicator,
3048 ocs_hw_cb_node_attach, rnode);
3054 ocs_atomic_sub_return(&hw->rpi_ref[rnode->index].rpi_count, 1);
3068 * @param rnode Remote node object to free.
3073 ocs_hw_node_free_resources(ocs_hw_t *hw, ocs_remote_node_t *rnode)
3077 if (!hw || !rnode) {
3078 ocs_log_err(NULL, "bad parameter(s) hw=%p rnode=%p\n",
3079 hw, rnode);
3083 if (rnode->sport) {
3084 if (!rnode->attached) {
3085 if (rnode->indicator != UINT32_MAX) {
3086 if (sli_resource_free(&hw->sli, SLI_RSRC_FCOE_RPI, rnode->indicator)) {
3088 rnode->indicator, rnode->fc_id);
3091 rnode->node_group = FALSE;
3092 rnode->indicator = UINT32_MAX;
3093 rnode->index = UINT32_MAX;
3094 rnode->free_group = FALSE;
3098 ocs_log_err(hw->os, "Error: rnode is still attached\n");
3111 * @param rnode Remote node object to free.
3116 ocs_hw_node_detach(ocs_hw_t *hw, ocs_remote_node_t *rnode)
3122 if (!hw || !rnode) {
3123 ocs_log_err(NULL, "bad parameter(s) hw=%p rnode=%p\n",
3124 hw, rnode);
3136 index = rnode->index;
3138 if (rnode->sport) {
3142 if (!rnode->attached) {
3158 rnode->node_group = FALSE;
3159 rnode->free_group = TRUE;
3165 fc_id = rnode->fc_id & 0x00ffffff;
3170 if (sli_cmd_unreg_rpi(&hw->sli, buf, SLI4_BMBX_SIZE, rnode->indicator,
3172 rc = ocs_hw_command(hw, buf, OCS_CMD_NOWAIT, ocs_hw_cb_node_free, rnode);
3254 ocs_hw_node_group_attach(ocs_hw_t *hw, ocs_remote_node_group_t *ngroup, ocs_remote_node_t *rnode)
3257 if (!hw || !ngroup || !rnode) {
3258 ocs_log_err(NULL, "bad parameter hw=%p ngroup=%p rnode=%p\n",
3259 hw, ngroup, rnode);
3263 if (rnode->attached) {
3265 rnode->indicator, rnode->fc_id);
3269 if (sli_resource_free(&hw->sli, SLI_RSRC_FCOE_RPI, rnode->indicator)) {
3271 rnode->indicator);
3275 rnode->indicator = ngroup->indicator;
3276 rnode->index = ngroup->index;
3335 io->rnode = NULL;
3761 io->sec_iparam.fcp_tgt.ox_id, io->rnode->indicator, io->rnode,
3772 io->sec_iparam.fcp_tgt.ox_id, io->rnode->indicator, io->rnode,
3829 * @param rnode Destination of data (that is, a remote node).
3839 ocs_remote_node_t *rnode, ocs_hw_io_param_t *iparam,
3846 if (!hw || !io || !rnode || !iparam) {
3847 ocs_log_err(NULL, "bad parm hw=%p io=%p send=%p receive=%p rnode=%p iparam=%p\n",
3848 hw, io, send, receive, rnode, iparam);
3861 io->rnode = rnode;
3893 iparam->els.timeout, io->indicator, io->reqtag, SLI4_CQ_DEFAULT, rnode)) {
3902 rnode, local_flags, UINT32_MAX)) {
3911 rnode, local_flags, iparam->els_sid.s_id)) {
3919 io->reqtag, SLI4_CQ_DEFAULT, rnode, iparam->fc_ct.r_ctl,
3928 io->reqtag, rnode, iparam->fc_ct_rsp.r_ctl,
3953 rnode, UINT32_MAX)) {
3972 rnode, iparam->bls_sid.s_id)) {
3981 SLI4_CQ_DEFAULT, rnode,
4038 * @param rnode Destination of data (that is, a remote node).
4050 uint32_t len, ocs_hw_io_param_t *iparam, ocs_remote_node_t *rnode,
4060 if (!hw || !io || !rnode || !iparam) {
4061 ocs_log_err(NULL, "bad parm hw=%p io=%p iparam=%p rnode=%p\n",
4062 hw, io, iparam, rnode);
4071 rpi = rnode->indicator;
4081 io->rnode = rnode;
4106 io->indicator, io->reqtag, SLI4_CQ_DEFAULT, rpi, rnode,
4122 SLI4_CQ_DEFAULT, rpi, rnode,
4137 rpi, rnode, timeout)) {
4219 iparam->fcp_tgt.ox_id, rpi, rnode,
4230 iparam->fcp_tgt.ox_id, rpi, rnode,
4253 iparam->fcp_tgt.ox_id, rpi, rnode,
4289 rpi, rnode,
8795 done(io, io->rnode, len, status, ext, arg);
8876 done(io, io->rnode, len, status, ext, arg);
8885 done(io, io->rnode, len, status, ext, arg);
8958 done(io, io->rnode, len, status, ext, arg);
9385 ocs_remote_node_t *rnode = arg;
9392 ocs_atomic_sub_return(&hw->rpi_ref[rnode->index].rpi_count, 1);
9393 rnode->attached = FALSE;
9394 ocs_atomic_set(&hw->rpi_ref[rnode->index].rpi_attached, 0);
9397 rnode->attached = TRUE;
9398 ocs_atomic_set(&hw->rpi_ref[rnode->index].rpi_attached, 1);
9402 if (hw->callback.rnode != NULL) {
9403 hw->callback.rnode(hw->args.rnode, evt, rnode);
9413 ocs_remote_node_t *rnode = arg;
9428 if (!rnode->attached || ((sli_get_hlm(&hw->sli) == TRUE) && !rnode->node_group) ||
9435 rnode->node_group = FALSE;
9436 rnode->attached = FALSE;
9438 if (ocs_atomic_read(&hw->rpi_ref[rnode->index].rpi_count) == 0) {
9439 ocs_atomic_set(&hw->rpi_ref[rnode->index].rpi_attached, 0);
9445 if (hw->callback.rnode != NULL) {
9446 hw->callback.rnode(hw->args.rnode, evt, rnode);
9480 if (hw->callback.rnode != NULL) {
9481 hw->callback.rnode(hw->args.rnode, evt, NULL);
9770 done(io, io->rnode, 0, SLI4_FC_WCQE_STATUS_SHUTDOWN, 0, arg);
9779 abort_done(io, io->rnode, 0, SLI4_FC_WCQE_STATUS_SHUTDOWN, 0, abort_arg);
12276 * <li>rnode – This function is called for remote node events, such as attach status
12654 ocs_log_debug(hw->os, "HW Workaround: use unreg'd RPI if rnode->indicator == 0xFFFF\n");