Skip to content

Commit

Permalink
[PATCH] IPoIB: fix static rate calculation
Browse files Browse the repository at this point in the history
Correct and simplify calculation of static rate.  We need to round up the
quotient of (local_rate - path_rate) / path_rate.  To round up we add
(path_rate - 1) to the numerator, so the quotient simplifies to (local_rate -
1) / path_rate.

No idea how I came up with the old formula.

Signed-off-by: Roland Dreier <roland@topspin.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Roland Dreier authored and Linus Torvalds committed Apr 16, 2005
1 parent 62241eb commit e6ded99
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 8 deletions.
7 changes: 3 additions & 4 deletions drivers/infiniband/ulp/ipoib/ipoib_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -302,11 +302,10 @@ static void path_rec_completion(int status,
.sl = pathrec->sl,
.port_num = priv->port
};
int path_rate = ib_sa_rate_enum_to_int(pathrec->rate);

if (ib_sa_rate_enum_to_int(pathrec->rate) > 0)
av.static_rate = (2 * priv->local_rate -
ib_sa_rate_enum_to_int(pathrec->rate) - 1) /
(priv->local_rate ? priv->local_rate : 1);
if (path_rate > 0 && priv->local_rate > path_rate)
av.static_rate = (priv->local_rate - 1) / path_rate;

ipoib_dbg(priv, "static_rate %d for local port %dX, path %dX\n",
av.static_rate, priv->local_rate,
Expand Down
7 changes: 3 additions & 4 deletions drivers/infiniband/ulp/ipoib/ipoib_multicast.c
Original file line number Diff line number Diff line change
Expand Up @@ -258,13 +258,12 @@ static int ipoib_mcast_join_finish(struct ipoib_mcast *mcast,
.traffic_class = mcast->mcmember.traffic_class
}
};
int path_rate = ib_sa_rate_enum_to_int(mcast->mcmember.rate);

av.grh.dgid = mcast->mcmember.mgid;

if (ib_sa_rate_enum_to_int(mcast->mcmember.rate) > 0)
av.static_rate = (2 * priv->local_rate -
ib_sa_rate_enum_to_int(mcast->mcmember.rate) - 1) /
(priv->local_rate ? priv->local_rate : 1);
if (path_rate > 0 && priv->local_rate > path_rate)
av.static_rate = (priv->local_rate - 1) / path_rate;

ipoib_dbg_mcast(priv, "static_rate %d for local port %dX, mcmember %dX\n",
av.static_rate, priv->local_rate,
Expand Down

0 comments on commit e6ded99

Please sign in to comment.