【Question for IPv6 and RoCEv1】

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux