[ofa-general] Re: [openib-general] [PATCH] 2.6.20 ib_cm: limit cm message timeouts
Sean Hefty
mshefty at ichips.intel.com
Tue Mar 6 10:05:07 PST 2007
> +#define DRV_NAME "ib_cm"
> +#define PFX DRV_NAME ": "
Just define PFX.
> +
> +/*
> + * Limit CM msg timeouts to something reasonable.
> + * 8 seconds, with up to 15 retries, gives per msg timeout of 2 min.
> + */
> +#define IB_CM_MAX_TIMEOUT 21
Thinking out loud... maybe we should make this a module parameter.
> +
> static void cm_add_one(struct ib_device *device);
> static void cm_remove_one(struct ib_device *device);
>
> @@ -887,13 +896,26 @@ static void cm_format_req(struct cm_req_
> cm_req_set_local_qpn(req_msg, cpu_to_be32(param->qp_num));
> cm_req_set_resp_res(req_msg, param->responder_resources);
> cm_req_set_init_depth(req_msg, param->initiator_depth);
> - cm_req_set_remote_resp_timeout(req_msg,
> - param->remote_cm_response_timeout);
> + if ((u8) IB_CM_MAX_TIMEOUT >= param->remote_cm_response_timeout)
This is a nit, but I find reading the reverse of the above check easier to
understand and verify for correctness:
if (remote_cm_response_timeout > IB_CM_MAX_TIMEOUT) ...
<or>
if (remote_cm_response_timeout <= IB_CM_MAX_TIMEOUT) ...
That is, we're comparing the user's timeout to the max, not the other way around.
> + if ((u8) IB_CM_MAX_TIMEOUT >= param->local_cm_response_timeout)
Same nit.
> @@ -2707,7 +2745,13 @@ int ib_send_cm_sidr_req(struct ib_cm_id
>
> cm_id->service_id = param->service_id;
> cm_id->service_mask = __constant_cpu_to_be64(~0ULL);
> - cm_id_priv->timeout_ms = param->timeout_ms;
> + if (cm_id_priv->timeout_ms > cm_convert_to_ms(IB_CM_MAX_TIMEOUT))
> + cm_id_priv->timeout_ms = param->timeout_ms;
> + else {
> + cm_id_priv->timeout_ms = cm_convert_to_ms(IB_CM_MAX_TIMEOUT);
> + printk(KERN_WARNING PFX "Given timeout to ib_send_cm_sidr_req "
> + "is too long, setting it to default value");
> + }
This is keeping the larger of the two values. I would just remove the line
after the if() and the else statement.
Thanks for updating the patch.
- Sean
More information about the general
mailing list