* [PATCH 1/2] igb: Add macro for RETA indirection table @ 2013-07-17 6:50 Laura Mihaela Vasilescu 2013-07-17 6:50 ` [PATCH 2/2] igb: Expose RSS indirection table for ethtool Laura Mihaela Vasilescu 2013-07-17 7:11 ` [PATCH 1/2] igb: Add macro for RETA indirection table Jeff Kirsher 0 siblings, 2 replies; 9+ messages in thread From: Laura Mihaela Vasilescu @ 2013-07-17 6:50 UTC (permalink / raw) To: netdev Cc: jeffrey.t.kirsher, carolyn.wyborny, anjali.singhai, Laura Mihaela Vasilescu Signed-off-by: Laura Mihaela Vasilescu <laura.vasilescu@rosedu.org> --- drivers/net/ethernet/intel/igb/igb.h | 2 ++ drivers/net/ethernet/intel/igb/igb_main.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/intel/igb/igb.h b/drivers/net/ethernet/intel/igb/igb.h index 15ea8dc..96fdfe2 100644 --- a/drivers/net/ethernet/intel/igb/igb.h +++ b/drivers/net/ethernet/intel/igb/igb.h @@ -456,6 +456,8 @@ struct igb_adapter { #define IGB_FLAG_RSS_FIELD_IPV6_UDP (1 << 7) #define IGB_FLAG_WOL_SUPPORTED (1 << 8) +#define IGB_RETA_SIZE 32 + /* DMA Coalescing defines */ #define IGB_MIN_TXPBSIZE 20408 #define IGB_TX_BUF_4096 4096 diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c index 6a0c1b6..09ea855a 100644 --- a/drivers/net/ethernet/intel/igb/igb_main.c +++ b/drivers/net/ethernet/intel/igb/igb_main.c @@ -3127,7 +3127,7 @@ static void igb_setup_mrqc(struct igb_adapter *adapter) * we are generating the results for n and n+2 and then interleaving * those with the results with n+1 and n+3. */ - for (j = 0; j < 32; j++) { + for (j = 0; j < IGB_RETA_SIZE; j++) { /* first pass generates n and n+2 */ u32 base = ((j * 0x00040004) + 0x00020000) * num_rx_queues; u32 reta = (base & 0x07800780) >> (7 - shift); -- 1.7.10.4 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/2] igb: Expose RSS indirection table for ethtool 2013-07-17 6:50 [PATCH 1/2] igb: Add macro for RETA indirection table Laura Mihaela Vasilescu @ 2013-07-17 6:50 ` Laura Mihaela Vasilescu 2013-07-17 7:12 ` Jeff Kirsher 2013-07-17 16:52 ` Ben Hutchings 2013-07-17 7:11 ` [PATCH 1/2] igb: Add macro for RETA indirection table Jeff Kirsher 1 sibling, 2 replies; 9+ messages in thread From: Laura Mihaela Vasilescu @ 2013-07-17 6:50 UTC (permalink / raw) To: netdev Cc: jeffrey.t.kirsher, carolyn.wyborny, anjali.singhai, Laura Mihaela Vasilescu Signed-off-by: Laura Mihaela Vasilescu <laura.vasilescu@rosedu.org> --- drivers/net/ethernet/intel/igb/igb_ethtool.c | 32 ++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/drivers/net/ethernet/intel/igb/igb_ethtool.c b/drivers/net/ethernet/intel/igb/igb_ethtool.c index 85fe7b5..7e18dfa 100644 --- a/drivers/net/ethernet/intel/igb/igb_ethtool.c +++ b/drivers/net/ethernet/intel/igb/igb_ethtool.c @@ -2771,6 +2771,35 @@ static void igb_ethtool_complete(struct net_device *netdev) pm_runtime_put(&adapter->pdev->dev); } +static u32 igb_get_rss_table_size(struct net_device *netdev) +{ + return IGB_RETA_SIZE; +} + +static int igb_get_rss_table(struct net_device *netdev, u32 *rxfh_indir_tbl) +{ + struct igb_adapter *adapter = netdev_priv(netdev); + struct e1000_hw *hw = &adapter->hw; + int i; + + for (i = 0; i < IGB_RETA_SIZE; i++) + rxfh_indir_tbl[i] = rd32(E1000_RETA(i)); + + return 0; +} + +static int igb_set_rss_table(struct net_device *netdev, const u32 *rxfh_indir_tbl) +{ + struct igb_adapter *adapter = netdev_priv(netdev); + struct e1000_hw *hw = &adapter->hw; + int i; + + for (i = 0; i < IGB_RETA_SIZE; i++) + wr32(E1000_RETA(i), rxfh_indir_tbl[i]); + + return 0; +} + static const struct ethtool_ops igb_ethtool_ops = { .get_settings = igb_get_settings, .set_settings = igb_set_settings, @@ -2804,6 +2833,9 @@ static const struct ethtool_ops igb_ethtool_ops = { .set_eee = igb_set_eee, .get_module_info = igb_get_module_info, .get_module_eeprom = igb_get_module_eeprom, + .get_rxfh_indir_size = igb_get_rss_table_size, + .get_rxfh_indir = igb_get_rss_table, + .set_rxfh_indir = igb_set_rss_table, .begin = igb_ethtool_begin, .complete = igb_ethtool_complete, }; -- 1.7.10.4 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] igb: Expose RSS indirection table for ethtool 2013-07-17 6:50 ` [PATCH 2/2] igb: Expose RSS indirection table for ethtool Laura Mihaela Vasilescu @ 2013-07-17 7:12 ` Jeff Kirsher 2013-07-17 16:52 ` Ben Hutchings 1 sibling, 0 replies; 9+ messages in thread From: Jeff Kirsher @ 2013-07-17 7:12 UTC (permalink / raw) To: Laura Mihaela Vasilescu; +Cc: netdev, carolyn.wyborny, anjali.singhai [-- Attachment #1: Type: text/plain, Size: 316 bytes --] On Wed, 2013-07-17 at 09:50 +0300, Laura Mihaela Vasilescu wrote: > Signed-off-by: Laura Mihaela Vasilescu <laura.vasilescu@rosedu.org> > --- > drivers/net/ethernet/intel/igb/igb_ethtool.c | 32 > ++++++++++++++++++++++++++ > 1 file changed, 32 insertions(+) Added this one as well to my queue, thanks! [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] igb: Expose RSS indirection table for ethtool 2013-07-17 6:50 ` [PATCH 2/2] igb: Expose RSS indirection table for ethtool Laura Mihaela Vasilescu 2013-07-17 7:12 ` Jeff Kirsher @ 2013-07-17 16:52 ` Ben Hutchings 2013-07-17 17:03 ` Ben Hutchings 1 sibling, 1 reply; 9+ messages in thread From: Ben Hutchings @ 2013-07-17 16:52 UTC (permalink / raw) To: Laura Mihaela Vasilescu Cc: netdev, jeffrey.t.kirsher, carolyn.wyborny, anjali.singhai This is wrong, as there are 4 entries packed into each register. On Wed, 2013-07-17 at 09:50 +0300, Laura Mihaela Vasilescu wrote: > Signed-off-by: Laura Mihaela Vasilescu <laura.vasilescu@rosedu.org> > --- > drivers/net/ethernet/intel/igb/igb_ethtool.c | 32 ++++++++++++++++++++++++++ > 1 file changed, 32 insertions(+) > > diff --git a/drivers/net/ethernet/intel/igb/igb_ethtool.c b/drivers/net/ethernet/intel/igb/igb_ethtool.c > index 85fe7b5..7e18dfa 100644 > --- a/drivers/net/ethernet/intel/igb/igb_ethtool.c > +++ b/drivers/net/ethernet/intel/igb/igb_ethtool.c > @@ -2771,6 +2771,35 @@ static void igb_ethtool_complete(struct net_device *netdev) > pm_runtime_put(&adapter->pdev->dev); > } > > +static u32 igb_get_rss_table_size(struct net_device *netdev) > +{ > + return IGB_RETA_SIZE; * 4 > +} > + > +static int igb_get_rss_table(struct net_device *netdev, u32 *rxfh_indir_tbl) > +{ > + struct igb_adapter *adapter = netdev_priv(netdev); > + struct e1000_hw *hw = &adapter->hw; > + int i; > + > + for (i = 0; i < IGB_RETA_SIZE; i++) > + rxfh_indir_tbl[i] = rd32(E1000_RETA(i)); Unpack each register into entries i*4, i*4+1, i*4+2, i*4+3. > + > + return 0; > +} > + > +static int igb_set_rss_table(struct net_device *netdev, const u32 *rxfh_indir_tbl) > +{ > + struct igb_adapter *adapter = netdev_priv(netdev); > + struct e1000_hw *hw = &adapter->hw; > + int i; > + > + for (i = 0; i < IGB_RETA_SIZE; i++) > + wr32(E1000_RETA(i), rxfh_indir_tbl[i]); Pack entries i*4, i*4+1, i*4+2, i*4+3 into each register (as in igb_setup_mrqc()). > + > + return 0; > +} Ben. -- Ben Hutchings, Staff Engineer, Solarflare Not speaking for my employer; that's the marketing department's job. They asked us to note that Solarflare product names are trademarked. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] igb: Expose RSS indirection table for ethtool 2013-07-17 16:52 ` Ben Hutchings @ 2013-07-17 17:03 ` Ben Hutchings 0 siblings, 0 replies; 9+ messages in thread From: Ben Hutchings @ 2013-07-17 17:03 UTC (permalink / raw) To: Laura Mihaela Vasilescu Cc: netdev, jeffrey.t.kirsher, carolyn.wyborny, anjali.singhai On Wed, 2013-07-17 at 17:52 +0100, Ben Hutchings wrote: [...] > > +static int igb_get_rss_table(struct net_device *netdev, u32 *rxfh_indir_tbl) > > +{ > > + struct igb_adapter *adapter = netdev_priv(netdev); > > + struct e1000_hw *hw = &adapter->hw; > > + int i; > > + > > + for (i = 0; i < IGB_RETA_SIZE; i++) > > + rxfh_indir_tbl[i] = rd32(E1000_RETA(i)); > > Unpack each register into entries i*4, i*4+1, i*4+2, i*4+3. > > > + > > + return 0; > > +} > > + > > +static int igb_set_rss_table(struct net_device *netdev, const u32 *rxfh_indir_tbl) > > +{ > > + struct igb_adapter *adapter = netdev_priv(netdev); > > + struct e1000_hw *hw = &adapter->hw; > > + int i; > > + > > + for (i = 0; i < IGB_RETA_SIZE; i++) > > + wr32(E1000_RETA(i), rxfh_indir_tbl[i]); > > Pack entries i*4, i*4+1, i*4+2, i*4+3 into each register (as in > igb_setup_mrqc()). [...] Also, the indirection table should be preserved in the driver across hardware resets, although it may need to be reset if the number of RX queues changes. Commit 90415477bf13 'tg3: Make the RSS indir tbl admin configurable' is a good example of how to do this properly. Ben. -- Ben Hutchings, Staff Engineer, Solarflare Not speaking for my employer; that's the marketing department's job. They asked us to note that Solarflare product names are trademarked. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] igb: Add macro for RETA indirection table 2013-07-17 6:50 [PATCH 1/2] igb: Add macro for RETA indirection table Laura Mihaela Vasilescu 2013-07-17 6:50 ` [PATCH 2/2] igb: Expose RSS indirection table for ethtool Laura Mihaela Vasilescu @ 2013-07-17 7:11 ` Jeff Kirsher 1 sibling, 0 replies; 9+ messages in thread From: Jeff Kirsher @ 2013-07-17 7:11 UTC (permalink / raw) To: Laura Mihaela Vasilescu; +Cc: netdev, carolyn.wyborny, anjali.singhai [-- Attachment #1: Type: text/plain, Size: 350 bytes --] On Wed, 2013-07-17 at 09:50 +0300, Laura Mihaela Vasilescu wrote: > Signed-off-by: Laura Mihaela Vasilescu <laura.vasilescu@rosedu.org> > --- > drivers/net/ethernet/intel/igb/igb.h | 2 ++ > drivers/net/ethernet/intel/igb/igb_main.c | 2 +- > 2 files changed, 3 insertions(+), 1 deletion(-) Thanks, I will add this to my queue. [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/2] igb: Add macro for size of RETA indirection table @ 2013-07-31 8:43 Laura Mihaela Vasilescu 2013-07-31 8:43 ` [PATCH 2/2] igb: Expose RSS indirection table for ethtool Laura Mihaela Vasilescu 0 siblings, 1 reply; 9+ messages in thread From: Laura Mihaela Vasilescu @ 2013-07-31 8:43 UTC (permalink / raw) To: netdev Cc: carolyn.wyborny, anjali.singhai, jeffrey.t.kirsher, alexander.h.duyck, Laura Mihaela Vasilescu Signed-off-by: Laura Mihaela Vasilescu <laura.vasilescu@rosedu.org> --- drivers/net/ethernet/intel/igb/igb.h | 2 ++ drivers/net/ethernet/intel/igb/igb_main.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/intel/igb/igb.h b/drivers/net/ethernet/intel/igb/igb.h index 15ea8dc..5a2659b 100644 --- a/drivers/net/ethernet/intel/igb/igb.h +++ b/drivers/net/ethernet/intel/igb/igb.h @@ -343,6 +343,8 @@ struct hwmon_buff { }; #endif +#define IGB_RETA_SIZE 128 + /* board specific private data structure */ struct igb_adapter { unsigned long active_vlans[BITS_TO_LONGS(VLAN_N_VID)]; diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c index 6a0c1b6..00f5d96 100644 --- a/drivers/net/ethernet/intel/igb/igb_main.c +++ b/drivers/net/ethernet/intel/igb/igb_main.c @@ -3127,7 +3127,7 @@ static void igb_setup_mrqc(struct igb_adapter *adapter) * we are generating the results for n and n+2 and then interleaving * those with the results with n+1 and n+3. */ - for (j = 0; j < 32; j++) { + for (j = 0; j < IGB_RETA_SIZE / 4; j++) { /* first pass generates n and n+2 */ u32 base = ((j * 0x00040004) + 0x00020000) * num_rx_queues; u32 reta = (base & 0x07800780) >> (7 - shift); -- 1.7.10.4 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/2] igb: Expose RSS indirection table for ethtool 2013-07-31 8:43 [PATCH 1/2] igb: Add macro for size of " Laura Mihaela Vasilescu @ 2013-07-31 8:43 ` Laura Mihaela Vasilescu 2013-07-31 9:15 ` Jeff Kirsher 2013-08-02 11:52 ` Ben Hutchings 0 siblings, 2 replies; 9+ messages in thread From: Laura Mihaela Vasilescu @ 2013-07-31 8:43 UTC (permalink / raw) To: netdev Cc: carolyn.wyborny, anjali.singhai, jeffrey.t.kirsher, alexander.h.duyck, Laura Mihaela Vasilescu Signed-off-by: Laura Mihaela Vasilescu <laura.vasilescu@rosedu.org> --- drivers/net/ethernet/intel/igb/igb.h | 3 + drivers/net/ethernet/intel/igb/igb_ethtool.c | 87 ++++++++++++++++++++++++++ drivers/net/ethernet/intel/igb/igb_main.c | 28 +++------ 3 files changed, 97 insertions(+), 21 deletions(-) diff --git a/drivers/net/ethernet/intel/igb/igb.h b/drivers/net/ethernet/intel/igb/igb.h index 5a2659b..c1fae7a 100644 --- a/drivers/net/ethernet/intel/igb/igb.h +++ b/drivers/net/ethernet/intel/igb/igb.h @@ -446,6 +446,8 @@ struct igb_adapter { struct i2c_algo_bit_data i2c_algo; struct i2c_adapter i2c_adap; struct i2c_client *i2c_client; + u32 rss_indir_tbl_init; + u8 rss_indir_tbl[IGB_RETA_SIZE]; }; #define IGB_FLAG_HAS_MSI (1 << 0) @@ -482,6 +484,7 @@ extern int igb_up(struct igb_adapter *); extern void igb_down(struct igb_adapter *); extern void igb_reinit_locked(struct igb_adapter *); extern void igb_reset(struct igb_adapter *); +extern void igb_write_rss_indir_tbl(struct igb_adapter *); extern int igb_set_spd_dplx(struct igb_adapter *, u32, u8); extern int igb_setup_tx_resources(struct igb_ring *); extern int igb_setup_rx_resources(struct igb_ring *); diff --git a/drivers/net/ethernet/intel/igb/igb_ethtool.c b/drivers/net/ethernet/intel/igb/igb_ethtool.c index 85fe7b5..3e1e51e 100644 --- a/drivers/net/ethernet/intel/igb/igb_ethtool.c +++ b/drivers/net/ethernet/intel/igb/igb_ethtool.c @@ -2771,6 +2771,90 @@ static void igb_ethtool_complete(struct net_device *netdev) pm_runtime_put(&adapter->pdev->dev); } +static u32 igb_get_rxfh_indir_size(struct net_device *netdev) +{ + return IGB_RETA_SIZE; +} + +static int igb_get_rxfh_indir(struct net_device *netdev, u32 *indir) +{ + struct igb_adapter *adapter = netdev_priv(netdev); + int i; + + for (i = 0; i < IGB_RETA_SIZE; i++) + indir[i] = adapter->rss_indir_tbl[i]; + + return 0; +} + +void igb_write_rss_indir_tbl(struct igb_adapter *adapter) +{ + struct e1000_hw *hw = &adapter->hw; + u32 reg = E1000_RETA(0); + u32 shift = 0; + int i = 0; + + switch (hw->mac.type) { + case e1000_82575: + shift = 6; + break; + case e1000_82576: + /* 82576 supports 2 RSS queues for SR-IOV */ + if (adapter->vfs_allocated_count) + shift = 3; + break; + default: + break; + } + + while (i < IGB_RETA_SIZE) { + u32 val = 0; + int j; + + for (j = 3; j >= 0; j--) { + val <<= 8; + val |= adapter->rss_indir_tbl[i + j]; + } + + wr32(reg, val << shift); + reg += 4; + i += 4; + } +} + +static int igb_set_rxfh_indir(struct net_device *netdev, const u32 *indir) +{ + struct igb_adapter *adapter = netdev_priv(netdev); + struct e1000_hw *hw = &adapter->hw; + int i; + u32 num_queues; + + num_queues = adapter->rss_queues; + + switch (hw->mac.type) { + case e1000_82576: + /* 82576 supports 2 RSS queues for SR-IOV */ + if (adapter->vfs_allocated_count) + num_queues = 2; + break; + default: + break; + } + + /* Verify user input. */ + for (i = 0; i < IGB_RETA_SIZE; i++) + if (indir[i] > num_queues) + return -EINVAL; + + + for (i = 0; i < IGB_RETA_SIZE; i++) + adapter->rss_indir_tbl[i] = indir[i]; + + igb_write_rss_indir_tbl(adapter); + + return 0; +} + static const struct ethtool_ops igb_ethtool_ops = { .get_settings = igb_get_settings, .set_settings = igb_set_settings, @@ -2804,6 +2888,9 @@ static const struct ethtool_ops igb_ethtool_ops = { .set_eee = igb_set_eee, .get_module_info = igb_get_module_info, .get_module_eeprom = igb_get_module_eeprom, + .get_rxfh_indir_size = igb_get_rxfh_indir_size, + .get_rxfh_indir = igb_get_rxfh_indir, + .set_rxfh_indir = igb_set_rxfh_indir, .begin = igb_ethtool_begin, .complete = igb_ethtool_complete, }; diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c index 00f5d96..600b80d 100644 --- a/drivers/net/ethernet/intel/igb/igb_main.c +++ b/drivers/net/ethernet/intel/igb/igb_main.c @@ -3096,7 +3096,7 @@ static void igb_setup_mrqc(struct igb_adapter *adapter) { struct e1000_hw *hw = &adapter->hw; u32 mrqc, rxcsum; - u32 j, num_rx_queues, shift = 0; + u32 j, num_rx_queues; static const u32 rsskey[10] = { 0xDA565A6D, 0xC20E5B25, 0x3D256741, 0xB08FA343, 0xCB2BCAD0, 0xB4307BAE, 0xA32DCB77, 0x0CF23080, 0x3BB7426A, @@ -3109,35 +3109,21 @@ static void igb_setup_mrqc(struct igb_adapter *adapter) num_rx_queues = adapter->rss_queues; switch (hw->mac.type) { - case e1000_82575: - shift = 6; - break; case e1000_82576: /* 82576 supports 2 RSS queues for SR-IOV */ - if (adapter->vfs_allocated_count) { - shift = 3; + if (adapter->vfs_allocated_count) num_rx_queues = 2; - } break; default: break; } - /* Populate the indirection table 4 entries at a time. To do this - * we are generating the results for n and n+2 and then interleaving - * those with the results with n+1 and n+3. - */ - for (j = 0; j < IGB_RETA_SIZE / 4; j++) { - /* first pass generates n and n+2 */ - u32 base = ((j * 0x00040004) + 0x00020000) * num_rx_queues; - u32 reta = (base & 0x07800780) >> (7 - shift); - - /* second pass generates n+1 and n+3 */ - base += 0x00010001 * num_rx_queues; - reta |= (base & 0x07800780) << (1 + shift); - - wr32(E1000_RETA(j), reta); + if (adapter->rss_indir_tbl_init != num_rx_queues) { + for (j = 0; j < IGB_RETA_SIZE; j++) + adapter->rss_indir_tbl[j] = (j * num_rx_queues) / IGB_RETA_SIZE; + adapter->rss_indir_tbl_init = num_rx_queues; } + igb_write_rss_indir_tbl(adapter); /* Disable raw packet checksumming so that RSS hash is placed in * descriptor on writeback. No need to enable TCP/UDP/IP checksum -- 1.7.10.4 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] igb: Expose RSS indirection table for ethtool 2013-07-31 8:43 ` [PATCH 2/2] igb: Expose RSS indirection table for ethtool Laura Mihaela Vasilescu @ 2013-07-31 9:15 ` Jeff Kirsher 2013-08-02 11:52 ` Ben Hutchings 1 sibling, 0 replies; 9+ messages in thread From: Jeff Kirsher @ 2013-07-31 9:15 UTC (permalink / raw) To: Laura Mihaela Vasilescu Cc: netdev, carolyn.wyborny, anjali.singhai, alexander.h.duyck [-- Attachment #1: Type: text/plain, Size: 461 bytes --] On Wed, 2013-07-31 at 11:43 +0300, Laura Mihaela Vasilescu wrote: > Signed-off-by: Laura Mihaela Vasilescu <laura.vasilescu@rosedu.org> > --- > drivers/net/ethernet/intel/igb/igb.h | 3 + > drivers/net/ethernet/intel/igb/igb_ethtool.c | 87 > ++++++++++++++++++++++++++ > drivers/net/ethernet/intel/igb/igb_main.c | 28 +++------ > 3 files changed, 97 insertions(+), 21 deletions(-) Not applying, see response to the first patch. [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] igb: Expose RSS indirection table for ethtool 2013-07-31 8:43 ` [PATCH 2/2] igb: Expose RSS indirection table for ethtool Laura Mihaela Vasilescu 2013-07-31 9:15 ` Jeff Kirsher @ 2013-08-02 11:52 ` Ben Hutchings 1 sibling, 0 replies; 9+ messages in thread From: Ben Hutchings @ 2013-08-02 11:52 UTC (permalink / raw) To: Laura Mihaela Vasilescu Cc: netdev, carolyn.wyborny, anjali.singhai, jeffrey.t.kirsher, alexander.h.duyck On Wed, 2013-07-31 at 11:43 +0300, Laura Mihaela Vasilescu wrote: [...] > +static int igb_set_rxfh_indir(struct net_device *netdev, const u32 *indir) > +{ > + struct igb_adapter *adapter = netdev_priv(netdev); > + struct e1000_hw *hw = &adapter->hw; > + int i; > + u32 num_queues; > + > + num_queues = adapter->rss_queues; > + > + switch (hw->mac.type) { > + case e1000_82576: > + /* 82576 supports 2 RSS queues for SR-IOV */ > + if (adapter->vfs_allocated_count) > + num_queues = 2; > + break; > + default: > + break; > + } > + > + /* Verify user input. */ > + for (i = 0; i < IGB_RETA_SIZE; i++) > + if (indir[i] > num_queues) > + return -EINVAL; [...] Surely the comparison should be >= ? Ben. -- Ben Hutchings, Staff Engineer, Solarflare Not speaking for my employer; that's the marketing department's job. They asked us to note that Solarflare product names are trademarked. ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2013-08-02 11:52 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-07-17 6:50 [PATCH 1/2] igb: Add macro for RETA indirection table Laura Mihaela Vasilescu 2013-07-17 6:50 ` [PATCH 2/2] igb: Expose RSS indirection table for ethtool Laura Mihaela Vasilescu 2013-07-17 7:12 ` Jeff Kirsher 2013-07-17 16:52 ` Ben Hutchings 2013-07-17 17:03 ` Ben Hutchings 2013-07-17 7:11 ` [PATCH 1/2] igb: Add macro for RETA indirection table Jeff Kirsher -- strict thread matches above, loose matches on Subject: below -- 2013-07-31 8:43 [PATCH 1/2] igb: Add macro for size of " Laura Mihaela Vasilescu 2013-07-31 8:43 ` [PATCH 2/2] igb: Expose RSS indirection table for ethtool Laura Mihaela Vasilescu 2013-07-31 9:15 ` Jeff Kirsher 2013-08-02 11:52 ` Ben Hutchings
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).