X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fbnxt%2Fbnxt_filter.c;h=1c8e3e329bb9145aa5f4b4551d4e39e66bb78db0;hb=14d7ea259aebaacfa9326e54e881ab0e550f6a6e;hp=34db9881810243745ab0e3ec45635123e22fce45;hpb=40d2640fb6c0cc3e79d064224004b92ff1197c9c;p=dpdk.git diff --git a/drivers/net/bnxt/bnxt_filter.c b/drivers/net/bnxt/bnxt_filter.c index 34db988181..1c8e3e329b 100644 --- a/drivers/net/bnxt/bnxt_filter.c +++ b/drivers/net/bnxt/bnxt_filter.c @@ -82,7 +82,6 @@ void bnxt_free_all_filters(struct bnxt *bp) struct bnxt_filter_info *filter, *temp_filter; unsigned int i; -// for (i = 0; i < MAX_FF_POOLS; i++) { for (i = 0; i < bp->nr_vnics; i++) { vnic = &bp->vnic_info[i]; filter = STAILQ_FIRST(&vnic->filter); @@ -117,6 +116,17 @@ void bnxt_free_filter_mem(struct bnxt *bp) max_filters = bp->max_l2_ctx; for (i = 0; i < max_filters; i++) { filter = &bp->filter_info[i]; + if (filter->fw_ntuple_filter_id != ((uint64_t)-1) && + filter->filter_type == HWRM_CFA_NTUPLE_FILTER) { + /* Call HWRM to try to free filter again */ + rc = bnxt_hwrm_clear_ntuple_filter(bp, filter); + if (rc) + PMD_DRV_LOG(ERR, + "Cannot free ntuple filter: %d\n", + rc); + } + filter->fw_ntuple_filter_id = UINT64_MAX; + if (filter->fw_l2_filter_id != ((uint64_t)-1) && filter->filter_type == HWRM_CFA_L2_FILTER) { PMD_DRV_LOG(DEBUG, "L2 filter is not free\n"); @@ -129,17 +139,6 @@ void bnxt_free_filter_mem(struct bnxt *bp) } filter->fw_l2_filter_id = UINT64_MAX; - if (filter->fw_ntuple_filter_id != ((uint64_t)-1) && - filter->filter_type == HWRM_CFA_NTUPLE_FILTER) { - PMD_DRV_LOG(ERR, "NTUPLE filter is not free\n"); - /* Call HWRM to try to free filter again */ - rc = bnxt_hwrm_clear_ntuple_filter(bp, filter); - if (rc) - PMD_DRV_LOG(ERR, - "Cannot free NTUPLE filter: %d\n", - rc); - } - filter->fw_ntuple_filter_id = UINT64_MAX; } STAILQ_INIT(&bp->free_filter_list);