Skip to content

Commit 857968a

Browse files
ykulazhenkovaboch
authored andcommitted
Add support for VDPA devices management
Current implementation support following functions: - VDPANewDev - VDPADelDev - VDPAGetDevList - VDPAGetDevByName - VDPAGetDevConfigList - VDPAGetDevConfigByName - VDPAGetDevVStats - VDPAGetMGMTDevList - VDPAGetMGMTDevByBusAndName Signed-off-by: Yury Kulazhenkov <[email protected]>
1 parent 06219cd commit 857968a

File tree

5 files changed

+929
-16
lines changed

5 files changed

+929
-16
lines changed

netlink_test.go

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,28 @@ func skipUnlessRoot(t *testing.T) {
3131
}
3232
}
3333

34+
func skipUnlessKModuleLoaded(t *testing.T, module ...string) {
35+
t.Helper()
36+
file, err := ioutil.ReadFile("/proc/modules")
37+
if err != nil {
38+
t.Fatal("Failed to open /proc/modules", err)
39+
}
40+
for _, mod := range module {
41+
found := false
42+
for _, line := range strings.Split(string(file), "\n") {
43+
n := strings.Split(line, " ")[0]
44+
if n == mod {
45+
found = true
46+
break
47+
}
48+
49+
}
50+
if !found {
51+
t.Skipf("Test requires kmodule %q.", mod)
52+
}
53+
}
54+
}
55+
3456
func setUpNetlinkTest(t *testing.T) tearDownNetlinkTest {
3557
skipUnlessRoot(t)
3658

@@ -159,22 +181,7 @@ func setUpSEG6NetlinkTest(t *testing.T) tearDownNetlinkTest {
159181
}
160182

161183
func setUpNetlinkTestWithKModule(t *testing.T, name string) tearDownNetlinkTest {
162-
file, err := ioutil.ReadFile("/proc/modules")
163-
if err != nil {
164-
t.Fatal("Failed to open /proc/modules", err)
165-
}
166-
found := false
167-
for _, line := range strings.Split(string(file), "\n") {
168-
n := strings.Split(line, " ")[0]
169-
if n == name {
170-
found = true
171-
break
172-
}
173-
174-
}
175-
if !found {
176-
t.Skipf("Test requires kmodule %q.", name)
177-
}
184+
skipUnlessKModuleLoaded(t, name)
178185
return setUpNetlinkTest(t)
179186
}
180187

nl/vdpa_linux.go

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package nl
2+
3+
const (
4+
VDPA_GENL_NAME = "vdpa"
5+
VDPA_GENL_VERSION = 0x1
6+
)
7+
8+
const (
9+
VDPA_CMD_UNSPEC = iota
10+
VDPA_CMD_MGMTDEV_NEW
11+
VDPA_CMD_MGMTDEV_GET /* can dump */
12+
VDPA_CMD_DEV_NEW
13+
VDPA_CMD_DEV_DEL
14+
VDPA_CMD_DEV_GET /* can dump */
15+
VDPA_CMD_DEV_CONFIG_GET /* can dump */
16+
VDPA_CMD_DEV_VSTATS_GET
17+
)
18+
19+
const (
20+
VDPA_ATTR_UNSPEC = iota
21+
VDPA_ATTR_MGMTDEV_BUS_NAME
22+
VDPA_ATTR_MGMTDEV_DEV_NAME
23+
VDPA_ATTR_MGMTDEV_SUPPORTED_CLASSES
24+
VDPA_ATTR_DEV_NAME
25+
VDPA_ATTR_DEV_ID
26+
VDPA_ATTR_DEV_VENDOR_ID
27+
VDPA_ATTR_DEV_MAX_VQS
28+
VDPA_ATTR_DEV_MAX_VQ_SIZE
29+
VDPA_ATTR_DEV_MIN_VQ_SIZE
30+
VDPA_ATTR_DEV_NET_CFG_MACADDR
31+
VDPA_ATTR_DEV_NET_STATUS
32+
VDPA_ATTR_DEV_NET_CFG_MAX_VQP
33+
VDPA_ATTR_DEV_NET_CFG_MTU
34+
VDPA_ATTR_DEV_NEGOTIATED_FEATURES
35+
VDPA_ATTR_DEV_MGMTDEV_MAX_VQS
36+
VDPA_ATTR_DEV_SUPPORTED_FEATURES
37+
VDPA_ATTR_DEV_QUEUE_INDEX
38+
VDPA_ATTR_DEV_VENDOR_ATTR_NAME
39+
VDPA_ATTR_DEV_VENDOR_ATTR_VALUE
40+
VDPA_ATTR_DEV_FEATURES
41+
)

0 commit comments

Comments
 (0)