RDMA/nes: Clear stall bit before destroying NIC QP
Clear the stall bit to drop any incoming packets while destroying NIC QP. This will prevent a chip resource leak. Signed-off-by: Chien Tung <chien.tin.tung@intel.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
parent
883c699241
commit
9f29006ae8
@ -1899,9 +1899,14 @@ void nes_destroy_nic_qp(struct nes_vnic *nesvnic)
|
||||
u16 wqe_fragment_index;
|
||||
u64 wqe_frag;
|
||||
u32 cqp_head;
|
||||
u32 wqm_cfg0;
|
||||
unsigned long flags;
|
||||
int ret;
|
||||
|
||||
/* clear wqe stall before destroying NIC QP */
|
||||
wqm_cfg0 = nes_read_indexed(nesdev, NES_IDX_WQM_CONFIG0);
|
||||
nes_write_indexed(nesdev, NES_IDX_WQM_CONFIG0, wqm_cfg0 & 0xFFFF7FFF);
|
||||
|
||||
/* Free remaining NIC receive buffers */
|
||||
while (nesvnic->nic.rq_head != nesvnic->nic.rq_tail) {
|
||||
nic_rqe = &nesvnic->nic.rq_vbase[nesvnic->nic.rq_tail];
|
||||
@ -2020,6 +2025,9 @@ void nes_destroy_nic_qp(struct nes_vnic *nesvnic)
|
||||
|
||||
pci_free_consistent(nesdev->pcidev, nesvnic->nic_mem_size, nesvnic->nic_vbase,
|
||||
nesvnic->nic_pbase);
|
||||
|
||||
/* restore old wqm_cfg0 value */
|
||||
nes_write_indexed(nesdev, NES_IDX_WQM_CONFIG0, wqm_cfg0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -160,6 +160,7 @@ enum indexed_regs {
|
||||
NES_IDX_ENDNODE0_NSTAT_TX_OCTETS_HI = 0x7004,
|
||||
NES_IDX_ENDNODE0_NSTAT_TX_FRAMES_LO = 0x7008,
|
||||
NES_IDX_ENDNODE0_NSTAT_TX_FRAMES_HI = 0x700c,
|
||||
NES_IDX_WQM_CONFIG0 = 0x5000,
|
||||
NES_IDX_WQM_CONFIG1 = 0x5004,
|
||||
NES_IDX_CM_CONFIG = 0x5100,
|
||||
NES_IDX_NIC_LOGPORT_TO_PHYPORT = 0x6000,
|
||||
|
Loading…
Reference in New Issue
Block a user