diff mbox

[net-next,v1,4/5] ixgbevf: Add RSS Key query code

Message ID 1420019519-18139-5-git-send-email-vladz@cloudius-systems.com
State Awaiting Upstream, archived
Delegated to: David Miller
Headers show

Commit Message

Vlad Zolotarov Dec. 31, 2014, 9:51 a.m. UTC
Signed-off-by: Vlad Zolotarov <vladz@cloudius-systems.com>
---
New in v1 (compared to RFC):
   - Use "if-else" statement instead of a "switch-case" for a single option case
     (in ixgbevf_get_rss_key()).

---
 drivers/net/ethernet/intel/ixgbevf/mbx.h |  2 ++
 drivers/net/ethernet/intel/ixgbevf/vf.c  | 44 ++++++++++++++++++++++++++++++++
 drivers/net/ethernet/intel/ixgbevf/vf.h  |  1 +
 3 files changed, 47 insertions(+)

Comments

Kirsher, Jeffrey T Dec. 31, 2014, 4:28 p.m. UTC | #1
On Wed, 2014-12-31 at 11:51 +0200, Vlad Zolotarov wrote:
> Signed-off-by: Vlad Zolotarov <vladz@cloudius-systems.com>
> ---
> New in v1 (compared to RFC):
>    - Use "if-else" statement instead of a "switch-case" for a single
> option case
>      (in ixgbevf_get_rss_key()).
> 
> ---
>  drivers/net/ethernet/intel/ixgbevf/mbx.h |  2 ++
>  drivers/net/ethernet/intel/ixgbevf/vf.c  | 44
> ++++++++++++++++++++++++++++++++
>  drivers/net/ethernet/intel/ixgbevf/vf.h  |  1 +
>  3 files changed, 47 insertions(+)

Just caught this now, sorry but your patch description is sparse (i.e.
non-existent).  I know that the title of the patch pretty much tells
what you are doing, but it would be nice to have a bit more detail as to
why (like your first patch).

Same goes for patch 5 of the series as well.
Vlad Zolotarov Dec. 31, 2014, 5:01 p.m. UTC | #2
On 12/31/14 18:28, Jeff Kirsher wrote:
> On Wed, 2014-12-31 at 11:51 +0200, Vlad Zolotarov wrote:
>> Signed-off-by: Vlad Zolotarov <vladz@cloudius-systems.com>
>> ---
>> New in v1 (compared to RFC):
>>     - Use "if-else" statement instead of a "switch-case" for a single
>> option case
>>       (in ixgbevf_get_rss_key()).
>>
>> ---
>>   drivers/net/ethernet/intel/ixgbevf/mbx.h |  2 ++
>>   drivers/net/ethernet/intel/ixgbevf/vf.c  | 44
>> ++++++++++++++++++++++++++++++++
>>   drivers/net/ethernet/intel/ixgbevf/vf.h  |  1 +
>>   3 files changed, 47 insertions(+)
> Just caught this now, sorry but your patch description is sparse (i.e.
> non-existent).  I know that the title of the patch pretty much tells
> what you are doing, but it would be nice to have a bit more detail as to
> why (like your first patch).
>
> Same goes for patch 5 of the series as well.

No problema. ;)
Will send the v2.


--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Vlad Zolotarov Dec. 31, 2014, 6:03 p.m. UTC | #3
On 12/31/14 18:28, Jeff Kirsher wrote:
> On Wed, 2014-12-31 at 11:51 +0200, Vlad Zolotarov wrote:
>> Signed-off-by: Vlad Zolotarov <vladz@cloudius-systems.com>
>> ---
>> New in v1 (compared to RFC):
>>     - Use "if-else" statement instead of a "switch-case" for a single
>> option case
>>       (in ixgbevf_get_rss_key()).
>>
>> ---
>>   drivers/net/ethernet/intel/ixgbevf/mbx.h |  2 ++
>>   drivers/net/ethernet/intel/ixgbevf/vf.c  | 44
>> ++++++++++++++++++++++++++++++++
>>   drivers/net/ethernet/intel/ixgbevf/vf.h  |  1 +
>>   3 files changed, 47 insertions(+)
> Just caught this now, sorry but your patch description is sparse (i.e.
> non-existent).  I know that the title of the patch pretty much tells
> what you are doing, but it would be nice to have a bit more detail as to
> why (like your first patch).

