>From 3fc4260eb97bbc9af20ed1f401c5925fe245a7c7 Mon Sep 17 00:00:00 2001
From: Sasha Khapyorsky <[EMAIL PROTECTED]>
Date: Sun, 11 Nov 2007 17:49:36 +0200
Subject: [PATCH] opensm/osm_link_mgr: use return status when PortInfo is updated

This adds return status to __osm_link_mgr_set_physp_pi() function
(instead of stored at link_mgr structure flag), which indicates PortInfo
Set request sending.

Signed-off-by: Sasha Khapyorsky <[EMAIL PROTECTED]>
---
 opensm/include/opensm/osm_link_mgr.h |    5 -----
 opensm/opensm/osm_link_mgr.c         |   21 ++++++++-------------
 2 files changed, 8 insertions(+), 18 deletions(-)

diff --git a/opensm/include/opensm/osm_link_mgr.h 
b/opensm/include/opensm/osm_link_mgr.h
index 214dd80..11a7352 100644
--- a/opensm/include/opensm/osm_link_mgr.h
+++ b/opensm/include/opensm/osm_link_mgr.h
@@ -98,8 +98,6 @@ typedef struct _osm_link_mgr {
        osm_req_t *p_req;
        osm_log_t *p_log;
        cl_plock_t *p_lock;
-       boolean_t send_set_reqs;
-
 } osm_link_mgr_t;
 /*
 * FIELDS
@@ -115,9 +113,6 @@ typedef struct _osm_link_mgr {
 *      p_lock
 *              Pointer to the serializing lock.
 *
-*      send_set_reqs
-*              Boolean to indicate whether any set requests sent.
-*
 * SEE ALSO
 *      Link Manager object
 *********/
diff --git a/opensm/opensm/osm_link_mgr.c b/opensm/opensm/osm_link_mgr.c
index 768d4c4..6fcff72 100644
--- a/opensm/opensm/osm_link_mgr.c
+++ b/opensm/opensm/osm_link_mgr.c
@@ -102,7 +102,7 @@ osm_link_mgr_init(IN osm_link_mgr_t * const p_mgr,
 
 /**********************************************************************
  **********************************************************************/
-static void
+static boolean_t
 __osm_link_mgr_set_physp_pi(IN osm_link_mgr_t * const p_mgr,
                            IN osm_physp_t * const p_physp,
                            IN uint8_t const port_state)
@@ -381,8 +381,7 @@ __osm_link_mgr_set_physp_pi(IN osm_link_mgr_t * const p_mgr,
            && p_mgr->p_subn->first_time_master_sweep == TRUE)
                send_set = TRUE;
 
-       if (send_set) {
-               p_mgr->send_set_reqs = TRUE;
+       if (send_set)
                status = osm_req_set(p_mgr->p_req,
                                     osm_physp_get_dr_path_ptr(p_physp),
                                     payload,
@@ -390,10 +389,10 @@ __osm_link_mgr_set_physp_pi(IN osm_link_mgr_t * const 
p_mgr,
                                     IB_MAD_ATTR_PORT_INFO,
                                     cl_hton32(port_num),
                                     CL_DISP_MSGID_NONE, &context);
-       }
 
       Exit:
        OSM_LOG_EXIT(p_mgr->p_log);
+       return send_set;
 }
 
 /**********************************************************************
@@ -435,7 +434,6 @@ __osm_link_mgr_process_node(IN osm_link_mgr_t * const p_mgr,
                        continue;
 
                current_state = osm_physp_get_port_state(p_physp);
-
                if (current_state == IB_LINK_DOWN)
                        continue;
 
@@ -444,19 +442,16 @@ __osm_link_mgr_process_node(IN osm_link_mgr_t * const 
p_mgr,
                   then required state. However, we need to send update if
                   no state change required.
                 */
-               if ((link_state == IB_LINK_NO_CHANGE) ||
-                   (current_state < link_state)) {
-                       p_mgr->send_set_reqs = FALSE;
-                       __osm_link_mgr_set_physp_pi(p_mgr, p_physp, link_state);
-
-                       if (p_mgr->send_set_reqs == TRUE)
-                               signal = OSM_SIGNAL_DONE_PENDING;
-               } else if (osm_log_is_active(p_mgr->p_log, OSM_LOG_DEBUG))
+               if (link_state != IB_LINK_NO_CHANGE &&
+                   link_state <= current_state)
                        osm_log(p_mgr->p_log, OSM_LOG_DEBUG,
                                "__osm_link_mgr_process_node: "
                                "Physical port 0x%X already %s. Skipping\n",
                                p_physp->port_num,
                                ib_get_port_state_str(current_state));
+               else if (__osm_link_mgr_set_physp_pi(p_mgr, p_physp,
+                                                    link_state))
+                       signal = OSM_SIGNAL_DONE_PENDING;
        }
 
        OSM_LOG_EXIT(p_mgr->p_log);
-- 
1.5.3.rc2.29.gc4640f

_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to