Skip to content

Commit b31cdff

Browse files
lunndavem330
authored andcommitted
net: phy: Move linkmode helpers to somewhere public
phylink has some useful helpers to working with linkmode bitmaps. Move them to there own header so other code can use them. Signed-off-by: Andrew Lunn <andrew@lunn.ch> Acked-by: Florian Fainelli <f.fainelli@gmail.com> Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 97ea8ac commit b31cdff

File tree

4 files changed

+69
-27
lines changed

4 files changed

+69
-27
lines changed

drivers/net/phy/phylink.c

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -68,33 +68,6 @@ struct phylink {
6868
struct sfp_bus *sfp_bus;
6969
};
7070

71-
static inline void linkmode_zero(unsigned long *dst)
72-
{
73-
bitmap_zero(dst, __ETHTOOL_LINK_MODE_MASK_NBITS);
74-
}
75-
76-
static inline void linkmode_copy(unsigned long *dst, const unsigned long *src)
77-
{
78-
bitmap_copy(dst, src, __ETHTOOL_LINK_MODE_MASK_NBITS);
79-
}
80-
81-
static inline void linkmode_and(unsigned long *dst, const unsigned long *a,
82-
const unsigned long *b)
83-
{
84-
bitmap_and(dst, a, b, __ETHTOOL_LINK_MODE_MASK_NBITS);
85-
}
86-
87-
static inline void linkmode_or(unsigned long *dst, const unsigned long *a,
88-
const unsigned long *b)
89-
{
90-
bitmap_or(dst, a, b, __ETHTOOL_LINK_MODE_MASK_NBITS);
91-
}
92-
93-
static inline bool linkmode_empty(const unsigned long *src)
94-
{
95-
return bitmap_empty(src, __ETHTOOL_LINK_MODE_MASK_NBITS);
96-
}
97-
9871
/**
9972
* phylink_set_port_modes() - set the port type modes in the ethtool mask
10073
* @mask: ethtool link mode mask

include/linux/linkmode.h

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
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+
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+
bitmap_or(dst, a, b, __ETHTOOL_LINK_MODE_MASK_NBITS);
28+
}
29+
30+
static inline bool linkmode_empty(const unsigned long *src)
31+
{
32+
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_clear_bit(int nr, volatile unsigned long *addr)
47+
{
48+
__clear_bit(nr, addr);
49+
}
50+
51+
static inline void linkmode_change_bit(int nr, volatile unsigned long *addr)
52+
{
53+
__change_bit(nr, addr);
54+
}
55+
56+
static inline int linkmode_test_bit(int nr, volatile unsigned long *addr)
57+
{
58+
return test_bit(nr, addr);
59+
}
60+
61+
static inline int linkmode_equal(const unsigned long *src1,
62+
const unsigned long *src2)
63+
{
64+
return bitmap_equal(src1, src2, __ETHTOOL_LINK_MODE_MASK_NBITS);
65+
}
66+
67+
#endif /* __LINKMODE_H */

include/linux/mii.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111

1212
#include <linux/if.h>
13+
#include <linux/linkmode.h>
1314
#include <uapi/linux/mii.h>
1415

1516
struct ethtool_cmd;

include/linux/phy.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include <linux/compiler.h>
2020
#include <linux/spinlock.h>
2121
#include <linux/ethtool.h>
22+
#include <linux/linkmode.h>
2223
#include <linux/mdio.h>
2324
#include <linux/mii.h>
2425
#include <linux/module.h>

0 commit comments

Comments
 (0)