net/bnxt: update copyright year
[dpdk.git] / drivers / net / bnxt / bnxt_filter.c
index e218433..1d08e03 100644 (file)
@@ -1,5 +1,5 @@
 /* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2014-2018 Broadcom
+ * Copyright(c) 2014-2021 Broadcom
  * All rights reserved.
  */
 
@@ -39,8 +39,7 @@ struct bnxt_filter_info *bnxt_alloc_filter(struct bnxt *bp)
                        HWRM_CFA_L2_FILTER_ALLOC_INPUT_ENABLES_L2_ADDR_MASK;
        memcpy(filter->l2_addr, bp->mac_addr, RTE_ETHER_ADDR_LEN);
        memset(filter->l2_addr_mask, 0xff, RTE_ETHER_ADDR_LEN);
-       /* bump up the reference count of filter */
-       filter->l2_ref_cnt++;
+
        return filter;
 }
 
@@ -56,7 +55,7 @@ struct bnxt_filter_info *bnxt_alloc_vf_filter(struct bnxt *bp, uint16_t vf)
        }
 
        filter->fw_l2_filter_id = UINT64_MAX;
-       STAILQ_INSERT_TAIL(&bp->pf.vf_info[vf].filter, filter, next);
+       STAILQ_INSERT_TAIL(&bp->pf->vf_info[vf].filter, filter, next);
        return filter;
 }
 
@@ -82,6 +81,15 @@ void bnxt_free_all_filters(struct bnxt *bp)
        struct bnxt_filter_info *filter, *temp_filter;
        unsigned int i;
 
+       for (i = 0; i < bp->pf->max_vfs; i++) {
+               STAILQ_FOREACH(filter, &bp->pf->vf_info[i].filter, next) {
+                       bnxt_hwrm_clear_l2_filter(bp, filter);
+               }
+       }
+
+       if (bp->vnic_info == NULL)
+               return;
+
        for (i = 0; i < bp->nr_vnics; i++) {
                vnic = &bp->vnic_info[i];
                filter = STAILQ_FIRST(&vnic->filter);
@@ -96,11 +104,6 @@ void bnxt_free_all_filters(struct bnxt *bp)
                STAILQ_INIT(&vnic->filter);
        }
 
-       for (i = 0; i < bp->pf.max_vfs; i++) {
-               STAILQ_FOREACH(filter, &bp->pf.vf_info[i].filter, next) {
-                       bnxt_hwrm_clear_l2_filter(bp, filter);
-               }
-       }
 }
 
 void bnxt_free_filter_mem(struct bnxt *bp)
@@ -145,10 +148,10 @@ void bnxt_free_filter_mem(struct bnxt *bp)
        rte_free(bp->filter_info);
        bp->filter_info = NULL;
 
-       for (i = 0; i < bp->pf.max_vfs; i++) {
-               STAILQ_FOREACH(filter, &bp->pf.vf_info[i].filter, next) {
+       for (i = 0; i < bp->pf->max_vfs; i++) {
+               STAILQ_FOREACH(filter, &bp->pf->vf_info[i].filter, next) {
                        rte_free(filter);
-                       STAILQ_REMOVE(&bp->pf.vf_info[i].filter, filter,
+                       STAILQ_REMOVE(&bp->pf->vf_info[i].filter, filter,
                                      bnxt_filter_info, next);
                }
        }