Thread (20 messages) flat view 20 messages, 5 authors, 2016-01-11

Re: [PATCH net-next V2 09/12] net/mlx5_core: Make ipv4/ipv6 location more clear

From: Or Gerlitz <hidden>
Date: 2016-01-11 13:18:20

On Mon, Jan 11, 2016 at 2:17 PM, David Laight [off-list ref] wrote:
From: Or Gerlitz
quoted
Sent: 10 January 2016 08:40
Change the mlx5 firmware interface header to make it
more clear which bytes should be used by IPv4 or
IPv6 addresses.

Signed-off-by: Maor Gottlieb <redacted>
Signed-off-by: Moni Shoua <redacted>
Signed-off-by: Matan Barak <redacted>
---
 include/linux/mlx5/mlx5_ifc.h | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)
diff --git a/include/linux/mlx5/mlx5_ifc.h b/include/linux/mlx5/mlx5_ifc.h
index 7f16695..68d73f8 100644
--- a/include/linux/mlx5/mlx5_ifc.h
+++ b/include/linux/mlx5/mlx5_ifc.h
@@ -298,6 +298,22 @@ struct mlx5_ifc_odp_per_transport_service_cap_bits {
      u8         reserved_1[0x1a];
 };

+struct mlx5_ifc_ipv4_layout_bits {
+     u8         reserved_0[0x60];
+
+     u8         ipv4[0x20];
+};
+
+struct mlx5_ifc_ipv6_layout_bits {
+     u8         ipv6[16][0x8];
+};
+
+union mlx5_ifc_ipv6_layout_ipv4_layout_auto_bits {
+     struct mlx5_ifc_ipv6_layout_bits ipv6_layout;
+     struct mlx5_ifc_ipv4_layout_bits ipv4_layout;
+     u8         reserved_0[0x80];
+};
I like the way these names just roll off the tongue :-)
quoted
+
 struct mlx5_ifc_fte_match_set_lyr_2_4_bits {
      u8         smac_47_16[0x20];
@@ -328,9 +344,9 @@ struct mlx5_ifc_fte_match_set_lyr_2_4_bits {
      u8         udp_sport[0x10];
      u8         udp_dport[0x10];

-     u8         src_ip[4][0x20];
+     union mlx5_ifc_ipv6_layout_ipv4_layout_auto_bits src_ipv4_src_ipv6;

-     u8         dst_ip[4][0x20];
+     union mlx5_ifc_ipv6_layout_ipv4_layout_auto_bits dst_ipv4_dst_ipv6;
 };
Have you considered just how long the line of code to access these
fields will be?
It might be better to do (I think it compiles):
        union {
                u8      src_ipv6[16][0x8];
                struct {
                        u8      src_ipv4_pad[0x60];
                        u8      src_ipv4[0x20];
                }
        };
Repeated for the 'dst' addresses.
Then fixup the definition of src_ipv4[] (and probably src_ipv6[]) to
be much clearer about how the addresses are supplied.
David,

As Matan commented, these is an auto generated header, done by a tool
that runs over the firmware spec.

Indeed, the names here are sort of odd / too long and Matan/Maor will
provide the feedback into the internal chain (tool/spec, depends where
the problem is) - however, we would prefer to address that as
incremental fix over the code after the series is applied, hope this
makes sense to you.

Or.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help