net/mlx5: Use offset based reserved field names in the IFC header file
authorMatan Barak <matanb@mellanox.com>
Tue, 9 Feb 2016 12:57:42 +0000 (14:57 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 16 Feb 2016 20:21:47 +0000 (15:21 -0500)
commitb4ff3a36d3e409d365a09b6b783ff895063ff4ef
treeee65d8ab9891ec02a5fce35681d782855c4907f2
parent266b495f11d6706018f66250cb02a788ff2490d7
net/mlx5: Use offset based reserved field names in the IFC header file

mlx5_ifc.h is a header file representing the API and ABI between
the driver to the firmware and hardware. This file is used from
both the mlx5_ib and mlx5_core drivers.

Previously, this file used incrementing counter to indicate
reserved fields, for example:

struct mlx5_ifc_odp_per_transport_service_cap_bits {
        u8         send[0x1];
        u8         receive[0x1];
        u8         write[0x1];
        u8         read[0x1];
        u8         reserved_0[0x1];
        u8         srq_receive[0x1];
        u8         reserved_1[0x1a];
};

If one developer implements through net-next feature A that uses
reserved_0, they replace it with featureA and renames reserved_1 to
reserved_0. In the same kernel cycle, a 2nd developer could implement
feature B through the rdma tree, that uses reserved_1 and split it to
featureB and a smaller reserved_1 field. This will cause a conflict
when the two trees are merged.

The source of this conflict is that the 1st developer changed *all*
reserved fields.

As Linus suggested, we change the layout of structs to:

struct mlx5_ifc_odp_per_transport_service_cap_bits {
u8         send[0x1];
u8         receive[0x1];
u8         write[0x1];
u8         read[0x1];
u8         reserved_at_4[0x1];
u8         srq_receive[0x1];
u8         reserved_at_6[0x1a];
};

This makes the conflicts much more rare and preserves the locality of
changes.

Signed-off-by: Matan Barak <matanb@mellanox.com>
Signed-off-by: Alaa Hleihel <alaa@mellanox.com>
Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/mlx5/mlx5_ifc.h