* [dpdk-dev] [PATCH 1/3] net/bnx2x: fix read VF id
@ 2019-07-03 23:43 Rasesh Mody
2019-07-03 23:43 ` [dpdk-dev] [PATCH 2/3] net/bnx2x: fix link events polling for SRIOV Rasesh Mody
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Rasesh Mody @ 2019-07-03 23:43 UTC (permalink / raw)
To: dev; +Cc: Rasesh Mody, ferruh.yigit, GR-Everest-DPDK-Dev, stable
The logic, to read vf_id used by ACQUIRE/TEARDOWN_Q/RELEASE TLVs,
multiplexed return value to convey vf_id value and status of read vf_id
API. This lets to segfault at dev_start() as resources are not properly
cleaned and re-allocated.
Fix read vf_id API to differentiate between vf_id value and return
status. Adjust the status checking accordingly.
Added bnx2x_vf_teardown_queue() API and moved relevant code from
bnx2x_vf_unload() to new API.
Fixes: 540a211084a7 ("bnx2x: driver core")
Cc: stable@dpdk.org
Signed-off-by: Rasesh Mody <rmody@marvell.com>
---
drivers/net/bnx2x/bnx2x.c | 2 +
drivers/net/bnx2x/bnx2x_vfpf.c | 140 ++++++++++++++++++++-------------
drivers/net/bnx2x/bnx2x_vfpf.h | 1 +
3 files changed, 87 insertions(+), 56 deletions(-)
diff --git a/drivers/net/bnx2x/bnx2x.c b/drivers/net/bnx2x/bnx2x.c
index d523f4f2c..877f5b73d 100644
--- a/drivers/net/bnx2x/bnx2x.c
+++ b/drivers/net/bnx2x/bnx2x.c
@@ -2015,6 +2015,8 @@ bnx2x_nic_unload(struct bnx2x_softc *sc, uint32_t unload_mode, uint8_t keep_link
uint8_t global = FALSE;
uint32_t val;
+ PMD_INIT_FUNC_TRACE(sc);
+
PMD_DRV_LOG(DEBUG, sc, "Starting NIC unload...");
/* mark driver as unloaded in shmem2 */
diff --git a/drivers/net/bnx2x/bnx2x_vfpf.c b/drivers/net/bnx2x/bnx2x_vfpf.c
index 7cf738a82..8f7559c67 100644
--- a/drivers/net/bnx2x/bnx2x_vfpf.c
+++ b/drivers/net/bnx2x/bnx2x_vfpf.c
@@ -162,20 +162,26 @@ static inline uint16_t bnx2x_check_me_flags(uint32_t val)
#define BNX2X_ME_ANSWER_DELAY 100
#define BNX2X_ME_ANSWER_TRIES 10
-static inline int bnx2x_read_vf_id(struct bnx2x_softc *sc)
+static inline int bnx2x_read_vf_id(struct bnx2x_softc *sc, uint32_t *vf_id)
{
uint32_t val;
uint8_t i = 0;
while (i <= BNX2X_ME_ANSWER_TRIES) {
val = BNX2X_DB_READ(DOORBELL_ADDR(sc, 0));
- if (bnx2x_check_me_flags(val))
- return VF_ID(val);
+ if (bnx2x_check_me_flags(val)) {
+ PMD_DRV_LOG(DEBUG, sc,
+ "valid register value: 0x%08x", val);
+ *vf_id = VF_ID(val);
+ return 0;
+ }
DELAY_MS(BNX2X_ME_ANSWER_DELAY);
i++;
}
+ PMD_DRV_LOG(ERR, sc, "Invalid register value: 0x%08x", val);
+
return -EINVAL;
}
@@ -240,14 +246,13 @@ int bnx2x_loop_obtain_resources(struct bnx2x_softc *sc)
int bnx2x_vf_get_resources(struct bnx2x_softc *sc, uint8_t tx_count, uint8_t rx_count)
{
struct vf_acquire_tlv *acq = &sc->vf2pf_mbox->query[0].acquire;
- int vf_id;
+ uint32_t vf_id;
int rc;
bnx2x_vf_close(sc);
bnx2x_vf_prep(sc, &acq->first_tlv, BNX2X_VF_TLV_ACQUIRE, sizeof(*acq));
- vf_id = bnx2x_read_vf_id(sc);
- if (vf_id < 0) {
+ if (bnx2x_read_vf_id(sc, &vf_id)) {
rc = -EAGAIN;
goto out;
}
@@ -318,25 +323,30 @@ bnx2x_vf_close(struct bnx2x_softc *sc)
{
struct vf_release_tlv *query;
struct vf_common_reply_tlv *reply = &sc->vf2pf_mbox->resp.common_reply;
- int vf_id = bnx2x_read_vf_id(sc);
+ uint32_t vf_id;
int rc;
- if (vf_id >= 0) {
- query = &sc->vf2pf_mbox->query[0].release;
- bnx2x_vf_prep(sc, &query->first_tlv, BNX2X_VF_TLV_RELEASE,
- sizeof(*query));
+ query = &sc->vf2pf_mbox->query[0].release;
+ bnx2x_vf_prep(sc, &query->first_tlv, BNX2X_VF_TLV_RELEASE,
+ sizeof(*query));
- query->vf_id = vf_id;
- bnx2x_add_tlv(sc, query, query->first_tlv.tl.length,
- BNX2X_VF_TLV_LIST_END,
- sizeof(struct channel_list_end_tlv));
+ if (bnx2x_read_vf_id(sc, &vf_id)) {
+ rc = -EAGAIN;
+ goto out;
+ }
- rc = bnx2x_do_req4pf(sc, sc->vf2pf_mbox_mapping.paddr);
- if (rc || reply->status != BNX2X_VF_STATUS_SUCCESS)
- PMD_DRV_LOG(ERR, sc, "Failed to release VF");
+ query->vf_id = vf_id;
- bnx2x_vf_finalize(sc, &query->first_tlv);
- }
+ bnx2x_add_tlv(sc, query, query->first_tlv.tl.length,
+ BNX2X_VF_TLV_LIST_END,
+ sizeof(struct channel_list_end_tlv));
+
+ rc = bnx2x_do_req4pf(sc, sc->vf2pf_mbox_mapping.paddr);
+ if (rc || reply->status != BNX2X_VF_STATUS_SUCCESS)
+ PMD_DRV_LOG(ERR, sc, "Failed to release VF");
+
+out:
+ bnx2x_vf_finalize(sc, &query->first_tlv);
}
/* Let PF know the VF status blocks phys_addrs */
@@ -347,6 +357,8 @@ bnx2x_vf_init(struct bnx2x_softc *sc)
struct vf_common_reply_tlv *reply = &sc->vf2pf_mbox->resp.common_reply;
int i, rc;
+ PMD_INIT_FUNC_TRACE(sc);
+
query = &sc->vf2pf_mbox->query[0].init;
bnx2x_vf_prep(sc, &query->first_tlv, BNX2X_VF_TLV_INIT,
sizeof(*query));
@@ -383,51 +395,38 @@ bnx2x_vf_unload(struct bnx2x_softc *sc)
{
struct vf_close_tlv *query;
struct vf_common_reply_tlv *reply = &sc->vf2pf_mbox->resp.common_reply;
- struct vf_q_op_tlv *query_op;
- int i, vf_id, rc;
-
- vf_id = bnx2x_read_vf_id(sc);
- if (vf_id > 0) {
- FOR_EACH_QUEUE(sc, i) {
- query_op = &sc->vf2pf_mbox->query[0].q_op;
- bnx2x_vf_prep(sc, &query_op->first_tlv,
- BNX2X_VF_TLV_TEARDOWN_Q,
- sizeof(*query_op));
-
- query_op->vf_qid = i;
+ uint32_t vf_id;
+ int i, rc;
- bnx2x_add_tlv(sc, query_op,
- query_op->first_tlv.tl.length,
- BNX2X_VF_TLV_LIST_END,
- sizeof(struct channel_list_end_tlv));
+ PMD_INIT_FUNC_TRACE(sc);
- rc = bnx2x_do_req4pf(sc, sc->vf2pf_mbox_mapping.paddr);
- if (rc || reply->status != BNX2X_VF_STATUS_SUCCESS)
- PMD_DRV_LOG(ERR, sc,
- "Bad reply for vf_q %d teardown", i);
+ FOR_EACH_QUEUE(sc, i)
+ bnx2x_vf_teardown_queue(sc, i);
- bnx2x_vf_finalize(sc, &query_op->first_tlv);
- }
+ bnx2x_vf_set_mac(sc, false);
- bnx2x_vf_set_mac(sc, false);
+ query = &sc->vf2pf_mbox->query[0].close;
+ bnx2x_vf_prep(sc, &query->first_tlv, BNX2X_VF_TLV_CLOSE,
+ sizeof(*query));
- query = &sc->vf2pf_mbox->query[0].close;
- bnx2x_vf_prep(sc, &query->first_tlv, BNX2X_VF_TLV_CLOSE,
- sizeof(*query));
+ if (bnx2x_read_vf_id(sc, &vf_id)) {
+ rc = -EAGAIN;
+ goto out;
+ }
- query->vf_id = vf_id;
+ query->vf_id = vf_id;
- bnx2x_add_tlv(sc, query, query->first_tlv.tl.length,
- BNX2X_VF_TLV_LIST_END,
- sizeof(struct channel_list_end_tlv));
+ bnx2x_add_tlv(sc, query, query->first_tlv.tl.length,
+ BNX2X_VF_TLV_LIST_END,
+ sizeof(struct channel_list_end_tlv));
- rc = bnx2x_do_req4pf(sc, sc->vf2pf_mbox_mapping.paddr);
- if (rc || reply->status != BNX2X_VF_STATUS_SUCCESS)
- PMD_DRV_LOG(ERR, sc,
- "Bad reply from PF for close message");
+ rc = bnx2x_do_req4pf(sc, sc->vf2pf_mbox_mapping.paddr);
+ if (rc || reply->status != BNX2X_VF_STATUS_SUCCESS)
+ PMD_DRV_LOG(ERR, sc,
+ "Bad reply from PF for close message");
- bnx2x_vf_finalize(sc, &query->first_tlv);
- }
+out:
+ bnx2x_vf_finalize(sc, &query->first_tlv);
}
static inline uint16_t
@@ -521,6 +520,35 @@ bnx2x_vf_setup_queue(struct bnx2x_softc *sc, struct bnx2x_fastpath *fp, int lead
return rc;
}
+int
+bnx2x_vf_teardown_queue(struct bnx2x_softc *sc, int qid)
+{
+ struct vf_q_op_tlv *query_op;
+ struct vf_common_reply_tlv *reply = &sc->vf2pf_mbox->resp.common_reply;
+ int rc;
+
+ query_op = &sc->vf2pf_mbox->query[0].q_op;
+ bnx2x_vf_prep(sc, &query_op->first_tlv,
+ BNX2X_VF_TLV_TEARDOWN_Q,
+ sizeof(*query_op));
+
+ query_op->vf_qid = qid;
+
+ bnx2x_add_tlv(sc, query_op,
+ query_op->first_tlv.tl.length,
+ BNX2X_VF_TLV_LIST_END,
+ sizeof(struct channel_list_end_tlv));
+
+ rc = bnx2x_do_req4pf(sc, sc->vf2pf_mbox_mapping.paddr);
+ if (rc || reply->status != BNX2X_VF_STATUS_SUCCESS)
+ PMD_DRV_LOG(ERR, sc,
+ "Bad reply for vf_q %d teardown", qid);
+
+ bnx2x_vf_finalize(sc, &query_op->first_tlv);
+
+ return rc;
+}
+
int
bnx2x_vf_set_mac(struct bnx2x_softc *sc, int set)
{
diff --git a/drivers/net/bnx2x/bnx2x_vfpf.h b/drivers/net/bnx2x/bnx2x_vfpf.h
index 6964c9d98..ce0259adf 100644
--- a/drivers/net/bnx2x/bnx2x_vfpf.h
+++ b/drivers/net/bnx2x/bnx2x_vfpf.h
@@ -328,6 +328,7 @@ struct bnx2x_vf_mbx_msg {
union resp_tlvs resp;
};
+int bnx2x_vf_teardown_queue(struct bnx2x_softc *sc, int qid);
int bnx2x_vf_set_mac(struct bnx2x_softc *sc, int set);
int bnx2x_vf_config_rss(struct bnx2x_softc *sc, struct ecore_config_rss_params *params);
--
2.18.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* [dpdk-dev] [PATCH 2/3] net/bnx2x: fix link events polling for SRIOV
2019-07-03 23:43 [dpdk-dev] [PATCH 1/3] net/bnx2x: fix read VF id Rasesh Mody
@ 2019-07-03 23:43 ` Rasesh Mody
2019-07-03 23:43 ` [dpdk-dev] [PATCH 3/3] net/bnx2x: fix fastpath SB allocation " Rasesh Mody
2019-07-09 10:33 ` [dpdk-dev] [PATCH 1/3] net/bnx2x: fix read VF id Jerin Jacob Kollanukkaran
2 siblings, 0 replies; 4+ messages in thread
From: Rasesh Mody @ 2019-07-03 23:43 UTC (permalink / raw)
To: dev; +Cc: Rasesh Mody, ferruh.yigit, GR-Everest-DPDK-Dev, stable
We do not need to schedule periodic poll for slowpath link events
for SRIOV. The link events are handled by the PF driver.
Fixes: 6041aa619f9a ("net/bnx2x: fix poll link status")
Cc: stable@dpdk.org
Signed-off-by: Rasesh Mody <rmody@marvell.com>
---
drivers/net/bnx2x/bnx2x_ethdev.c | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/drivers/net/bnx2x/bnx2x_ethdev.c b/drivers/net/bnx2x/bnx2x_ethdev.c
index 10b4fdb8e..127811b92 100644
--- a/drivers/net/bnx2x/bnx2x_ethdev.c
+++ b/drivers/net/bnx2x/bnx2x_ethdev.c
@@ -218,9 +218,12 @@ bnx2x_dev_start(struct rte_eth_dev *dev)
PMD_INIT_FUNC_TRACE(sc);
/* start the periodic callout */
- if (atomic_load_acq_long(&sc->periodic_flags) == PERIODIC_STOP) {
- bnx2x_periodic_start(dev);
- PMD_DRV_LOG(DEBUG, sc, "Periodic poll re-started");
+ if (IS_PF(sc)) {
+ if (atomic_load_acq_long(&sc->periodic_flags) ==
+ PERIODIC_STOP) {
+ bnx2x_periodic_start(dev);
+ PMD_DRV_LOG(DEBUG, sc, "Periodic poll re-started");
+ }
}
ret = bnx2x_init(sc);
@@ -258,10 +261,10 @@ bnx2x_dev_stop(struct rte_eth_dev *dev)
rte_intr_disable(&sc->pci_dev->intr_handle);
rte_intr_callback_unregister(&sc->pci_dev->intr_handle,
bnx2x_interrupt_handler, (void *)dev);
- }
- /* stop the periodic callout */
- bnx2x_periodic_stop(dev);
+ /* stop the periodic callout */
+ bnx2x_periodic_stop(dev);
+ }
ret = bnx2x_nic_unload(sc, UNLOAD_NORMAL, FALSE);
if (ret) {
@@ -680,7 +683,9 @@ bnx2x_common_dev_init(struct rte_eth_dev *eth_dev, int is_vf)
return 0;
out:
- bnx2x_periodic_stop(eth_dev);
+ if (IS_PF(sc))
+ bnx2x_periodic_stop(eth_dev);
+
return ret;
}
--
2.18.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* [dpdk-dev] [PATCH 3/3] net/bnx2x: fix fastpath SB allocation for SRIOV
2019-07-03 23:43 [dpdk-dev] [PATCH 1/3] net/bnx2x: fix read VF id Rasesh Mody
2019-07-03 23:43 ` [dpdk-dev] [PATCH 2/3] net/bnx2x: fix link events polling for SRIOV Rasesh Mody
@ 2019-07-03 23:43 ` Rasesh Mody
2019-07-09 10:33 ` [dpdk-dev] [PATCH 1/3] net/bnx2x: fix read VF id Jerin Jacob Kollanukkaran
2 siblings, 0 replies; 4+ messages in thread
From: Rasesh Mody @ 2019-07-03 23:43 UTC (permalink / raw)
To: dev; +Cc: Rasesh Mody, ferruh.yigit, GR-Everest-DPDK-Dev, stable
For SRIOV, fastpath status blocks are not allocated resulting in
segfault. Separate out fastpath DMA allocation/free from rest of
memory allocation/free. It is now done as part of NIC load/unload.
Comment indentation changes in bnx2x_alloc_hsi_mem() and
bnx2x_free_hsi_mem() APIs.
Fixes: f0219d98defd ("net/bnx2x: fix interrupt flood")
Cc: stable@dpdk.org
Signed-off-by: Rasesh Mody <rmody@marvell.com>
---
drivers/net/bnx2x/bnx2x.c | 117 +++++++++++++++++++-------------------
1 file changed, 60 insertions(+), 57 deletions(-)
diff --git a/drivers/net/bnx2x/bnx2x.c b/drivers/net/bnx2x/bnx2x.c
index 877f5b73d..1a088269f 100644
--- a/drivers/net/bnx2x/bnx2x.c
+++ b/drivers/net/bnx2x/bnx2x.c
@@ -2120,6 +2120,9 @@ bnx2x_nic_unload(struct bnx2x_softc *sc, uint32_t unload_mode, uint8_t keep_link
bnx2x_free_mem(sc);
}
+ /* free the host hardware/software hsi structures */
+ bnx2x_free_hsi_mem(sc);
+
bnx2x_free_fw_stats_mem(sc);
sc->state = BNX2X_STATE_CLOSED;
@@ -2403,9 +2406,6 @@ static void bnx2x_free_mem(struct bnx2x_softc *sc)
ecore_ilt_mem_op(sc, ILT_MEMOP_FREE);
bnx2x_free_ilt_lines_mem(sc);
-
- /* free the host hardware/software hsi structures */
- bnx2x_free_hsi_mem(sc);
}
static int bnx2x_alloc_mem(struct bnx2x_softc *sc)
@@ -2456,13 +2456,6 @@ static int bnx2x_alloc_mem(struct bnx2x_softc *sc)
return -1;
}
- /* allocate the host hardware/software hsi structures */
- if (bnx2x_alloc_hsi_mem(sc) != 0) {
- PMD_DRV_LOG(ERR, sc, "bnx2x_alloc_hsi_mem was failed");
- bnx2x_free_mem(sc);
- return -ENXIO;
- }
-
return 0;
}
@@ -7242,6 +7235,14 @@ int bnx2x_nic_load(struct bnx2x_softc *sc)
}
}
+ /* allocate the host hardware/software hsi structures */
+ if (bnx2x_alloc_hsi_mem(sc) != 0) {
+ PMD_DRV_LOG(ERR, sc, "bnx2x_alloc_hsi_mem was failed");
+ sc->state = BNX2X_STATE_CLOSED;
+ rc = -ENOMEM;
+ goto bnx2x_nic_load_error0;
+ }
+
if (bnx2x_alloc_fw_stats_mem(sc) != 0) {
sc->state = BNX2X_STATE_CLOSED;
rc = -ENOMEM;
@@ -7457,6 +7458,7 @@ int bnx2x_nic_load(struct bnx2x_softc *sc)
bnx2x_nic_load_error0:
bnx2x_free_fw_stats_mem(sc);
+ bnx2x_free_hsi_mem(sc);
bnx2x_free_mem(sc);
return rc;
@@ -8902,9 +8904,9 @@ int bnx2x_alloc_hsi_mem(struct bnx2x_softc *sc)
uint32_t i;
if (IS_PF(sc)) {
-/************************/
-/* DEFAULT STATUS BLOCK */
-/************************/
+ /************************/
+ /* DEFAULT STATUS BLOCK */
+ /************************/
if (bnx2x_dma_alloc(sc, sizeof(struct host_sp_status_block),
&sc->def_sb_dma, "def_sb",
@@ -8914,9 +8916,9 @@ int bnx2x_alloc_hsi_mem(struct bnx2x_softc *sc)
sc->def_sb =
(struct host_sp_status_block *)sc->def_sb_dma.vaddr;
-/***************/
-/* EVENT QUEUE */
-/***************/
+ /***************/
+ /* EVENT QUEUE */
+ /***************/
if (bnx2x_dma_alloc(sc, BNX2X_PAGE_SIZE,
&sc->eq_dma, "ev_queue",
@@ -8927,9 +8929,9 @@ int bnx2x_alloc_hsi_mem(struct bnx2x_softc *sc)
sc->eq = (union event_ring_elem *)sc->eq_dma.vaddr;
-/*************/
-/* SLOW PATH */
-/*************/
+ /*************/
+ /* SLOW PATH */
+ /*************/
if (bnx2x_dma_alloc(sc, sizeof(struct bnx2x_slowpath),
&sc->sp_dma, "sp",
@@ -8941,9 +8943,9 @@ int bnx2x_alloc_hsi_mem(struct bnx2x_softc *sc)
sc->sp = (struct bnx2x_slowpath *)sc->sp_dma.vaddr;
-/*******************/
-/* SLOW PATH QUEUE */
-/*******************/
+ /*******************/
+ /* SLOW PATH QUEUE */
+ /*******************/
if (bnx2x_dma_alloc(sc, BNX2X_PAGE_SIZE,
&sc->spq_dma, "sp_queue",
@@ -8956,9 +8958,9 @@ int bnx2x_alloc_hsi_mem(struct bnx2x_softc *sc)
sc->spq = (struct eth_spe *)sc->spq_dma.vaddr;
-/***************************/
-/* FW DECOMPRESSION BUFFER */
-/***************************/
+ /***************************/
+ /* FW DECOMPRESSION BUFFER */
+ /***************************/
if (bnx2x_dma_alloc(sc, FW_BUF_SIZE, &sc->gz_buf_dma,
"fw_buf", RTE_CACHE_LINE_SIZE) != 0) {
@@ -8982,9 +8984,9 @@ int bnx2x_alloc_hsi_mem(struct bnx2x_softc *sc)
fp->sc = sc;
fp->index = i;
-/*******************/
-/* FP STATUS BLOCK */
-/*******************/
+ /*******************/
+ /* FP STATUS BLOCK */
+ /*******************/
snprintf(buf, sizeof(buf), "fp_%d_sb", i);
if (bnx2x_dma_alloc(sc, sizeof(union bnx2x_host_hc_status_block),
@@ -9015,49 +9017,50 @@ void bnx2x_free_hsi_mem(struct bnx2x_softc *sc)
for (i = 0; i < sc->num_queues; i++) {
fp = &sc->fp[i];
-/*******************/
-/* FP STATUS BLOCK */
-/*******************/
+ /*******************/
+ /* FP STATUS BLOCK */
+ /*******************/
memset(&fp->status_block, 0, sizeof(fp->status_block));
bnx2x_dma_free(&fp->sb_dma);
}
- /***************************/
- /* FW DECOMPRESSION BUFFER */
- /***************************/
-
- bnx2x_dma_free(&sc->gz_buf_dma);
- sc->gz_buf = NULL;
+ if (IS_PF(sc)) {
+ /***************************/
+ /* FW DECOMPRESSION BUFFER */
+ /***************************/
- /*******************/
- /* SLOW PATH QUEUE */
- /*******************/
+ bnx2x_dma_free(&sc->gz_buf_dma);
+ sc->gz_buf = NULL;
- bnx2x_dma_free(&sc->spq_dma);
- sc->spq = NULL;
+ /*******************/
+ /* SLOW PATH QUEUE */
+ /*******************/
- /*************/
- /* SLOW PATH */
- /*************/
+ bnx2x_dma_free(&sc->spq_dma);
+ sc->spq = NULL;
- bnx2x_dma_free(&sc->sp_dma);
- sc->sp = NULL;
+ /*************/
+ /* SLOW PATH */
+ /*************/
- /***************/
- /* EVENT QUEUE */
- /***************/
+ bnx2x_dma_free(&sc->sp_dma);
+ sc->sp = NULL;
- bnx2x_dma_free(&sc->eq_dma);
- sc->eq = NULL;
+ /***************/
+ /* EVENT QUEUE */
+ /***************/
- /************************/
- /* DEFAULT STATUS BLOCK */
- /************************/
+ bnx2x_dma_free(&sc->eq_dma);
+ sc->eq = NULL;
- bnx2x_dma_free(&sc->def_sb_dma);
- sc->def_sb = NULL;
+ /************************/
+ /* DEFAULT STATUS BLOCK */
+ /************************/
+ bnx2x_dma_free(&sc->def_sb_dma);
+ sc->def_sb = NULL;
+ }
}
/*
--
2.18.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [dpdk-dev] [PATCH 1/3] net/bnx2x: fix read VF id
2019-07-03 23:43 [dpdk-dev] [PATCH 1/3] net/bnx2x: fix read VF id Rasesh Mody
2019-07-03 23:43 ` [dpdk-dev] [PATCH 2/3] net/bnx2x: fix link events polling for SRIOV Rasesh Mody
2019-07-03 23:43 ` [dpdk-dev] [PATCH 3/3] net/bnx2x: fix fastpath SB allocation " Rasesh Mody
@ 2019-07-09 10:33 ` Jerin Jacob Kollanukkaran
2 siblings, 0 replies; 4+ messages in thread
From: Jerin Jacob Kollanukkaran @ 2019-07-09 10:33 UTC (permalink / raw)
To: Rasesh Mody, dev; +Cc: Rasesh Mody, ferruh.yigit, GR-Everest-DPDK-Dev, stable
> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Rasesh Mody
> Sent: Thursday, July 4, 2019 5:13 AM
> To: dev@dpdk.org
> Cc: Rasesh Mody <rmody@marvell.com>; ferruh.yigit@intel.com; GR-
> Everest-DPDK-Dev <GR-Everest-DPDK-Dev@marvell.com>; stable@dpdk.org
> Subject: [dpdk-dev] [PATCH 1/3] net/bnx2x: fix read VF id
>
> The logic, to read vf_id used by ACQUIRE/TEARDOWN_Q/RELEASE TLVs,
> multiplexed return value to convey vf_id value and status of read vf_id API.
> This lets to segfault at dev_start() as resources are not properly cleaned and
> re-allocated.
>
> Fix read vf_id API to differentiate between vf_id value and return status.
> Adjust the status checking accordingly.
> Added bnx2x_vf_teardown_queue() API and moved relevant code from
> bnx2x_vf_unload() to new API.
>
> Fixes: 540a211084a7 ("bnx2x: driver core")
> Cc: stable@dpdk.org
>
> Signed-off-by: Rasesh Mody <rmody@marvell.com>
Series applied to dpdk-next-net-mrvl/master. Thanks.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2019-07-09 10:33 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-07-03 23:43 [dpdk-dev] [PATCH 1/3] net/bnx2x: fix read VF id Rasesh Mody
2019-07-03 23:43 ` [dpdk-dev] [PATCH 2/3] net/bnx2x: fix link events polling for SRIOV Rasesh Mody
2019-07-03 23:43 ` [dpdk-dev] [PATCH 3/3] net/bnx2x: fix fastpath SB allocation " Rasesh Mody
2019-07-09 10:33 ` [dpdk-dev] [PATCH 1/3] net/bnx2x: fix read VF id Jerin Jacob Kollanukkaran
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).