svn commit: r304416 - stable/10/sys/dev/isp
Alexander Motin
mav at FreeBSD.org
Thu Aug 18 11:37:39 UTC 2016
Author: mav
Date: Thu Aug 18 11:37:38 2016
New Revision: 304416
URL: https://svnweb.freebsd.org/changeset/base/304416
Log:
MFC r300222: Fix delaying requests to unknown virtual ports 2s after init.
This code was originally implemented 7 years ago, but never really worked
due to trivial error. I think this functionality may be not required.
Initiators supporting optional periodic command status checks detected
those terminated commands and retried them 3 seconds later. But thinking
about less featured initiators and the fact that it is our race makes
virtual ports "unknown" it may be good to have this feature.
Modified:
stable/10/sys/dev/isp/isp.c
stable/10/sys/dev/isp/isp_freebsd.c
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/sys/dev/isp/isp.c
==============================================================================
--- stable/10/sys/dev/isp/isp.c Thu Aug 18 11:23:02 2016 (r304415)
+++ stable/10/sys/dev/isp/isp.c Thu Aug 18 11:37:38 2016 (r304416)
@@ -2431,6 +2431,7 @@ isp_fc_enable_vp(ispsoftc_t *isp, int ch
__func__, chan, vp.vp_mod_hdr.rqs_flags, vp.vp_mod_status);
return (EIO);
}
+ GET_NANOTIME(&isp->isp_init_time);
return (0);
}
@@ -5865,6 +5866,7 @@ isp_parse_async_fc(ispsoftc_t *isp, uint
* These are broadcast events that have to be sent across
* all active channels.
*/
+ GET_NANOTIME(&isp->isp_init_time);
for (chan = 0; chan < isp->isp_nchan; chan++) {
fcp = FCPARAM(isp, chan);
int topo = fcp->isp_topo;
@@ -5921,6 +5923,7 @@ isp_parse_async_fc(ispsoftc_t *isp, uint
* This is a broadcast event that has to be sent across
* all active channels.
*/
+ GET_NANOTIME(&isp->isp_init_time);
for (chan = 0; chan < isp->isp_nchan; chan++) {
fcp = FCPARAM(isp, chan);
if (fcp->role == ISP_ROLE_NONE)
@@ -5964,6 +5967,7 @@ isp_parse_async_fc(ispsoftc_t *isp, uint
* This is a broadcast event that has to be sent across
* all active channels.
*/
+ GET_NANOTIME(&isp->isp_init_time);
for (chan = 0; chan < isp->isp_nchan; chan++) {
fcp = FCPARAM(isp, chan);
if (fcp->role == ISP_ROLE_NONE)
@@ -6162,6 +6166,7 @@ isp_handle_other_response(ispsoftc_t *is
portid = (uint32_t)rid.ridacq_vp_port_hi << 16 |
rid.ridacq_vp_port_lo;
if (rid.ridacq_format == 0) {
+ GET_NANOTIME(&isp->isp_init_time);
for (chan = 0; chan < isp->isp_nchan; chan++) {
fcparam *fcp = FCPARAM(isp, chan);
if (fcp->role == ISP_ROLE_NONE)
Modified: stable/10/sys/dev/isp/isp_freebsd.c
==============================================================================
--- stable/10/sys/dev/isp/isp_freebsd.c Thu Aug 18 11:23:02 2016 (r304415)
+++ stable/10/sys/dev/isp/isp_freebsd.c Thu Aug 18 11:37:38 2016 (r304416)
@@ -2055,7 +2055,7 @@ isp_handle_platform_atio7(ispsoftc_t *is
* It's a bit tricky here as we need to stash this command *somewhere*.
*/
GET_NANOTIME(&now);
- if (NANOTIME_SUB(&isp->isp_init_time, &now) > 2000000000ULL) {
+ if (NANOTIME_SUB(&now, &isp->isp_init_time) > 2000000000ULL) {
isp_prt(isp, ISP_LOGWARN, "%s: [RX_ID 0x%x] D_ID %x not found on any channel- dropping", __func__, aep->at_rxid, did);
isp_endcmd(isp, aep, NIL_HANDLE, ISP_NOCHAN, ECMD_TERMINATE, 0);
return;
More information about the svn-src-stable
mailing list