From 785c419ff790b7acbc19603a663a51c5c5718da0 Mon Sep 17 00:00:00 2001 From: Alexander Duyck Date: Sat, 30 Aug 2008 00:29:10 -0700 Subject: [PATCH] --- yaml --- r: 111382 b: refs/heads/master c: 3be1adfb912867e244729c3826b457ee76b8f737 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/net/ixgbe/ixgbe_main.c | 25 +++++++++++++++---------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/[refs] b/[refs] index 8194b02cfdd7..ccf0a96543d8 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1a32bcfb5706d06a49904383b02f7c1d24172b96 +refs/heads/master: 3be1adfb912867e244729c3826b457ee76b8f737 diff --git a/trunk/drivers/net/ixgbe/ixgbe_main.c b/trunk/drivers/net/ixgbe/ixgbe_main.c index 198b9d9a3d4c..99e0b34416e8 100644 --- a/trunk/drivers/net/ixgbe/ixgbe_main.c +++ b/trunk/drivers/net/ixgbe/ixgbe_main.c @@ -1417,18 +1417,23 @@ static void ixgbe_configure_srrctl(struct ixgbe_adapter *adapter, int index) struct ixgbe_ring *rx_ring; u32 srrctl; int queue0; - unsigned long *mask, maskval = 1; - long shift, len; - - if (adapter->flags & IXGBE_FLAG_RSS_ENABLED) { - mask = (unsigned long *) &adapter->ring_feature[RING_F_RSS].mask; - len = sizeof(adapter->ring_feature[RING_F_RSS].mask) * 8; + unsigned long mask; + + /* program one srrctl register per VMDq index */ + if (adapter->flags & IXGBE_FLAG_VMDQ_ENABLED) { + long shift, len; + mask = (unsigned long) adapter->ring_feature[RING_F_RSS].mask; + len = sizeof(adapter->ring_feature[RING_F_VMDQ].mask) * 8; + shift = find_first_bit(&mask, len); + queue0 = index & mask; + index = (index & mask) >> shift; + /* program one srrctl per RSS queue since RDRXCTL.MVMEN is enabled */ } else { - mask = &maskval; - len = 1; + mask = (unsigned long) adapter->ring_feature[RING_F_RSS].mask; + queue0 = index & mask; + index = index & mask; } - shift = find_first_bit(mask, len); - queue0 = index << shift; + rx_ring = &adapter->rx_ring[queue0]; srrctl = IXGBE_READ_REG(&adapter->hw, IXGBE_SRRCTL(index));