Skip to content

Commit 8a6958d

Browse files
authored
Merge pull request #31 from gregoryl-mlnx/ndr
ibsim:Initial NDR support
2 parents 9a6776e + 0711947 commit 8a6958d

5 files changed

Lines changed: 42 additions & 13 deletions

File tree

ibsim/sim.h

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -87,14 +87,22 @@
8787
#define LINKSPEED_SDR_QDR 5
8888
#define LINKSPEED_SDR_DDR_QDR 7
8989

90-
#define LINKSPEEDEXT_NONE 0
91-
#define LINKSPEEDEXT_FDR 1
92-
#define LINKSPEEDEXT_EDR 2
93-
#define LINKSPEEDEXT_FDR_EDR 3
94-
#define LINKSPEEDEXT_HDR 4
95-
#define LINKSPEEDEXT_HDR_FDR 5
96-
#define LINKSPEEDEXT_HDR_EDR 6
97-
#define LINKSPEEDEXT_HDR_EDR_FDR 7
90+
#define LINKSPEEDEXT_NONE 0
91+
#define LINKSPEEDEXT_FDR 1
92+
#define LINKSPEEDEXT_EDR 2
93+
#define LINKSPEEDEXT_FDR_EDR 3
94+
#define LINKSPEEDEXT_HDR 4
95+
#define LINKSPEEDEXT_HDR_FDR 5
96+
#define LINKSPEEDEXT_HDR_EDR 6
97+
#define LINKSPEEDEXT_HDR_EDR_FDR 7
98+
#define LINKSPEEDEXT_NDR 8
99+
#define LINKSPEEDEXT_NDR_FDR 9
100+
#define LINKSPEEDEXT_NDR_EDR 10
101+
#define LINKSPEEDEXT_NDR_FDR_EDR 11
102+
#define LINKSPEEDEXT_NDR_HDR 12
103+
#define LINKSPEEDEXT_NDR_HDR_FDR 13
104+
#define LINKSPEEDEXT_NDR_HDR_EDR 14
105+
#define LINKSPEEDEXT_NDR_HDR_EDR_FDR 15
98106

99107
#define MLNXLINKSPEED_NONE 0
100108
#define MLNXLINKSPEED_FDR10 1

ibsim/sim_cmd.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ static const char *portlinkspeed[] = {
7272
};
7373

7474
static const char *portlinkspeedext[] = {
75-
"0", " 14G", " 25G", "-", "50G",
75+
"0", " 14G", " 25G", "-", "50G", "-", "-", "-", "100G",
7676
};
7777

