summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Hutchings <bhutchings@solarflare.com>2010-08-06 14:38:03 +0100
committerJeff Garzik <jgarzik@redhat.com>2010-08-10 14:30:33 -0400
commitc4beb771d8e9bebc836054d513dc65c5abbe9730 (patch)
tree46f7565506f359fb532d24fd375510c59cd990ff
parent0c84c2be187e534f58005a2a07aa8be6aafe744c (diff)
downloadethtool-c4beb771d8e9bebc836054d513dc65c5abbe9730.tar.gz
ethtool: Fix handling of zero weights for flow hash indirection
The loop to generate an indirection table from a list of weights never advances by more than one weight at a time. Thus, if there is a 0 in the list (except at the end) the corresponding RX ring will be assigned 1 hash bucket rather than 0. Change 'if' to 'while'. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
-rw-r--r--ethtool.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/ethtool.c b/ethtool.c
index 16efb42..6b2b7c8 100644
--- a/ethtool.c
+++ b/ethtool.c
@@ -2899,7 +2899,7 @@ static int do_srxfhindir(int fd, struct ifreq *ifr)
j = -1;
for (i = 0; i < indir->size; i++) {
- if (i >= indir->size * partial / sum) {
+ while (i >= indir->size * partial / sum) {
j += 1;
weight = get_u32(rxfhindir_weight[j], 0);
partial += weight;