[openib-general] [PATCH RFC 4 of 5] IB/mthca: QoS support

Hal Rosenstock halr at voltaire.com
Wed Jan 31 11:00:49 PST 2007


On Mon, 2007-01-22 at 09:50, Michael S. Tsirkin wrote:
> encode SL in sched_queue field to improve hardware QoS guarantees
> for connected QPs.

Is UD already handled properly in terms of mthca ?

-- Hal

> Signed-off-by: Michael S. Tsirkin <mst at mellanox.co.il>
> 
> ---
> 
> Index: linux-2.6/drivers/infiniband/hw/mthca/mthca_qp.c
> ===================================================================
> --- linux-2.6.orig/drivers/infiniband/hw/mthca/mthca_qp.c
> +++ linux-2.6/drivers/infiniband/hw/mthca/mthca_qp.c
> @@ -49,6 +49,10 @@
>  #include "mthca_memfree.h"
>  #include "mthca_wqe.h"
>  
> +static int mthca_qos_support = 0;
> +module_param_named(qos_support, mthca_qos_support, int, 0644);
> +MODULE_PARM_DESC(qos_support, "Enable QoS support if > 0");
> +
>  enum {
>  	MTHCA_MAX_DIRECT_QP_SIZE = 4 * PAGE_SIZE,
>  	MTHCA_ACK_REQ_FREQ       = 10,
> @@ -694,6 +698,19 @@ int mthca_modify_qp(struct ib_qp *ibqp, 
>  			goto out_mailbox;
>  
>  		qp_param->opt_param_mask |= cpu_to_be32(MTHCA_QP_OPTPAR_PRIMARY_ADDR_PATH);
> +		if (mthca_qos_support) {
> +			u8 sl = attr->ah_attr.sl;
> +			u8 sched_queue = (sl & 0x8) | (sl & (~(sl >> 1)) & 0x4) |
> +				((sl >> 1) & (sl >> 2) & 0x2) | ((sl >> 1) & 0x1);
> +
> +			if (mthca_is_memfree(dev)) {
> +				qp_context->rlkey_arbel_sched_queue |= sched_queue;
> +			} else {
> +				qp_context->tavor_sched_queue |= sched_queue;
> +			}
> +			qp_param->opt_param_mask |=
> +				cpu_to_be32(MTHCA_QP_OPTPAR_SCHED_QUEUE);
> +		}
>  	}
>  
>  	if (attr_mask & IB_QP_TIMEOUT) {
> 





More information about the general mailing list