I've sent a v2 where I tried to address your last remarks. Pls., note 
that the whole series "why" motivation is located in the PATCH0 and in 
the final PATCH5: adding a new ethtool options for 82599 VF devices.

thanks,
vlad

>
> Same goes for patch 5 of the series as well.

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Kirsher, Jeffrey T Dec. 31, 2014, 6:32 p.m. UTC | #4
On Wed, 2014-12-31 at 20:03 +0200, Vlad Zolotarov wrote:
> On 12/31/14 18:28, Jeff Kirsher wrote:
> > On Wed, 2014-12-31 at 11:51 +0200, Vlad Zolotarov wrote:
> >> Signed-off-by: Vlad Zolotarov <vladz@cloudius-systems.com>
> >> ---
> >> New in v1 (compared to RFC):
> >>     - Use "if-else" statement instead of a "switch-case" for a
> single
> >> option case
> >>       (in ixgbevf_get_rss_key()).
> >>
> >> ---
> >>   drivers/net/ethernet/intel/ixgbevf/mbx.h |  2 ++
> >>   drivers/net/ethernet/intel/ixgbevf/vf.c  | 44
> >> ++++++++++++++++++++++++++++++++
> >>   drivers/net/ethernet/intel/ixgbevf/vf.h  |  1 +
> >>   3 files changed, 47 insertions(+)
> > Just caught this now, sorry but your patch description is sparse
> (i.e.
> > non-existent).  I know that the title of the patch pretty much tells
> > what you are doing, but it would be nice to have a bit more detail
> as to
> > why (like your first patch).
> 
> I've sent a v2 where I tried to address your last remarks. Pls., note 
> that the whole series "why" motivation is located in the PATCH0 and
> in 
> the final PATCH5: adding a new ethtool options for 82599 VF devices.

Thanks v2 appears fine with regards to code/patch format goes.  Alex
Duyck appears to have provided feedback on the series, which is a
concern for me.  I have dropped v1 (since v2 is out), but I am going to
hold off on pulling in v2 until Alex's concerns have been addressed.
Vlad Zolotarov Dec. 31, 2014, 6:36 p.m. UTC | #5
On 12/31/14 20:32, Jeff Kirsher wrote:
> On Wed, 2014-12-31 at 20:03 +0200, Vlad Zolotarov wrote:
>> On 12/31/14 18:28, Jeff Kirsher wrote:
>>> On Wed, 2014-12-31 at 11:51 +0200, Vlad Zolotarov wrote:
>>>> Signed-off-by: Vlad Zolotarov <vladz@cloudius-systems.com>
>>>> ---
>>>> New in v1 (compared to RFC):
>>>>      - Use "if-else" statement instead of a "switch-case" for a
>> single
>>>> option case
>>>>        (in ixgbevf_get_rss_key()).
>>>>
>>>> ---
>>>>    drivers/net/ethernet/intel/ixgbevf/mbx.h |  2 ++
>>>>    drivers/net/ethernet/intel/ixgbevf/vf.c  | 44
>>>> ++++++++++++++++++++++++++++++++
>>>>    drivers/net/ethernet/intel/ixgbevf/vf.h  |  1 +
>>>>    3 files changed, 47 insertions(+)
>>> Just caught this now, sorry but your patch description is sparse
>> (i.e.
>>> non-existent).  I know that the title of the patch pretty much tells
>>> what you are doing, but it would be nice to have a bit more detail
>> as to
>>> why (like your first patch).
>> I've sent a v2 where I tried to address your last remarks. Pls., note
>> that the whole series "why" motivation is located in the PATCH0 and
>> in
>> the final PATCH5: adding a new ethtool options for 82599 VF devices.
> Thanks v2 appears fine with regards to code/patch format goes.  Alex
> Duyck appears to have provided feedback on the series, which is a
> concern for me.  I have dropped v1 (since v2 is out), but I am going to
> hold off on pulling in v2 until Alex's concerns have been addressed.

