[ethtool] 12/20: Revert "ethtool: Support for configurable RSS hash function"

debian-kernel at lists.debian.org debian-kernel at lists.debian.org
Wed Aug 30 12:59:25 UTC 2017


This is an automated email from the git hooks/post-receive script.

benh pushed a commit to branch master
in repository ethtool.

commit 126464e4da1820647de856586c91653d13648089
Author: John W. Linville <linville at tuxdriver.com>
Date:   Mon Mar 27 13:51:16 2017 -0400

    Revert "ethtool: Support for configurable RSS hash function"
    
    As documented here:
    
        http://marc.info/?l=linux-netdev&m=149047867404395&w=2
    
    I accidentally merged two somewhat similar patches that aren't really
    meant to go together...
    
    This reverts commit adbaa18b9bc108da442e773f5c10941d609e5688.
    
    Signed-off-by: John W. Linville <linville at tuxdriver.com>
---
 ethtool.8.in |  6 ------
 ethtool.c    | 66 +++---------------------------------------------------------
 2 files changed, 3 insertions(+), 69 deletions(-)

diff --git a/ethtool.8.in b/ethtool.8.in
index 5bb3ae2..9d94b7d 100644
--- a/ethtool.8.in
+++ b/ethtool.8.in
@@ -301,8 +301,6 @@ ethtool \- query or control network driver and hardware settings
 .BI weight\  W0
 .IR W1
 .RB ...\ | \ default \ ]
-.RB [ hfunc
-.IR FUNC ]
 .HP
 .B ethtool \-f|\-\-flash
 .I devname file
@@ -877,10 +875,6 @@ Sets RSS hash key of the specified network device. RSS hash key should be of dev
 Hash key format must be in xx:yy:zz:aa:bb:cc format meaning both the nibbles of a byte should be mentioned
 even if a nibble is zero.
 .TP
-.BI hfunc
-Sets RSS hash function of the specified network device.
-List of RSS hash functions which kernel supports is shown as a part of the --show-rxfh command output.
-.TP
 .BI equal\  N
 Sets the receive flow hash indirection table to spread flows evenly
 between the first \fIN\fR receive queues.
diff --git a/ethtool.c b/ethtool.c
index 94b75a7..8b03aaf 100644
--- a/ethtool.c
+++ b/ethtool.c
@@ -3675,7 +3675,6 @@ static void print_grxfh_hfunc(struct cmd_context *ctx, __u8 hfunc)
 
 static int do_grxfh(struct cmd_context *ctx)
 {
-	struct ethtool_gstrings *hfuncs = NULL;
 	struct ethtool_rxfh rss_head = {0};
 	struct ethtool_rxnfc ring_count;
 	struct ethtool_rxfh *rss;
@@ -3735,26 +3734,6 @@ static int do_grxfh(struct cmd_context *ctx)
 			printf("%02x:", (u8) hkey[i]);
 	}
 
-	printf("RSS hash function:\n");
-	if (!rss->hfunc) {
-		printf("    Operation not supported\n");
-		goto out;
-	}
-
-	hfuncs = get_stringset(ctx, ETH_SS_RSS_HASH_FUNCS, 0, 1);
-	if (!hfuncs) {
-		perror("Cannot get hash functions names");
-		free(rss);
-		return 1;
-	}
-
-	for (i = 0; i < hfuncs->len; i++)
-		printf("    %s: %s\n",
-		       (const char *)hfuncs->data + i * ETH_GSTRING_LEN,
-		       (rss->hfunc & (1 << i)) ? "on" : "off");
-
-out:
-	free(hfuncs);
 	free(rss);
 	return 0;
 }
@@ -3858,16 +3837,11 @@ static int do_srxfh(struct cmd_context *ctx)
 	struct ethtool_rxfh *rss;
 	struct ethtool_rxnfc ring_count;
 	int rxfhindir_equal = 0, rxfhindir_default = 0;
-	struct ethtool_gstrings *hfuncs = NULL;
 	char **rxfhindir_weight = NULL;
 	char *rxfhindir_key = NULL;
-	char *req_hfunc_name = NULL;
-	char *hfunc_name = NULL;
 	char *hkey = NULL;
 	int err = 0;
