PERFORCE change 126993 for review
Kip Macy
kmacy at FreeBSD.org
Sat Sep 29 15:36:16 PDT 2007
http://perforce.freebsd.org/chv.cgi?CH=126993
Change 126993 by kmacy at 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
More information about the p4-projects
mailing list