]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
realtek: dsa: merge headers
authorMarkus Stockhausen <markus.stockhausen@gmx.de>
Tue, 14 Apr 2026 19:40:22 +0000 (21:40 +0200)
committerRobert Marko <robimarko@gmail.com>
Thu, 16 Apr 2026 10:02:25 +0000 (12:02 +0200)
There are currently two header files for the dsa driver. rtl83xx.h
and rtl838x.h. It is unclear for what reason they are separated.
Especially as one always includes the other. Merge those two files
into one.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22931
Signed-off-by: Robert Marko <robimarko@gmail.com>
target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/common.c
target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/debugfs.c
target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/dsa.c
target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/qos.c
target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl838x.c
target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl838x.h
target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl839x.c
target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl83xx.h [deleted file]
target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl930x.c
target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl931x.c
target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/tc.c

index 56df39855fcedb9105eed909da795836fb754f4c..9e64b6d92020c468c5fa0d764a523cb8904b19dc 100644 (file)
@@ -14,7 +14,7 @@
 #include <linux/of_net.h>
 #include <asm/mach-rtl-otto/mach-rtl-otto.h>
 
-#include "rtl83xx.h"
+#include "rtl838x.h"
 
 struct phylink_pcs *rtpcs_create(struct device *dev, struct device_node *np, int port);
 
index 4310b470c96ea2a6e9f51f8da3e08fc56a77fa36..ec4214606f3edb3be957016e252dff3f9acd94b1 100644 (file)
@@ -4,7 +4,7 @@
 #include <linux/kernel.h>
 #include <asm/mach-rtl-otto/mach-rtl-otto.h>
 
-#include "rtl83xx.h"
+#include "rtl838x.h"
 
 #define RTL838X_DRIVER_NAME "rtl838x"
 
index 6a9fe4e2947ba29a06c4b8d73476329ea71c8037..000ddd2e713d8ddcd0bb97b3cc5bc40574f735a3 100644 (file)
@@ -5,7 +5,7 @@
 #include <linux/if_bridge.h>
 #include <asm/mach-rtl-otto/mach-rtl-otto.h>
 
