[LTP] [PATCH] kernel/uevent: Adjust the number of uevents dynamically in uevent02
Dylan Jhong
dylan@andestech.com
Wed Sep 14 15:19:50 CEST 2022
When CONFIG_SMP is not selected, CONFIG_RPS will not be enabled. Causes the
kernel to not create rx queues in sysfs[*1] when creating tun devices.
uevent02 will check if the rx queue exists, so we have to dynamically adjust
the number of uevents to pass this testcase.
[*1]: https://github.com/torvalds/linux/blob/3245cb65fd91cd514801bf91f5a3066d562f0ac4/net/core/net-sysfs.c#L1109
Signed-off-by: Dylan Jhong <dylan@andestech.com>
---
testcases/kernel/uevents/uevent02.c | 146 ++++++++++++++--------------
1 file changed, 73 insertions(+), 73 deletions(-)
diff --git a/testcases/kernel/uevents/uevent02.c b/testcases/kernel/uevents/uevent02.c
index ce0cf757d..059320f1c 100644
--- a/testcases/kernel/uevents/uevent02.c
+++ b/testcases/kernel/uevents/uevent02.c
@@ -19,11 +19,71 @@
#include <linux/if_tun.h>
#include "tst_test.h"
+#include "tst_private.h"
#include "uevent.h"
#define TUN_PATH "/dev/net/tun"
+#define MAX_UEVENT 7
+
+struct uevent_desc add = {
+ .msg = "add@/devices/virtual/net/ltp-tun0",
+ .value_cnt = 4,
+ .values = (const char*[]) {
+ "ACTION=add",
+ "DEVPATH=/devices/virtual/net/ltp-tun0",
+ "SUBSYSTEM=net",
+ "INTERFACE=ltp-tun0",
+ }
+};
+struct uevent_desc add_rx = {
+ .msg = "add@/devices/virtual/net/ltp-tun0/queues/rx-0",
+ .value_cnt = 3,
+ .values = (const char*[]) {
+ "ACTION=add",
+ "DEVPATH=/devices/virtual/net/ltp-tun0/queues/rx-0",
+ "SUBSYSTEM=queues",
+ }
+};
+struct uevent_desc add_tx = {
+ .msg = "add@/devices/virtual/net/ltp-tun0/queues/tx-0",
+ .value_cnt = 3,
+ .values = (const char*[]) {
+ "ACTION=add",
+ "DEVPATH=/devices/virtual/net/ltp-tun0/queues/tx-0",
+ "SUBSYSTEM=queues",
+ }
+};
+struct uevent_desc rem_rx = {
+ .msg = "remove@/devices/virtual/net/ltp-tun0/queues/rx-0",
+ .value_cnt = 3,
+ .values = (const char*[]) {
+ "ACTION=remove",
+ "DEVPATH=/devices/virtual/net/ltp-tun0/queues/rx-0",
+ "SUBSYSTEM=queues",
+ }
+};
+struct uevent_desc rem_tx = {
+ .msg = "remove@/devices/virtual/net/ltp-tun0/queues/tx-0",
+ .value_cnt = 3,
+ .values = (const char*[]) {
+ "ACTION=remove",
+ "DEVPATH=/devices/virtual/net/ltp-tun0/queues/tx-0",
+ "SUBSYSTEM=queues",
+ }
+};
+struct uevent_desc rem = {
+ .msg = "remove@/devices/virtual/net/ltp-tun0",
+ .value_cnt = 4,
+ .values = (const char*[]) {
+ "ACTION=remove",
+ "DEVPATH=/devices/virtual/net/ltp-tun0",
+ "SUBSYSTEM=net",
+ "INTERFACE=ltp-tun0",
+ }
+};
+
static void generate_tun_uevents(void)
{
int fd = SAFE_OPEN(TUN_PATH, O_RDWR);
@@ -42,79 +102,19 @@ static void generate_tun_uevents(void)
static void verify_uevent(void)
{
- int pid, fd;
-
- struct uevent_desc add = {
- .msg = "add@/devices/virtual/net/ltp-tun0",
- .value_cnt = 4,
- .values = (const char*[]) {
- "ACTION=add",
- "DEVPATH=/devices/virtual/net/ltp-tun0",
- "SUBSYSTEM=net",
- "INTERFACE=ltp-tun0",
- }
- };
-
- struct uevent_desc add_rx = {
- .msg = "add@/devices/virtual/net/ltp-tun0/queues/rx-0",
- .value_cnt = 3,
- .values = (const char*[]) {
- "ACTION=add",
- "DEVPATH=/devices/virtual/net/ltp-tun0/queues/rx-0",
- "SUBSYSTEM=queues",
- }
- };
-
- struct uevent_desc add_tx = {
- .msg = "add@/devices/virtual/net/ltp-tun0/queues/tx-0",
- .value_cnt = 3,
- .values = (const char*[]) {
- "ACTION=add",
- "DEVPATH=/devices/virtual/net/ltp-tun0/queues/tx-0",
- "SUBSYSTEM=queues",
- }
- };
-
- struct uevent_desc rem_rx = {
- .msg = "remove@/devices/virtual/net/ltp-tun0/queues/rx-0",
- .value_cnt = 3,
- .values = (const char*[]) {
- "ACTION=remove",
- "DEVPATH=/devices/virtual/net/ltp-tun0/queues/rx-0",
- "SUBSYSTEM=queues",
- }
- };
-
- struct uevent_desc rem_tx = {
- .msg = "remove@/devices/virtual/net/ltp-tun0/queues/tx-0",
- .value_cnt = 3,
- .values = (const char*[]) {
- "ACTION=remove",
- "DEVPATH=/devices/virtual/net/ltp-tun0/queues/tx-0",
- "SUBSYSTEM=queues",
- }
- };
-
- struct uevent_desc rem = {
- .msg = "remove@/devices/virtual/net/ltp-tun0",
- .value_cnt = 4,
- .values = (const char*[]) {
- "ACTION=remove",
- "DEVPATH=/devices/virtual/net/ltp-tun0",
- "SUBSYSTEM=net",
- "INTERFACE=ltp-tun0",
- }
- };
-
- const struct uevent_desc *const uevents[] = {
- &add,
- &add_rx,
- &add_tx,
- &rem_rx,
- &rem_tx,
- &rem,
- NULL
- };
+ const struct uevent_desc *uevents[MAX_UEVENT];
+ int pid, fd, i = 0;
+ int has_RPS = tst_kconfig_get("CONFIG_RPS");
+
+ uevents[i++] = &add;
+ if (has_RPS)
+ uevents[i++] = &add_rx;
+ uevents[i++] = &add_tx;
+ if (has_RPS)
+ uevents[i++] = &rem_rx;
+ uevents[i++] = &rem_tx;
+ uevents[i++] = &rem;
+ uevents[i++] = NULL;
pid = SAFE_FORK();
if (!pid) {
--
2.34.1
More information about the ltp
mailing list