Skip to content

Commit

Permalink
tg3: Fix RSS indirection table distribution
Browse files Browse the repository at this point in the history
The current RSS indirection table is populated such that more traffic
will hit the first RSS ring.  This patch adjusts the indirection table
so that the load is more evenly distributed.

Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
Reviewed-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Matt Carlson authored and David S. Miller committed Jul 21, 2011
1 parent 5baa5e9 commit 9d53fa1
Showing 1 changed file with 15 additions and 6 deletions.
21 changes: 15 additions & 6 deletions drivers/net/tg3.c
Original file line number Diff line number Diff line change
Expand Up @@ -8723,15 +8723,24 @@ static int tg3_reset_hw(struct tg3 *tp, int reset_phy)
udelay(100);

if (tg3_flag(tp, ENABLE_RSS)) {
int i = 0;
u32 reg = MAC_RSS_INDIR_TBL_0;
u8 *ent = (u8 *)&val;

/* Setup the indirection table */
for (i = 0; i < TG3_RSS_INDIR_TBL_SIZE; i++) {
int idx = i % sizeof(val);
if (tp->irq_cnt == 2) {
for (i = 0; i < TG3_RSS_INDIR_TBL_SIZE; i += 8) {
tw32(reg, 0x0);
reg += 4;
}
} else {
u32 val;

ent[idx] = i % (tp->irq_cnt - 1);
if (idx == sizeof(val) - 1) {
while (i < TG3_RSS_INDIR_TBL_SIZE) {
val = i % (tp->irq_cnt - 1);
i++;
for (; i % 8; i++) {
val <<= 4;
val |= (i % (tp->irq_cnt - 1));
}
tw32(reg, val);
reg += 4;
}
Expand Down

0 comments on commit 9d53fa1

Please sign in to comment.