#include <linux/pci.h>
 #include <linux/netdevice.h>
 #include <linux/if_ether.h>
+#include <net/addrconf.h>
 
 #include <rdma/ib_verbs.h>
 #include <rdma/ib_user_verbs.h>
        memcpy(&ib_attr->fw_ver, dev_attr->fw_ver,
               min(sizeof(dev_attr->fw_ver),
                   sizeof(ib_attr->fw_ver)));
-       bnxt_qplib_get_guid(rdev->netdev->dev_addr,
-                           (u8 *)&ib_attr->sys_image_guid);
+       addrconf_addr_eui48((u8 *)&ib_attr->sys_image_guid,
+                           rdev->netdev->dev_addr);
        ib_attr->max_mr_size = BNXT_RE_MAX_MR_SIZE;
        ib_attr->page_size_cap = BNXT_RE_PAGE_SIZE_SUPPORTED;
 
 
                strlen(BNXT_RE_DESC) + 5);
        ibdev->phys_port_cnt = 1;
 
-       bnxt_qplib_get_guid(rdev->netdev->dev_addr, (u8 *)&ibdev->node_guid);
+       addrconf_addr_eui48((u8 *)&ibdev->node_guid, rdev->netdev->dev_addr);
 
        ibdev->num_comp_vectors = rdev->num_msix - 1;
        ibdev->dev.parent = &rdev->en_dev->pdev->dev;
 
        return rc;
 }
 
-/* GUID */
-void bnxt_qplib_get_guid(const u8 *dev_addr, u8 *guid)
-{
-       u8 mac[ETH_ALEN];
-
-       /* MAC-48 to EUI-64 mapping */
-       memcpy(mac, dev_addr, ETH_ALEN);
-       guid[0] = mac[0] ^ 2;
-       guid[1] = mac[1];
-       guid[2] = mac[2];
-       guid[3] = 0xff;
-       guid[4] = 0xfe;
-       guid[5] = mac[3];
-       guid[6] = mac[4];
-       guid[7] = mac[5];
-}
-
 static void bnxt_qplib_free_sgid_tbl(struct bnxt_qplib_res *res,
                                     struct bnxt_qplib_sgid_tbl *sgid_tbl)
 {
 
                         struct bnxt_qplib_hwq *hwq);
 int bnxt_qplib_alloc_init_hwq(struct bnxt_qplib_hwq *hwq,
                              struct bnxt_qplib_hwq_attr *hwq_attr);
-void bnxt_qplib_get_guid(const u8 *dev_addr, u8 *guid);
 int bnxt_qplib_alloc_pd(struct bnxt_qplib_pd_tbl *pd_tbl,
                        struct bnxt_qplib_pd *pd);
 int bnxt_qplib_dealloc_pd(struct bnxt_qplib_res *res,