summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--usr/src/uts/common/io/ib/adapters/hermon/hermon_misc.c70
1 files changed, 45 insertions, 25 deletions
diff --git a/usr/src/uts/common/io/ib/adapters/hermon/hermon_misc.c b/usr/src/uts/common/io/ib/adapters/hermon/hermon_misc.c
index b4598c7c8b..0ac91de056 100644
--- a/usr/src/uts/common/io/ib/adapters/hermon/hermon_misc.c
+++ b/usr/src/uts/common/io/ib/adapters/hermon/hermon_misc.c
@@ -2155,17 +2155,28 @@ hermon_set_addr_path(hermon_state_t *state, ibt_adds_vect_t *av,
path->mlid = av->av_src_path;
path->rlid = av->av_dlid;
- if (av->av_srate == IBT_SRATE_10) {
- path->max_stat_rate = 8; /* 4xSDR-10.0Gb/s injection rate */
- } else if (av->av_srate == IBT_SRATE_20) {
- path->max_stat_rate = 11; /* 4xDDR-20Gb/s injection rate */
- } else if (av->av_srate == IBT_SRATE_2) {
- path->max_stat_rate = 7; /* 1xSDR-2.5Gb/s injection rate */
- } else if (av->av_srate == IBT_SRATE_5) {
- path->max_stat_rate = 10; /* 1xDDR-5Gb/s injection rate */
- } else if (av->av_srate == IBT_SRATE_NOT_SPECIFIED) {
- path->max_stat_rate = 0; /* Max */
- } else {
+ switch (av->av_srate) {
+ case IBT_SRATE_2: /* 1xSDR-2.5Gb/s injection rate */
+ path->max_stat_rate = 7; break;
+ case IBT_SRATE_10: /* 4xSDR-10.0Gb/s injection rate */
+ path->max_stat_rate = 8; break;
+ case IBT_SRATE_30: /* 12xSDR-30Gb/s injection rate */
+ path->max_stat_rate = 9; break;
+ case IBT_SRATE_5: /* 1xDDR-5Gb/s injection rate */
+ path->max_stat_rate = 10; break;
+ case IBT_SRATE_20: /* 4xDDR-20Gb/s injection rate */
+ path->max_stat_rate = 11; break;
+ case IBT_SRATE_40: /* 4xQDR-40Gb/s injection rate */
+ path->max_stat_rate = 12; break;
+ case IBT_SRATE_60: /* 12xDDR-60Gb/s injection rate */
+ path->max_stat_rate = 13; break;
+ case IBT_SRATE_80: /* 8xQDR-80Gb/s injection rate */
+ path->max_stat_rate = 14; break;
+ case IBT_SRATE_120: /* 12xQDR-120Gb/s injection rate */
+ path->max_stat_rate = 15; break;
+ case IBT_SRATE_NOT_SPECIFIED: /* Max */
+ path->max_stat_rate = 0; break;
+ default:
return (IBT_STATIC_RATE_INVALID);
}
if (hermon_srate_override != -1) /* for evaluating HCA firmware */
@@ -2258,22 +2269,31 @@ hermon_get_addr_path(hermon_state_t *state, hermon_hw_addr_path_t *path,
av->av_dlid = path->rlid;
/* Set "av_ipd" value from max_stat_rate */
- /* need to revisit for add'l rates - IBTF upgrade */
- if (path->max_stat_rate == 8) {
- av->av_srate = IBT_SRATE_10; /* 4xSDR-10.0Gb/s injection rate */
- } else if (path->max_stat_rate == 11) {
- av->av_srate = IBT_SRATE_20; /* 4xDDR-20Gb/s injection rate */
- } else if (path->max_stat_rate == 7) {
- av->av_srate = IBT_SRATE_2; /* 1xSDR-2.5Gb/s injection rate */
- } else if (path->max_stat_rate == 10) {
- av->av_srate = IBT_SRATE_5; /* 1xDDR-5Gb/s injection rate */
- } else if (path->max_stat_rate == 0) {
- av->av_srate = IBT_SRATE_NOT_SPECIFIED; /* Max */
- } else {
- av->av_srate = IBT_SRATE_1X; /* 1x injection rate */
+ switch (path->max_stat_rate) {
+ case 7: /* 1xSDR-2.5Gb/s injection rate */
+ av->av_srate = IBT_SRATE_2; break;
+ case 8: /* 4xSDR-10.0Gb/s injection rate */
+ av->av_srate = IBT_SRATE_10; break;
+ case 9: /* 12xSDR-30Gb/s injection rate */
+ av->av_srate = IBT_SRATE_30; break;
+ case 10: /* 1xDDR-5Gb/s injection rate */
+ av->av_srate = IBT_SRATE_5; break;
+ case 11: /* 4xDDR-20Gb/s injection rate */
+ av->av_srate = IBT_SRATE_20; break;
+ case 12: /* xQDR-40Gb/s injection rate */
+ av->av_srate = IBT_SRATE_40; break;
+ case 13: /* 12xDDR-60Gb/s injection rate */
+ av->av_srate = IBT_SRATE_60; break;
+ case 14: /* 8xQDR-80Gb/s injection rate */
+ av->av_srate = IBT_SRATE_80; break;
+ case 15: /* 12xQDR-120Gb/s injection rate */
+ av->av_srate = IBT_SRATE_120; break;
+ case 0: /* max */
+ av->av_srate = IBT_SRATE_10; break;
+ default: /* 1x injection rate */
+ av->av_srate = IBT_SRATE_1X;
}
-
/*
* Extract all "global" values regardless of the value in the GRH
* flag. Because "av_send_grh" is set only if "grh" is set, software