From patchwork Fri Aug 6 22:51:03 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vu Pham X-Patchwork-Id: 118080 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter.kernel.org (8.14.4/8.14.3) with ESMTP id o76MsNeo027290 for ; Fri, 6 Aug 2010 22:54:34 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1762132Ab0HFWyd (ORCPT ); Fri, 6 Aug 2010 18:54:33 -0400 Received: from p02c11o141.mxlogic.net ([208.65.144.74]:57873 "EHLO p02c11o141.mxlogic.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1761950Ab0HFWyd (ORCPT ); Fri, 6 Aug 2010 18:54:33 -0400 Received: from unknown [63.251.237.3] (EHLO p02c11o141.mxlogic.net) by p02c11o141.mxlogic.net(mxl_mta-6.7.0-0) with ESMTP id 8a29c5c4.5e665940.17678.00-590.40363.p02c11o141.mxlogic.net (envelope-from ); Fri, 06 Aug 2010 16:54:32 -0600 (MDT) X-MXL-Hash: 4c5c92a82af2e5cf-57155207dbb44ad119205dd1d363b06675a41cd3 Received: from unknown [63.251.237.3] (EHLO mtiexch01.mti.com) by p02c11o141.mxlogic.net(mxl_mta-6.7.0-0) with ESMTP id 8d19c5c4.0.17411.00-373.39767.p02c11o141.mxlogic.net (envelope-from ); Fri, 06 Aug 2010 16:51:05 -0600 (MDT) X-MXL-Hash: 4c5c91d95d42e508-dcab0fc058686b4fddb85d5ccf338c1575913721 Received: from vu-lt.mti.mtl.com ([10.2.1.17]) by mtiexch01.mti.com with Microsoft SMTPSVC(6.0.3790.3959); Fri, 6 Aug 2010 15:55:19 -0700 Message-ID: <4C5C91D7.7050202@mellanox.com> Date: Fri, 06 Aug 2010 15:51:03 -0700 From: Vu Pham User-Agent: Thunderbird 2.0.0.23 (X11/20090812) MIME-Version: 1.0 To: Roland Dreier CC: Oren Duer , Linux RDMA , OpenFabrics EWG Subject: [PATCH 06/10] enable T11 bit for mlx4 device X-OriginalArrivalTime: 06 Aug 2010 22:55:19.0718 (UTC) FILETIME=[71A77460:01CB35BA] X-Spam: [F=0.2000000000; CM=0.500; S=0.200(2010073001)] X-MAIL-FROM: X-SOURCE-IP: [63.251.237.3] X-AnalysisOut: [v=1.0 c=1 a=MHjlkPWPMGsA:10 a=VphdPIyG4kEA:10 a=xupnbh4h0Y] X-AnalysisOut: [LOHZnncC45HQ==:17 a=SeBm4QpjAAAA:8 a=vTcQqm2LjHmRmffMgAIA:] X-AnalysisOut: [9 a=MYLm5KSNZd0yWwtiLXNVq2QTQfsA:4 a=wPNLvfGTeEIA:10 a=T2c] X-AnalysisOut: [JKXzbRCYA:10 a=kpVBEHK5DUD6JJhsG1MA:9 a=cv65EXsCkrH4cVSYCW] X-AnalysisOut: [8A:7 a=HloDVvbpZTgTXPP_-DYtnyEdxH8A:4] Sender: linux-rdma-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter.kernel.org [140.211.167.41]); Fri, 06 Aug 2010 22:54:34 +0000 (UTC) Enable T11 bit in mlx4 device Signed-off-by: Oren Duer Signed-off-by: Vu Pham drivers/net/mlx4/fw.c | 13 +++++++++++++ include/linux/mlx4/device.h | 5 ++++- 2 files changed, 17 insertions(+), 1 deletions(-) diff --git a/drivers/net/mlx4/fw.c b/drivers/net/mlx4/fw.c index 04f42ae..1286b72 100644 --- a/drivers/net/mlx4/fw.c +++ b/drivers/net/mlx4/fw.c @@ -51,6 +51,10 @@ static int enable_qos; module_param(enable_qos, bool, 0444); MODULE_PARM_DESC(enable_qos, "Enable Quality of Service support in the HCA (default: off)"); +static int mlx4_pre_t11_mode = 0; +module_param_named(enable_pre_t11_mode, mlx4_pre_t11_mode, int, 0644); +MODULE_PARM_DESC(enable_pre_t11_mode, "For FCoXX, enable pre-t11 mode if non-zero (default: 0)"); + #define MLX4_GET(dest, source, offset) \ do { \ void *__p = (char *) (source) + (offset); \ @@ -792,6 +796,8 @@ int mlx4_INIT_HCA(struct mlx4_dev *dev, struct mlx4_init_hca_param *param) MLX4_PUT(inbox, (u8) (PAGE_SHIFT - 12), INIT_HCA_UAR_PAGE_SZ_OFFSET); MLX4_PUT(inbox, param->log_uar_sz, INIT_HCA_LOG_UAR_SZ_OFFSET); + if (!mlx4_pre_t11_mode && dev->caps.flags & (u32) MLX4_DEV_CAP_FLAG_FC_T11) + *(inbox + INIT_HCA_FLAGS_OFFSET / 4) |= cpu_to_be32(1 << 10); err = mlx4_cmd(dev, mailbox->dma, 0, 0, MLX4_CMD_INIT_HCA, 10000); @@ -890,3 +896,10 @@ int mlx4_NOP(struct mlx4_dev *dev) /* Input modifier of 0x1f means "finish as soon as possible." */ return mlx4_cmd(dev, 0, 0x1f, 0, MLX4_CMD_NOP, 100); } + +void mlx4_get_fc_t11_settings(struct mlx4_dev *dev, int *enable_pre_t11, int *t11_supported) +{ + *enable_pre_t11 = mlx4_pre_t11_mode; + *t11_supported = dev->caps.flags & MLX4_DEV_CAP_FLAG_FC_T11; +} +EXPORT_SYMBOL_GPL(mlx4_get_fc_t11_settings); diff --git a/include/linux/mlx4/device.h b/include/linux/mlx4/device.h index 8afac02..d173008 100644 --- a/include/linux/mlx4/device.h +++ b/include/linux/mlx4/device.h @@ -67,7 +67,8 @@ enum { MLX4_DEV_CAP_FLAG_ATOMIC = 1 << 18, MLX4_DEV_CAP_FLAG_RAW_MCAST = 1 << 19, MLX4_DEV_CAP_FLAG_UD_AV_PORT = 1 << 20, - MLX4_DEV_CAP_FLAG_UD_MCAST = 1 << 21 + MLX4_DEV_CAP_FLAG_UD_MCAST = 1 << 21, + MLX4_DEV_CAP_FLAG_FC_T11 = 1 << 31 }; enum { @@ -491,4 +492,6 @@ int mlx4_fmr_free_reserved(struct mlx4_dev *dev, struct mlx4_fmr *fmr); int mlx4_fmr_free(struct mlx4_dev *dev, struct mlx4_fmr *fmr); int mlx4_SYNC_TPT(struct mlx4_dev *dev); +void mlx4_get_fc_t11_settings(struct mlx4_dev *dev, int *enable_pre_t11, int *t11_supported); + #endif /* MLX4_DEVICE_H */