ca->system_guid = attr->sys_image_guid;\r
}\r
\r
+static float umad_width_mult(uint8_t active_width)\r
+{\r
+ switch (active_width) {\r
+ case 1:\r
+ return 2.5;\r
+ case 2:\r
+ return 10;\r
+ case 4:\r
+ return 20;\r
+ case 8:\r
+ return 30;\r
+ default:\r
+ return 0;\r
+ }\r
+}\r
+\r
static int umad_query_port(struct ibv_context *context, umad_port_t *port)\r
{\r
ibv_port_attr attr;\r
port->sm_sl = attr.sm_sl;\r
port->state = attr.state;\r
port->phys_state = attr.phys_state;\r
- port->rate = attr.active_speed;\r
+ port->rate = (unsigned) umad_width_mult(attr.active_width) * attr.active_speed;\r
port->capmask = attr.port_cap_flags;\r
\r
// Assume GID 0 contains port GUID and gid prefix\r