* [NET-NEXT PATCH] ixgbe: change config srrctl to only program one register per VMDq/RSS id
@ 2008-08-30 7:29 Jeff Kirsher
2008-09-03 14:10 ` Jeff Garzik
0 siblings, 1 reply; 2+ messages in thread
From: Jeff Kirsher @ 2008-08-30 7:29 UTC (permalink / raw)
To: jeff; +Cc: netdev, davem, akpm, Alexander Duyck, Jeff Kirsher
From: Alexander Duyck <alexander.h.duyck@intel.com>
This change makes it so only one srrctl register is programmed per VMDq id, and if VMDq is not enabled it is one register per RSS queue. Currently this function is working correctly for the multiqueue RSS and single queue cases, but if any advances features such as VMDq or DCB would have been enabled this function would have caused issues as it was not correct.
Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ixgbe/ixgbe_main.c | 25 +++++++++++++++----------
1 files changed, 15 insertions(+), 10 deletions(-)
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c
index 198b9d9..99e0b34 100644
--- a/drivers/net/ixgbe/ixgbe_main.c
+++ b/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));
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [NET-NEXT PATCH] ixgbe: change config srrctl to only program one register per VMDq/RSS id
2008-08-30 7:29 [NET-NEXT PATCH] ixgbe: change config srrctl to only program one register per VMDq/RSS id Jeff Kirsher
@ 2008-09-03 14:10 ` Jeff Garzik
0 siblings, 0 replies; 2+ messages in thread
From: Jeff Garzik @ 2008-09-03 14:10 UTC (permalink / raw)
To: Jeff Kirsher; +Cc: netdev, davem, akpm, Alexander Duyck
Jeff Kirsher wrote:
> From: Alexander Duyck <alexander.h.duyck@intel.com>
>
> This change makes it so only one srrctl register is programmed per VMDq id, and if VMDq is not enabled it is one register per RSS queue. Currently this function is working correctly for the multiqueue RSS and single queue cases, but if any advances features such as VMDq or DCB would have been enabled this function would have caused issues as it was not correct.
>
> Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
> ---
>
> drivers/net/ixgbe/ixgbe_main.c | 25 +++++++++++++++----------
> 1 files changed, 15 insertions(+), 10 deletions(-)
applied
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2008-09-03 14:10 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-08-30 7:29 [NET-NEXT PATCH] ixgbe: change config srrctl to only program one register per VMDq/RSS id Jeff Kirsher
2008-09-03 14:10 ` Jeff Garzik
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).