Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756989Ab1FPH3R (ORCPT ); Thu, 16 Jun 2011 03:29:17 -0400 Received: from na3sys009aog114.obsmtp.com ([74.125.149.211]:60133 "EHLO na3sys009aog114.obsmtp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756388Ab1FPH3M convert rfc822-to-8bit (ORCPT ); Thu, 16 Jun 2011 03:29:12 -0400 From: Xiangliang Yu To: Jack Wang , "'James Bottomley'" CC: "yxlraid@gmail.com" , "lucas.demarchi@profusion.mobi" , "maciej.trela@intel.com" , "dan.j.williams@intel.com" , "linux-scsi@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Jacky Feng Date: Thu, 16 Jun 2011 00:27:50 -0700 Subject: RE: [PATCH] [SCSI] LIBSAS: fix libsas link error issue Thread-Topic: [PATCH] [SCSI] LIBSAS: fix libsas link error issue Thread-Index: AcwrIR/qdpMMo2uOTdi6EtZ/SnmPkgAAZ5KAACgYoPAAAOfC4AABCYdAAABOEGAAA867gAAA6NjQAAMaV6AAAIc6oAABFNUQAACOI5A= Message-ID: References: <1308064628-11826-1-git-send-email-yxlraid@gmail.com> <1308065367.2401.24.camel@mulgrave> <1308117450.2329.31.camel@mulgrave> <637AF86F1A314F15B816411A580575F0@usish.com.cn> <51A55E816E3847EF97FE4E849A572717@usish.com.cn> <4F7167A354D8476AB58FD36CA6321960@usish.com.cn> In-Reply-To: <4F7167A354D8476AB58FD36CA6321960@usish.com.cn> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 8BIT MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2063 Lines: 53 >> > >[Jack Wang] >> > >I don't think the statement below is error: >> > >child->linkrate = min(parent_phy->linkrate, child->max_linkrate); >> >> The parent_phy is same to child_phy, I don't think it's right. >> >[Jack Wang] The parent_phy->linkrate is report from DISCOVER response as >negotiated link rate(parent phy with child phy), so same is right. Parent_phy = &parent->ex_dev.ex_phy[phy_id]; (sas_ex_discover_expander) struct expander_device *parent_ex = &parent->ex_dev;(sas_ex_get_linkrate) struct ex_phy *phy = &parent_ex->ex_phy[i]; so, parent_phy and phy are same one variable. >> >> Yes, you can test like this. >> >> >Then expander1's linkrate will set to 3G, and expander2's linkrate will >> set >> >> >to 6G, that is correct. >> >> yes >> >> > But the connection rate will be 3G from hba to >> >> >expander2. >> >> How to configure the connection rate? >> >> Now, MVSAS driver get 6G from sas_ex_get_linkrate function, and set >> linkrate >> >> of OPEN address frame to the value. right? >> >> >> >> -- >> >[Jack Wang] >> >Connection rate is auto, link layer will insert deletable primitives to do >> >rate matching (sas2r15 7.14). >> >> >Yes, you should set the linkrate to that value . >> >> OK.MVSAS driver seem right. But, the problem is command fail because of link >> error, that is why I commit this patch. And my patch work fine. >> You can reproduce the issue and fix it. Thanks! >[Jack Wang] I re-consider it , you maybe should compare the HBA linkrate >with the child phy linkrate and chose a minor. Yes, how about this: - child->linkrate = min(parent_phy->linkrate, child->max_linkrate); + child->linkrate = min(parent->max_linkrate, child->max_linkrate); The max link rate of parent have HBA link rate info: dev->max_linkrate = port->linkrate; (in sas_get_port_device function). -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/