* [Intel-wired-lan] [PATCH net-next] ixgbe support for ethtool set_rxfh
@ 2015-06-24 13:45 Tom Barbette
2015-06-24 19:38 ` Tantilov, Emil S
0 siblings, 1 reply; 2+ messages in thread
From: Tom Barbette @ 2015-06-24 13:45 UTC (permalink / raw)
To: intel-wired-lan
Allows to change the rxfh indirection table and/or key using ethtool interface
Signed-off-by: Tom Barbette <tom.barbette@ulg.ac.be>
---
drivers/net/ethernet/intel/ixgbe/ixgbe.h | 1 +
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 40 ++++++++++++++++++++++++
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 2 +-
3 files changed, 42 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe.h
b/drivers/net/ethernet/intel/ixgbe/ixgbe.h
index ac3ac2a..4314799 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe.h
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe.h
@@ -967,4 +967,5 @@ netdev_tx_t ixgbe_xmit_frame_ring(struct sk_buff *skb,
struct ixgbe_adapter *adapter,
struct ixgbe_ring *tx_ring);
u32 ixgbe_rss_indir_tbl_entries(struct ixgbe_adapter *adapter);
+void ixgbe_store_reta(struct ixgbe_adapter *adapter);
#endif /* _IXGBE_H_ */
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
index ec7b232..1d373b9 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
@@ -2907,6 +2907,45 @@ static int ixgbe_get_rxfh(struct net_device
*netdev, u32 *indir, u8 *key,
return 0;
}
+static int ixgbe_set_rxfh(struct net_device *netdev, const u32 *indir,
+ const u8 *key, const u8 hfunc)
+{
+ struct ixgbe_adapter *adapter = netdev_priv(netdev);
+ u32 reta_entries = ixgbe_rss_indir_tbl_entries(adapter);
+ int i;
+ u32 num_queues;
+
+ num_queues = adapter->num_rx_queues;
+
+ /*
+ * Allow at least 2 queues w/ SR-IOV.
+ */
+ if ((adapter->flags & IXGBE_FLAG_SRIOV_ENABLED) && (num_queues < 2))
+ num_queues = 2;
+
+ if (hfunc)
+ return -EINVAL;
+
+ /* Fill out the redirection table */
+ if (indir) {
+ /* Verify user input. */
+ for (i = 0; i < reta_entries; i++)
+ if (indir[i] >= num_queues)
+ return -EINVAL;
+
+ for (i = 0; i < reta_entries; i++)
+ adapter->rss_indir_tbl[i] = indir[i];
+ }
+
+ /* Fill out the rss hash key */
+ if (key)
+ memcpy(adapter->rss_key, key, ixgbe_get_rxfh_key_size(netdev));
+
+ ixgbe_store_reta(adapter);
+
+ return 0;
+}
+
static int ixgbe_get_ts_info(struct net_device *dev,
struct ethtool_ts_info *info)
{
@@ -3167,6 +3206,7 @@ static const struct ethtool_ops ixgbe_ethtool_ops = {
.get_rxfh_indir_size = ixgbe_rss_indir_size,
.get_rxfh_key_size = ixgbe_get_rxfh_key_size,
.get_rxfh = ixgbe_get_rxfh,
+ .set_rxfh = ixgbe_set_rxfh,
.get_channels = ixgbe_get_channels,
.set_channels = ixgbe_set_channels,
.get_ts_info = ixgbe_get_ts_info,
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index 9aa6104..0fdeb76 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -3287,7 +3287,7 @@ u32 ixgbe_rss_indir_tbl_entries(struct
ixgbe_adapter *adapter)
*
* Write the RSS redirection table stored in adapter.rss_indir_tbl[] to HW.
*/
-static void ixgbe_store_reta(struct ixgbe_adapter *adapter)
+void ixgbe_store_reta(struct ixgbe_adapter *adapter)
{
u32 i, reta_entries = ixgbe_rss_indir_tbl_entries(adapter);
struct ixgbe_hw *hw = &adapter->hw;
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [Intel-wired-lan] [PATCH net-next] ixgbe support for ethtool set_rxfh
2015-06-24 13:45 [Intel-wired-lan] [PATCH net-next] ixgbe support for ethtool set_rxfh Tom Barbette
@ 2015-06-24 19:38 ` Tantilov, Emil S
0 siblings, 0 replies; 2+ messages in thread
From: Tantilov, Emil S @ 2015-06-24 19:38 UTC (permalink / raw)
To: intel-wired-lan
>-----Original Message-----
>From: Intel-wired-lan [mailto:intel-wired-lan-bounces at lists.osuosl.org] On
>Behalf Of Tom Barbette
>Sent: Wednesday, June 24, 2015 6:45 AM
To: intel-wired-lan@lists.osuosl.org
>Subject: [Intel-wired-lan] [PATCH net-next] ixgbe support for ethtool
>set_rxfh
>
>Allows to change the rxfh indirection table and/or key using ethtool interface
>
>Signed-off-by: Tom Barbette <tom.barbette@ulg.ac.be>
>---
> drivers/net/ethernet/intel/ixgbe/ixgbe.h | 1 +
> drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 40
>++++++++++++++++++++++++
> drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 2 +-
> 3 files changed, 42 insertions(+), 1 deletion(-)
>
>diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe.h
>b/drivers/net/ethernet/intel/ixgbe/ixgbe.h
>index ac3ac2a..4314799 100644
>--- a/drivers/net/ethernet/intel/ixgbe/ixgbe.h
>+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe.h
>@@ -967,4 +967,5 @@ netdev_tx_t ixgbe_xmit_frame_ring(struct sk_buff *skb,
> struct ixgbe_adapter *adapter,
> struct ixgbe_ring *tx_ring);
> u32 ixgbe_rss_indir_tbl_entries(struct ixgbe_adapter *adapter);
>+void ixgbe_store_reta(struct ixgbe_adapter *adapter);
> #endif /* _IXGBE_H_ */
>diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
>b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
>index ec7b232..1d373b9 100644
>--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
>+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
>@@ -2907,6 +2907,45 @@ static int ixgbe_get_rxfh(struct net_device
>*netdev, u32 *indir, u8 *key,
> return 0;
> }
Above lines are messed up somehow which will prevent the patch from applying.
>
>+static int ixgbe_set_rxfh(struct net_device *netdev, const u32 *indir,
>+ const u8 *key, const u8 hfunc)
>+{
>+ struct ixgbe_adapter *adapter = netdev_priv(netdev);
>+ u32 reta_entries = ixgbe_rss_indir_tbl_entries(adapter);
>+ int i;
>+ u32 num_queues;
>+
>+ num_queues = adapter->num_rx_queues;
>+
>+ /*
>+ * Allow at least 2 queues w/ SR-IOV.
>+ */
>+ if ((adapter->flags & IXGBE_FLAG_SRIOV_ENABLED) && (num_queues < 2))
>+ num_queues = 2;
>+
>+ if (hfunc)
>+ return -EINVAL;
>+
>+ /* Fill out the redirection table */
>+ if (indir) {
>+ /* Verify user input. */
>+ for (i = 0; i < reta_entries; i++)
>+ if (indir[i] >= num_queues)
>+ return -EINVAL;
The indirection table (see RETA register) is limited to 16 queues, 64 for X550.
Thanks,
Emil
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2015-06-24 19:38 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-24 13:45 [Intel-wired-lan] [PATCH net-next] ixgbe support for ethtool set_rxfh Tom Barbette
2015-06-24 19:38 ` Tantilov, Emil S
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.