From owner-p4-projects@FreeBSD.ORG Sat Sep 29 22:36:16 2007 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 1AEC016A468; Sat, 29 Sep 2007 22:36:16 +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 ACFB716A41A for ; Sat, 29 Sep 2007 22:36:15 +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 9E19713C48A for ; Sat, 29 Sep 2007 22:36:15 +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 l8TMaFn7050614 for ; Sat, 29 Sep 2007 22:36:15 GMT (envelope-from kmacy@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id l8TMaFhu050611 for perforce@freebsd.org; Sat, 29 Sep 2007 22:36:15 GMT (envelope-from kmacy@freebsd.org) Date: Sat, 29 Sep 2007 22:36:15 GMT Message-Id: <200709292236.l8TMaFhu050611@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 126993 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: Sat, 29 Sep 2007 22:36:16 -0000 http://perforce.freebsd.org/chv.cgi?CH=126993 Change 126993 by kmacy@kmacy_home:ethng on 2007/09/29 22:35:49 move mbuf ring definitions to after memory barrier definitions Affected files ... .. //depot/projects/ethng/src/sys/dev/cxgb/cxgb_osdep.h#12 edit Differences ... ==== //depot/projects/ethng/src/sys/dev/cxgb/cxgb_osdep.h#12 (text+ko) ==== @@ -61,65 +61,6 @@ struct mbuf *mh_tail; }; -struct mbuf_ring { - struct mbuf **mr_ring; - volatile uint32_t mr_cons; - volatile uint32_t mr_prod; - int mr_size; - struct mtx mr_lock; -}; - -static __inline int -mbuf_ring_count(struct mbuf_ring *mr) -{ - int size = mr->mr_size; - int mask = size - 1; - - return ((size + mr->mr_prod - mr->mr_cons) & mask); -} - -static __inline int -mbuf_ring_empty(struct mbuf_ring *mr) -{ - return (mr->mr_cons == mr->mr_prod); -} - -static __inline struct mbuf * -mbuf_ring_dequeue(struct mbuf_ring *mr) -{ - int prod, cons, mask; - struct mbuf **ring, *m; - - ring = mr->mr_ring; - mask = mr->mr_size - 1; - cons = mr->mr_cons; - prod = mr->mr_prod; - m = NULL; - if (cons != prod) { - m = ring[cons]; - mr->mr_cons = (cons + 1) & mask; - } - - return (m); -} - -static __inline struct mbuf * -mbuf_ring_peek(struct mbuf_ring *mr) -{ - int prod, cons, mask; - struct mbuf **ring, *m; - - ring = mr->mr_ring; - mask = mr->mr_size - 1; - cons = mr->mr_cons; - prod = mr->mr_prod; - m = NULL; - if (cons != prod) - m = ring[cons]; - - return (m); -} - #define PANIC_IF(exp) do { \ if (exp) \ panic("BUG: %s", exp); \ @@ -221,6 +162,67 @@ #define prefetch(x) #define L1_CACHE_BYTES 32 #endif + +struct mbuf_ring { + struct mbuf **mr_ring; + volatile uint32_t mr_cons; + volatile uint32_t mr_prod; + int mr_size; + struct mtx mr_lock; +}; + +static __inline int +mbuf_ring_count(struct mbuf_ring *mr) +{ + int size = mr->mr_size; + int mask = size - 1; + + return ((size + mr->mr_prod - mr->mr_cons) & mask); +} + +static __inline int +mbuf_ring_empty(struct mbuf_ring *mr) +{ + return (mr->mr_cons == mr->mr_prod); +} + +static __inline struct mbuf * +mbuf_ring_dequeue(struct mbuf_ring *mr) +{ + int prod, cons, mask; + struct mbuf **ring, *m; + + ring = mr->mr_ring; + mask = mr->mr_size - 1; + cons = mr->mr_cons; + prod = mr->mr_prod; + m = NULL; + if (cons != prod) { + m = ring[cons]; + mr->mr_cons = (cons + 1) & mask; + mb(); + } + + return (m); +} + +static __inline struct mbuf * +mbuf_ring_peek(struct mbuf_ring *mr) +{ + int prod, cons, mask; + struct mbuf **ring, *m; + + ring = mr->mr_ring; + mask = mr->mr_size - 1; + cons = mr->mr_cons; + prod = mr->mr_prod; + m = NULL; + if (cons != prod) + m = ring[cons]; + + return (m); +} + #define DBG_RX (1 << 0) static const int debug_flags = DBG_RX; @@ -245,7 +247,6 @@ #define test_and_clear_bit(bit, p) atomic_cmpset_int((p), ((*(p)) | bit), ((*(p)) & ~bit)) - #define max_t(type, a, b) (type)max((a), (b)) #define net_device ifnet #define cpu_to_be32 htobe32