Branch data Line data Source code
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 : :
8 : : static inline void linkmode_zero(unsigned long *dst)
9 : : {
10 : : bitmap_zero(dst, __ETHTOOL_LINK_MODE_MASK_NBITS);
11 : : }
12 : :
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 : :
18 : : static inline void linkmode_and(unsigned long *dst, const unsigned long *a,
19 : : const unsigned long *b)
20 : : {
21 : 0 : bitmap_and(dst, a, b, __ETHTOOL_LINK_MODE_MASK_NBITS);
22 : : }
23 : :
24 : : static inline void linkmode_or(unsigned long *dst, const unsigned long *a,
25 : : const unsigned long *b)
26 : : {
27 : 0 : bitmap_or(dst, a, b, __ETHTOOL_LINK_MODE_MASK_NBITS);
28 : : }
29 : :
30 : : static inline bool linkmode_empty(const unsigned long *src)
31 : : {
32 : 0 : return bitmap_empty(src, __ETHTOOL_LINK_MODE_MASK_NBITS);
33 : : }
34 : :
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 : :
41 : : static inline void linkmode_set_bit(int nr, volatile unsigned long *addr)
42 : : {
43 : : __set_bit(nr, addr);
44 : : }
45 : :
46 : : static inline void linkmode_set_bit_array(const int *array, int array_size,
47 : : unsigned long *addr)
48 : : {
49 : : int i;
50 : :
51 [ # # + + : 27068 : for (i = 0; i < array_size; i++)
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + ]
52 : 27068 : linkmode_set_bit(array[i], addr);
53 : : }
54 : :
55 : : static inline void linkmode_clear_bit(int nr, volatile unsigned long *addr)
56 : : {
57 : : __clear_bit(nr, addr);
58 : : }
59 : :
60 : 0 : static inline void linkmode_mod_bit(int nr, volatile unsigned long *addr,
61 : : int set)
62 : : {
63 [ # # ]: 0 : if (set)
64 : : linkmode_set_bit(nr, addr);
65 : : else
66 : : linkmode_clear_bit(nr, addr);
67 : 0 : }
68 : :
69 : : static inline void linkmode_change_bit(int nr, volatile unsigned long *addr)
70 : : {
71 : : __change_bit(nr, addr);
72 : : }
73 : :
74 : : static inline int linkmode_test_bit(int nr, volatile unsigned long *addr)
75 : : {
76 : : return test_bit(nr, addr);
77 : : }
78 : :
79 : : static inline int linkmode_equal(const unsigned long *src1,
80 : : const unsigned long *src2)
81 : : {
82 : 0 : return bitmap_equal(src1, src2, __ETHTOOL_LINK_MODE_MASK_NBITS);
83 : : }
84 : :
85 : : #endif /* __LINKMODE_H */
|