When updating the link because of an async link notification there is no need to set wait_for_completion. At this point the link related information should be available without need to poll. Use rte_eth_linkstatus_set instead of memcpy to ensure atomicity while updating the link status. We force the physical link down as a part of device stop. But we are not waiting there enough and handling the async notification before exiting. It just sits in the default CQ till we do a device start. Fix it by calling the CQ handler in device stop. Fixes: 7bc8e9a227cc ("net/bnxt: support async link notification") Cc: stable@dpdk.org Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com> Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com> Reviewed-by: Lance Richardson <lance.richardson@broadcom.com>
28 lines
663 B
C
28 lines
663 B
C
/* SPDX-License-Identifier: BSD-3-Clause
|
|
* Copyright(c) 2014-2018 Broadcom
|
|
* All rights reserved.
|
|
*/
|
|
|
|
#ifndef _BNXT_IRQ_H_
|
|
#define _BNXT_IRQ_H_
|
|
|
|
#define BNXT_MISC_VEC_ID RTE_INTR_VEC_ZERO_OFFSET
|
|
#define BNXT_RX_VEC_START RTE_INTR_VEC_RXTX_OFFSET
|
|
|
|
struct bnxt_irq {
|
|
rte_intr_callback_fn handler;
|
|
unsigned int vector;
|
|
uint8_t requested;
|
|
char name[RTE_ETH_NAME_MAX_LEN + 2];
|
|
};
|
|
|
|
struct bnxt;
|
|
int bnxt_free_int(struct bnxt *bp);
|
|
void bnxt_disable_int(struct bnxt *bp);
|
|
void bnxt_enable_int(struct bnxt *bp);
|
|
int bnxt_setup_int(struct bnxt *bp);
|
|
int bnxt_request_int(struct bnxt *bp);
|
|
void bnxt_int_handler(void *param);
|
|
|
|
#endif
|