-	int i;
 	u32 arg_num = 0, indir_bytes = 0;
-	u32 req_hfunc = 0;
 	u32 entry_size = sizeof(rss_head.rss_config[0]);
 	u32 num_weights = 0;
 
@@ -3899,12 +3873,6 @@ static int do_srxfh(struct cmd_context *ctx)
 		} else if (!strcmp(ctx->argp[arg_num], "default")) {
 			++arg_num;
 			rxfhindir_default = 1;
-		} else if (!strcmp(ctx->argp[arg_num], "hfunc")) {
-			++arg_num;
-			req_hfunc_name = ctx->argp[arg_num];
-			if (!req_hfunc_name)
-				exit_bad_args();
-			++arg_num;
 		} else {
 			exit_bad_args();
 		}
@@ -3937,8 +3905,7 @@ static int do_srxfh(struct cmd_context *ctx)
 
 	rss_head.cmd = ETHTOOL_GRSSH;
 	err = send_ioctl(ctx, &rss_head);
-	if (err < 0 && errno == EOPNOTSUPP && !rxfhindir_key &&
-	    !req_hfunc_name) {
+	if (err < 0 && errno == EOPNOTSUPP && !rxfhindir_key) {
 		return do_srxfhindir(ctx, rxfhindir_default, rxfhindir_equal,
 				     rxfhindir_weight, num_weights);
 	} else if (err < 0) {
@@ -3956,39 +3923,14 @@ static int do_srxfh(struct cmd_context *ctx)
 	if (rxfhindir_equal || rxfhindir_weight)
 		indir_bytes = rss_head.indir_size * entry_size;
 
-	if (rss_head.hfunc && req_hfunc_name) {
-		hfuncs = get_stringset(ctx, ETH_SS_RSS_HASH_FUNCS, 0, 1);
-		if (!hfuncs) {
-			perror("Cannot get hash functions names");
-			return 1;
-		}
-
-		for (i = 0; i < hfuncs->len && !req_hfunc ; i++) {
-			hfunc_name = (char *)(hfuncs->data +
-					      i * ETH_GSTRING_LEN);
-			if (!strncmp(hfunc_name, req_hfunc_name,
-				     ETH_GSTRING_LEN))
-				req_hfunc = (u32)1 << i;
-		}
-
-		if (!req_hfunc) {
-			fprintf(stderr,
-				"Unknown hash function: %s\n", req_hfunc_name);
-			free(hfuncs);
-			return 1;
-		}
-	}
-
 	rss = calloc(1, sizeof(*rss) + indir_bytes + rss_head.key_size);
 	if (!rss) {
 		perror("Cannot allocate memory for RX flow hash config");
-		err = 1;
-		goto free;
+		return 1;
 	}
 	rss->cmd = ETHTOOL_SRSSH;
 	rss->indir_size = rss_head.indir_size;
 	rss->key_size = rss_head.key_size;
-	rss->hfunc = req_hfunc;
 
 	if (fill_indir_table(&rss->indir_size, rss->rss_config, rxfhindir_default,
 			     rxfhindir_equal, rxfhindir_weight, num_weights)) {
@@ -4013,7 +3955,6 @@ free:
 		free(hkey);
 
 	free(rss);
-	free(hfuncs);
 	return err;
 }
 
@@ -4886,8 +4827,7 @@ static const struct option {
 	{ "-X|--set-rxfh-indir|--rxfh", 1, do_srxfh,
 	  "Set Rx flow hash indirection table and/or RSS hash key",
 	  "		[ equal N | weight W0 W1 ... | default ]\n"
-	  "		[ hkey %x:%x:%x:%x:%x:.... ]\n"
-	  "		[ hfunc FUNC ]\n" },
+	  "		[ hkey %x:%x:%x:%x:%x:.... ]\n" },
 	{ "-f|--flash", 1, do_flash,
 	  "Flash firmware image from the specified file to a region on the device",
 	  "               FILENAME [ REGION-NUMBER-TO-FLASH ]\n" },

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/kernel/ethtool.git



More information about the Kernel-svn-changes mailing list