From: David Hunt <david.hunt@intel.com>
To: dev@dpdk.org
Cc: David Hunt <david.hunt@intel.com>,
Nemanja Marjanovic <nemanja.marjanovic@intel.com>,
Rory Sexton <rory.sexton@intel.com>
Subject: [PATCH v1 01/10] net/i40e: add API to convert VF Id to PF Id
Date: Fri, 25 Aug 2017 17:02:12 +0100 [thread overview]
Message-ID: <1503676941-80981-2-git-send-email-david.hunt@intel.com> (raw)
In-Reply-To: <1503676941-80981-1-git-send-email-david.hunt@intel.com>
Need a way to convert a vf id to a pf id on the host so as to query the pf
for relevant statistics which are used for the frequency changes in the
vm_power_manager app. Used when profiles are passed down from the guest
to the host, allowing the host to map the vfs to pfs.
Signed-off-by: Nemanja Marjanovic <nemanja.marjanovic@intel.com>
Signed-off-by: Rory Sexton <rory.sexton@intel.com>
Signed-off-by: David Hunt <david.hunt@intel.com>
---
drivers/net/i40e/i40e_ethdev.c | 1 +
drivers/net/i40e/i40e_rxtx.c | 27 +++++++++++++++++++++++++++
drivers/net/i40e/i40e_rxtx.h | 1 +
lib/librte_ether/rte_ethdev.h | 11 +++++++++++
4 files changed, 40 insertions(+)
diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index 5f26e24..8fb67d8 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -445,6 +445,7 @@ static const struct rte_pci_id pci_id_i40e_map[] = {
};
static const struct eth_dev_ops i40e_eth_dev_ops = {
+ .vfid_to_pfid = i40e_vf_mac_to_vsi,
.dev_configure = i40e_dev_configure,
.dev_start = i40e_dev_start,
.dev_stop = i40e_dev_stop,
diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c
index d42c23c..1379d5e 100644
--- a/drivers/net/i40e/i40e_rxtx.c
+++ b/drivers/net/i40e/i40e_rxtx.c
@@ -806,6 +806,33 @@ i40e_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts)
return nb_rx;
}
+uint64_t
+i40e_vf_mac_to_vsi(struct rte_eth_dev *dev, uint64_t vfid) {
+ struct ether_addr *vf_mac_addr = (struct ether_addr *)&vfid;
+ struct ether_addr *mac;
+ struct i40e_pf *pf = I40E_DEV_PRIVATE_TO_PF(dev->data->dev_private);
+ int vsi_id = 0, i, x;
+ struct i40e_pf_vf *vf;
+ uint16_t vf_num = pf->vf_num;
+
+ for (x = 0; x < vf_num; x++) {
+ int mac_addr_matches = 1;
+ vf = &pf->vfs[x];
+ mac = &vf->mac_addr;
+
+ for (i = 0; i < ETHER_ADDR_LEN; i++) {
+ if (mac->addr_bytes[i] != vf_mac_addr->addr_bytes[i])
+ mac_addr_matches = 0;
+ }
+ if (mac_addr_matches) {
+ vsi_id = vf->vsi->vsi_id;
+ return vsi_id;
+ }
+ }
+
+ return -1;
+}
+
uint16_t
i40e_recv_scattered_pkts(void *rx_queue,
struct rte_mbuf **rx_pkts,
diff --git a/drivers/net/i40e/i40e_rxtx.h b/drivers/net/i40e/i40e_rxtx.h
index 20084d6..bc6d355 100644
--- a/drivers/net/i40e/i40e_rxtx.h
+++ b/drivers/net/i40e/i40e_rxtx.h
@@ -192,6 +192,7 @@ union i40e_tx_offload {
};
};
+uint64_t i40e_vf_mac_to_vsi(struct rte_eth_dev *dev, uint64_t vfid);
int i40e_dev_rx_queue_start(struct rte_eth_dev *dev, uint16_t rx_queue_id);
int i40e_dev_rx_queue_stop(struct rte_eth_dev *dev, uint16_t rx_queue_id);
int i40e_dev_tx_queue_start(struct rte_eth_dev *dev, uint16_t tx_queue_id);
diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h
index 0adf327..fec7e92 100644
--- a/lib/librte_ether/rte_ethdev.h
+++ b/lib/librte_ether/rte_ethdev.h
@@ -1411,6 +1411,8 @@ typedef int (*eth_l2_tunnel_offload_set_t)
uint8_t en);
/**< @internal enable/disable the l2 tunnel offload functions */
+typedef uint64_t (*vfid_to_pfid)(struct rte_eth_dev *dev,
+ uint64_t vfid);
typedef int (*eth_filter_ctrl_t)(struct rte_eth_dev *dev,
enum rte_filter_type filter_type,
@@ -1429,6 +1431,7 @@ typedef int (*eth_get_dcb_info)(struct rte_eth_dev *dev,
* @internal A structure containing the functions exported by an Ethernet driver.
*/
struct eth_dev_ops {
+ vfid_to_pfid vfid_to_pfid; /**< Convert vfid to pfid */
eth_dev_configure_t dev_configure; /**< Configure device. */
eth_dev_start_t dev_start; /**< Start device. */
eth_dev_stop_t dev_stop; /**< Stop device. */
@@ -2928,6 +2931,14 @@ static inline int rte_eth_tx_descriptor_status(uint8_t port_id,
return (*dev->dev_ops->tx_descriptor_status)(txq, offset);
}
+static inline uint64_t
+vfid_to_pfid_direct(uint8_t port_id, uint64_t vfid)
+{
+ struct rte_eth_dev *dev = &rte_eth_devices[port_id];
+ uint64_t pfid = (*dev->dev_ops->vfid_to_pfid)(dev, vfid);
+ return pfid;
+}
+
/**
* Send a burst of output packets on a transmit queue of an Ethernet device.
*
--
2.7.4
next prev parent reply other threads:[~2017-08-25 16:02 UTC|newest]
Thread overview: 105+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-25 16:02 [PATCH v1 0/10] Policy Based Power Control for Guest David Hunt
2017-08-25 16:02 ` David Hunt [this message]
2017-09-22 9:56 ` [PATCH v1 01/10] net/i40e: add API to convert VF Id to PF Id Thomas Monjalon
2017-09-22 12:39 ` Hunt, David
2017-09-25 2:43 ` Wu, Jingjing
2017-09-25 9:57 ` Hunt, David
2017-08-25 16:02 ` [PATCH v1 02/10] net/i40e: add API to get received packet count David Hunt
2017-09-25 2:47 ` Wu, Jingjing
2017-09-25 9:59 ` Hunt, David
2017-08-25 16:02 ` [PATCH v1 03/10] lib/librte_power: add extra msg type for policies David Hunt
2017-08-25 16:02 ` [PATCH v1 04/10] examples/vm_power_mgr: add vcpu to pcpu mapping David Hunt
2017-08-25 16:02 ` [PATCH v1 05/10] examples/vm_power_mgr: add scale to medium freq fn David Hunt
2017-08-25 16:02 ` [PATCH v1 06/10] examples/vm_power_mgr: add policy to channels David Hunt
2017-08-25 16:02 ` [PATCH v1 07/10] examples/vm_power_mgr: add port initialisation David Hunt
2017-08-25 16:02 ` [PATCH v1 08/10] examples/guest_cli: add send policy to host David Hunt
2017-08-25 16:02 ` [PATCH v1 09/10] examples/vm_power_mgr: set MAC address of VF David Hunt
2017-08-25 16:02 ` [PATCH v1 10/10] net/i40e: set register for no drop David Hunt
2017-09-25 2:50 ` Wu, Jingjing
2017-09-25 9:44 ` Hunt, David
2017-08-29 13:03 ` [PATCH v1 0/10] Policy Based Power Control for Guest Ananyev, Konstantin
2017-09-22 9:51 ` Thomas Monjalon
2017-09-22 10:28 ` Hunt, David
2017-09-22 13:03 ` Thomas Monjalon
2017-09-22 13:12 ` Hunt, David
2017-09-25 12:27 ` [PATCH v2] " David Hunt
2017-09-25 12:27 ` [PATCH v2 1/8] net/i40e: add API to convert VF MAC to VSI index David Hunt
2017-09-26 14:04 ` Wu, Jingjing
2017-09-25 12:27 ` [PATCH v2 2/8] lib/librte_power: add extra msg type for policies David Hunt
2017-09-25 12:27 ` [PATCH v2 3/8] examples/vm_power_mgr: add vcpu to pcpu mapping David Hunt
2017-09-25 12:27 ` [PATCH v2 4/8] examples/vm_power_mgr: add scale to medium freq fn David Hunt
2017-09-25 12:27 ` [PATCH v2 5/8] examples/vm_power_mgr: add policy to channels David Hunt
2017-09-25 12:27 ` [PATCH v2 6/8] examples/vm_power_mgr: add port initialisation David Hunt
2017-09-25 12:27 ` [PATCH v2 7/8] examples/guest_cli: add send policy to host David Hunt
2017-09-25 12:27 ` [PATCH v2 8/8] examples/vm_power_mgr: set MAC address of VF David Hunt
2017-10-04 9:15 ` [PATCH v4] Policy Based Power Control for Guest David Hunt
2017-10-04 9:15 ` [PATCH v4 1/9] net/i40e: add API to convert VF MAC to VF id David Hunt
2017-10-04 15:26 ` santosh
2017-10-04 9:15 ` [PATCH v4 2/9] lib/librte_power: add extra msg type for policies David Hunt
2017-10-04 15:36 ` santosh
2017-10-05 8:38 ` Hunt, David
2017-10-05 9:21 ` santosh
2017-10-05 9:51 ` Hunt, David
2017-10-04 9:15 ` [PATCH v4 3/9] examples/vm_power_mgr: add vcpu to pcpu mapping David Hunt
2017-10-04 9:15 ` [PATCH v4 4/9] examples/vm_power_mgr: add scale to medium freq fn David Hunt
2017-10-04 9:15 ` [PATCH v4 5/9] examples/vm_power_mgr: add policy to channels David Hunt
2017-10-04 9:15 ` [PATCH v4 6/9] examples/vm_power_mgr: add port initialisation David Hunt
2017-10-04 9:15 ` [PATCH v4 7/9] power: add send channel msg function to map file David Hunt
2017-10-04 9:15 ` [PATCH v4 8/9] examples/guest_cli: add send policy to host David Hunt
2017-10-04 9:15 ` [PATCH v4 9/9] examples/vm_power_mgr: set MAC address of VF David Hunt
2017-10-04 15:25 ` [PATCH v5 0/9] Policy Based Power Control for Guest David Hunt
2017-10-04 15:25 ` [PATCH v5 1/9] net/i40e: add API to convert VF MAC to VF id David Hunt
2017-10-04 15:41 ` santosh
2017-10-05 8:31 ` Hunt, David
2017-10-05 9:22 ` santosh
2017-10-04 15:25 ` [PATCH v5 2/9] lib/librte_power: add extra msg type for policies David Hunt
2017-10-04 15:47 ` santosh
2017-10-05 8:41 ` Hunt, David
2017-10-04 15:25 ` [PATCH v5 3/9] examples/vm_power_mgr: add vcpu to pcpu mapping David Hunt
2017-10-04 15:58 ` santosh
2017-10-05 8:44 ` Hunt, David
2017-10-04 15:25 ` [PATCH v5 4/9] examples/vm_power_mgr: add scale to medium freq fn David Hunt
2017-10-04 16:04 ` santosh
2017-10-05 8:47 ` Hunt, David
2017-10-05 9:07 ` santosh
2017-10-04 15:25 ` [PATCH v5 5/9] examples/vm_power_mgr: add policy to channels David Hunt
2017-10-04 15:25 ` [PATCH v5 6/9] examples/vm_power_mgr: add port initialisation David Hunt
2017-10-04 15:25 ` [PATCH v5 7/9] power: add send channel msg function to map file David Hunt
2017-10-04 16:20 ` santosh
2017-10-04 15:25 ` [PATCH v5 8/9] examples/guest_cli: add send policy to host David Hunt
2017-10-04 15:25 ` [PATCH v5 9/9] examples/vm_power_mgr: set MAC address of VF David Hunt
2017-10-05 12:25 ` [PATCH v6 0/9] Policy Based Power Control for Guest David Hunt
2017-10-05 12:25 ` [PATCH v6 1/9] net/i40e: add API to convert VF MAC to VF id David Hunt
2017-10-05 12:45 ` Ananyev, Konstantin
2017-10-05 12:51 ` Hunt, David
2017-10-05 12:25 ` [PATCH v6 2/9] lib/librte_power: add extra msg type for policies David Hunt
2017-10-05 12:25 ` [PATCH v6 3/9] examples/vm_power_mgr: add vcpu to pcpu mapping David Hunt
2017-10-05 12:25 ` [PATCH v6 4/9] examples/vm_power_mgr: add scale to medium freq fn David Hunt
2017-10-05 12:25 ` [PATCH v6 5/9] examples/vm_power_mgr: add policy to channels David Hunt
2017-10-05 12:25 ` [PATCH v6 6/9] examples/vm_power_mgr: add port initialisation David Hunt
2017-10-05 12:25 ` [PATCH v6 7/9] power: add send channel msg function to map file David Hunt
2017-10-05 12:25 ` [PATCH v6 8/9] examples/guest_cli: add send policy to host David Hunt
2017-10-05 12:25 ` [PATCH v6 9/9] examples/vm_power_mgr: set MAC address of VF David Hunt
2017-10-05 13:28 ` [PATCH v7 0/9] Policy Based Power Control for Guest David Hunt
2017-10-05 13:28 ` [PATCH v7 1/9] net/i40e: add API to convert VF MAC to VF id David Hunt
2017-10-05 13:28 ` [PATCH v7 2/9] lib/librte_power: add extra msg type for policies David Hunt
2017-10-05 13:28 ` [PATCH v7 3/9] examples/vm_power_mgr: add vcpu to pcpu mapping David Hunt
2017-10-05 13:28 ` [PATCH v7 4/9] examples/vm_power_mgr: add scale to medium freq fn David Hunt
2017-10-05 13:28 ` [PATCH v7 5/9] examples/vm_power_mgr: add policy to channels David Hunt
2017-10-05 13:28 ` [PATCH v7 6/9] examples/vm_power_mgr: add port initialisation David Hunt
2017-10-05 13:28 ` [PATCH v7 7/9] power: add send channel msg function to map file David Hunt
2017-10-05 13:28 ` [PATCH v7 8/9] examples/guest_cli: add send policy to host David Hunt
2017-10-05 13:28 ` [PATCH v7 9/9] examples/vm_power_mgr: set MAC address of VF David Hunt
2017-10-05 13:54 ` [PATCH v7 0/9] Policy Based Power Control for Guest Ananyev, Konstantin
2017-10-05 14:12 ` santosh
2017-10-05 14:34 ` [PATCH v8 " David Hunt
2017-10-05 14:34 ` [PATCH v8 1/9] net/i40e: add API to convert VF MAC to VF id David Hunt
2017-10-05 14:34 ` [PATCH v8 2/9] lib/librte_power: add extra msg type for policies David Hunt
2017-10-05 14:34 ` [PATCH v8 3/9] examples/vm_power_mgr: add vcpu to pcpu mapping David Hunt
2017-10-05 14:34 ` [PATCH v8 4/9] examples/vm_power_mgr: add scale to medium freq fn David Hunt
2017-10-05 14:34 ` [PATCH v8 5/9] examples/vm_power_mgr: add policy to channels David Hunt
2017-10-05 14:34 ` [PATCH v8 6/9] examples/vm_power_mgr: add port initialisation David Hunt
2017-10-05 14:34 ` [PATCH v8 7/9] power: add send channel msg function to map file David Hunt
2017-10-05 14:34 ` [PATCH v8 8/9] examples/guest_cli: add send policy to host David Hunt
2017-10-05 14:34 ` [PATCH v8 9/9] examples/vm_power_mgr: set MAC address of VF David Hunt
2017-10-09 22:34 ` [PATCH v8 0/9] Policy Based Power Control for Guest Ferruh Yigit
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1503676941-80981-2-git-send-email-david.hunt@intel.com \
--to=david.hunt@intel.com \
--cc=dev@dpdk.org \
--cc=nemanja.marjanovic@intel.com \
--cc=rory.sexton@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.