From owner-p4-projects@FreeBSD.ORG Wed Dec 5 16:38:41 2007 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 0ADD916A58C; Wed, 5 Dec 2007 16:38:41 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9087716A59E for ; Wed, 5 Dec 2007 16:38:39 +0000 (UTC) (envelope-from swise@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 8270813C45B for ; Wed, 5 Dec 2007 16:38:39 +0000 (UTC) (envelope-from swise@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id lB5Gcdha066074 for ; Wed, 5 Dec 2007 16:38:39 GMT (envelope-from swise@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id lB5GcdfH066071 for perforce@freebsd.org; Wed, 5 Dec 2007 16:38:39 GMT (envelope-from swise@FreeBSD.org) Date: Wed, 5 Dec 2007 16:38:39 GMT Message-Id: <200712051638.lB5GcdfH066071@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to swise@FreeBSD.org using -f From: Steve Wise To: Perforce Change Reviews Cc: Subject: PERFORCE change 130272 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 05 Dec 2007 16:38:41 -0000 http://perforce.freebsd.org/chv.cgi?CH=130272 Change 130272 by swise@swise:vic10:iwarp on 2007/12/05 16:38:22 iw_cxgb fixes to enable passive opens - refcount variable not initialized - added code to deal with passing meta-data in mbuf fields Affected files ... .. //depot/projects/iwarp/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_iwch_cm.c#2 edit Differences ... ==== //depot/projects/iwarp/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_iwch_cm.c#2 (text+ko) ==== @@ -286,6 +286,7 @@ epc = malloc(size, M_DEVBUF, flags); if (epc) { memset(epc, 0, size); + refcount_init(&epc->refcount, 1); mtx_init(&epc->lock, "iwch_epc lock", NULL, MTX_DEF); } PDBG("%s alloc ep %p\n", __FUNCTION__, epc); @@ -313,17 +314,16 @@ static void process_task(void *ctx, int pending) { -#ifdef notyet struct mbuf *m = NULL; void *ep; struct t3cdev *tdev; int ret; while ((m = mbufq_dequeue(&rxq))) { -#ifdef notyet - ep = *((void **) (skb->cb)); - tdev = *((struct t3cdev **) (skb->cb + sizeof(void *))); - ret = work_handlers[G_OPCODE(ntohl((__force __be32)skb->csum))](tdev, skb, ep); + ep = m->m_pkthdr.rcvif; + tdev = (struct t3cdev *)m->m_pkthdr.header; + PDBG("%s dequeued mbuf %p ep %p tdev %p\n", __FUNCTION__, m, ep, tdev); + ret = work_handlers[G_OPCODE(ntohl(m->m_pkthdr.csum_data))](tdev, m, ep); if (ret & CPL_RET_BUF_DONE) m_free(m); @@ -331,9 +331,7 @@ * ep was referenced in sched(), and is freed here. */ put_ep((struct iwch_ep_common *)ep); -#endif } -#endif } static int @@ -2109,21 +2107,14 @@ get_ep(epc); -#ifdef notyet - /* - * XXX :-/ - */ - /* - * Save ctx and tdev in the m->cb area. - */ - *((void **) skb->cb) = ctx; - *((struct t3cdev **) (skb->cb + sizeof(void *))) = tdev; + m->m_pkthdr.rcvif = (void *)ctx; + m->m_pkthdr.header = tdev; -#endif /* * Queue the mbuf and schedule the worker thread. */ mbufq_tail(&rxq, m); + PDBG("%s enqueued mbuf %p ep %p tdev %p\n", __FUNCTION__, m, epc, tdev); taskqueue_enqueue(mbuf_taskq, &mbuf_task); return 0; }