app/testpmd: add MAC control forward
authorIntel <intel.com>
Fri, 8 Nov 2013 02:00:00 +0000 (03:00 +0100)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Sun, 24 Nov 2013 20:31:36 +0000 (21:31 +0100)
Signed-off-by: Intel
app/test-pmd/cmdline.c

index 4cd0127..435d6e4 100644 (file)
@@ -312,7 +312,8 @@ static void cmd_help_long_parsed(void *parsed_result,
                        "    Set the allmulti mode on port_id, or all.\n\n"
 
                        "set flow_ctrl rx (on|off) tx (on|off) (high_water)"
-                       " (low_water) (pause_time) (send_xon) (port_id)\n"
+                       " (low_water) (pause_time) (send_xon) mac_ctrl_frame_fwd"
+                        " (on|off) (port_id)\n"
                        "    Set the link flow control parameter on a port.\n\n"
 
                        "set pfc_ctrl rx (on|off) tx (on|off) (high_water)"
@@ -3361,6 +3362,8 @@ struct cmd_link_flow_ctrl_set_result {
        cmdline_fixed_string_t rx_lfc_mode;
        cmdline_fixed_string_t tx;
        cmdline_fixed_string_t tx_lfc_mode;
+       cmdline_fixed_string_t mac_ctrl_frame_fwd;
+       cmdline_fixed_string_t mac_ctrl_frame_fwd_mode;
        uint32_t high_water;
        uint32_t low_water;
        uint16_t pause_time;
@@ -3375,7 +3378,7 @@ cmd_link_flow_ctrl_set_parsed(void *parsed_result,
 {
        struct cmd_link_flow_ctrl_set_result *res = parsed_result;
        struct rte_eth_fc_conf fc_conf;
-       int rx_fc_enable, tx_fc_enable;
+       int rx_fc_enable, tx_fc_enable, mac_ctrl_frame_fwd;
        int ret;
 
        /*
@@ -3390,12 +3393,14 @@ cmd_link_flow_ctrl_set_parsed(void *parsed_result,
 
        rx_fc_enable = (!strcmp(res->rx_lfc_mode, "on")) ? 1 : 0;
        tx_fc_enable = (!strcmp(res->tx_lfc_mode, "on")) ? 1 : 0;
+       mac_ctrl_frame_fwd = (!strcmp(res->mac_ctrl_frame_fwd_mode, "on")) ? 1 : 0;
 
        fc_conf.mode       = rx_tx_onoff_2_lfc_mode[rx_fc_enable][tx_fc_enable];
        fc_conf.high_water = res->high_water;
        fc_conf.low_water  = res->low_water;
        fc_conf.pause_time = res->pause_time;
        fc_conf.send_xon   = res->send_xon;
+       fc_conf.mac_ctrl_frame_fwd = (uint8_t)mac_ctrl_frame_fwd;
 
        ret = rte_eth_dev_flow_ctrl_set(res->port_id, &fc_conf);
        if (ret != 0)
@@ -3432,6 +3437,12 @@ cmdline_parse_token_num_t cmd_lfc_set_pause_time =
 cmdline_parse_token_num_t cmd_lfc_set_send_xon =
        TOKEN_NUM_INITIALIZER(struct cmd_link_flow_ctrl_set_result,
                                send_xon, UINT16);
+cmdline_parse_token_string_t cmd_lfc_set_mac_ctrl_frame_fwd_mode =
+       TOKEN_STRING_INITIALIZER(struct cmd_link_flow_ctrl_set_result,
+                               mac_ctrl_frame_fwd, "mac_ctrl_frame_fwd");
+cmdline_parse_token_string_t cmd_lfc_set_mac_ctrl_frame_fwd =
+       TOKEN_STRING_INITIALIZER(struct cmd_link_flow_ctrl_set_result,
+                               mac_ctrl_frame_fwd_mode, "on#off");
 cmdline_parse_token_num_t cmd_lfc_set_portid =
        TOKEN_NUM_INITIALIZER(struct cmd_link_flow_ctrl_set_result,
                                port_id, UINT8);
@@ -3439,7 +3450,9 @@ cmdline_parse_token_num_t cmd_lfc_set_portid =
 cmdline_parse_inst_t cmd_link_flow_control_set = {
        .f = cmd_link_flow_ctrl_set_parsed,
        .data = NULL,
-       .help_str = "Configure the Ethernet link flow control...",
+       .help_str = "Configure the Ethernet flow control: set flow_ctrl rx on|off \
+tx on|off high_water low_water pause_time send_xon mac_ctrl_frame_fwd on|off \
+port_id",
        .tokens = {
                (void *)&cmd_lfc_set_set,
                (void *)&cmd_lfc_set_flow_ctrl,
@@ -3451,6 +3464,8 @@ cmdline_parse_inst_t cmd_link_flow_control_set = {
                (void *)&cmd_lfc_set_low_water,
                (void *)&cmd_lfc_set_pause_time,
                (void *)&cmd_lfc_set_send_xon,
+               (void *)&cmd_lfc_set_mac_ctrl_frame_fwd_mode,
+               (void *)&cmd_lfc_set_mac_ctrl_frame_fwd,
                (void *)&cmd_lfc_set_portid,
                NULL,
        },