7878
static const char *portlinkmlnxspeed[] = {
@@ -82,8 +82,8 @@ static const char *portlinkmlnxspeed[] = {
8282
#define PORTSTATE(i) (((i) < 1 || (i) > 4) ? "?" : portstates[(i)])
8383
#define PHYSSTATE(i) (((i) < 1 || (i) > 6) ? "?" : physstates[(i)])
8484
#define PORTLINKWIDTH(i) (((i) < 1 || (i) > 16) ? "?" : portlinkwidth[(i)])
85-
#define PORTLINKSPEED(i) (((i) < 1 || (i) > 4) ? "?" : portlinkspeed[(i)])
86-
#define PORTLINKSPEEDEXT(i) (((i) < 0 || (i) > 4) ? "?" : portlinkspeedext[(i)])
85+
#define PORTLINKSPEED(i) (((i) < 1 || (i) > 8) ? "?" : portlinkspeed[(i)])
86+
#define PORTLINKSPEEDEXT(i) (((i) < 0 || (i) > 8) ? "?" : portlinkspeedext[(i)])
8787
#define PORTMLNXLINKSPEED(i) (((i) < 0 || (i) > 1) ? "?" : portlinkmlnxspeed[(i)])
8888

8989
static int do_link(FILE * f, char *line)

ibsim/sim_mad.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -603,6 +603,19 @@ do_portinfo(Port * port, unsigned op, uint32_t portnum, uint8_t * data)
603603
p->linkspeedext = LINKSPEEDEXT_HDR;
604604
rp->linkspeedext = LINKSPEEDEXT_HDR;
605605
break;
606+
607+
case LINKSPEEDEXT_NDR:
608+
case LINKSPEEDEXT_NDR_FDR:
609+
case LINKSPEEDEXT_NDR_EDR:
610+
case LINKSPEEDEXT_NDR_FDR_EDR:
611+
case LINKSPEEDEXT_NDR_HDR:
612+
case LINKSPEEDEXT_NDR_HDR_FDR:
613+
case LINKSPEEDEXT_NDR_HDR_EDR:
614+
case LINKSPEEDEXT_NDR_HDR_EDR_FDR:
615+
p->linkspeedext = LINKSPEEDEXT_NDR;
616+
rp->linkspeedext = LINKSPEEDEXT_NDR;
617+
break;
618+
606619
default:
607620
espeed = 0;
608621
}

ibsim/sim_net.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
#define LINKSPEED_STR_FDR "FDR"
6666
#define LINKSPEED_STR_EDR "EDR"
6767
#define LINKSPEED_STR_HDR "HDR"
68+
#define LINKSPEED_STR_NDR "NDR"
6869
#define LINKSPEED_STR_FDR10 "FDR10"
6970

7071
static int inclines[MAX_INCLUDE];
@@ -500,10 +501,13 @@ static int parse_port_link_width_and_speed(Port * port, char *line)
500501
port->linkspeedena = LINKSPEED_QDR | LINKSPEED_SDR | LINKSPEED_DDR;
501502
port->mlnx_linkspeedena = MLNXLINKSPEED_FDR10;
502503
} else if (!strncmp(speed, LINKSPEED_STR_HDR, strlen(speed))) {
503-
504504
port->linkspeedextena = LINKSPEEDEXT_HDR_EDR_FDR;
505505
port->linkspeedena = LINKSPEED_QDR | LINKSPEED_SDR | LINKSPEED_DDR;
506506
port->mlnx_linkspeedena = MLNXLINKSPEED_FDR10;
507+
} else if (!strncmp(speed, LINKSPEED_STR_NDR, strlen(speed))) {
508+
port->linkspeedextena = LINKSPEEDEXT_NDR_HDR_EDR_FDR;
509+
port->linkspeedena = LINKSPEED_QDR | LINKSPEED_SDR | LINKSPEED_DDR;
510+
port->mlnx_linkspeedena = MLNXLINKSPEED_FDR10;
507511
} else if (!strncmp(speed, LINKSPEED_STR_FDR10, strlen(speed))){
508512
port->linkspeedena = LINKSPEED_QDR | LINKSPEED_SDR | LINKSPEED_DDR;
509513
port->mlnx_linkspeedena = MLNXLINKSPEED_FDR10;
@@ -1225,6 +1229,8 @@ static int get_active_linkspeedext(Port * lport, Port * rport)
12251229
{
12261230
int speed = lport->linkspeedextena & rport->linkspeedextena;
12271231

1232+
if (speed & LINKSPEEDEXT_NDR)
1233+
return LINKSPEEDEXT_NDR;
12281234
if (speed & LINKSPEEDEXT_HDR)
12291235
return LINKSPEEDEXT_HDR;
12301236
if (speed & LINKSPEEDEXT_EDR)
@@ -1281,7 +1287,7 @@ void update_portinfo(Port * p)
12811287

12821288
if (p->linkspeedext) {
12831289
mad_set_field(pi, 0, IB_PORT_LINK_SPEED_EXT_ENABLED_F, p->linkspeedextena);
1284-
mad_set_field(pi, 0, IB_PORT_LINK_SPEED_EXT_SUPPORTED_F, LINKSPEEDEXT_HDR_EDR_FDR);
1290+
mad_set_field(pi, 0, IB_PORT_LINK_SPEED_EXT_SUPPORTED_F, LINKSPEEDEXT_NDR_HDR_EDR_FDR);
12851291
mad_set_field(pi, 0, IB_PORT_LINK_SPEED_EXT_ACTIVE_F, p->linkspeedext);
12861292
} else {
12871293
mad_set_field(pi, 0, IB_PORT_LINK_SPEED_EXT_ENABLED_F, 0);

umad2sim/umad2sim.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -732,6 +732,8 @@ static int dev_sysfs_create(struct umad2sim_dev *dev)
732732
str = " EDR";
733733
else if (speed == 4)
734734
str = " HDR";
735+
else if (speed == 8)
736+
str = " NDR";
735737
else
736738
str = "";
737739
file_printf(path, SYS_PORT_RATE, "%d Gb/sec (%dX%s)\n",

0 commit comments

Comments
 (0)