• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  #ifndef __LINKMODE_H
2  #define __LINKMODE_H
3  
4  #include <linux/bitmap.h>
5  #include <linux/ethtool.h>
6  #include <uapi/linux/ethtool.h>
7  
linkmode_zero(unsigned long * dst)8  static inline void linkmode_zero(unsigned long *dst)
9  {
10  	bitmap_zero(dst, __ETHTOOL_LINK_MODE_MASK_NBITS);
11  }
12  
linkmode_copy(unsigned long * dst,const unsigned long * src)13  static inline void linkmode_copy(unsigned long *dst, const unsigned long *src)
14  {
15  	bitmap_copy(dst, src, __ETHTOOL_LINK_MODE_MASK_NBITS);
16  }
17  
linkmode_and(unsigned long * dst,const unsigned long * a,const unsigned long * b)18  static inline void linkmode_and(unsigned long *dst, const unsigned long *a,
19  				const unsigned long *b)
20  {
21  	bitmap_and(dst, a, b, __ETHTOOL_LINK_MODE_MASK_NBITS);
22  }
23  
linkmode_or(unsigned long * dst,const unsigned long * a,const unsigned long * b)24  static inline void linkmode_or(unsigned long *dst, const unsigned long *a,
25  				const unsigned long *b)
26  {
27  	bitmap_or(dst, a, b, __ETHTOOL_LINK_MODE_MASK_NBITS);
28  }
29  
linkmode_empty(const unsigned long * src)30  static inline bool linkmode_empty(const unsigned long *src)
31  {
32  	return bitmap_empty(src, __ETHTOOL_LINK_MODE_MASK_NBITS);
33  }
34  
linkmode_andnot(unsigned long * dst,const unsigned long * src1,const unsigned long * src2)35  static inline int linkmode_andnot(unsigned long *dst, const unsigned long *src1,
36  				  const unsigned long *src2)
37  {
38  	return bitmap_andnot(dst, src1, src2,  __ETHTOOL_LINK_MODE_MASK_NBITS);
39  }
40  
linkmode_set_bit(int nr,volatile unsigned long * addr)41  static inline void linkmode_set_bit(int nr, volatile unsigned long *addr)
42  {
43  	__set_bit(nr, addr);
44  }
45  
linkmode_set_bit_array(const int * array,int array_size,unsigned long * addr)46  static inline void linkmode_set_bit_array(const int *array, int array_size,
47  					  unsigned long *addr)
48  {
49  	int i;
50  
51  	for (i = 0; i < array_size; i++)
52  		linkmode_set_bit(array[i], addr);
53  }
54  
linkmode_clear_bit(int nr,volatile unsigned long * addr)55  static inline void linkmode_clear_bit(int nr, volatile unsigned long *addr)
56  {
57  	__clear_bit(nr, addr);
58  }
59  
linkmode_mod_bit(int nr,volatile unsigned long * addr,int set)60  static inline void linkmode_mod_bit(int nr, volatile unsigned long *addr,
61  				    int set)
62  {
63  	if (set)
64  		linkmode_set_bit(nr, addr);
65  	else
66  		linkmode_clear_bit(nr, addr);
67  }
68  
linkmode_change_bit(int nr,volatile unsigned long * addr)69  static inline void linkmode_change_bit(int nr, volatile unsigned long *addr)
70  {
71  	__change_bit(nr, addr);
72  }
73  
linkmode_test_bit(int nr,volatile unsigned long * addr)74  static inline int linkmode_test_bit(int nr, volatile unsigned long *addr)
75  {
76  	return test_bit(nr, addr);
77  }
78  
linkmode_equal(const unsigned long * src1,const unsigned long * src2)79  static inline int linkmode_equal(const unsigned long *src1,
80  				 const unsigned long *src2)
81  {
82  	return bitmap_equal(src1, src2, __ETHTOOL_LINK_MODE_MASK_NBITS);
83  }
84  
85  #endif /* __LINKMODE_H */
86