batman-adv: Replace bitarray operations with bitmap
[deliverable/linux.git] / net / batman-adv / bitarray.h
index c6135728a680f853a00f161a823c0b23574a7c3d..1835c15cda411d5338e03dbff1c32fb9dd35ab20 100644 (file)
 #ifndef _NET_BATMAN_ADV_BITARRAY_H_
 #define _NET_BATMAN_ADV_BITARRAY_H_
 
-#define WORD_BIT_SIZE (sizeof(unsigned long) * 8)
-
 /* returns true if the corresponding bit in the given seq_bits indicates true
  * and curr_seqno is within range of last_seqno */
-int get_bit_status(const unsigned long *seq_bits, uint32_t last_seqno,
-                  uint32_t curr_seqno);
+static inline int bat_test_bit(const unsigned long *seq_bits,
+                              uint32_t last_seqno, uint32_t curr_seqno)
+{
+       int32_t diff;
+
+       diff = last_seqno - curr_seqno;
+       if (diff < 0 || diff >= TQ_LOCAL_WINDOW_SIZE)
+               return 0;
+       else
+               return  test_bit(diff, seq_bits);
+}
 
 /* turn corresponding bit on, so we can remember that we got the packet */
-void bit_mark(unsigned long *seq_bits, int32_t n);
+static inline void bat_set_bit(unsigned long *seq_bits, int32_t n)
+{
+       /* if too old, just drop it */
+       if (n < 0 || n >= TQ_LOCAL_WINDOW_SIZE)
+               return;
 
+       set_bit(n, seq_bits); /* turn the position on */
+}
 
 /* receive and process one packet, returns 1 if received seq_num is considered
  * new, 0 if old  */
 int bit_get_packet(void *priv, unsigned long *seq_bits,
                   int32_t seq_num_diff, int set_mark);
 
-/* count the hamming weight, how many good packets did we receive? */
-int bit_packet_count(const unsigned long *seq_bits);
-
 #endif /* _NET_BATMAN_ADV_BITARRAY_H_ */
This page took 0.023664 seconds and 5 git commands to generate.