[infiniband:for-next 37/52] drivers/net/ethernet/mellanox/mlx4/mlx4.h:695:1: error: expected identifier or '(' before '<<' token

2012-09-30 Thread Fengguang Wu
Hi Roland,

FYI, kernel build failed on

tree:   git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git 
for-next
head:   c99517cda3548a0e270d374fe97d589d38022b80
commit: 431ee27496b84effaaff9d21f0aae7c68015deeb [37/52] mlx4_core: Stash PCI 
ID driver_data in mlx4_priv structure
config: x86_64-allmodconfig

All error/warnings:

In file included from drivers/net/ethernet/mellanox/mlx4/alloc.c:42:0:
drivers/net/ethernet/mellanox/mlx4/mlx4.h:695:1: error: expected identifier or 
'(' before '<<' token
--
In file included from drivers/net/ethernet/mellanox/mlx4/mcg.c:40:0:
drivers/net/ethernet/mellanox/mlx4/mlx4.h:695:1: error: expected identifier or 
'(' before '<<' token
drivers/net/ethernet/mellanox/mlx4/mcg.c:654:14: warning: 'struct 
mlx4_net_trans_rule_hw_ctrl' declared inside parameter list [enabled by default]
drivers/net/ethernet/mellanox/mlx4/mcg.c:654:14: warning: its scope is only 
this definition or declaration, which is probably not what you want [enabled by 
default]
drivers/net/ethernet/mellanox/mlx4/mcg.c: In function 'trans_rule_ctrl_to_hw':
drivers/net/ethernet/mellanox/mlx4/mcg.c:671:4: error: dereferencing pointer to 
incomplete type
drivers/net/ethernet/mellanox/mlx4/mcg.c:672:4: error: dereferencing pointer to 
incomplete type
drivers/net/ethernet/mellanox/mlx4/mcg.c:673:4: error: dereferencing pointer to 
incomplete type
drivers/net/ethernet/mellanox/mlx4/mcg.c: In function 'mlx4_flow_attach':
drivers/net/ethernet/mellanox/mlx4/mcg.c:842:33: error: invalid application of 
'sizeof' to incomplete type 'struct mlx4_net_trans_rule_hw_ctrl'
drivers/net/ethernet/mellanox/mlx4/mcg.c:845:17: error: invalid application of 
'sizeof' to incomplete type 'struct mlx4_net_trans_rule_hw_ctrl'
--
In file included from 
drivers/net/ethernet/mellanox/mlx4/resource_tracker.c:47:0:
drivers/net/ethernet/mellanox/mlx4/mlx4.h:695:1: error: expected identifier or 
'(' before '<<' token
drivers/net/ethernet/mellanox/mlx4/resource_tracker.c: In function 
'add_eth_header':
drivers/net/ethernet/mellanox/mlx4/resource_tracker.c:3029:9: error: 
dereferencing pointer to incomplete type
drivers/net/ethernet/mellanox/mlx4/resource_tracker.c:3029:9: error: 
dereferencing pointer to incomplete type
drivers/net/ethernet/mellanox/mlx4/resource_tracker.c:3029:9: error: 
dereferencing pointer to incomplete type
drivers/net/ethernet/mellanox/mlx4/resource_tracker.c:3029:9: error: 
dereferencing pointer to incomplete type
drivers/net/ethernet/mellanox/mlx4/resource_tracker.c:3029:9: error: 
dereferencing pointer to incomplete type
drivers/net/ethernet/mellanox/mlx4/resource_tracker.c:3029:9: error: 
dereferencing pointer to incomplete type
drivers/net/ethernet/mellanox/mlx4/resource_tracker.c:3030:23: error: invalid 
use of undefined type 'struct mlx4_net_trans_rule_hw_ctrl'
drivers/net/ethernet/mellanox/mlx4/resource_tracker.c: In function 
'mlx4_QP_FLOW_STEERING_ATTACH_wrapper':
drivers/net/ethernet/mellanox/mlx4/resource_tracker.c:3091:24: error: invalid 
use of undefined type 'struct mlx4_net_trans_rule_hw_ctrl'