-#include "rtl83xx.h"
+#include "rtl838x.h"
 
 static const u8 ipv4_ll_mcast_addr_base[ETH_ALEN] = {
        0x01, 0x00, 0x5e, 0x00, 0x00, 0x00
index 57687d5cd1426da25b217497625ae6fff2fed7d7..343110b951590ae37bdeac1fbdf737f9e8d7a0d8 100644 (file)
@@ -4,7 +4,7 @@
 #include <linux/delay.h>
 #include <asm/mach-rtl-otto/mach-rtl-otto.h>
 
-#include "rtl83xx.h"
+#include "rtl838x.h"
 
 enum scheduler_type {
        WEIGHTED_FAIR_QUEUE = 0,
index 46832a06bb16b1a02fa656c45acda36da096e605..512326ae924c7329add9c6c9e693c4eed0052917 100644 (file)
@@ -5,7 +5,7 @@
 #include <linux/iopoll.h>
 #include <net/nexthop.h>
 
-#include "rtl83xx.h"
+#include "rtl838x.h"
 
 #define RTL838X_VLAN_PORT_TAG_STS_UNTAG                                0x0
 #define RTL838X_VLAN_PORT_TAG_STS_TAGGED                       0x1
index f9d3bdfc8a35f607652cffaaa7f66e4f7168533d..837341d41f61dd9cb7ec06080c9760c3d9585a56 100644 (file)
@@ -1573,6 +1573,203 @@ struct rtl838x_switch_priv {
        struct mutex counters_lock;
 };
 
+struct fdb_update_work {
+       struct work_struct work;
+       struct net_device *ndev;
+       u64 macs[];
+};
+
+enum mib_reg {
+       MIB_REG_INVALID = 0,
+       MIB_REG_STD,
+       MIB_REG_PRV,
+       MIB_TBL_STD,
+       MIB_TBL_PRV,
+};
+
+#define MIB_ITEM(_reg, _offset, _size) \
+               {.reg = _reg, .offset = _offset, .size = _size}
+
+#define MIB_LIST_ITEM(_name, _item) \
+               {.name = _name, .item = _item}
+
+struct rtldsa_mib_item {
+       enum mib_reg reg;
+       unsigned int offset;
+       unsigned int size;
+};
+
+struct rtldsa_mib_list_item {
+       const char *name;
+       struct rtldsa_mib_item item;
+};
+
+struct rtldsa_mib_desc {
+       struct rtldsa_mib_item symbol_errors;
+
+       struct rtldsa_mib_item if_in_octets;
+       struct rtldsa_mib_item if_out_octets;
+       struct rtldsa_mib_item if_in_ucast_pkts;
+       struct rtldsa_mib_item if_in_mcast_pkts;
+       struct rtldsa_mib_item if_in_bcast_pkts;
+       struct rtldsa_mib_item if_out_ucast_pkts;
+       struct rtldsa_mib_item if_out_mcast_pkts;
+       struct rtldsa_mib_item if_out_bcast_pkts;
+       struct rtldsa_mib_item if_out_discards;
+       struct rtldsa_mib_item single_collisions;
+       struct rtldsa_mib_item multiple_collisions;
+       struct rtldsa_mib_item deferred_transmissions;
+       struct rtldsa_mib_item late_collisions;
+       struct rtldsa_mib_item excessive_collisions;
+       struct rtldsa_mib_item crc_align_errors;
+       struct rtldsa_mib_item rx_pkts_over_max_octets;
+
+       struct rtldsa_mib_item unsupported_opcodes;
+
+       struct rtldsa_mib_item rx_undersize_pkts;
+       struct rtldsa_mib_item rx_oversize_pkts;
+       struct rtldsa_mib_item rx_fragments;
+       struct rtldsa_mib_item rx_jabbers;
+
+       struct rtldsa_mib_item tx_pkts[ETHTOOL_RMON_HIST_MAX];
+       struct rtldsa_mib_item rx_pkts[ETHTOOL_RMON_HIST_MAX];
+       struct ethtool_rmon_hist_range rmon_ranges[ETHTOOL_RMON_HIST_MAX];
+
+       struct rtldsa_mib_item drop_events;
+       struct rtldsa_mib_item collisions;
+
+       struct rtldsa_mib_item rx_pause_frames;
+       struct rtldsa_mib_item tx_pause_frames;
+
+       size_t list_count;
+       const struct rtldsa_mib_list_item *list;
+};
+
+/* API for switch table access */
+struct table_reg {
+       u16 addr;
+       u16 data;
+       u8  max_data;
+       u8 c_bit;
+       u8 t_bit;
+       u8 rmode;
+       u8 tbl;
+       struct mutex lock;
+};
+
+#define TBL_DESC(_addr, _data, _max_data, _c_bit, _t_bit, _rmode) \
+               {  .addr = _addr, .data = _data, .max_data = _max_data, .c_bit = _c_bit, \
+                   .t_bit = _t_bit, .rmode = _rmode \
+               }
+
+typedef enum {
+       RTL8380_TBL_L2 = 0,
+       RTL8380_TBL_0,
+       RTL8380_TBL_1,
+       RTL8390_TBL_L2,
+       RTL8390_TBL_0,
+       RTL8390_TBL_1,
+       RTL8390_TBL_2,
+       RTL9300_TBL_L2,
+       RTL9300_TBL_0,
+       RTL9300_TBL_1,
+       RTL9300_TBL_2,
+       RTL9300_TBL_HSB,
+       RTL9300_TBL_HSA,
+       RTL9310_TBL_0,
+       RTL9310_TBL_1,
+       RTL9310_TBL_2,
+       RTL9310_TBL_3,
+       RTL9310_TBL_4,
+       RTL9310_TBL_5,
+       RTL_TBL_END
+} rtl838x_tbl_reg_t;
+
+void rtl_table_init(void);
+struct table_reg *rtl_table_get(rtl838x_tbl_reg_t r, int t);
+void rtl_table_release(struct table_reg *r);
+int rtl_table_read(struct table_reg *r, int idx);
+int rtl_table_write(struct table_reg *r, int idx);
+inline u16 rtl_table_data(struct table_reg *r, int i);
+inline u32 rtl_table_data_r(struct table_reg *r, int i);
+inline void rtl_table_data_w(struct table_reg *r, u32 v, int i);
+
+int rtldsa_83xx_lag_setup_algomask(struct rtl838x_switch_priv *priv, int group,
+                                  struct netdev_lag_upper_info *info);
+
+void rtldsa_838x_qos_init(struct rtl838x_switch_priv *priv);
+void rtldsa_839x_qos_init(struct rtl838x_switch_priv *priv);
+
+void rtldsa_port_fast_age(struct dsa_switch *ds, int port);
+int rtl83xx_packet_cntr_alloc(struct rtl838x_switch_priv *priv);
+int rtldsa_port_get_stp_state(struct rtl838x_switch_priv *priv, int port);
+int rtl83xx_port_is_under(const struct net_device *dev, struct rtl838x_switch_priv *priv);
+void rtldsa_port_stp_state_set(struct dsa_switch *ds, int port, u8 state);
+int rtl83xx_setup_tc(struct net_device *dev, enum tc_setup_type type, void *type_data);
+
+/* Port register accessor functions for the RTL839x and RTL931X SoCs */
+void rtl839x_mask_port_reg_be(u64 clear, u64 set, int reg);
+u32 rtl839x_get_egress_rate(struct rtl838x_switch_priv *priv, int port);
+u64 rtl839x_get_port_reg_be(int reg);
+void rtl839x_set_port_reg_be(u64 set, int reg);
+void rtl839x_mask_port_reg_le(u64 clear, u64 set, int reg);
+int rtl839x_set_egress_rate(struct rtl838x_switch_priv *priv, int port, u32 rate);
+void rtl839x_set_port_reg_le(u64 set, int reg);
+u64 rtl839x_get_port_reg_le(int reg);
+
+/* Port register accessor functions for the RTL838x and RTL930X SoCs */
+void rtl838x_mask_port_reg(u64 clear, u64 set, int reg);
+void rtl838x_set_port_reg(u64 set, int reg);
+u32 rtl838x_get_egress_rate(struct rtl838x_switch_priv *priv, int port);
+u64 rtl838x_get_port_reg(int reg);
+int rtl838x_set_egress_rate(struct rtl838x_switch_priv *priv, int port, u32 rate);
+
+/* RTL838x-specific */
+u32 rtl838x_hash(struct rtl838x_switch_priv *priv, u64 seed);
+void rtldsa_838x_print_matrix(void);
+
+/* RTL839x-specific */
+u32 rtl839x_hash(struct rtl838x_switch_priv *priv, u64 seed);
+void rtl839x_exec_tbl2_cmd(u32 cmd);
+void rtldsa_839x_print_matrix(void);
+
+/* RTL930x-specific */
+u32 rtl930x_hash(struct rtl838x_switch_priv *priv, u64 seed);
+void rtldsa_930x_print_matrix(void);
+
+/* RTL931x-specific */
+void rtldsa_931x_print_matrix(void);
+
+int rtl83xx_lag_add(struct dsa_switch *ds, int group, int port, struct netdev_lag_upper_info *info);
+int rtl83xx_lag_del(struct dsa_switch *ds, int group, int port);
+
+/*
+ * TODO: The following functions are currently not in use. So compiler will complain if
+ * they are static and not made available externally. To preserve them for future use
+ * collect them in this section.
+ */
+
+void rtl839x_pie_rule_dump(struct  pie_rule *pr);
+void rtl839x_set_egress_queue(int port, int queue);
+
+void rtl9300_dump_debug(void);
+void rtl930x_pie_rule_dump_raw(u32 r[]);
+
+extern const struct dsa_switch_ops rtldsa_83xx_switch_ops;
+extern const struct dsa_switch_ops rtldsa_93xx_switch_ops;
+
+extern const struct phylink_mac_ops rtldsa_83xx_phylink_mac_ops;
+extern const struct phylink_mac_ops rtldsa_93xx_phylink_mac_ops;
+
+extern const struct rtldsa_config rtldsa_838x_cfg;
+extern const struct rtldsa_config rtldsa_839x_cfg;
+extern const struct rtldsa_config rtldsa_930x_cfg;
+extern const struct rtldsa_config rtldsa_931x_cfg;
+
+/* TODO actually from arch/mips/rtl838x/prom.c */
+extern struct rtl83xx_soc_info soc_info;
+
+
 void rtl838x_dbgfs_init(struct rtl838x_switch_priv *priv);
 void rtl930x_dbgfs_init(struct rtl838x_switch_priv *priv);
 void rtldsa_93xx_lag_switch_init(struct rtl838x_switch_priv *priv);
index 99d3a56ab33af91e330b59ecb67a51097b928eac..3bf5c9e5a653d86e39f77ed05927eba13b4621c9 100644 (file)
@@ -3,7 +3,7 @@
 #include <asm/mach-rtl-otto/mach-rtl-otto.h>
 #include <linux/etherdevice.h>
 
-#include "rtl83xx.h"
+#include "rtl838x.h"
 
 #define RTL839X_VLAN_PORT_TAG_STS_UNTAG                                0x0
 #define RTL839X_VLAN_PORT_TAG_STS_TAGGED                       0x1
diff --git a/target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl83xx.h b/target/linux/realtek/files-6.18/drivers/net/dsa/rtl83xx/rtl83xx.h
deleted file mode 100644 (file)
index 3a58eec..0000000
+++ /dev/null
@@ -1,205 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-
-#ifndef _NET_DSA_RTL83XX_H
-#define _NET_DSA_RTL83XX_H
-
-#include <net/dsa.h>
-#include "rtl838x.h"
-
-struct fdb_update_work {
-       struct work_struct work;
-       struct net_device *ndev;
-       u64 macs[];
-};
-
-enum mib_reg {
-       MIB_REG_INVALID = 0,
-       MIB_REG_STD,
-       MIB_REG_PRV,
-       MIB_TBL_STD,
-       MIB_TBL_PRV,
-};
-
-#define MIB_ITEM(_reg, _offset, _size) \
-               {.reg = _reg, .offset = _offset, .size = _size}
-
-#define MIB_LIST_ITEM(_name, _item) \
-               {.name = _name, .item = _item}
-
-struct rtldsa_mib_item {
-       enum mib_reg reg;
-       unsigned int offset;
-       unsigned int size;
-};
-
-struct rtldsa_mib_list_item {
-       const char *name;
-       struct rtldsa_mib_item item;
-};
-
-struct rtldsa_mib_desc {
-       struct rtldsa_mib_item symbol_errors;
-
-       struct rtldsa_mib_item if_in_octets;
-       struct rtldsa_mib_item if_out_octets;
-       struct rtldsa_mib_item if_in_ucast_pkts;
-       struct rtldsa_mib_item if_in_mcast_pkts;
-       struct rtldsa_mib_item if_in_bcast_pkts;
-       struct rtldsa_mib_item if_out_ucast_pkts;
-       struct rtldsa_mib_item if_out_mcast_pkts;
-       struct rtldsa_mib_item if_out_bcast_pkts;
-       struct rtldsa_mib_item if_out_discards;
-       struct rtldsa_mib_item single_collisions;
-       struct rtldsa_mib_item multiple_collisions;
-       struct rtldsa_mib_item deferred_transmissions;
-       struct rtldsa_mib_item late_collisions;
-       struct rtldsa_mib_item excessive_collisions;
-       struct rtldsa_mib_item crc_align_errors;
-       struct rtldsa_mib_item rx_pkts_over_max_octets;
-
-       struct rtldsa_mib_item unsupported_opcodes;
-
-       struct rtldsa_mib_item rx_undersize_pkts;
-       struct rtldsa_mib_item rx_oversize_pkts;
-       struct rtldsa_mib_item rx_fragments;
-       struct rtldsa_mib_item rx_jabbers;
-
-       struct rtldsa_mib_item tx_pkts[ETHTOOL_RMON_HIST_MAX];
-       struct rtldsa_mib_item rx_pkts[ETHTOOL_RMON_HIST_MAX];
-       struct ethtool_rmon_hist_range rmon_ranges[ETHTOOL_RMON_HIST_MAX];
-
-       struct rtldsa_mib_item drop_events;
-       struct rtldsa_mib_item collisions;
-
-       struct rtldsa_mib_item rx_pause_frames;
-       struct rtldsa_mib_item tx_pause_frames;
-
-       size_t list_count;
-       const struct rtldsa_mib_list_item *list;
-};
-
-/* API for switch table access */
-struct table_reg {
-       u16 addr;
-       u16 data;
-       u8  max_data;
-       u8 c_bit;
-       u8 t_bit;
-       u8 rmode;
-       u8 tbl;
-       struct mutex lock;
-};
-
-#define TBL_DESC(_addr, _data, _max_data, _c_bit, _t_bit, _rmode) \
-               {  .addr = _addr, .data = _data, .max_data = _max_data, .c_bit = _c_bit, \
-                   .t_bit = _t_bit, .rmode = _rmode \
-               }
-
-typedef enum {
-       RTL8380_TBL_L2 = 0,
-       RTL8380_TBL_0,
-       RTL8380_TBL_1,
-       RTL8390_TBL_L2,
-       RTL8390_TBL_0,
-       RTL8390_TBL_1,
-       RTL8390_TBL_2,
-       RTL9300_TBL_L2,
-       RTL9300_TBL_0,
-       RTL9300_TBL_1,
-       RTL9300_TBL_2,
-       RTL9300_TBL_HSB,
-       RTL9300_TBL_HSA,
-       RTL9310_TBL_0,
-       RTL9310_TBL_1,
-       RTL9310_TBL_2,
-       RTL9310_TBL_3,
-       RTL9310_TBL_4,
-       RTL9310_TBL_5,
-       RTL_TBL_END
-} rtl838x_tbl_reg_t;
-
-void rtl_table_init(void);
-struct table_reg *rtl_table_get(rtl838x_tbl_reg_t r, int t);
-void rtl_table_release(struct table_reg *r);
-int rtl_table_read(struct table_reg *r, int idx);
-int rtl_table_write(struct table_reg *r, int idx);
-inline u16 rtl_table_data(struct table_reg *r, int i);
-inline u32 rtl_table_data_r(struct table_reg *r, int i);
-inline void rtl_table_data_w(struct table_reg *r, u32 v, int i);
-
-int rtldsa_83xx_lag_setup_algomask(struct rtl838x_switch_priv *priv, int group,
-                                  struct netdev_lag_upper_info *info);
-
-void rtldsa_838x_qos_init(struct rtl838x_switch_priv *priv);
-void rtldsa_839x_qos_init(struct rtl838x_switch_priv *priv);
-
-void rtldsa_port_fast_age(struct dsa_switch *ds, int port);
-int rtl83xx_packet_cntr_alloc(struct rtl838x_switch_priv *priv);
-int rtldsa_port_get_stp_state(struct rtl838x_switch_priv *priv, int port);
-int rtl83xx_port_is_under(const struct net_device *dev, struct rtl838x_switch_priv *priv);
-void rtldsa_port_stp_state_set(struct dsa_switch *ds, int port, u8 state);
-int rtl83xx_setup_tc(struct net_device *dev, enum tc_setup_type type, void *type_data);
-
-/* Port register accessor functions for the RTL839x and RTL931X SoCs */
-void rtl839x_mask_port_reg_be(u64 clear, u64 set, int reg);
-u32 rtl839x_get_egress_rate(struct rtl838x_switch_priv *priv, int port);
-u64 rtl839x_get_port_reg_be(int reg);
-void rtl839x_set_port_reg_be(u64 set, int reg);
-void rtl839x_mask_port_reg_le(u64 clear, u64 set, int reg);
-int rtl839x_set_egress_rate(struct rtl838x_switch_priv *priv, int port, u32 rate);
-void rtl839x_set_port_reg_le(u64 set, int reg);
-u64 rtl839x_get_port_reg_le(int reg);
-
-/* Port register accessor functions for the RTL838x and RTL930X SoCs */
-void rtl838x_mask_port_reg(u64 clear, u64 set, int reg);
-void rtl838x_set_port_reg(u64 set, int reg);
-u32 rtl838x_get_egress_rate(struct rtl838x_switch_priv *priv, int port);
-u64 rtl838x_get_port_reg(int reg);
-int rtl838x_set_egress_rate(struct rtl838x_switch_priv *priv, int port, u32 rate);
-
-/* RTL838x-specific */
-u32 rtl838x_hash(struct rtl838x_switch_priv *priv, u64 seed);
-void rtldsa_838x_print_matrix(void);
-
-/* RTL839x-specific */
-u32 rtl839x_hash(struct rtl838x_switch_priv *priv, u64 seed);
-void rtl839x_exec_tbl2_cmd(u32 cmd);
-void rtldsa_839x_print_matrix(void);
-
-/* RTL930x-specific */
-u32 rtl930x_hash(struct rtl838x_switch_priv *priv, u64 seed);
-void rtldsa_930x_print_matrix(void);
-
-/* RTL931x-specific */
-void rtldsa_931x_print_matrix(void);
-
-int rtl83xx_lag_add(struct dsa_switch *ds, int group, int port, struct netdev_lag_upper_info *info);
-int rtl83xx_lag_del(struct dsa_switch *ds, int group, int port);
-
-/*
- * TODO: The following functions are currently not in use. So compiler will complain if
- * they are static and not made available externally. To preserve them for future use
- * collect them in this section.
- */
-
-void rtl839x_pie_rule_dump(struct  pie_rule *pr);
-void rtl839x_set_egress_queue(int port, int queue);
-
-void rtl9300_dump_debug(void);
-void rtl930x_pie_rule_dump_raw(u32 r[]);
-
-extern const struct dsa_switch_ops rtldsa_83xx_switch_ops;
-extern const struct dsa_switch_ops rtldsa_93xx_switch_ops;
-
-extern const struct phylink_mac_ops rtldsa_83xx_phylink_mac_ops;
-extern const struct phylink_mac_ops rtldsa_93xx_phylink_mac_ops;
-
-extern const struct rtldsa_config rtldsa_838x_cfg;
-extern const struct rtldsa_config rtldsa_839x_cfg;
-extern const struct rtldsa_config rtldsa_930x_cfg;
-extern const struct rtldsa_config rtldsa_931x_cfg;
-
-/* TODO actually from arch/mips/rtl838x/prom.c */
-extern struct rtl83xx_soc_info soc_info;
-
-#endif /* _NET_DSA_RTL83XX_H */
index 5dda31f329c7d1b5242d3822c88b9d592bb77919..a9c36a3d782717becf1774ec55ada93106b9eed3 100644 (file)
@@ -4,7 +4,7 @@
 #include <linux/etherdevice.h>
 #include <linux/inetdevice.h>
 
-#include "rtl83xx.h"
+#include "rtl838x.h"
 
 #define RTL930X_VLAN_PORT_TAG_STS_INTERNAL                     0x0
 #define RTL930X_VLAN_PORT_TAG_STS_UNTAG                                0x1
index 95e92fa1e4efcd32674c387d280fc5468910330e..db184dd4ad9f42b1d02562bffdadd6ac8cd9906e 100644 (file)
@@ -3,7 +3,7 @@
 #include <asm/mach-rtl-otto/mach-rtl-otto.h>
 #include <linux/etherdevice.h>
 
-#include "rtl83xx.h"
+#include "rtl838x.h"
 
 #define RTL931X_VLAN_PORT_TAG_STS_INTERNAL                     0x0
 #define RTL931X_VLAN_PORT_TAG_STS_UNTAG                                0x1
index 23369331475962e7fa1339aa8b18c98c21b35d0e..2128787db088a26468a84776056f9f4779f9f93e 100644 (file)
@@ -8,7 +8,6 @@
 #include <linux/rhashtable.h>
 #include <asm/mach-rtl-otto/mach-rtl-otto.h>
 
-#include "rtl83xx.h"
 #include "rtl838x.h"
 
 /* Parse the flow rule for the matching conditions */