Messages in this thread | | | From | "Jack Wang" <> | Subject | RE: [PATCH] [SCSI] LIBSAS: fix libsas link error issue | Date | Thu, 16 Jun 2011 12:31:34 +0800 |
| |
> > [Jack Wang] > >It's the same, sas_ex_get_linkrate use DISCOVER response as linkrate. > But the function have problem, actually, the error statement is: > child->linkrate = min(parent_phy->linkrate, child->max_linkrate); > its mean like this: > child->linkrate = min(child_phy->linkrate, > max(parent->max_linkrate,child_phy->linkrate)); > and if parent->max_linkrate(3Gbps) is less than child_phy->linkrate(6Gbps), > the statement will be change this: > child->linkrate = child_phy->linkrate, forget the parent linkrate. [Jack Wang] I don't think the statement below is error: child->linkrate = min(parent_phy->linkrate, child->max_linkrate);
parent_phy->linkrate is came from sas_set_ex_phy which will set the linkrate to negotiated logical linkrate. For your eg: you topo like this: hba(3G)---expander1(6G)---expander2(6G):
Then expander1's linkrate will set to 3G, and expander2's linkrate will set to 6G, that is correct. But the connection rate will be 3G from hba to expander2.
| |