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;
_______________________________________________
svn-src-stable-10@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-stable-10
To unsubscribe, send any mail to "svn-src-stable-10-unsubscr...@freebsd.org"

Reply via email to