[dpdk-dev] [PATCH] net/bnxt: fix UDP tunnel port remove
Ajit Khaparde
ajit.khaparde at broadcom.com
Thu Oct 15 01:27:14 CEST 2020
On Mon, Oct 12, 2020 at 8:30 AM Kalesh A P
<kalesh-anakkur.purayil at broadcom.com> wrote:
>
> From: Kalesh AP <kalesh-anakkur.purayil at broadcom.com>
>
> The HWRM supports only one global destination port for a tunnel type.
>
> When port is stopped, driver deletes the UDP tunnel port configured
> in the HW, but it does not update the counter which causes the
> tunnel port addition to fail after port is started again.
>
> Fixed to update the counter when tunnel port is deleted.
>
> Fixes: 10d074b2022d ("net/bnxt: support tunneling")
> Cc: stable at dpdk.org
>
> Signed-off-by: Kalesh AP <kalesh-anakkur.purayil at broadcom.com>
> Reviewed-by: Ajit Kumar Khaparde <ajit.khaparde at broadcom.com>
> Reviewed-by: Somnath Kotur <somnath.kotur at broadcom.com>
Patch applied to dpdk-next-net-brcm. Thanks
> ---
> drivers/net/bnxt/bnxt_ethdev.c | 8 --------
> drivers/net/bnxt/bnxt_hwrm.c | 15 +++++++++++++--
> 2 files changed, 13 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
> index 8b63134..6c1025e 100644
> --- a/drivers/net/bnxt/bnxt_ethdev.c
> +++ b/drivers/net/bnxt/bnxt_ethdev.c
> @@ -2192,14 +2192,6 @@ bnxt_udp_tunnel_port_del_op(struct rte_eth_dev *eth_dev,
> }
>
> rc = bnxt_hwrm_tunnel_dst_port_free(bp, port, tunnel_type);
> - if (!rc) {
> - if (tunnel_type ==
> - HWRM_TUNNEL_DST_PORT_FREE_INPUT_TUNNEL_TYPE_VXLAN)
> - bp->vxlan_port = 0;
> - if (tunnel_type ==
> - HWRM_TUNNEL_DST_PORT_FREE_INPUT_TUNNEL_TYPE_GENEVE)
> - bp->geneve_port = 0;
> - }
> return rc;
> }
>
> diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
> index faeaf4b..a495dac 100644
> --- a/drivers/net/bnxt/bnxt_hwrm.c
> +++ b/drivers/net/bnxt/bnxt_hwrm.c
> @@ -2750,11 +2750,10 @@ bnxt_free_tunnel_ports(struct bnxt *bp)
> if (bp->vxlan_port_cnt)
> bnxt_hwrm_tunnel_dst_port_free(bp, bp->vxlan_fw_dst_port_id,
> HWRM_TUNNEL_DST_PORT_FREE_INPUT_TUNNEL_TYPE_VXLAN);
> - bp->vxlan_port = 0;
> +
> if (bp->geneve_port_cnt)
> bnxt_hwrm_tunnel_dst_port_free(bp, bp->geneve_fw_dst_port_id,
> HWRM_TUNNEL_DST_PORT_FREE_INPUT_TUNNEL_TYPE_GENEVE);
> - bp->geneve_port = 0;
> }
>
> void bnxt_free_all_hwrm_resources(struct bnxt *bp)
> @@ -3713,6 +3712,18 @@ int bnxt_hwrm_tunnel_dst_port_free(struct bnxt *bp, uint16_t port,
> HWRM_CHECK_RESULT();
> HWRM_UNLOCK();
>
> + if (tunnel_type ==
> + HWRM_TUNNEL_DST_PORT_FREE_INPUT_TUNNEL_TYPE_VXLAN) {
> + bp->vxlan_port = 0;
> + bp->vxlan_port_cnt = 0;
> + }
> +
> + if (tunnel_type ==
> + HWRM_TUNNEL_DST_PORT_FREE_INPUT_TUNNEL_TYPE_GENEVE) {
> + bp->geneve_port = 0;
> + bp->geneve_port_cnt = 0;
> + }
> +
> return rc;
> }
>
> --
> 2.10.1
>
More information about the dev
mailing list