Author: mav
Date: Wed Mar 29 15:56:57 2017
New Revision: 316153
URL: https://svnweb.freebsd.org/changeset/base/316153

Log:
  MFC r315482: Use isp_target_put_entry() in places where it can be.
  
  This unifies the code and removes some duplication.

Modified:
  stable/10/sys/dev/isp/isp_freebsd.c
  stable/10/sys/dev/isp/isp_target.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/dev/isp/isp_freebsd.c
==============================================================================
--- stable/10/sys/dev/isp/isp_freebsd.c Wed Mar 29 15:56:25 2017        
(r316152)
+++ stable/10/sys/dev/isp/isp_freebsd.c Wed Mar 29 15:56:57 2017        
(r316153)
@@ -1632,23 +1632,10 @@ isp_refire_notify_ack(void *arg)
 static void
 isp_target_putback_atio(union ccb *ccb)
 {
-       ispsoftc_t *isp;
-       struct ccb_scsiio *cso;
-       void *qe;
+       ispsoftc_t *isp = XS_ISP(ccb);
+       struct ccb_scsiio *cso = &ccb->csio;
        at2_entry_t local, *at = &local;
 
-       isp = XS_ISP(ccb);
-
-       qe = isp_getrqentry(isp);
-       if (qe == NULL) {
-               xpt_print(ccb->ccb_h.path,
-                   "%s: Request Queue Overflow\n", __func__);
-               callout_reset(&PISP_PCMD(ccb)->wdog, 10,
-                   isp_refire_putback_atio, ccb);
-               return;
-       }
-       memset(qe, 0, QENTRY_LEN);
-       cso = &ccb->csio;
        ISP_MEMZERO(at, sizeof (at2_entry_t));
        at->at_header.rqs_entry_type = RQSTYPE_ATIO2;
        at->at_header.rqs_entry_count = 1;
@@ -1660,10 +1647,11 @@ isp_target_putback_atio(union ccb *ccb)
        at->at_status = CT_OK;
        at->at_rxid = cso->tag_id;
        at->at_iid = cso->ccb_h.target_id;
-       isp_put_atio2(isp, at, qe);
-       ISP_TDQE(isp, "isp_target_putback_atio", isp->isp_reqidx, qe);
-       ISP_SYNC_REQUEST(isp);
-       isp_complete_ctio(ccb);
+       if (isp_target_put_entry(isp, at)) {
+               callout_reset(&PISP_PCMD(ccb)->wdog, 10,
+                   isp_refire_putback_atio, ccb);
+       } else
+               isp_complete_ctio(ccb);
 }
 
 static void

