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 : 3 : for (i = 0; i < array_size; i++) 52 : 3 : 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 */