Sure. He's caught a few real issues there. The main is that I had only 
82599 in mind and there are also x540 and x550 to consider. It may take 
a day or two... ;)
Again, thanks for looking at this guys.


--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/net/ethernet/intel/ixgbevf/mbx.h b/drivers/net/ethernet/intel/ixgbevf/mbx.h
index 3e148a8..9674ac8 100644
--- a/drivers/net/ethernet/intel/ixgbevf/mbx.h
+++ b/drivers/net/ethernet/intel/ixgbevf/mbx.h
@@ -110,6 +110,8 @@  enum ixgbe_pfvf_api_rev {
 #define IXGBE_VF_GET_RETA_1	0x0b /* get RETA[12..23] */
 #define IXGBE_VF_GET_RETA_2	0x0c /* get RETA[24..31] */
 
+#define IXGBE_VF_GET_RSS_KEY	0x0d /* get RSS hash key */
+
 /* GET_QUEUES return data indices within the mailbox */
 #define IXGBE_VF_TX_QUEUES	1	/* number of Tx queues supported */
 #define IXGBE_VF_RX_QUEUES	2	/* number of Rx queues supported */
diff --git a/drivers/net/ethernet/intel/ixgbevf/vf.c b/drivers/net/ethernet/intel/ixgbevf/vf.c
index 8b98cdf..dbac264 100644
--- a/drivers/net/ethernet/intel/ixgbevf/vf.c
+++ b/drivers/net/ethernet/intel/ixgbevf/vf.c
@@ -290,6 +290,50 @@  static inline int _ixgbevf_get_reta(struct ixgbe_hw *hw, u32 *msgbuf,
 }
 
 /**
+ * ixgbevf_get_rss_key - get the RSS Random Key
+ * @hw: pointer to the HW structure
+ * @reta: buffer to fill with RETA contents.
+ *
+ * The "rss_key" buffer should be big enough to contain 10 registers.
+ *
+ * Returns: 0 on success.
+ *          if API doesn't support this operation - (-EPERM).
+ */
+int ixgbevf_get_rss_key(struct ixgbe_hw *hw, u8 *rss_key)
+{
+	int err;
+	u32 msgbuf[IXGBE_VFMAILBOX_SIZE];
+
+	/* Return and error if API doesn't support RSS Random Key retrieval */
+	if (hw->api_version != ixgbe_mbox_api_12)
+		return -EPERM;
+
+	msgbuf[0] = IXGBE_VF_GET_RSS_KEY;
+	err = hw->mbx.ops.write_posted(hw, msgbuf, 1);
+
+	if (err)
+		return err;
+
+	err = hw->mbx.ops.read_posted(hw, msgbuf, 11);
+
+	if (err)
+		return err;
+
+	msgbuf[0] &= ~IXGBE_VT_MSGTYPE_CTS;
+
+	/* If we didn't get an ACK there must have been
+	 * some sort of mailbox error so we should treat it
+	 * as such.
+	 */
+	if (msgbuf[0] != (IXGBE_VF_GET_RSS_KEY | IXGBE_VT_MSGTYPE_ACK))
+		return IXGBE_ERR_MBX;
+
+	memcpy(rss_key, msgbuf + 1, 40);
+
+	return 0;
+}
+
+/**
  * ixgbevf_get_reta - get the RSS redirection table (RETA) contents.
  * @hw: pointer to the HW structure
  * @reta: buffer to fill with RETA contents.
diff --git a/drivers/net/ethernet/intel/ixgbevf/vf.h b/drivers/net/ethernet/intel/ixgbevf/vf.h
index 73c1b33..54f53f2b8 100644
--- a/drivers/net/ethernet/intel/ixgbevf/vf.h
+++ b/drivers/net/ethernet/intel/ixgbevf/vf.h
@@ -209,5 +209,6 @@  int ixgbevf_negotiate_api_version(struct ixgbe_hw *hw, int api);
 int ixgbevf_get_queues(struct ixgbe_hw *hw, unsigned int *num_tcs,
 		       unsigned int *default_tc);
 int ixgbevf_get_reta(struct ixgbe_hw *hw, u32 *reta);
+int ixgbevf_get_rss_key(struct ixgbe_hw *hw, u8 *rss_key);
 #endif /* __IXGBE_VF_H__ */