switchdev: don't use anonymous union on switchdev attr/obj structs
authorScott Feldman <sfeldma@gmail.com>
Wed, 13 May 2015 18:16:50 +0000 (11:16 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 13 May 2015 18:20:59 +0000 (14:20 -0400)
Older gcc versions (e.g.  gcc version 4.4.6) don't like anonymous unions
which was causing build issues on the newly added switchdev attr/obj
structs.  Fix this by using named union on structs.

Signed-off-by: Scott Feldman <sfeldma@gmail.com>
Reported-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/rocker/rocker.c
include/net/switchdev.h
net/bridge/br_stp.c
net/core/net-sysfs.c
net/core/rtnetlink.c
net/dsa/slave.c
net/switchdev/switchdev.c

index ca53393..f0a9cb4 100644 (file)
@@ -4339,11 +4339,11 @@ static int rocker_port_attr_get(struct net_device *dev,
 
        switch (attr->id) {
        case SWITCHDEV_ATTR_PORT_PARENT_ID:
-               attr->ppid.id_len = sizeof(rocker->hw.id);
-               memcpy(&attr->ppid.id, &rocker->hw.id, attr->ppid.id_len);
+               attr->u.ppid.id_len = sizeof(rocker->hw.id);
+               memcpy(&attr->u.ppid.id, &rocker->hw.id, attr->u.ppid.id_len);
                break;
        case SWITCHDEV_ATTR_PORT_BRIDGE_FLAGS:
-               attr->brport_flags = rocker_port->brport_flags;
+               attr->u.brport_flags = rocker_port->brport_flags;
                break;
        default:
                return -EOPNOTSUPP;
@@ -4400,11 +4400,11 @@ static int rocker_port_attr_set(struct net_device *dev,
        switch (attr->id) {
        case SWITCHDEV_ATTR_PORT_STP_STATE:
                err = rocker_port_stp_update(rocker_port, attr->trans,
-                                            attr->stp_state);
+                                            attr->u.stp_state);
                break;
        case SWITCHDEV_ATTR_PORT_BRIDGE_FLAGS:
                err = rocker_port_brport_flags_set(rocker_port, attr->trans,
-                                                  attr->brport_flags);
+                                                  attr->u.brport_flags);
                break;
        default:
                err = -EOPNOTSUPP;
@@ -4466,10 +4466,10 @@ static int rocker_port_obj_add(struct net_device *dev,
        switch (obj->id) {
        case SWITCHDEV_OBJ_PORT_VLAN:
                err = rocker_port_vlans_add(rocker_port, obj->trans,
-                                           &obj->vlan);
+                                           &obj->u.vlan);
                break;
        case SWITCHDEV_OBJ_IPV4_FIB:
-               fib4 = &obj->ipv4_fib;
+               fib4 = &obj->u.ipv4_fib;
                err = rocker_port_fib_ipv4(rocker_port, obj->trans,
                                           htonl(fib4->dst), fib4->dst_len,
                                           fib4->fi, fib4->tb_id, 0);
@@ -4520,10 +4520,10 @@ static int rocker_port_obj_del(struct net_device *dev,
 
        switch (obj->id) {
        case SWITCHDEV_OBJ_PORT_VLAN:
-               err = rocker_port_vlans_del(rocker_port, &obj->vlan);
+               err = rocker_port_vlans_del(rocker_port, &obj->u.vlan);
                break;
        case SWITCHDEV_OBJ_IPV4_FIB:
-               fib4 = &obj->ipv4_fib;
+               fib4 = &obj->u.ipv4_fib;
                err = rocker_port_fib_ipv4(rocker_port, SWITCHDEV_TRANS_NONE,
                                           htonl(fib4->dst), fib4->dst_len,
                                           fib4->fi, fib4->tb_id,
index 9f9a7cc..ea5b1c2 100644 (file)
@@ -38,7 +38,7 @@ struct switchdev_attr {
                struct netdev_phys_item_id ppid;        /* PORT_PARENT_ID */
                u8 stp_state;                           /* PORT_STP_STATE */
                unsigned long brport_flags;             /* PORT_BRIDGE_FLAGS */
-       };
+       } u;
 };
 
 struct fib_info;
@@ -67,7 +67,7 @@ struct switchdev_obj {
                        u32 nlflags;
                        u32 tb_id;
                } ipv4_fib;
-       };
+       } u;
 };
 
 /**
Simple merge
Simple merge
Simple merge
diff --cc net/dsa/slave.c
Simple merge
Simple merge