[ofw] patch 2/2 Add support for RDMAoEth to the low level driver
James Yang
jyang at xsigo.com
Thu Dec 3 16:26:31 PST 2009
I digged out following Linux code, which check hop_limit. Might need to get Linux guys for comments as well.
int ib_init_ah_from_path(struct ib_device *device, u8 port_num,
struct ib_sa_path_rec *rec, struct ib_ah_attr *ah_attr)
{
int ret;
u16 gid_index;
memset(ah_attr, 0, sizeof *ah_attr);
ah_attr->dlid = be16_to_cpu(rec->dlid);
ah_attr->sl = rec->sl;
ah_attr->src_path_bits = be16_to_cpu(rec->slid) &
get_src_path_mask(device, port_num);
ah_attr->port_num = port_num;
ah_attr->static_rate = rec->rate;
if (rec->hop_limit > 1) {
ah_attr->ah_flags = IB_AH_GRH;
ah_attr->grh.dgid = rec->dgid;
ret = ib_find_cached_gid(device, &rec->sgid, &port_num,
&gid_index);
if (ret)
return ret;
ah_attr->grh.sgid_index = gid_index;
ah_attr->grh.flow_label = be32_to_cpu(rec->flow_label);
ah_attr->grh.hop_limit = rec->hop_limit;
ah_attr->grh.traffic_class = rec->traffic_class;
}
return 0;
}
-----Original Message-----
From: Sean Hefty [mailto:sean.hefty at intel.com]
Sent: Thursday, December 03, 2009 4:02 PM
To: James Yang; Tzachi Dar; ofw at lists.openfabrics.org
Subject: RE: [ofw] patch 2/2 Add support for RDMAoEth to the low level driver
>It's a field inside cm req path record. This path information is passed
>over wire during cm hand shaking, and remote will decide to use gid or
>local lid to communicate.
>
>>> >+ // make this same as Linux code: p_path->hop_flow_raw >= 2
>>> means grh present.
>>> >+ if(cl_hton32(p_path->hop_flow_raw) >= 2) p_av->attr.grh_valid =
>>> >+ 1;
A couple of notes. First, the check here looks wrong. It should only check against the hop count, not the entire 32-bit field, which includes the flow label.
Second, the hop count has been used to indicate if an IB GRH is required because the packet may cross a router. With RDMAoE, a router is not involved, so a hop count of 0 or 1 are still valid. It's not even clear what an RDMAoE path record is, but I can't imagine that the hop count would be defined as needing to be >= 2.
- Sean
More information about the ofw
mailing list