Skip to content

Commit 8cd68b8

Browse files
committed
ioctl: add temperature threshold TMPSEL and THSEL parameters to get
Those required to get the feature temperature values. Signed-off-by: Tokunori Ikegami <[email protected]>
1 parent 2e24266 commit 8cd68b8

4 files changed

Lines changed: 25 additions & 7 deletions

File tree

src/nvme/ioctl.c

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1073,10 +1073,24 @@ int nvme_get_features_lba_range2(int fd, enum nvme_get_features_sel sel,
10731073
return nvme_get_features(&args);
10741074
}
10751075

1076-
int nvme_get_features_temp_thresh(int fd, enum nvme_get_features_sel sel,
1077-
__u32 *result)
1076+
int nvme_get_features_temp_thresh(int fd, enum nvme_get_features_sel sel, __u8 tmpsel,
1077+
enum nvme_feat_tmpthresh_thsel thsel, __u32 *result)
10781078
{
1079-
return __nvme_get_features(fd, NVME_FEAT_FID_TEMP_THRESH, sel, result);
1079+
struct nvme_get_features_args args = {
1080+
.args_size = sizeof(args),
1081+
.fd = fd,
1082+
.fid = NVME_FEAT_FID_TEMP_THRESH,
1083+
.nsid = NVME_NSID_NONE,
1084+
.sel = sel,
1085+
.cdw11 = NVME_SET(tmpsel, FEAT_TT_TMPSEL) | NVME_SET(thsel, FEAT_TT_THSEL),
1086+
.uuidx = NVME_UUID_NONE,
1087+
.data_len = 0,
1088+
.data = NULL,
1089+
.timeout = NVME_DEFAULT_IOCTL_TIMEOUT,
1090+
.result = result,
1091+
};
1092+
1093+
return nvme_get_features(&args);
10801094
}
10811095

10821096
int nvme_get_features_err_recovery(int fd, enum nvme_get_features_sel sel,

src/nvme/ioctl.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3201,13 +3201,15 @@ int nvme_get_features_lba_range2(int fd, enum nvme_get_features_sel sel,
32013201
* nvme_get_features_temp_thresh() - Get temperature threshold feature
32023202
* @fd: File descriptor of nvme device
32033203
* @sel: Select which type of attribute to return, see &enum nvme_get_features_sel
3204+
* @tmpsel: Threshold Temperature Select
3205+
* @thsel: Threshold Type Select
32043206
* @result: The command completion result from CQE dword0
32053207
*
32063208
* Return: The nvme command status if a response was received (see
32073209
* &enum nvme_status_field) or -1 with errno set otherwise.
32083210
*/
3209-
int nvme_get_features_temp_thresh(int fd, enum nvme_get_features_sel sel,
3210-
__u32 *result);
3211+
int nvme_get_features_temp_thresh(int fd, enum nvme_get_features_sel sel, __u8 tmpsel,
3212+
enum nvme_feat_tmpthresh_thsel thsel, __u32 *result);
32113213

32123214
/**
32133215
* nvme_get_features_err_recovery() - Get error recovery feature

test/ioctl/features.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,8 @@ static void test_get_temp_thresh(void)
371371
int err;
372372

373373
set_mock_admin_cmds(&mock_admin_cmd, 1);
374-
err = nvme_get_features_temp_thresh(TEST_FD, TEST_SEL, &result);
374+
err = nvme_get_features_temp_thresh(TEST_FD, TEST_SEL, 0,
375+
NVME_FEATURE_TEMPTHRESH_THSEL_OVER, &result);
375376
end_mock_cmds();
376377
check(err == 0, "get features returned error %d, errno %m", err);
377378
check(result == TEST_RESULT,

test/test.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,8 @@ static int test_ctrl(nvme_ctrl_t c)
193193
printf(" Power Management:%x\n", result);
194194
else if (ret > 0)
195195
printf(" ERROR: Power Management:%x\n", ret);
196-
ret = nvme_get_features_temp_thresh(fd, sel, &result);
196+
ret = nvme_get_features_temp_thresh(fd, sel, 0, NVME_FEATURE_TEMPTHRESH_THSEL_OVER,
197+
&result);
197198
if (!ret)
198199
printf(" Temperature Threshold:%x\n", result);
199200
else if (ret > 0)

0 commit comments

Comments
 (0)