PERFORCE change 127793 for review

Kip Macy kmacy at FreeBSD.org
Fri Oct 19 12:32:52 PDT 2007


http://perforce.freebsd.org/chv.cgi?CH=127793

Change 127793 by kmacy at kmacy_home:ethng on 2007/10/19 19:32:12

	add iw_cxgb_iwch_cm.c to the build

Affected files ...

.. //depot/projects/ethng/src/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_iwch.h#2 edit
.. //depot/projects/ethng/src/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_iwch_cm.c#1 add
.. //depot/projects/ethng/src/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_iwch_cm.h#2 edit
.. //depot/projects/ethng/src/sys/modules/cxgb/iw_cxgb/Makefile#2 edit

Differences ...

==== //depot/projects/ethng/src/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_iwch.h#2 (text+ko) ====

@@ -97,11 +97,9 @@
 	struct cxio_rdev rdev;
 	u32 device_cap_flags;
 	struct iwch_rnic_attributes attr;
-#ifdef notyet	
 	struct idr cqidr;
 	struct idr qpidr;
 	struct idr mmidr;
-#endif	
 	struct mtx lock;
 	TAILQ_ENTRY(iwch_dev) entry;
 };
@@ -125,7 +123,6 @@
 	return rhp->rdev.t3cdev_p->type == T3A;
 }
 
-#ifdef notyet
 static inline struct iwch_cq *get_chp(struct iwch_dev *rhp, u32 cqid)
 {
 	return idr_find(&rhp->cqidr, cqid);
@@ -148,13 +145,13 @@
 	u32 newid;
 
 	do {
-		if (!idr_pre_get(idr, GFP_KERNEL)) {
+		if (!idr_pre_get(idr, M_NOWAIT)) {
 			return -ENOMEM;
 		}
-		spin_lock_irq(&rhp->lock);
+		mtx_lock(&rhp->lock);
 		ret = idr_get_new_above(idr, handle, id, &newid);
 		BUG_ON(newid != id);
-		spin_unlock_irq(&rhp->lock);
+		mtx_unlock(&rhp->lock);
 	} while (ret == -EAGAIN);
 
 	return ret;
@@ -162,11 +159,10 @@
 
 static inline void remove_handle(struct iwch_dev *rhp, struct idr *idr, u32 id)
 {
-	spin_lock_irq(&rhp->lock);
+	mtx_lock(&rhp->lock);
 	idr_remove(idr, id);
-	spin_unlock_irq(&rhp->lock);
+	mtx_unlock(&rhp->lock);
 }
-#endif
 
 extern struct cxgb_client t3c_client;
 extern cxgb_cpl_handler_func t3c_handlers[NUM_CPL_CMDS];

==== //depot/projects/ethng/src/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_iwch_cm.h#2 (text+ko) ====

@@ -3,6 +3,8 @@
 #define _IWCH_CM_H_
 #include <contrib/rdma/ib_verbs.h>
 #include <contrib/rdma/iw_cm.h>
+#include <sys/refcount.h>
+#include <sys/condvar.h>
 
 
 #define MPA_KEY_REQ "MPA ID Req Frame"
@@ -17,14 +19,15 @@
 
 #define put_ep(ep) { \
 	PDBG("put_ep (via %s:%u) ep %p refcnt %d\n", __FUNCTION__, __LINE__,  \
-	     ep, atomic_read(&((ep)->kref.refcount))); \
-	kref_put(&((ep)->kref), __free_ep); \
+	     ep, atomic_load_acq_int(&((ep)->refcount))); \
+	if (refcount_release(&((ep)->refcount)))  \
+		__free_ep(ep); \
 }
 
 #define get_ep(ep) { \
 	PDBG("get_ep (via %s:%u) ep %p, refcnt %d\n", __FUNCTION__, __LINE__, \
-	     ep, atomic_read(&((ep)->kref.refcount))); \
-	kref_get(&((ep)->kref));  \
+	     ep, atomic_load_acq_int(&((ep)->refcount))); \
+	refcount_acquire(&((ep)->refcount));	  \
 }
 
 struct mpa_message {
@@ -115,14 +118,11 @@
 	struct iwch_qp *qp;
 	struct t3cdev *tdev;
 	enum iwch_ep_state state;
-#ifdef notyet	
-	struct kref kref;
-	wait_queue_head_t waitq;
-#endif	
+	u_int refcount;
+	struct cv waitq;
 	spinlock_t lock;
 	struct sockaddr_in local_addr;
 	struct sockaddr_in remote_addr;
-	int rpl_done;
 	int rpl_err;
 };
 
@@ -135,18 +135,14 @@
 struct iwch_ep {
 	struct iwch_ep_common com;
 	struct iwch_ep *parent_ep;
-#ifdef notyet	
-	struct timer_list timer;
-#endif
+	struct callout timer;
 	unsigned int atid;
 	u32 hwtid;
 	u32 snd_seq;
 	struct l2t_entry *l2t;
-	struct dst_entry *dst;
-	struct sk_buff *mpa_skb;
-#ifdef notyet	
+	struct rtentry *dst;
+	struct mbuf *mpa_mbuf;
 	struct iwch_mpa_attributes mpa_attr;
-#endif	
 	unsigned int mpa_pkt_len;
 	u8 mpa_pkt[sizeof(struct mpa_message) + MPA_MAX_PRIVATE_DATA];
 	u8 tos;
@@ -176,6 +172,22 @@
 	return wscale;
 }
 
+static void
+wait_event(struct cv *cv, struct mtx *lock)
+{
+	mtx_lock(lock);
+	cv_wait_unlock(cv, lock);
+}
+
+static void
+wake_up(struct cv *cv, struct mtx *lock)
+{
+	mtx_lock(lock);
+	cv_broadcast(cv);
+	mtx_unlock(lock);	
+}
+	
+
 /* CM prototypes */
 
 int iwch_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param);
@@ -183,12 +195,10 @@
 int iwch_destroy_listen(struct iw_cm_id *cm_id);
 int iwch_reject_cr(struct iw_cm_id *cm_id, const void *pdata, u8 pdata_len);
 int iwch_accept_cr(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param);
-int iwch_ep_disconnect(struct iwch_ep *ep, int abrupt, gfp_t gfp);
+int iwch_ep_disconnect(struct iwch_ep *ep, int abrupt, int flags);
 int iwch_quiesce_tid(struct iwch_ep *ep);
 int iwch_resume_tid(struct iwch_ep *ep);
-#ifdef notyet
-void __free_ep(struct kref *kref);
-#endif
+void __free_ep(struct iwch_ep_common *ep);
 void iwch_rearp(struct iwch_ep *ep);
 int iwch_ep_redirect(void *ctx, struct rtentry *old, struct rtentry *new, struct l2t_entry *l2t);
 

==== //depot/projects/ethng/src/sys/modules/cxgb/iw_cxgb/Makefile#2 (text+ko) ====

@@ -4,7 +4,7 @@
 .PATH: ${IW_CXGB} ${CXGB}/common ${CXGB}/ulp/iw_cxgb
 
 KMOD=	iw_cxgb
-SRCS=	iw_cxgb_iwch.c bus_if.h device_if.h opt_sched.h pci_if.h
+SRCS=	iw_cxgb_iwch.c iw_cxgb_iwch_cm.c bus_if.h device_if.h opt_sched.h pci_if.h
 CFLAGS+= -DCONFIG_CHELSIO_T3_CORE -g -DCONFIG_DEFINED  -I${CXGB} -DSMP
 
 .include <bsd.kmod.mk>


More information about the p4-projects mailing list