IB/ehca: Use default value for Local CA ACK Delay if FW returns 0
authorJoachim Fenkes <fenkes@de.ibm.com>
Tue, 22 Jul 2008 21:18:08 +0000 (14:18 -0700)
committerRoland Dreier <rolandd@cisco.com>
Tue, 22 Jul 2008 21:18:08 +0000 (14:18 -0700)
Some firmware versions report a Local CA ACK Delay of 0.  In that
case, return a more sensible default value of 12 (-> 16 msec) instead.

Signed-off-by: Joachim Fenkes <fenkes@de.ibm.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/hw/ehca/ehca_hca.c

index bc3b37d2070f338b6a41003ad1e6a6c125e1d555..46288220cfbb1cc1d90916bdf9670316552e7c31 100644 (file)
@@ -114,7 +114,9 @@ int ehca_query_device(struct ib_device *ibdev, struct ib_device_attr *props)
        }
 
        props->max_pkeys           = 16;
-       props->local_ca_ack_delay  = min_t(u8, rblock->local_ca_ack_delay, 255);
+       /* Some FW versions say 0 here; insert sensible value in that case */
+       props->local_ca_ack_delay  = rblock->local_ca_ack_delay ?
+               min_t(u8, rblock->local_ca_ack_delay, 255) : 12;
        props->max_raw_ipv6_qp     = limit_uint(rblock->max_raw_ipv6_qp);
        props->max_raw_ethy_qp     = limit_uint(rblock->max_raw_ethy_qp);
        props->max_mcast_grp       = limit_uint(rblock->max_mcast_grp);