int beiscsi_set_param(struct iscsi_cls_conn *cls_conn, enum iscsi_param param, char *buf, int buflen) { struct iscsi_conn *conn = cls_conn->dd_data; struct iscsi_session *session = conn->session; int ret; SE_DEBUG(DBG_LVL_8, "In beiscsi_conn_set_param, param= %d\n", param); ret = iscsi2_set_param(cls_conn, param, buf, buflen); if (ret) return ret; /* * If userspace tried to set the value to higher than we can * support override here. */ switch (param) { case ISCSI_PARAM_FIRST_BURST: if (session->first_burst > 8192) session->first_burst = 8192; break; case ISCSI_PARAM_MAX_RECV_DLENGTH: if (conn->max_recv_dlength > 65536) conn->max_recv_dlength = 65536; break; case ISCSI_PARAM_MAX_BURST: if (session->max_burst > 262144) session->max_burst = 262144; break; default: return 0; } return 0; }
static int iscsi_iser_set_param(struct iscsi_cls_conn *cls_conn, enum iscsi_param param, char *buf, int buflen) { int value; switch (param) { case ISCSI_PARAM_MAX_RECV_DLENGTH: /* TBD */ break; case ISCSI_PARAM_HDRDGST_EN: sscanf(buf, "%d", &value); if (value) { printk(KERN_ERR "DataDigest wasn't negotiated to None"); return -EPROTO; } break; case ISCSI_PARAM_DATADGST_EN: sscanf(buf, "%d", &value); if (value) { printk(KERN_ERR "DataDigest wasn't negotiated to None"); return -EPROTO; } break; case ISCSI_PARAM_IFMARKER_EN: sscanf(buf, "%d", &value); if (value) { printk(KERN_ERR "IFMarker wasn't negotiated to No"); return -EPROTO; } break; case ISCSI_PARAM_OFMARKER_EN: sscanf(buf, "%d", &value); if (value) { printk(KERN_ERR "OFMarker wasn't negotiated to No"); return -EPROTO; } break; default: return iscsi2_set_param(cls_conn, param, buf, buflen); } return 0; }