|
@@ -983,6 +983,24 @@ static int ixgbe_get_vf_reta(struct ixgbe_adapter *adapter, u32 *msgbuf, u32 vf)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+static int ixgbe_get_vf_rss_key(struct ixgbe_adapter *adapter,
|
|
|
+ u32 *msgbuf, u32 vf)
|
|
|
+{
|
|
|
+ u32 *rss_key = &msgbuf[1];
|
|
|
+
|
|
|
+ /* Check if the operation is permitted */
|
|
|
+ if (!adapter->vfinfo[vf].rss_query_enabled)
|
|
|
+ return -EPERM;
|
|
|
+
|
|
|
+ /* verify the PF is supporting the correct API */
|
|
|
+ if (adapter->vfinfo[vf].vf_api != ixgbe_mbox_api_12)
|
|
|
+ return -EOPNOTSUPP;
|
|
|
+
|
|
|
+ memcpy(rss_key, adapter->rss_key, sizeof(adapter->rss_key));
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
static int ixgbe_rcv_msg_from_vf(struct ixgbe_adapter *adapter, u32 vf)
|
|
|
{
|
|
|
u32 mbx_size = IXGBE_VFMAILBOX_SIZE;
|
|
@@ -1042,6 +1060,9 @@ static int ixgbe_rcv_msg_from_vf(struct ixgbe_adapter *adapter, u32 vf)
|
|
|
case IXGBE_VF_GET_RETA:
|
|
|
retval = ixgbe_get_vf_reta(adapter, msgbuf, vf);
|
|
|
break;
|
|
|
+ case IXGBE_VF_GET_RSS_KEY:
|
|
|
+ retval = ixgbe_get_vf_rss_key(adapter, msgbuf, vf);
|
|
|
+ break;
|
|
|
default:
|
|
|
e_err(drv, "Unhandled Msg %8.8x\n", msgbuf[0]);
|
|
|
retval = IXGBE_ERR_MBX;
|