Modified: stable/10/sys/dev/isp/isp_target.c
==============================================================================
--- stable/10/sys/dev/isp/isp_target.c  Wed Mar 29 15:56:25 2017        
(r316152)
+++ stable/10/sys/dev/isp/isp_target.c  Wed Mar 29 15:56:57 2017        
(r316153)
@@ -421,22 +421,37 @@ isp_target_put_entry(ispsoftc_t *isp, vo
                return (-1);
        }
        switch (etype) {
+       case RQSTYPE_NOTIFY_ACK:
+               if (IS_24XX(isp))
+                       isp_put_notify_24xx_ack(isp, (na_fcentry_24xx_t *)ap,
+                           (na_fcentry_24xx_t *)outp);
+               else if (ISP_CAP_2KLOGIN(isp))
+                       isp_put_notify_ack_fc_e(isp, (na_fcentry_e_t *)ap,
+                           (na_fcentry_e_t *)outp);
+               else
+                       isp_put_notify_ack_fc(isp, ap, (na_fcentry_t *)outp);
+               break;
        case RQSTYPE_ATIO2:
-               if (ISP_CAP_2KLOGIN(isp)) {
-                       isp_put_atio2e(isp, (at2e_entry_t *) ap, (at2e_entry_t 
*) outp);
-               } else {
-                       isp_put_atio2(isp, (at2_entry_t *) ap, (at2_entry_t *) 
outp);
-               }
+               if (ISP_CAP_2KLOGIN(isp))
+                       isp_put_atio2e(isp, (at2e_entry_t *)ap,
+                           (at2e_entry_t *)outp);
+               else
+                       isp_put_atio2(isp, (at2_entry_t *)ap,
+                           (at2_entry_t *)outp);
                break;
        case RQSTYPE_CTIO2:
-               if (ISP_CAP_2KLOGIN(isp)) {
-                       isp_put_ctio2e(isp, (ct2e_entry_t *) ap, (ct2e_entry_t 
*) outp);
-               } else {
-                       isp_put_ctio2(isp, (ct2_entry_t *) ap, (ct2_entry_t *) 
outp);
-               }
+               if (ISP_CAP_2KLOGIN(isp))
+                       isp_put_ctio2e(isp, (ct2e_entry_t *)ap,
+                           (ct2e_entry_t *)outp);
+               else
+                       isp_put_ctio2(isp, (ct2_entry_t *)ap,
+                           (ct2_entry_t *)outp);
                break;
        case RQSTYPE_CTIO7:
-               isp_put_ctio7(isp, (ct7_entry_t *) ap, (ct7_entry_t *) outp);
+               isp_put_ctio7(isp, (ct7_entry_t *)ap, (ct7_entry_t *)outp);
+               break;
+       case RQSTYPE_ABTS_RSP:
+               isp_put_abts_rsp(isp, (abts_rsp_t *)ap, (abts_rsp_t *)outp);
                break;
        default:
                isp_prt(isp, ISP_LOGERR, "%s: Unknown type 0x%x", __func__, 
etype);
@@ -830,7 +845,6 @@ int
 isp_notify_ack(ispsoftc_t *isp, void *arg)
 {
        char storage[QENTRY_LEN];
-       void *outp;
 
        /*
         * This is in case a Task Management Function ends up here.
@@ -840,14 +854,7 @@ isp_notify_ack(ispsoftc_t *isp, void *ar
                return (isp_endcmd(isp, aep, NIL_HANDLE, 0, 0, 0));
        }
 
-       outp = isp_getrqentry(isp);
-       if (outp == NULL) {
-               isp_prt(isp, ISP_LOGWARN, rqo, __func__);
-               return (1);
-       }
-
        ISP_MEMZERO(storage, QENTRY_LEN);
-
        if (IS_24XX(isp)) {
                in_fcentry_24xx_t *in = arg;
                na_fcentry_24xx_t *na = (na_fcentry_24xx_t *) storage;
@@ -881,7 +888,6 @@ isp_notify_ack(ispsoftc_t *isp, void *ar
                                na->na_srr_reject_explanation = 0x2a;
                        }
                }
-               isp_put_notify_24xx_ack(isp, na, (na_fcentry_24xx_t *)outp);
        } else {
                in_fcentry_t *in = arg;
                na_fcentry_t *na = (na_fcentry_t *) storage;
@@ -908,18 +914,10 @@ isp_notify_ack(ispsoftc_t *isp, void *ar
                }
                na->na_header.rqs_entry_type = RQSTYPE_NOTIFY_ACK;
                na->na_header.rqs_entry_count = 1;
-               if (ISP_CAP_2KLOGIN(isp)) {
-                       isp_put_notify_ack_fc_e(isp, (na_fcentry_e_t *)na,
-                           (na_fcentry_e_t *)outp);
-               } else {
-                       isp_put_notify_ack_fc(isp, na, (na_fcentry_t *)outp);
-               }
                isp_prt(isp, ISP_LOGTDEBUG0, "notify ack handle %x seqid %x 
flags %x tflags %x response %x", iid, na->na_seqid,
                    na->na_flags, na->na_task_flags, na->na_response);
        }
-       ISP_TDQE(isp, "isp_notify_ack", isp->isp_reqidx, storage);
-       ISP_SYNC_REQUEST(isp);
-       return (0);
+       return (isp_target_put_entry(isp, &storage));
 }
 
 int
@@ -930,7 +928,6 @@ isp_acknak_abts(ispsoftc_t *isp, void *a
        uint8_t tmpb;
        abts_t *abts = arg;
        abts_rsp_t *rsp = (abts_rsp_t *) storage;
-       void *outp;
 
        if (!IS_24XX(isp)) {
                isp_prt(isp, ISP_LOGERR, "%s: called for non-24XX card", 
__func__);
@@ -942,12 +939,6 @@ isp_acknak_abts(ispsoftc_t *isp, void *a
                return (0);
        }
 
-       outp = isp_getrqentry(isp);
-       if (outp == NULL) {
-               isp_prt(isp, ISP_LOGWARN, rqo, __func__);
-               return (1);
-       }
-
        ISP_MEMCPY(rsp, abts, QENTRY_LEN);
        rsp->abts_rsp_header.rqs_entry_type = RQSTYPE_ABTS_RSP;
 
@@ -990,15 +981,7 @@ isp_acknak_abts(ispsoftc_t *isp, void *a
                        break;
                }
        }
-
-       /*
-        * The caller will have set response values as appropriate
-        * in the ABTS structure just before calling us.
-        */
-       isp_put_abts_rsp(isp, rsp, (abts_rsp_t *)outp);
-       ISP_TDQE(isp, "isp_acknak_abts", isp->isp_reqidx, storage);
-       ISP_SYNC_REQUEST(isp);
-       return (0);
+       return (isp_target_put_entry(isp, rsp));
 }
 
 static void
_______________________________________________
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