cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

bitarray.h (1541B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/* Copyright (C) B.A.T.M.A.N. contributors:
      3 *
      4 * Simon Wunderlich, Marek Lindner
      5 */
      6
      7#ifndef _NET_BATMAN_ADV_BITARRAY_H_
      8#define _NET_BATMAN_ADV_BITARRAY_H_
      9
     10#include "main.h"
     11
     12#include <linux/bitops.h>
     13#include <linux/compiler.h>
     14#include <linux/stddef.h>
     15#include <linux/types.h>
     16
     17/**
     18 * batadv_test_bit() - check if bit is set in the current window
     19 *
     20 * @seq_bits: pointer to the sequence number receive packet
     21 * @last_seqno: latest sequence number in seq_bits
     22 * @curr_seqno: sequence number to test for
     23 *
     24 * Return: true if the corresponding bit in the given seq_bits indicates true
     25 * and curr_seqno is within range of last_seqno. Otherwise returns false.
     26 */
     27static inline bool batadv_test_bit(const unsigned long *seq_bits,
     28				   u32 last_seqno, u32 curr_seqno)
     29{
     30	s32 diff;
     31
     32	diff = last_seqno - curr_seqno;
     33	if (diff < 0 || diff >= BATADV_TQ_LOCAL_WINDOW_SIZE)
     34		return false;
     35	return test_bit(diff, seq_bits) != 0;
     36}
     37
     38/**
     39 * batadv_set_bit() - Turn corresponding bit on, so we can remember that we got
     40 *  the packet
     41 * @seq_bits: bitmap of the packet receive window
     42 * @n: relative sequence number of newly received packet
     43 */
     44static inline void batadv_set_bit(unsigned long *seq_bits, s32 n)
     45{
     46	/* if too old, just drop it */
     47	if (n < 0 || n >= BATADV_TQ_LOCAL_WINDOW_SIZE)
     48		return;
     49
     50	set_bit(n, seq_bits); /* turn the position on */
     51}
     52
     53bool batadv_bit_get_packet(void *priv, unsigned long *seq_bits,
     54			   s32 seq_num_diff, int set_mark);
     55
     56#endif /* _NET_BATMAN_ADV_BITARRAY_H_ */