Attached is a patch that replaces some of the connection macros with inline function. The two internal functions you mention were not removed. When the lock has no contention, which is the common case, those functions are never called which is why the code was split into a macro and funciton in the first place. The BH suffixes were replaced w/ IRQ.
Thanks. See comments below...
+#define SDP_CONN_LOCK_IRQ(conn, flags) \
spin_lock_irqsave(&((conn)->lock.slock), flags)
Can we just remove this macro?
+#define SDP_CONN_UNLOCK_IRQ(conn, flags) \
spin_unlock_irqrestore(&((conn)->lock.slock), flags)
And this one?
+static inline void sdp_conn_hold(struct sdp_opt *conn)
+{
+ atomic_inc(&conn->refcnt);
+}
ditto...
+static inline void sdp_conn_put(struct sdp_opt *conn)
+{
+ if (atomic_dec_and_test(&conn->refcnt)) {
+
+ (void)sdp_conn_destruct(conn);
+ }
+}
This one is a little more debatable, but for 2 lines, versus 1, I'd remove it.
- Sean _______________________________________________ openib-general mailing list [email protected] http://openib.org/mailman/listinfo/openib-general
To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general
