drivers: net: vsc9953: Add LAG support

You can now configure LAG on VSC9953's ports using the command:
ethsw [port <port_no>] aggr {[help] | show | <lag_group_no>}

A port must belong to a single LAG. By default, a port
belongs to a LAG equal to the port's number.

For each frame, a hash will be calculated based on
Source/Destination MAC addresses, Source/Destination IP(v4/v6)
addresses, Source/Destination ports. This hash will be used to
select a single egress port from LAG. This also assures
that frames from the same flow will always have the
same egress port.

Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@freescale.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
diff --git a/include/ethsw.h b/include/ethsw.h
index 2d3c12a..25f358d 100644
--- a/include/ethsw.h
+++ b/include/ethsw.h
@@ -12,6 +12,7 @@
 #define ETHSW_MAX_CMD_PARAMS 20
 #define ETHSW_CMD_PORT_ALL -1
 #define ETHSW_CMD_VLAN_ALL -1
+#define ETHSW_CMD_AGGR_GRP_NONE -1
 
 /* IDs used to track keywords in a command */
 enum ethsw_keyword_id {
@@ -41,6 +42,7 @@
 	ethsw_id_private,
 	ethsw_id_ingress,
 	ethsw_id_filtering,
+	ethsw_id_aggr,
 	ethsw_id_count,	/* keep last */
 };
 
@@ -50,6 +52,7 @@
 	ethsw_id_pvid_no,
 	ethsw_id_add_del_no,
 	ethsw_id_add_del_mac,
+	ethsw_id_aggr_no,
 	ethsw_id_count_all,	/* keep last */
 };
 
@@ -58,6 +61,7 @@
 	int cmd_keywords_nr;
 	int port;
 	int vid;
+	int aggr_grp;
 	uchar ethaddr[6];
 	int (*cmd_function)(struct ethsw_command_def *parsed_cmd);
 };
@@ -88,6 +92,8 @@
 	int (*vlan_learn_set)(struct ethsw_command_def *parsed_cmd);
 	int (*port_ingr_filt_show)(struct ethsw_command_def *parsed_cmd);
 	int (*port_ingr_filt_set)(struct ethsw_command_def *parsed_cmd);
+	int (*port_aggr_show)(struct ethsw_command_def *parsed_cmd);
+	int (*port_aggr_set)(struct ethsw_command_def *parsed_cmd);
 };
 
 int ethsw_define_functions(const struct ethsw_command_func *cmd_func);