vim +695 drivers/net/ethernet/mellanox/mlx4/mlx4.h

0b7ca5a9 drivers/net/mlx4/mlx4.h   (Yevgeny Petrilin 2011-03-22 
 689) 
b12d93d6 drivers/net/mlx4/mlx4.h   (Yevgeny Petrilin 2011-03-22 
 690) struct mlx4_steer {
b12d93d6 drivers/net/mlx4/mlx4.h   (Yevgeny Petrilin 2011-03-22 
 691)   struct list_head promisc_qps[MLX4_NUM_STEERS];
b12d93d6 drivers/net/mlx4/mlx4.h   (Yevgeny Petrilin 2011-03-22 
 692)   struct list_head steer_entries[MLX4_NUM_STEERS];
b12d93d6 drivers/net/mlx4/mlx4.h   (Yevgeny Petrilin 2011-03-22 
 693) };
b12d93d6 drivers/net/mlx4/mlx4.h   (Yevgeny Petrilin 2011-03-22 
 694) 
431ee274 drivers/net/ethernet/mellanox/mlx4/mlx4.h (Roland Dreier2012-09-27 
@695) <<< HEAD
a8edc3bf drivers/net/ethernet/mellanox/mlx4/mlx4.h (Hadar Hen Zion   2012-09-05 
 696) struct mlx4_net_trans_rule_hw_ctrl {
a8edc3bf drivers/net/ethernet/mellanox/mlx4/mlx4.h (Hadar Hen Zion   2012-09-05 
 697)   __be32 ctrl;
a8edc3bf drivers/net/ethernet/mellanox/mlx4/mlx4.h (Hadar Hen Zion   2012-09-05 
 698)   __be32 vf_vep_port;

---
0-DAY kernel build testing backend Open Source Technology Centre
Fengguang Wu, Yuanhan Liu  Intel Corporation
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v3 1/7] libibverbs: Infrastructure to support verbs extensions

2012-09-30 Thread Jason Gunthorpe
On Fri, Sep 28, 2012 at 10:53:49PM +, Hefty, Sean wrote:

> change from v2:
> Added a has_comp_mask field to verbs_context

Did I miss something? It never gets used, and never gets set in the
mlx4 patches?

Jason
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v3 1/2] libmlx4: Infra-structure changes to support verbs extensions

2012-09-30 Thread Jason Gunthorpe
> -static struct ibv_device *mlx4_driver_init(const char *uverbs_sys_path,
> - int abi_version)
> +static struct verbs_device *mlx4_driver_init(const char *uverbs_sys_path,
> +  int abi_version)
>  {
>   charvalue[8];
> - struct mlx4_device*dev;
> + struct mlx4_device_ex   *dev;
>   unsignedvendor, device;
>   int i;

[..]

The allocation of 'dev' needs to be via zero'ing calloc so new
unsupported members of verbs_device are zero'd.

> +++ b/src/mlx4.h
> @@ -135,6 +135,11 @@ struct mlx4_device {
>   int page_size;
>  };
>  
> +struct mlx4_device_ex {
> + struct verbs_device verbs_dev;
> + int page_size;
> +};
> +

This looks wrong to me. offsetof(page_size) will be different on
mlx4_device_ex vs mlx4_device, and mlx4_alloc_cq_buf has no test to
correct for that.

mlx4_device_ex should be removed, and mlx4_device changed to always
use verbs_device, as a provider-allocated structure the provider
assumes the ibv_device * pointers it gets were created by driver_init.

> +#define to_mxxx_ex(xxx, type)
> \
> + ((struct mlx4_##type##_ex *)\
> +  ((void *) verbs##xxx - offsetof(struct mlx4_##type##_ex, verbs_##xxx)))
> +
> +
> +static inline struct mlx4_device_ex *to_mdev_ex(const struct verbs_device
> + *verbsdev)
> +{
> + return to_mxxx_ex(dev, device);
> +}

Dump too..

Maybe make your containerof available to the providers and ditch all
these converters?

Jason
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html