From owner-p4-projects@FreeBSD.ORG Thu Nov 1 01:39:47 2007 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7442416A41B; Thu, 1 Nov 2007 01:39:47 +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 AFD1C16A418 for ; Thu, 1 Nov 2007 01:39:46 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id A13EF13C48D for ; Thu, 1 Nov 2007 01:39:46 +0000 (UTC) (envelope-from kmacy@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 lA11dkOr063162 for ; Thu, 1 Nov 2007 01:39:46 GMT (envelope-from kmacy@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id lA11dk0n063159 for perforce@freebsd.org; Thu, 1 Nov 2007 01:39:46 GMT (envelope-from kmacy@freebsd.org) Date: Thu, 1 Nov 2007 01:39:46 GMT Message-Id: <200711010139.lA11dk0n063159@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to kmacy@freebsd.org using -f From: Kip Macy To: Perforce Change Reviews Cc: Subject: PERFORCE change 128443 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: Thu, 01 Nov 2007 01:39:47 -0000 http://perforce.freebsd.org/chv.cgi?CH=128443 Change 128443 by kmacy@kmacy:storage:toestack on 2007/11/01 01:39:39 fix incorrect definition of get_imm_packet the length is not set the way it is on packets with non-immediate data Affected files ... .. //depot/projects/toestack/sys/dev/cxgb/cxgb_sge.c#9 edit Differences ... ==== //depot/projects/toestack/sys/dev/cxgb/cxgb_sge.c#9 (text+ko) ==== @@ -296,38 +296,14 @@ static __inline int get_imm_packet(adapter_t *sc, const struct rsp_desc *resp, struct t3_mbuf_hdr *mh) { - struct mbuf *m; - int len; - uint32_t flags = ntohl(resp->flags); - uint8_t sopeop = G_RSPD_SOP_EOP(flags); - - /* - * would be a firmware bug - */ - if (sopeop == RSPQ_NSOP_NEOP || sopeop == RSPQ_SOP) return (0); m = m_gethdr(M_DONTWAIT, MT_DATA); - len = G_RSPD_LEN(ntohl(resp->len_cq)); + len = IMMED_PKT_SIZE; if (m) { - MH_ALIGN(m, IMMED_PKT_SIZE); memcpy(m->m_data, resp->imm_data, IMMED_PKT_SIZE); - m->m_len = len; - - switch (sopeop) { - case RSPQ_SOP_EOP: - mh->mh_head = mh->mh_tail = m; - m->m_pkthdr.len = len; - m->m_flags |= M_PKTHDR; - break; - case RSPQ_EOP: - m->m_flags &= ~M_PKTHDR; - mh->mh_head->m_pkthdr.len += len; - mh->mh_tail->m_next = m; - mh->mh_tail = m; - break; - } + m->m_pkthdr.len = m->m_len = len; } return (m != NULL); } @@ -336,39 +312,11 @@ static int get_imm_packet(adapter_t *sc, const struct rsp_desc *resp, struct mbuf *m, void *cl, uint32_t flags) { - int len, error; - uint8_t sopeop = G_RSPD_SOP_EOP(flags); + + m->m_len = m->m_pkthdr.len = IMMED_PKT_SIZE; + memcpy(mtod(m, uint8_t *), resp->imm_data, IMMED_PKT_SIZE); + return (0); - /* - * would be a firmware bug - */ - len = G_RSPD_LEN(ntohl(resp->len_cq)); - if (sopeop == RSPQ_NSOP_NEOP || sopeop == RSPQ_SOP) { - if (cxgb_debug) - device_printf(sc->dev, "unexpected value sopeop=%d flags=0x%x len=%din get_imm_packet\n", sopeop, flags, len); - bogus_imm++; - return (EINVAL); - } - error = 0; - switch (sopeop) { - case RSPQ_SOP_EOP: - m->m_len = m->m_pkthdr.len = len; - memcpy(mtod(m, uint8_t *), resp->imm_data, len); - break; - case RSPQ_EOP: - memcpy(cl, resp->imm_data, len); - /* - * XXX - */ - panic("bad append"); - m_iovappend(m, cl, MSIZE, len, 0, NULL); - break; - default: - bogus_imm++; - error = EINVAL; - } - - return (error); } #endif @@ -1514,7 +1462,7 @@ V_WR_LEN((len + 7) / 8)); wr_gen2(d, gen); - printf("m_freeing %p\n", m); + printf("write_imm m_freeing %p\n", m); m_freem(m); } @@ -2799,7 +2747,7 @@ #else struct mbuf *m = NULL; - DPRINTF("IMM DATA VALID opcode=0x%x rspq->cidx=%d\n", r->rss_hdr.opcode, rspq->cidx); + printf("IMM DATA VALID opcode=0x%x rspq->cidx=%d\n", r->rss_hdr.opcode, rspq->cidx); if (rspq->rspq_mbuf == NULL) rspq->rspq_mbuf = m_gethdr(M_DONTWAIT, MT_DATA); else @@ -2813,11 +2761,11 @@ budget_left--; break; } - if (get_imm_packet(adap, r, rspq->rspq_mbuf, m, flags)) { - eop = 1; - rspq->imm_data++; - goto skip; - } + get_imm_packet(adap, r, rspq->rspq_mbuf, m, flags); + + eop = 1; + rspq->imm_data++; + goto skip; #endif } else if (r->len_cq) {