int ret = 0;
        bool ipv4;
        u16 vlan_id;
-       union {
-               struct sockaddr saddr;
-               struct sockaddr_in saddr_in;
-               struct sockaddr_in6 saddr_in6;
-       } sgid_addr;
+       union irdma_sockaddr sgid_addr;
        unsigned char dmac[ETH_ALEN];
 
        rdma_gid2ip((struct sockaddr *)&sgid_addr, ibgid);
        struct irdma_mcast_grp_ctx_entry_info mcg_info = {};
        int ret;
        unsigned long flags;
-       union {
-               struct sockaddr saddr;
-               struct sockaddr_in saddr_in;
-               struct sockaddr_in6 saddr_in6;
-       } sgid_addr;
+       union irdma_sockaddr sgid_addr;
 
        rdma_gid2ip((struct sockaddr *)&sgid_addr, ibgid);
        if (!ipv6_addr_v4mapped((struct in6_addr *)ibgid))
        u32 ah_id = 0;
        struct irdma_ah_info *ah_info;
        struct irdma_create_ah_resp uresp;
-       union {
-               struct sockaddr_in saddr_in;
-               struct sockaddr_in6 saddr_in6;
-       } sgid_addr, dgid_addr;
+       union irdma_sockaddr sgid_addr, dgid_addr;
        int err;
        u8 dmac[ETH_ALEN];
 
 
        struct irdma_sc_pd sc_pd;
 };
 
+union irdma_sockaddr {
+       struct sockaddr_in saddr_in;
+       struct sockaddr_in6 saddr_in6;
+};
+
 struct irdma_av {
        u8 macaddr[16];
        struct rdma_ah_attr attrs;
-       union {
-               struct sockaddr_in saddr_in;
-               struct sockaddr_in6 saddr_in6;
-       } sgid_addr, dgid_addr;
+       union irdma_sockaddr sgid_addr;
+       union irdma_sockaddr dgid_addr;
        u8 net_type;
 };