From: Wenzhuo Lu <wenzhuo.lu@intel.com>
To: dev@dpdk.org
Cc: Jingjing Wu <jingjing.wu@intel.com>
Subject: [dpdk-dev] [PATCH v6 11/14] net/i40e: support AVF basic interface
Date: Wed, 10 Jan 2018 14:15:58 +0800 [thread overview]
Message-ID: <1515564961-79227-12-git-send-email-wenzhuo.lu@intel.com> (raw)
In-Reply-To: <1515564961-79227-1-git-send-email-wenzhuo.lu@intel.com>
From: Jingjing Wu <jingjing.wu@intel.com>
Enable Virtchnl offload Caps negotiation and RSS_PF offload
to support AVF basic interface.
Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
---
drivers/net/i40e/i40e_ethdev.c | 69 ++++++++++++++++----
drivers/net/i40e/i40e_ethdev.h | 5 ++
drivers/net/i40e/i40e_pf.c | 140 +++++++++++++++++++++++++++++++++++++----
drivers/net/i40e/i40e_pf.h | 6 ++
4 files changed, 195 insertions(+), 25 deletions(-)
diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index 285d92b..10bb4eb 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -3649,6 +3649,7 @@ static int i40e_dev_xstats_get_names(__rte_unused struct rte_eth_dev *dev,
{
struct i40e_pf *pf = I40E_VSI_TO_PF(vsi);
struct i40e_hw *hw = I40E_VSI_TO_HW(vsi);
+ uint32_t reg;
int ret;
if (!lut)
@@ -3665,14 +3666,22 @@ static int i40e_dev_xstats_get_names(__rte_unused struct rte_eth_dev *dev,
uint32_t *lut_dw = (uint32_t *)lut;
uint16_t i, lut_size_dw = lut_size / 4;
- for (i = 0; i < lut_size_dw; i++)
- lut_dw[i] = I40E_READ_REG(hw, I40E_PFQF_HLUT(i));
+ if (vsi->type == I40E_VSI_SRIOV) {
+ for (i = 0; i <= lut_size_dw; i++) {
+ reg = I40E_VFQF_HLUT1(i, vsi->user_param);
+ lut_dw[i] = i40e_read_rx_ctl(hw, reg);
+ }
+ } else {
+ for (i = 0; i < lut_size_dw; i++)
+ lut_dw[i] = I40E_READ_REG(hw,
+ I40E_PFQF_HLUT(i));
+ }
}
return 0;
}
-static int
+int
i40e_set_rss_lut(struct i40e_vsi *vsi, uint8_t *lut, uint16_t lut_size)
{
struct i40e_pf *pf;
@@ -3696,8 +3705,17 @@ static int i40e_dev_xstats_get_names(__rte_unused struct rte_eth_dev *dev,
uint32_t *lut_dw = (uint32_t *)lut;
uint16_t i, lut_size_dw = lut_size / 4;
- for (i = 0; i < lut_size_dw; i++)
- I40E_WRITE_REG(hw, I40E_PFQF_HLUT(i), lut_dw[i]);
+ if (vsi->type == I40E_VSI_SRIOV) {
+ for (i = 0; i < lut_size_dw; i++)
+ I40E_WRITE_REG(
+ hw,
+ I40E_VFQF_HLUT1(i, vsi->user_param),
+ lut_dw[i]);
+ } else {
+ for (i = 0; i < lut_size_dw; i++)
+ I40E_WRITE_REG(hw, I40E_PFQF_HLUT(i),
+ lut_dw[i]);
+ }
I40E_WRITE_FLUSH(hw);
}
@@ -6669,17 +6687,20 @@ struct i40e_vsi *
I40E_WRITE_FLUSH(hw);
}
-static int
+int
i40e_set_rss_key(struct i40e_vsi *vsi, uint8_t *key, uint8_t key_len)
{
struct i40e_pf *pf = I40E_VSI_TO_PF(vsi);
struct i40e_hw *hw = I40E_VSI_TO_HW(vsi);
+ uint16_t key_idx = (vsi->type == I40E_VSI_SRIOV) ?
+ I40E_VFQF_HKEY_MAX_INDEX :
+ I40E_PFQF_HKEY_MAX_INDEX;
int ret = 0;
if (!key || key_len == 0) {
PMD_DRV_LOG(DEBUG, "No key to be configured");
return 0;
- } else if (key_len != (I40E_PFQF_HKEY_MAX_INDEX + 1) *
+ } else if (key_len != (key_idx + 1) *
sizeof(uint32_t)) {
PMD_DRV_LOG(ERR, "Invalid key length %u", key_len);
return -EINVAL;
@@ -6696,8 +6717,18 @@ struct i40e_vsi *
uint32_t *hash_key = (uint32_t *)key;
uint16_t i;
- for (i = 0; i <= I40E_PFQF_HKEY_MAX_INDEX; i++)
- i40e_write_rx_ctl(hw, I40E_PFQF_HKEY(i), hash_key[i]);
+ if (vsi->type == I40E_VSI_SRIOV) {
+ for (i = 0; i <= I40E_VFQF_HKEY_MAX_INDEX; i++)
+ I40E_WRITE_REG(
+ hw,
+ I40E_VFQF_HKEY1(i, vsi->user_param),
+ hash_key[i]);
+
+ } else {
+ for (i = 0; i <= I40E_PFQF_HKEY_MAX_INDEX; i++)
+ I40E_WRITE_REG(hw, I40E_PFQF_HKEY(i),
+ hash_key[i]);
+ }
I40E_WRITE_FLUSH(hw);
}
@@ -6709,6 +6740,7 @@ struct i40e_vsi *
{
struct i40e_pf *pf = I40E_VSI_TO_PF(vsi);
struct i40e_hw *hw = I40E_VSI_TO_HW(vsi);
+ uint32_t reg;
int ret;
if (!key || !key_len)
@@ -6725,11 +6757,22 @@ struct i40e_vsi *
uint32_t *key_dw = (uint32_t *)key;
uint16_t i;
- for (i = 0; i <= I40E_PFQF_HKEY_MAX_INDEX; i++)
- key_dw[i] = i40e_read_rx_ctl(hw, I40E_PFQF_HKEY(i));
+ if (vsi->type == I40E_VSI_SRIOV) {
+ for (i = 0; i <= I40E_VFQF_HKEY_MAX_INDEX; i++) {
+ reg = I40E_VFQF_HKEY1(i, vsi->user_param);
+ key_dw[i] = i40e_read_rx_ctl(hw, reg);
+ }
+ *key_len = (I40E_VFQF_HKEY_MAX_INDEX + 1) *
+ sizeof(uint32_t);
+ } else {
+ for (i = 0; i <= I40E_PFQF_HKEY_MAX_INDEX; i++) {
+ reg = I40E_PFQF_HKEY(i);
+ key_dw[i] = i40e_read_rx_ctl(hw, reg);
+ }
+ *key_len = (I40E_PFQF_HKEY_MAX_INDEX + 1) *
+ sizeof(uint32_t);
+ }
}
- *key_len = (I40E_PFQF_HKEY_MAX_INDEX + 1) * sizeof(uint32_t);
-
return 0;
}
diff --git a/drivers/net/i40e/i40e_ethdev.h b/drivers/net/i40e/i40e_ethdev.h
index f2b4b70..de2797e 100644
--- a/drivers/net/i40e/i40e_ethdev.h
+++ b/drivers/net/i40e/i40e_ethdev.h
@@ -397,6 +397,9 @@ struct i40e_pf_vf {
uint16_t lan_nb_qps; /* Actual queues allocated */
uint16_t reset_cnt; /* Total vf reset times */
struct ether_addr mac_addr; /* Default MAC address */
+ /* version of the virtchnl from VF */
+ struct virtchnl_version_info version;
+ uint32_t request_caps; /* offload caps requested from VF */
};
/*
@@ -1169,6 +1172,8 @@ void i40e_update_customized_info(struct rte_eth_dev *dev, uint8_t *pkg,
int i40e_flush_queue_region_all_conf(struct rte_eth_dev *dev,
struct i40e_hw *hw, struct i40e_pf *pf, uint16_t on);
void i40e_init_queue_region_conf(struct rte_eth_dev *dev);
+int i40e_set_rss_key(struct i40e_vsi *vsi, uint8_t *key, uint8_t key_len);
+int i40e_set_rss_lut(struct i40e_vsi *vsi, uint8_t *lut, uint16_t lut_size);
#define I40E_DEV_TO_PCI(eth_dev) \
RTE_DEV_TO_PCI((eth_dev)->device)
diff --git a/drivers/net/i40e/i40e_pf.c b/drivers/net/i40e/i40e_pf.c
index 1bca250..7508444 100644
--- a/drivers/net/i40e/i40e_pf.c
+++ b/drivers/net/i40e/i40e_pf.c
@@ -244,19 +244,23 @@
}
static void
-i40e_pf_host_process_cmd_version(struct i40e_pf_vf *vf, bool b_op)
+i40e_pf_host_process_cmd_version(struct i40e_pf_vf *vf, uint8_t *msg,
+ bool b_op)
{
struct virtchnl_version_info info;
- /* Respond like a Linux PF host in order to support both DPDK VF and
- * Linux VF driver. The expense is original DPDK host specific feature
+ /* VF and PF drivers need to follow the Virtchnl definition, No matter
+ * it's DPDK or other kernel drivers.
+ * The original DPDK host specific feature
* like CFG_VLAN_PVID and CONFIG_VSI_QUEUES_EXT will not available.
- *
- * DPDK VF also can't identify host driver by version number returned.
- * It always assume talking with Linux PF.
*/
+
info.major = VIRTCHNL_VERSION_MAJOR;
- info.minor = VIRTCHNL_VERSION_MINOR_NO_VF_CAPS;
+ vf->version = *(struct virtchnl_version_info *)msg;
+ if (VF_IS_V10(&vf->version))
+ info.minor = VIRTCHNL_VERSION_MINOR_NO_VF_CAPS;
+ else
+ info.minor = VIRTCHNL_VERSION_MINOR;
if (b_op)
i40e_pf_host_send_msg_to_vf(vf, VIRTCHNL_OP_VERSION,
@@ -280,11 +284,13 @@
}
static int
-i40e_pf_host_process_cmd_get_vf_resource(struct i40e_pf_vf *vf, bool b_op)
+i40e_pf_host_process_cmd_get_vf_resource(struct i40e_pf_vf *vf, uint8_t *msg,
+ bool b_op)
{
struct virtchnl_vf_resource *vf_res = NULL;
struct i40e_hw *hw = I40E_PF_TO_HW(vf->pf);
uint32_t len = 0;
+ uint64_t default_hena = I40E_RSS_HENA_ALL;
int ret = I40E_SUCCESS;
if (!b_op) {
@@ -308,11 +314,35 @@
goto send_msg;
}
- vf_res->vf_offload_flags = VIRTCHNL_VF_OFFLOAD_L2 |
- VIRTCHNL_VF_OFFLOAD_VLAN;
+ if (VF_IS_V10(&vf->version)) /* doesn't support offload negotiate */
+ vf->request_caps = VIRTCHNL_VF_OFFLOAD_L2 |
+ VIRTCHNL_VF_OFFLOAD_VLAN;
+ else
+ vf->request_caps = *(uint32_t *)msg;
+
+ /* enable all RSS by default,
+ * doesn't support hena setting by virtchnnl yet.
+ */
+ if (vf->request_caps & VIRTCHNL_VF_OFFLOAD_RSS_PF) {
+ I40E_WRITE_REG(hw, I40E_VFQF_HENA1(0, vf->vf_idx),
+ (uint32_t)default_hena);
+ I40E_WRITE_REG(hw, I40E_VFQF_HENA1(1, vf->vf_idx),
+ (uint32_t)(default_hena >> 32));
+ I40E_WRITE_FLUSH(hw);
+ }
+
+ vf_res->vf_offload_flags = vf->request_caps &
+ I40E_VIRTCHNL_OFFLOAD_CAPS;
+ /* For X722, it supports write back on ITR
+ * without binding queue to interrupt vector.
+ */
+ if (hw->mac.type == I40E_MAC_X722)
+ vf_res->vf_offload_flags |= VIRTCHNL_VF_OFFLOAD_WB_ON_ITR;
vf_res->max_vectors = hw->func_caps.num_msix_vectors_vf;
vf_res->num_queue_pairs = vf->vsi->nb_qps;
vf_res->num_vsis = I40E_DEFAULT_VF_VSI_NUM;
+ vf_res->rss_key_size = (I40E_PFQF_HKEY_MAX_INDEX + 1) * 4;
+ vf_res->rss_lut_size = (I40E_VFQF_HLUT1_MAX_INDEX + 1) * 4;
/* Change below setting if PF host can support more VSIs for VF */
vf_res->vsi_res[0].vsi_type = VIRTCHNL_VSI_SRIOV;
@@ -1061,6 +1091,84 @@
return ret;
}
+static int
+i40e_pf_host_process_cmd_set_rss_lut(struct i40e_pf_vf *vf,
+ uint8_t *msg,
+ uint16_t msglen,
+ bool b_op)
+{
+ struct virtchnl_rss_lut *rss_lut = (struct virtchnl_rss_lut *)msg;
+ uint16_t valid_len;
+ int ret = I40E_SUCCESS;
+
+ if (!b_op) {
+ i40e_pf_host_send_msg_to_vf(
+ vf,
+ VIRTCHNL_OP_CONFIG_RSS_LUT,
+ I40E_NOT_SUPPORTED, NULL, 0);
+ return ret;
+ }
+
+ if (!msg || msglen <= sizeof(struct virtchnl_rss_lut)) {
+ PMD_DRV_LOG(ERR, "set_rss_lut argument too short");
+ ret = I40E_ERR_PARAM;
+ goto send_msg;
+ }
+ valid_len = sizeof(struct virtchnl_rss_lut) + rss_lut->lut_entries - 1;
+ if (msglen < valid_len) {
+ PMD_DRV_LOG(ERR, "set_rss_lut length mismatch");
+ ret = I40E_ERR_PARAM;
+ goto send_msg;
+ }
+
+ ret = i40e_set_rss_lut(vf->vsi, rss_lut->lut, rss_lut->lut_entries);
+
+send_msg:
+ i40e_pf_host_send_msg_to_vf(vf, VIRTCHNL_OP_CONFIG_RSS_LUT,
+ ret, NULL, 0);
+
+ return ret;
+}
+
+static int
+i40e_pf_host_process_cmd_set_rss_key(struct i40e_pf_vf *vf,
+ uint8_t *msg,
+ uint16_t msglen,
+ bool b_op)
+{
+ struct virtchnl_rss_key *rss_key = (struct virtchnl_rss_key *)msg;
+ uint16_t valid_len;
+ int ret = I40E_SUCCESS;
+
+ if (!b_op) {
+ i40e_pf_host_send_msg_to_vf(
+ vf,
+ VIRTCHNL_OP_DEL_VLAN,
+ VIRTCHNL_OP_CONFIG_RSS_KEY, NULL, 0);
+ return ret;
+ }
+
+ if (!msg || msglen <= sizeof(struct virtchnl_rss_key)) {
+ PMD_DRV_LOG(ERR, "set_rss_key argument too short");
+ ret = I40E_ERR_PARAM;
+ goto send_msg;
+ }
+ valid_len = sizeof(struct virtchnl_rss_key) + rss_key->key_len - 1;
+ if (msglen < valid_len) {
+ PMD_DRV_LOG(ERR, "set_rss_key length mismatch");
+ ret = I40E_ERR_PARAM;
+ goto send_msg;
+ }
+
+ ret = i40e_set_rss_key(vf->vsi, rss_key->key, rss_key->key_len);
+
+send_msg:
+ i40e_pf_host_send_msg_to_vf(vf, VIRTCHNL_OP_CONFIG_RSS_KEY,
+ ret, NULL, 0);
+
+ return ret;
+}
+
void
i40e_notify_vf_link_status(struct rte_eth_dev *dev, struct i40e_pf_vf *vf)
{
@@ -1167,7 +1275,7 @@
switch (opcode) {
case VIRTCHNL_OP_VERSION:
PMD_DRV_LOG(INFO, "OP_VERSION received");
- i40e_pf_host_process_cmd_version(vf, b_op);
+ i40e_pf_host_process_cmd_version(vf, msg, b_op);
break;
case VIRTCHNL_OP_RESET_VF:
PMD_DRV_LOG(INFO, "OP_RESET_VF received");
@@ -1175,7 +1283,7 @@
break;
case VIRTCHNL_OP_GET_VF_RESOURCES:
PMD_DRV_LOG(INFO, "OP_GET_VF_RESOURCES received");
- i40e_pf_host_process_cmd_get_vf_resource(vf, b_op);
+ i40e_pf_host_process_cmd_get_vf_resource(vf, msg, b_op);
break;
case VIRTCHNL_OP_CONFIG_VSI_QUEUES:
PMD_DRV_LOG(INFO, "OP_CONFIG_VSI_QUEUES received");
@@ -1236,6 +1344,14 @@
PMD_DRV_LOG(INFO, "OP_DISABLE_VLAN_STRIPPING received");
i40e_pf_host_process_cmd_disable_vlan_strip(vf, b_op);
break;
+ case VIRTCHNL_OP_CONFIG_RSS_LUT:
+ PMD_DRV_LOG(INFO, "OP_CONFIG_RSS_LUT received");
+ i40e_pf_host_process_cmd_set_rss_lut(vf, msg, msglen, b_op);
+ break;
+ case VIRTCHNL_OP_CONFIG_RSS_KEY:
+ PMD_DRV_LOG(INFO, "OP_CONFIG_RSS_KEY received");
+ i40e_pf_host_process_cmd_set_rss_key(vf, msg, msglen, b_op);
+ break;
/* Don't add command supported below, which will
* return an error code.
*/
diff --git a/drivers/net/i40e/i40e_pf.h b/drivers/net/i40e/i40e_pf.h
index 429f347..1809ba4 100644
--- a/drivers/net/i40e/i40e_pf.h
+++ b/drivers/net/i40e/i40e_pf.h
@@ -8,6 +8,12 @@
/* Default setting on number of VSIs that VF can contain */
#define I40E_DEFAULT_VF_VSI_NUM 1
+#define I40E_VIRTCHNL_OFFLOAD_CAPS ( \
+ VIRTCHNL_VF_OFFLOAD_L2 | \
+ VIRTCHNL_VF_OFFLOAD_VLAN | \
+ VIRTCHNL_VF_OFFLOAD_RSS_PF | \
+ VIRTCHNL_VF_OFFLOAD_RX_POLLING)
+
struct virtchnl_vlan_offload_info {
uint16_t vsi_id;
uint8_t enable_vlan_strip;
--
1.9.3
next prev parent reply other threads:[~2018-01-10 6:14 UTC|newest]
Thread overview: 151+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-20 8:26 [dpdk-dev] [RFC 0/9] add new avf PMD Jingjing Wu
2017-10-20 8:26 ` [dpdk-dev] [RFC 1/9] net/avf/base: add base code for " Jingjing Wu
2017-10-20 8:26 ` [dpdk-dev] [RFC 2/9] net/avf: initilization of " Jingjing Wu
2017-11-22 0:02 ` Ferruh Yigit
2017-10-20 8:26 ` [dpdk-dev] [RFC 3/9] net/avf: enable queue and device Jingjing Wu
2017-11-22 0:04 ` Ferruh Yigit
2017-10-20 8:26 ` [dpdk-dev] [RFC 4/9] net/avf: enable basic Rx Tx func Jingjing Wu
2017-11-22 0:06 ` Ferruh Yigit
2017-11-22 0:57 ` Stephen Hemminger
2017-11-22 23:15 ` Ferruh Yigit
2017-11-22 7:55 ` Wu, Jingjing
2017-11-22 22:38 ` Ferruh Yigit
2017-11-23 1:17 ` Wu, Jingjing
2017-10-20 8:26 ` [dpdk-dev] [RFC 5/9] net/avf: enable link status update Jingjing Wu
2017-10-20 8:26 ` [dpdk-dev] [RFC 6/9] net/avf: enable ops for MAC VLAN offload Jingjing Wu
2017-11-22 0:07 ` Ferruh Yigit
2017-10-20 8:26 ` [dpdk-dev] [RFC 7/9] net/avf: enable ops for rss setting Jingjing Wu
2017-11-22 0:07 ` Ferruh Yigit
2017-10-20 8:26 ` [dpdk-dev] [RFC 8/9] net/avf: enable ops to check queue info and status Jingjing Wu
2017-11-22 0:09 ` Ferruh Yigit
2017-11-22 8:23 ` Wu, Jingjing
2017-10-20 8:26 ` [dpdk-dev] [RFC 9/9] net/i40e: support AVF basic interface Jingjing Wu
2017-11-21 23:58 ` [dpdk-dev] [RFC 0/9] add new avf PMD Ferruh Yigit
2017-11-24 6:33 ` [dpdk-dev] [PATCH v2 00/14] " Jingjing Wu
2017-11-24 6:33 ` [dpdk-dev] [PATCH v2 01/14] net/avf/base: add base code for " Jingjing Wu
2017-12-04 19:50 ` Ferruh Yigit
2017-11-24 6:33 ` [dpdk-dev] [PATCH v2 02/14] net/avf: initilization of " Jingjing Wu
2017-12-04 19:52 ` Ferruh Yigit
2017-11-24 6:33 ` [dpdk-dev] [PATCH v2 03/14] net/avf: enable queue and device Jingjing Wu
2017-12-04 8:45 ` Xing, Beilei
2017-12-04 19:56 ` Ferruh Yigit
2017-11-24 6:33 ` [dpdk-dev] [PATCH v2 04/14] net/avf: enable basic Rx Tx func Jingjing Wu
2017-12-04 19:57 ` Ferruh Yigit
2017-12-27 3:07 ` Wu, Jingjing
2017-11-24 6:33 ` [dpdk-dev] [PATCH v2 05/14] net/avf: enable link status update Jingjing Wu
2017-12-04 19:58 ` Ferruh Yigit
2017-12-27 3:07 ` Wu, Jingjing
2017-11-24 6:33 ` [dpdk-dev] [PATCH v2 06/14] net/avf: enable ops to get stats Jingjing Wu
2017-12-04 19:58 ` Ferruh Yigit
2017-11-24 6:33 ` [dpdk-dev] [PATCH v2 07/14] net/avf: enable ops for MAC VLAN offload Jingjing Wu
2017-12-04 19:59 ` Ferruh Yigit
2017-11-24 6:33 ` [dpdk-dev] [PATCH v2 08/14] net/avf: enable ops for RSS setting Jingjing Wu
2017-11-24 6:33 ` [dpdk-dev] [PATCH v2 09/14] net/avf: enable ops for MTU setting Jingjing Wu
2017-11-24 6:33 ` [dpdk-dev] [PATCH v2 10/14] net/avf: enable ops to check queue info and status Jingjing Wu
2017-11-24 6:33 ` [dpdk-dev] [PATCH v2 11/14] net/i40e: support AVF basic interface Jingjing Wu
2017-12-04 20:04 ` Ferruh Yigit
2017-11-24 6:33 ` [dpdk-dev] [PATCH v2 12/14] net/avf: enable sse vector Rx Tx func Jingjing Wu
2017-12-04 20:01 ` Ferruh Yigit
2017-11-24 6:33 ` [dpdk-dev] [PATCH v2 13/14] net/avf: enable bulk allocate Rx func Jingjing Wu
2017-11-24 6:33 ` [dpdk-dev] [PATCH v2 14/14] net/avf: enable Rx interrupt support Jingjing Wu
2017-12-04 20:02 ` Ferruh Yigit
2017-12-04 19:48 ` [dpdk-dev] [PATCH v2 00/14] add new avf PMD Ferruh Yigit
2018-01-04 5:27 ` [dpdk-dev] [PATCH v3 00/15] " Wenzhuo Lu
2018-01-04 5:27 ` [dpdk-dev] [PATCH v3 01/15] net/avf/base: add base code for " Wenzhuo Lu
2018-01-04 5:27 ` [dpdk-dev] [PATCH v3 02/15] net/avf: initialization of " Wenzhuo Lu
2018-01-04 5:27 ` [dpdk-dev] [PATCH v3 03/15] net/avf: enable queue and device Wenzhuo Lu
2018-01-04 5:27 ` [dpdk-dev] [PATCH v3 04/15] net/avf: enable basic Rx Tx func Wenzhuo Lu
2018-01-04 5:27 ` [dpdk-dev] [PATCH v3 05/15] net/avf: enable link status update Wenzhuo Lu
2018-01-04 5:27 ` [dpdk-dev] [PATCH v3 06/15] net/avf: support stats Wenzhuo Lu
2018-01-04 5:27 ` [dpdk-dev] [PATCH v3 07/15] net/avf: enable ops for MAC VLAN offload Wenzhuo Lu
2018-01-04 5:27 ` [dpdk-dev] [PATCH v3 08/15] net/avf: enable ops for RSS setting Wenzhuo Lu
2018-01-04 5:27 ` [dpdk-dev] [PATCH v3 09/15] net/avf: enable ops for MTU setting Wenzhuo Lu
2018-01-04 5:27 ` [dpdk-dev] [PATCH v3 10/15] net/avf: enable ops to check queue info and status Wenzhuo Lu
2018-01-04 5:27 ` [dpdk-dev] [PATCH v3 11/15] net/i40e: support AVF basic interface Wenzhuo Lu
2018-01-04 5:27 ` [dpdk-dev] [PATCH v3 12/15] net/avf: enable sse vector Rx Tx func Wenzhuo Lu
2018-01-04 5:27 ` [dpdk-dev] [PATCH v3 13/15] net/avf: enable bulk allocate Rx func Wenzhuo Lu
2018-01-04 5:27 ` [dpdk-dev] [PATCH v3 14/15] net/avf: enable Rx interrupt support Wenzhuo Lu
2018-01-04 5:27 ` [dpdk-dev] [PATCH v3 15/15] doc: update doc for avf driver Wenzhuo Lu
2018-01-05 8:21 ` [dpdk-dev] [PATCH v4 00/15] add new AVF PMD Wenzhuo Lu
2018-01-05 8:21 ` [dpdk-dev] [PATCH v4 01/15] net/avf/base: add base code for avf PMD Wenzhuo Lu
2018-01-05 20:25 ` Stephen Hemminger
2018-01-08 1:06 ` Lu, Wenzhuo
2018-01-08 15:27 ` Stephen Hemminger
2018-01-09 1:35 ` Lu, Wenzhuo
2018-01-05 8:21 ` [dpdk-dev] [PATCH v4 02/15] net/avf: initialization of " Wenzhuo Lu
2018-01-05 20:29 ` Stephen Hemminger
2018-01-08 1:56 ` Lu, Wenzhuo
2018-01-05 8:21 ` [dpdk-dev] [PATCH v4 03/15] net/avf: enable queue and device Wenzhuo Lu
2018-01-05 8:21 ` [dpdk-dev] [PATCH v4 04/15] net/avf: enable basic Rx Tx func Wenzhuo Lu
2018-01-05 8:21 ` [dpdk-dev] [PATCH v4 05/15] net/avf: enable link status update Wenzhuo Lu
2018-01-05 8:21 ` [dpdk-dev] [PATCH v4 06/15] net/avf: support stats Wenzhuo Lu
2018-01-05 8:21 ` [dpdk-dev] [PATCH v4 07/15] net/avf: enable ops for MAC VLAN offload Wenzhuo Lu
2018-01-05 8:21 ` [dpdk-dev] [PATCH v4 08/15] net/avf: enable ops for RSS setting Wenzhuo Lu
2018-01-05 8:21 ` [dpdk-dev] [PATCH v4 09/15] net/avf: enable ops for MTU setting Wenzhuo Lu
2018-01-05 8:21 ` [dpdk-dev] [PATCH v4 10/15] net/avf: enable ops to check queue info and status Wenzhuo Lu
2018-01-05 8:21 ` [dpdk-dev] [PATCH v4 11/15] net/i40e: support AVF basic interface Wenzhuo Lu
2018-01-05 8:21 ` [dpdk-dev] [PATCH v4 12/15] net/avf: enable sse vector Rx Tx func Wenzhuo Lu
2018-01-05 8:21 ` [dpdk-dev] [PATCH v4 13/15] net/avf: enable bulk allocate Rx func Wenzhuo Lu
2018-01-05 8:21 ` [dpdk-dev] [PATCH v4 14/15] net/avf: enable Rx interrupt support Wenzhuo Lu
2018-01-05 8:21 ` [dpdk-dev] [PATCH v4 15/15] doc: update doc for avf driver Wenzhuo Lu
2018-01-07 15:09 ` Zhang, Helin
2018-01-08 2:02 ` Lu, Wenzhuo
2018-01-08 5:13 ` [dpdk-dev] [PATCH v5 00/14] add new AVF PMD Wenzhuo Lu
2018-01-08 5:13 ` [dpdk-dev] [PATCH v5 01/14] net/avf/base: add base code for avf PMD Wenzhuo Lu
2018-01-08 5:13 ` [dpdk-dev] [PATCH v5 02/14] net/avf: initialization of " Wenzhuo Lu
2018-01-09 17:58 ` Ferruh Yigit
2018-01-10 2:59 ` Lu, Wenzhuo
2018-01-08 5:13 ` [dpdk-dev] [PATCH v5 03/14] net/avf: enable queue and device Wenzhuo Lu
2018-01-08 5:13 ` [dpdk-dev] [PATCH v5 04/14] net/avf: enable basic Rx Tx func Wenzhuo Lu
2018-01-08 5:13 ` [dpdk-dev] [PATCH v5 05/14] net/avf: enable link status update Wenzhuo Lu
2018-01-08 5:13 ` [dpdk-dev] [PATCH v5 06/14] net/avf: support stats Wenzhuo Lu
2018-01-08 5:13 ` [dpdk-dev] [PATCH v5 07/14] net/avf: enable ops for MAC VLAN offload Wenzhuo Lu
2018-01-09 17:58 ` Ferruh Yigit
2018-01-10 1:39 ` Lu, Wenzhuo
2018-01-08 5:13 ` [dpdk-dev] [PATCH v5 08/14] net/avf: enable ops for RSS setting Wenzhuo Lu
2018-01-08 5:13 ` [dpdk-dev] [PATCH v5 09/14] net/avf: enable ops for MTU setting Wenzhuo Lu
2018-01-08 5:13 ` [dpdk-dev] [PATCH v5 10/14] net/avf: enable ops to check queue info and status Wenzhuo Lu
2018-01-08 5:13 ` [dpdk-dev] [PATCH v5 11/14] net/i40e: support AVF basic interface Wenzhuo Lu
2018-01-08 5:13 ` [dpdk-dev] [PATCH v5 12/14] net/avf: enable sse vector Rx Tx func Wenzhuo Lu
2018-01-09 17:58 ` Ferruh Yigit
2018-01-10 1:38 ` Lu, Wenzhuo
2018-01-10 9:57 ` Ferruh Yigit
2018-01-08 5:13 ` [dpdk-dev] [PATCH v5 13/14] net/avf: enable bulk allocate Rx func Wenzhuo Lu
2018-01-08 5:13 ` [dpdk-dev] [PATCH v5 14/14] net/avf: enable Rx interrupt support Wenzhuo Lu
2018-01-10 6:15 ` [dpdk-dev] [PATCH v6 00/14] dd new AVF PMD Wenzhuo Lu
2018-01-10 6:15 ` [dpdk-dev] [PATCH v6 01/14] net/avf/base: add base code for avf PMD Wenzhuo Lu
2018-01-10 6:15 ` [dpdk-dev] [PATCH v6 02/14] net/avf: initialization of " Wenzhuo Lu
2018-01-10 17:15 ` Stephen Hemminger
2018-01-11 2:07 ` Lu, Wenzhuo
2018-01-11 8:53 ` Ferruh Yigit
2018-01-10 17:17 ` Stephen Hemminger
2018-01-11 4:52 ` Lu, Wenzhuo
2018-01-10 6:15 ` [dpdk-dev] [PATCH v6 03/14] net/avf: enable queue and device Wenzhuo Lu
2018-01-10 6:15 ` [dpdk-dev] [PATCH v6 04/14] net/avf: enable basic Rx Tx func Wenzhuo Lu
2018-01-10 6:15 ` [dpdk-dev] [PATCH v6 05/14] net/avf: enable link status update Wenzhuo Lu
2018-01-10 9:44 ` Xing, Beilei
2018-01-10 6:15 ` [dpdk-dev] [PATCH v6 06/14] net/avf: support stats Wenzhuo Lu
2018-01-10 6:15 ` [dpdk-dev] [PATCH v6 07/14] net/avf: enable MAC VLAN and promisc ops Wenzhuo Lu
2018-01-10 6:15 ` [dpdk-dev] [PATCH v6 08/14] net/avf: enable ops for RSS setting Wenzhuo Lu
2018-01-10 6:15 ` [dpdk-dev] [PATCH v6 09/14] net/avf: enable ops for MTU setting Wenzhuo Lu
2018-01-10 6:15 ` [dpdk-dev] [PATCH v6 10/14] net/avf: enable ops to check queue info and status Wenzhuo Lu
2018-01-10 6:15 ` Wenzhuo Lu [this message]
2018-01-10 6:15 ` [dpdk-dev] [PATCH v6 12/14] net/avf: enable sse vector Rx Tx func Wenzhuo Lu
2018-01-10 6:16 ` [dpdk-dev] [PATCH v6 13/14] net/avf: enable bulk allocate Rx func Wenzhuo Lu
2018-01-10 6:16 ` [dpdk-dev] [PATCH v6 14/14] net/avf: enable Rx interrupt support Wenzhuo Lu
2018-01-10 13:01 ` [dpdk-dev] [PATCH v7 00/14] dd new AVF PMD Wenzhuo Lu
2018-01-10 13:01 ` [dpdk-dev] [PATCH v7 01/14] net/avf/base: add base code for avf PMD Wenzhuo Lu
2018-01-10 13:01 ` [dpdk-dev] [PATCH v7 02/14] net/avf: initialization of " Wenzhuo Lu
2018-01-10 13:01 ` [dpdk-dev] [PATCH v7 03/14] net/avf: enable queue and device Wenzhuo Lu
2018-01-10 13:01 ` [dpdk-dev] [PATCH v7 04/14] net/avf: enable basic Rx Tx func Wenzhuo Lu
2018-01-10 13:01 ` [dpdk-dev] [PATCH v7 05/14] net/avf: enable link status update Wenzhuo Lu
2018-01-10 13:01 ` [dpdk-dev] [PATCH v7 06/14] net/avf: support stats Wenzhuo Lu
2018-01-10 13:01 ` [dpdk-dev] [PATCH v7 07/14] net/avf: enable MAC VLAN and promisc ops Wenzhuo Lu
2018-01-10 13:02 ` [dpdk-dev] [PATCH v7 08/14] net/avf: enable ops for RSS setting Wenzhuo Lu
2018-01-10 13:02 ` [dpdk-dev] [PATCH v7 09/14] net/avf: enable ops for MTU setting Wenzhuo Lu
2018-01-10 13:02 ` [dpdk-dev] [PATCH v7 10/14] net/avf: enable ops to check queue info and status Wenzhuo Lu
2018-01-10 13:02 ` [dpdk-dev] [PATCH v7 11/14] net/i40e: support AVF basic interface Wenzhuo Lu
2018-01-10 13:02 ` [dpdk-dev] [PATCH v7 12/14] net/avf: enable sse vector Rx Tx func Wenzhuo Lu
2018-01-10 13:02 ` [dpdk-dev] [PATCH v7 13/14] net/avf: enable bulk allocate Rx func Wenzhuo Lu
2018-01-10 13:02 ` [dpdk-dev] [PATCH v7 14/14] net/avf: enable Rx interrupt support Wenzhuo Lu
2018-01-10 19:14 ` [dpdk-dev] [PATCH v7 00/14] dd new AVF PMD 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=1515564961-79227-12-git-send-email-wenzhuo.lu@intel.com \
--to=wenzhuo.lu@intel.com \
--cc=dev@dpdk.org \
--cc=jingjing.wu@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 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).