X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fbnxt%2Fbnxt_filter.c;h=da1a6c24a9090b9a0cff13c84f9103cb1a625ac4;hb=90bdf7956cb7fe135f3bb63adefa764254f6e15d;hp=f43fe0db012577f8a95467cc294883549087d84c;hpb=51fafb89a9a07df6aca943ce19cd1f8654bfdd31;p=dpdk.git diff --git a/drivers/net/bnxt/bnxt_filter.c b/drivers/net/bnxt/bnxt_filter.c index f43fe0db01..da1a6c24a9 100644 --- a/drivers/net/bnxt/bnxt_filter.c +++ b/drivers/net/bnxt/bnxt_filter.c @@ -34,13 +34,14 @@ struct bnxt_filter_info *bnxt_alloc_filter(struct bnxt *bp) } STAILQ_REMOVE_HEAD(&bp->free_filter_list, next); + filter->mac_index = INVALID_MAC_INDEX; /* Default to L2 MAC Addr filter */ filter->flags = HWRM_CFA_L2_FILTER_ALLOC_INPUT_FLAGS_PATH_RX; filter->enables = HWRM_CFA_L2_FILTER_ALLOC_INPUT_ENABLES_L2_ADDR | HWRM_CFA_L2_FILTER_ALLOC_INPUT_ENABLES_L2_ADDR_MASK; memcpy(filter->l2_addr, bp->eth_dev->data->mac_addrs->addr_bytes, - ETHER_ADDR_LEN); - memset(filter->l2_addr_mask, 0xff, ETHER_ADDR_LEN); + RTE_ETHER_ADDR_LEN); + memset(filter->l2_addr_mask, 0xff, RTE_ETHER_ADDR_LEN); return filter; } @@ -60,7 +61,7 @@ struct bnxt_filter_info *bnxt_alloc_vf_filter(struct bnxt *bp, uint16_t vf) return filter; } -void bnxt_init_filters(struct bnxt *bp) +static void bnxt_init_filters(struct bnxt *bp) { struct bnxt_filter_info *filter; int i, max_filters; @@ -82,7 +83,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,29 +117,29 @@ 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_l2_filter_id != ((uint64_t)-1) && - filter->filter_type == HWRM_CFA_L2_FILTER) { - PMD_DRV_LOG(ERR, "L2 filter is not free\n"); + 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_l2_filter(bp, filter); + rc = bnxt_hwrm_clear_ntuple_filter(bp, filter); if (rc) PMD_DRV_LOG(ERR, - "Cannot free L2 filter: %d\n", + "Cannot free ntuple filter: %d\n", rc); } - filter->fw_l2_filter_id = UINT64_MAX; + filter->fw_ntuple_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"); + 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"); /* Call HWRM to try to free filter again */ - rc = bnxt_hwrm_clear_ntuple_filter(bp, filter); + rc = bnxt_hwrm_clear_l2_filter(bp, filter); if (rc) PMD_DRV_LOG(ERR, - "Cannot free NTUPLE filter: %d\n", + "Cannot free L2 filter: %d\n", rc); } - filter->fw_ntuple_filter_id = UINT64_MAX; + filter->fw_l2_filter_id = UINT64_MAX; + } STAILQ_INIT(&bp->free_filter_list); @@ -171,6 +171,7 @@ int bnxt_alloc_filter_mem(struct bnxt *bp) return -ENOMEM; } bp->filter_info = filter_mem; + bnxt_init_filters(bp); return 0; }