int be2iscsi_iface_set_param(struct Scsi_Host *shost, void *data, uint32_t dt_len) { struct iscsi_iface_param_info *iface_param = NULL; struct beiscsi_hba *phba = iscsi_host_priv(shost); struct nlattr *attrib; uint32_t rm_len = dt_len; int ret = 0 ; if (phba->state & BE_ADAPTER_PCI_ERR) { beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG, "BS_%d : In PCI_ERROR Recovery\n"); return -EBUSY; } nla_for_each_attr(attrib, data, dt_len, rm_len) { iface_param = nla_data(attrib); if (iface_param->param_type != ISCSI_NET_PARAM) continue; /* * BE2ISCSI only supports 1 interface */ if (iface_param->iface_num) { beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG, "BS_%d : Invalid iface_num %d." "Only iface_num 0 is supported.\n", iface_param->iface_num); return -EINVAL; } switch (iface_param->iface_type) { case ISCSI_IFACE_TYPE_IPV4: ret = beiscsi_set_ipv4(shost, iface_param, data, dt_len); break; case ISCSI_IFACE_TYPE_IPV6: ret = beiscsi_set_ipv6(shost, iface_param, data, dt_len); break; default: beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_CONFIG, "BS_%d : Invalid iface type :%d passed\n", iface_param->iface_type); break; } if (ret) return ret; }
int be2iscsi_iface_set_param(struct Scsi_Host *shost, void *data, uint32_t dt_len) { struct iscsi_iface_param_info *iface_param = NULL; struct nlattr *attrib; uint32_t rm_len = dt_len; int ret = 0 ; nla_for_each_attr(attrib, data, dt_len, rm_len) { iface_param = nla_data(attrib); if (iface_param->param_type != ISCSI_NET_PARAM) continue; /* * BE2ISCSI only supports 1 interface */ if (iface_param->iface_num) { shost_printk(KERN_ERR, shost, "Invalid iface_num %d." "Only iface_num 0 is supported.\n", iface_param->iface_num); return -EINVAL; } switch (iface_param->iface_type) { case ISCSI_IFACE_TYPE_IPV4: ret = beiscsi_set_ipv4(shost, iface_param, data, dt_len); break; case ISCSI_IFACE_TYPE_IPV6: ret = beiscsi_set_ipv6(shost, iface_param, data, dt_len); break; default: shost_printk(KERN_ERR, shost, "Invalid iface type :%d passed\n", iface_param->iface_type); break; } if (ret) return ret; }