Message ID | 20230407122344.4059-8-saikrishnag@marvell.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | octeontx2: Miscellaneous fixes | expand |
Context | Check | Description |
---|---|---|
netdev/series_format | success | Posting correctly formatted |
netdev/tree_selection | success | Clearly marked for net |
netdev/fixes_present | success | Fixes tag present in non-next series |
netdev/header_inline | success | No static functions without inline keyword in header files |
netdev/build_32bit | success | Errors and warnings before: 18 this patch: 18 |
netdev/cc_maintainers | success | CCed 9 of 9 maintainers |
netdev/build_clang | success | Errors and warnings before: 18 this patch: 18 |
netdev/verify_signedoff | success | Signed-off-by tag matches author and committer |
netdev/deprecated_api | success | None detected |
netdev/check_selftest | success | No net selftest shell script |
netdev/verify_fixes | success | Fixes tag looks correct |
netdev/build_allmodconfig_warn | success | Errors and warnings before: 22 this patch: 22 |
netdev/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 49 lines checked |
netdev/kdoc | success | Errors and warnings before: 0 this patch: 0 |
netdev/source_inline | success | Was 0 now: 0 |
On Fri, Apr 07, 2023 at 05:53:44PM +0530, Sai Krishna wrote: > From: Subbaraya Sundeep <sbhatta@marvell.com> > > At the stage of enabling packet I/O in otx2_open, If mailbox > timeout occurs then interface ends up in down state where as > hardware packet I/O is enabled. Hence disable packet I/O also > before bailing out. This patch also free the LMTST per cpu structure > on teardown, if the lmt_info pointer is not NULL. > > Fixes: 1ea0166da050 ("octeontx2-pf: Fix the device state on error") > Signed-off-by: Subbaraya Sundeep <sbhatta@marvell.com> > Signed-off-by: Sunil Kovvuri Goutham <sgoutham@marvell.com> > Signed-off-by: Sai Krishna <saikrishnag@marvell.com> ... > @@ -709,7 +709,8 @@ static int otx2vf_probe(struct pci_dev *pdev, const struct pci_device_id *id) > err_ptp_destroy: > otx2_ptp_destroy(vf); > err_detach_rsrc: > - free_percpu(vf->hw.lmt_info); > + if (vf->hw.lmt_info) > + free_percpu(vf->hw.lmt_info); free_percpu does nothing if it's argument is NULL. So there is no need for the if clause added here. > if (test_bit(CN10K_LMTST, &vf->hw.cap_flag)) > qmem_free(vf->dev, vf->dync_lmt); > otx2_detach_resources(&vf->mbox); > @@ -763,7 +764,8 @@ static void otx2vf_remove(struct pci_dev *pdev) > otx2_shutdown_tc(vf); > otx2vf_disable_mbox_intr(vf); > otx2_detach_resources(&vf->mbox); > - free_percpu(vf->hw.lmt_info); > + if (vf->hw.lmt_info) > + free_percpu(vf->hw.lmt_info); Ditto. > if (test_bit(CN10K_LMTST, &vf->hw.cap_flag)) > qmem_free(vf->dev, vf->dync_lmt); > otx2vf_vfaf_mbox_destroy(vf); > -- > 2.25.1 >
Please see inline, > -----Original Message----- > From: Simon Horman <simon.horman@corigine.com> > Sent: Saturday, April 8, 2023 8:00 PM > To: Sai Krishna Gajula <saikrishnag@marvell.com> > Cc: davem@davemloft.net; edumazet@google.com; kuba@kernel.org; > pabeni@redhat.com; netdev@vger.kernel.org; linux- > kernel@vger.kernel.org; Sunil Kovvuri Goutham <sgoutham@marvell.com>; > Geethasowjanya Akula <gakula@marvell.com>; richardcochran@gmail.com; > Linu Cherian <lcherian@marvell.com>; Jerin Jacob Kollanukkaran > <jerinj@marvell.com>; Hariprasad Kelam <hkelam@marvell.com>; > Subbaraya Sundeep Bhatta <sbhatta@marvell.com> > Subject: Re: [net PATCH v2 7/7] octeontx2-pf: Disable packet I/O for > graceful exit > > On Fri, Apr 07, 2023 at 05:53:44PM +0530, Sai Krishna wrote: > > From: Subbaraya Sundeep <sbhatta@marvell.com> > > > > At the stage of enabling packet I/O in otx2_open, If mailbox timeout > > occurs then interface ends up in down state where as hardware packet > > I/O is enabled. Hence disable packet I/O also before bailing out. This > > patch also free the LMTST per cpu structure on teardown, if the > > lmt_info pointer is not NULL. > > > > Fixes: 1ea0166da050 ("octeontx2-pf: Fix the device state on error") > > Signed-off-by: Subbaraya Sundeep <sbhatta@marvell.com> > > Signed-off-by: Sunil Kovvuri Goutham <sgoutham@marvell.com> > > Signed-off-by: Sai Krishna <saikrishnag@marvell.com> > > ... > > > @@ -709,7 +709,8 @@ static int otx2vf_probe(struct pci_dev *pdev, > > const struct pci_device_id *id) > > err_ptp_destroy: > > otx2_ptp_destroy(vf); > > err_detach_rsrc: > > - free_percpu(vf->hw.lmt_info); > > + if (vf->hw.lmt_info) > > + free_percpu(vf->hw.lmt_info); > > free_percpu does nothing if it's argument is NULL. > So there is no need for the if clause added here. We will submit v3 patch as per review comments. > > > if (test_bit(CN10K_LMTST, &vf->hw.cap_flag)) > > qmem_free(vf->dev, vf->dync_lmt); > > otx2_detach_resources(&vf->mbox); > > @@ -763,7 +764,8 @@ static void otx2vf_remove(struct pci_dev *pdev) > > otx2_shutdown_tc(vf); > > otx2vf_disable_mbox_intr(vf); > > otx2_detach_resources(&vf->mbox); > > - free_percpu(vf->hw.lmt_info); > > + if (vf->hw.lmt_info) > > + free_percpu(vf->hw.lmt_info); > > Ditto. We will submit v3 patch as per review comments. Thanks, Sai > > > if (test_bit(CN10K_LMTST, &vf->hw.cap_flag)) > > qmem_free(vf->dev, vf->dync_lmt); > > otx2vf_vfaf_mbox_destroy(vf); > > -- > > 2.25.1 > >
diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c index 179433d0a54a..52a57d2493dc 100644 --- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c +++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c @@ -1835,13 +1835,22 @@ int otx2_open(struct net_device *netdev) otx2_dmacflt_reinstall_flows(pf); err = otx2_rxtx_enable(pf, true); - if (err) + /* If a mbox communication error happens at this point then interface + * will end up in a state such that it is in down state but hardware + * mcam entries are enabled to receive the packets. Hence disable the + * packet I/O. + */ + if (err == EIO) + goto err_disable_rxtx; + else if (err) goto err_tx_stop_queues; otx2_do_set_rx_mode(pf); return 0; +err_disable_rxtx: + otx2_rxtx_enable(pf, false); err_tx_stop_queues: netif_tx_stop_all_queues(netdev); netif_carrier_off(netdev); diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c index ab126f8706c7..6ab4780f12fd 100644 --- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c +++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c @@ -621,7 +621,7 @@ static int otx2vf_probe(struct pci_dev *pdev, const struct pci_device_id *id) err = otx2vf_realloc_msix_vectors(vf); if (err) - goto err_mbox_destroy; + goto err_detach_rsrc; err = otx2_set_real_num_queues(netdev, qcount, qcount); if (err) @@ -709,7 +709,8 @@ static int otx2vf_probe(struct pci_dev *pdev, const struct pci_device_id *id) err_ptp_destroy: otx2_ptp_destroy(vf); err_detach_rsrc: - free_percpu(vf->hw.lmt_info); + if (vf->hw.lmt_info) + free_percpu(vf->hw.lmt_info); if (test_bit(CN10K_LMTST, &vf->hw.cap_flag)) qmem_free(vf->dev, vf->dync_lmt); otx2_detach_resources(&vf->mbox); @@ -763,7 +764,8 @@ static void otx2vf_remove(struct pci_dev *pdev) otx2_shutdown_tc(vf); otx2vf_disable_mbox_intr(vf); otx2_detach_resources(&vf->mbox); - free_percpu(vf->hw.lmt_info); + if (vf->hw.lmt_info) + free_percpu(vf->hw.lmt_info); if (test_bit(CN10K_LMTST, &vf->hw.cap_flag)) qmem_free(vf->dev, vf->dync_lmt); otx2vf_vfaf_mbox_destroy(vf);