Hi, Parav Pandit&Jason Gunthorpe I am testing the RoCE using RoCEv1 and IPv6 based on the two hip08 environment. the operations as follows: hip08 #1: firstly, I add a vlan device, the cmd is vconfig add eth0 100, ifconfig eth.100 193.168.1.1 secondly, ifconfig the IPv6 address, the cmd is ifconfig eth0.100 add fe80::189e:4bff:fe42:2965/64 hip08 #2: I run the same operation: firstly, vconfig add eth0 100 ifconfig eth.100 193.168.1.2 secondly, ifconfig ifconfig eth0.100 add fe80::1000:22ff:fe10:5923/64 next, I use perftest to test the RoCE, it is fail. server端执行:./ib_send_bw -n 5 -x 6 & client端执行:./ib_send_bw -n 5 -x 6 193.168.1.1 & I analysis the process flow and have a question. The reason for the failure is that get the wrong dmac when modify qp. I trace the following code static int ib_resolve_unicast_gid_dmac(struct ib_device *device, struct rdma_ah_attr *ah_attr) { struct ib_global_route *grh = rdma_ah_retrieve_grh(ah_attr); const struct ib_gid_attr *sgid_attr = grh->sgid_attr; int hop_limit = 0xff; int ret = 0; /* If destination is link local and source GID is RoCEv1, * IP stack is not used. */ if (rdma_link_local_addr((struct in6_addr *)grh->dgid.raw) && sgid_attr->gid_type == IB_GID_TYPE_ROCE) { rdma_get_ll_mac((struct in6_addr *)grh->dgid.raw, ah_attr->roce.dmac); return ret; } ret = rdma_addr_find_l2_eth_by_grh(&sgid_attr->gid, &grh->dgid, ah_attr->roce.dmac, sgid_attr, &hop_limit); grh->hop_limit = hop_limit; return ret; } when configure the addr->s6_addr32[0] for 0xfe80, the dmac get from grh->dgid.raw. However, the grh->dgid.raw is converted from ip address. Why? Does it not allow users to configure ipv6 at will? thanks Lijun Ou