From owner-svn-src-projects@FreeBSD.ORG Mon Jan 12 13:50:35 2015 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 93BFEC31; Mon, 12 Jan 2015 13:50:35 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 7FD7DEDA; Mon, 12 Jan 2015 13:50:35 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t0CDoZlg019560; Mon, 12 Jan 2015 13:50:35 GMT (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0CDoZok019559; Mon, 12 Jan 2015 13:50:35 GMT (envelope-from glebius@FreeBSD.org) Message-Id: <201501121350.t0CDoZok019559@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: glebius set sender to glebius@FreeBSD.org using -f From: Gleb Smirnoff Date: Mon, 12 Jan 2015 13:50:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r277070 - projects/ifnet/sys/sys X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Jan 2015 13:50:35 -0000 Author: glebius Date: Mon Jan 12 13:50:34 2015 New Revision: 277070 URL: https://svnweb.freebsd.org/changeset/base/277070 Log: Marry mbuf(9) and queue(9). Now you can chain mbufs using SLIST and STAILQ families of macros. The change is 100% backward compatible, the m_next and m_nextpkt work as before and has no effect on binary code. Sponsored by: Nginx, Inc. Modified: projects/ifnet/sys/sys/mbuf.h Modified: projects/ifnet/sys/sys/mbuf.h ============================================================================== --- projects/ifnet/sys/sys/mbuf.h Mon Jan 12 13:44:34 2015 (r277069) +++ projects/ifnet/sys/sys/mbuf.h Mon Jan 12 13:50:34 2015 (r277070) @@ -92,8 +92,16 @@ struct mb_args { * LP64: 32 */ struct m_hdr { - struct mbuf *mh_next; /* next buffer in chain */ - struct mbuf *mh_nextpkt; /* next chain in queue/record */ + union { + struct mbuf *m; + SLIST_ENTRY(mbuf) slist; + STAILQ_ENTRY(mbuf) stailq; + } mh_next; /* next buffer in chain */ + union { + struct mbuf *m; + SLIST_ENTRY(mbuf) slist; + STAILQ_ENTRY(mbuf) stailq; + } mh_nextpkt; /* next chain in queue/record */ caddr_t mh_data; /* location of data */ int32_t mh_len; /* amount of data in this mbuf */ uint32_t mh_type:8, /* type of data in this mbuf */ @@ -196,12 +204,16 @@ struct mbuf { char M_databuf[MLEN]; /* !M_PKTHDR, !M_EXT */ } M_dat; }; -#define m_next m_hdr.mh_next +#define m_next m_hdr.mh_next.m +#define m_slist m_hdr.mh_next.slist +#define m_stailq m_hdr.mh_next.stailq #define m_len m_hdr.mh_len #define m_data m_hdr.mh_data #define m_type m_hdr.mh_type #define m_flags m_hdr.mh_flags -#define m_nextpkt m_hdr.mh_nextpkt +#define m_nextpkt m_hdr.mh_nextpkt.m +#define m_slistpkt m_hdr.mh_nextpkt.slist +#define m_stailqpkt m_hdr.mh_nextpkt.stailq #define m_pkthdr M_dat.MH.MH_pkthdr #define m_ext M_dat.MH.MH_dat.MH_ext #define m_pktdat M_dat.MH.MH_dat.MH_databuf