Message ID | 20090916110302.GA32767@mtls03 (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
> +#if defined(cache_line_size) Why the #if here? Do we just need to include <linux/cache.h> explicitly to make sure we get the define? > + *((u8 *) mailbox->buf + INIT_HCA_CACHELINE_SZ_OFFSET) = > + order_base_2(cache_line_size() / 16) << 5; Trivial but I think it's safe to assume a cacheline is always a power of 2. And I think it's clearer (and avoids generating a divide) to use subtraction rather than division... so this could all become: (ilog2(cache_line_size()) - 4) << 5; - R. -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, Sep 22, 2009 at 10:51:10AM -0700, Roland Dreier wrote: I agree with you on both comments. Would you like me to resend or will you make the necessary changes? > > > +#if defined(cache_line_size) > > Why the #if here? Do we just need to include <linux/cache.h> explicitly > to make sure we get the define? > > > + *((u8 *) mailbox->buf + INIT_HCA_CACHELINE_SZ_OFFSET) = > > + order_base_2(cache_line_size() / 16) << 5; > > Trivial but I think it's safe to assume a cacheline is always a power of > 2. And I think it's clearer (and avoids generating a divide) to use > subtraction rather than division... so this could all become: > > (ilog2(cache_line_size()) - 4) << 5; > > - R. > -- > To unsubscribe from this list: send the line "unsubscribe linux-rdma" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
> I agree with you on both comments. Would you like me to resend or will > you make the necessary changes? please resend, thanks. -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/mlx4/fw.c b/drivers/net/mlx4/fw.c index 20526ce..aa38c06 100644 --- a/drivers/net/mlx4/fw.c +++ b/drivers/net/mlx4/fw.c @@ -699,6 +699,7 @@ int mlx4_INIT_HCA(struct mlx4_dev *dev, struct mlx4_init_hca_param *param) #define INIT_HCA_IN_SIZE 0x200 #define INIT_HCA_VERSION_OFFSET 0x000 #define INIT_HCA_VERSION 2 +#define INIT_HCA_CACHELINE_SZ_OFFSET 0x0e #define INIT_HCA_FLAGS_OFFSET 0x014 #define INIT_HCA_QPC_OFFSET 0x020 #define INIT_HCA_QPC_BASE_OFFSET (INIT_HCA_QPC_OFFSET + 0x10) @@ -736,6 +737,12 @@ int mlx4_INIT_HCA(struct mlx4_dev *dev, struct mlx4_init_hca_param *param) *((u8 *) mailbox->buf + INIT_HCA_VERSION_OFFSET) = INIT_HCA_VERSION; +#if defined(cache_line_size) + *((u8 *) mailbox->buf + INIT_HCA_CACHELINE_SZ_OFFSET) = + order_base_2(cache_line_size() / 16) << 5; +#endif + + #if defined(__LITTLE_ENDIAN) *(inbox + INIT_HCA_FLAGS_OFFSET / 4) &= ~cpu_to_be32(1 << 1); #elif defined(__BIG_ENDIAN)
ConnectX can work more efficiently if the CPU cache line size is confiugred to it at INIT_HCA. This patch configures cache line size for systems that report it. Signed-off-by: Eli Cohen <eli@mellanox.co.il> --- drivers/net/mlx4/fw.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-)