1
0
mirror of https://xff.cz/git/u-boot/ synced 2025-09-01 08:42:12 +02:00

common/cmd_ethsw: Add generic commands for Ethernet Switches

This patch creates a flexible parser for Ethernet Switch
configurations that should support complex commands.
The parser searches for predefined keywords in the command
and calls the proper function when a match is found.
Also, the parser allows for optional keywords, such as
"port", to apply the command on a port
or on all ports. For now, the defined commands are:
ethsw [port <port_no>] { enable | disable | show }

Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
This commit is contained in:
Codrin Ciubotariu
2015-07-24 16:55:27 +03:00
committed by York Sun
parent 9de059871f
commit 4ea54e3f23
3 changed files with 396 additions and 0 deletions

48
include/ethsw.h Normal file
View File

@@ -0,0 +1,48 @@
/*
* Copyright 2015 Freescale Semiconductor, Inc.
*
* SPDX-License-Identifier: GPL-2.0+
*
* Ethernet Switch commands
*/
#ifndef _CMD_ETHSW_H_
#define _CMD_ETHSW_H_
#define ETHSW_MAX_CMD_PARAMS 20
#define ETHSW_CMD_PORT_ALL -1
/* IDs used to track keywords in a command */
enum ethsw_keyword_id {
ethsw_id_key_end = -1,
ethsw_id_help,
ethsw_id_show,
ethsw_id_port,
ethsw_id_enable,
ethsw_id_disable,
ethsw_id_count, /* keep last */
};
enum ethsw_keyword_opt_id {
ethsw_id_port_no = ethsw_id_count + 1,
ethsw_id_count_all, /* keep last */
};
struct ethsw_command_def {
int cmd_to_keywords[ETHSW_MAX_CMD_PARAMS];
int cmd_keywords_nr;
int port;
int (*cmd_function)(struct ethsw_command_def *parsed_cmd);
};
/* Structure to be created and initialized by an Ethernet Switch driver */
struct ethsw_command_func {
const char *ethsw_name;
int (*port_enable)(struct ethsw_command_def *parsed_cmd);
int (*port_disable)(struct ethsw_command_def *parsed_cmd);
int (*port_show)(struct ethsw_command_def *parsed_cmd);
};
int ethsw_define_functions(const struct ethsw_command_func *cmd_func);
#endif /* _CMD_ETHSW_H_ */