IB/core: Add new IB rates
authorMichael Guralnik <michaelgur@mellanox.com>
Sun, 9 Dec 2018 09:49:50 +0000 (11:49 +0200)
committerJason Gunthorpe <jgg@mellanox.com>
Tue, 11 Dec 2018 20:22:45 +0000 (13:22 -0700)
Add the new rates that were added to Infiniband spec as part of HDR and 2x
support.

Signed-off-by: Michael Guralnik <michaelgur@mellanox.com>
Reviewed-by: Majd Dibbiny <majd@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/core/verbs.c
drivers/infiniband/hw/mlx5/qp.c
include/rdma/ib_verbs.h

index 178899e3ce73766ce3df79d00d4d8a46bd8352a6..fb2fc0c7ecfb66cc94bdda93d2582e545d0ec4d0 100644 (file)
@@ -141,6 +141,10 @@ __attribute_const__ int ib_rate_to_mult(enum ib_rate rate)
        case IB_RATE_100_GBPS: return  40;
        case IB_RATE_200_GBPS: return  80;
        case IB_RATE_300_GBPS: return 120;
+       case IB_RATE_28_GBPS:  return  11;
+       case IB_RATE_50_GBPS:  return  20;
+       case IB_RATE_400_GBPS: return 160;
+       case IB_RATE_600_GBPS: return 240;
        default:               return  -1;
        }
 }
@@ -166,6 +170,10 @@ __attribute_const__ enum ib_rate mult_to_ib_rate(int mult)
        case 40:  return IB_RATE_100_GBPS;
        case 80:  return IB_RATE_200_GBPS;
        case 120: return IB_RATE_300_GBPS;
+       case 11:  return IB_RATE_28_GBPS;
+       case 20:  return IB_RATE_50_GBPS;
+       case 160: return IB_RATE_400_GBPS;
+       case 240: return IB_RATE_600_GBPS;
        default:  return IB_RATE_PORT_CURRENT;
        }
 }
@@ -191,6 +199,10 @@ __attribute_const__ int ib_rate_to_mbps(enum ib_rate rate)
        case IB_RATE_100_GBPS: return 103125;
        case IB_RATE_200_GBPS: return 206250;
        case IB_RATE_300_GBPS: return 309375;
+       case IB_RATE_28_GBPS:  return 28125;
+       case IB_RATE_50_GBPS:  return 53125;
+       case IB_RATE_400_GBPS: return 425000;
+       case IB_RATE_600_GBPS: return 637500;
        default:               return -1;
        }
 }
index 7789367114f7054a70af5fb669e36d9dab271a13..07a27b8cc838a4185babc343d17208739ec75fdf 100644 (file)
@@ -2703,7 +2703,7 @@ static int ib_rate_to_mlx5(struct mlx5_ib_dev *dev, u8 rate)
        if (rate == IB_RATE_PORT_CURRENT)
                return 0;
 
-       if (rate < IB_RATE_2_5_GBPS || rate > IB_RATE_300_GBPS)
+       if (rate < IB_RATE_2_5_GBPS || rate > IB_RATE_600_GBPS)
                return -EINVAL;
 
        while (rate != IB_RATE_PORT_CURRENT &&
index a7b8393126710f76ea45aa00e8d359456538c145..89eead636e6816f207098ae7ac409955d1ffe8b7 100644 (file)
@@ -732,7 +732,11 @@ enum ib_rate {
        IB_RATE_25_GBPS  = 15,
        IB_RATE_100_GBPS = 16,
        IB_RATE_200_GBPS = 17,
-       IB_RATE_300_GBPS = 18
+       IB_RATE_300_GBPS = 18,
+       IB_RATE_28_GBPS  = 19,
+       IB_RATE_50_GBPS  = 20,
+       IB_RATE_400_GBPS = 21,
+       IB_RATE_600_GBPS = 22,
 };
 
 /**