> If no one has a problem, I'll just go ahead with the following...

Roland, here's your patch fixed to work, this function is something...
you've missed a break in the SDR switch case.. I added it and tested

Or.

--

    IB/core: Fix SDR rates in sysfs

    Commit 71eeba16 ("IB: Add new InfiniBand link speeds") introduced a bug
    where eg the rate for IB 4X SDR links iss displayed as "8.5 Gb/sec"
    instead of "10 Gb/sec" as it used to be.  Fix that.

    Reported-by: Or Gerlitz <[email protected]>
    Signed-off-by: Roland Dreier <[email protected]>

Index: linux-2.6/drivers/infiniband/core/sysfs.c
===================================================================
--- linux-2.6.orig/drivers/infiniband/core/sysfs.c
+++ linux-2.6/drivers/infiniband/core/sysfs.c
@@ -179,33 +179,37 @@ static ssize_t rate_show(struct ib_port
 {
        struct ib_port_attr attr;
        char *speed = "";
-       int rate;
+       int rate = -1;          /* in deci-Gb/sec */
        ssize_t ret;

        ret = ib_query_port(p->ibdev, p->port_num, &attr);
        if (ret)
                return ret;

-       rate = (25 * attr.active_speed) / 10;
-
        switch (attr.active_speed) {
+       case 1:
+               speed = " SDR";
+               rate = 25;
+               break;
        case 2:
                speed = " DDR";
+               rate = 50;
                break;
        case 4:
                speed = " QDR";
+               rate = 100;
                break;
        case 8:
                speed = " FDR10";
-               rate = 10;
+               rate = 100;
                break;
        case 16:
                speed = " FDR";
-               rate = 14;
+               rate = 140;
                break;
        case 32:
                speed = " EDR";
-               rate = 25;
+               rate = 250;
                break;
        }

@@ -214,7 +218,7 @@ static ssize_t rate_show(struct ib_port
                return -EINVAL;

        return sprintf(buf, "%d%s Gb/sec (%dX%s)\n",
-                      rate, (attr.active_speed == 1) ? ".5" : "",
+                      rate / 10, rate % 10 ? ".5" : "",
                       ib_width_enum_to_int(attr.active_width), speed);
 }


--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to