net/bnxt: fix L2 filter allocation
[dpdk.git] / drivers / net / bnxt / bnxt_ethdev.c
index dfc4b41..40023a4 100644 (file)
@@ -1360,8 +1360,7 @@ static void bnxt_dev_close_op(struct rte_eth_dev *eth_dev)
        rte_memzone_free((const struct rte_memzone *)bp->rx_mem_zone);
        bp->rx_mem_zone = NULL;
 
-       rte_free(bp->pf->vf_info);
-       bp->pf->vf_info = NULL;
+       bnxt_hwrm_free_vf_info(bp);
 
        rte_free(bp->grp_info);
        bp->grp_info = NULL;
@@ -4372,7 +4371,7 @@ static int bnxt_restore_mac_filters(struct bnxt *bp)
        uint16_t i;
        int rc;
 
-       if (BNXT_VF(bp) & !BNXT_VF_IS_TRUSTED(bp))
+       if (BNXT_VF(bp) && !BNXT_VF_IS_TRUSTED(bp))
                return 0;
 
        rc = bnxt_dev_info_get_op(dev, &dev_info);
@@ -5833,8 +5832,10 @@ bnxt_uninit_locks(struct bnxt *bp)
 {
        pthread_mutex_destroy(&bp->flow_lock);
        pthread_mutex_destroy(&bp->def_cp_lock);
-       if (bp->rep_info)
+       if (bp->rep_info) {
                pthread_mutex_destroy(&bp->rep_info->vfr_lock);
+               pthread_mutex_destroy(&bp->rep_info->vfr_start_lock);
+       }
 }
 
 static int
@@ -5937,6 +5938,14 @@ static int bnxt_init_rep_info(struct bnxt *bp)
                bnxt_free_rep_info(bp);
                return rc;
        }
+
+       rc = pthread_mutex_init(&bp->rep_info->vfr_start_lock, NULL);
+       if (rc) {
+               PMD_DRV_LOG(ERR, "Unable to initialize vfr_start_lock\n");
+               bnxt_free_rep_info(bp);
+               return rc;
+       }
+
        return rc;
 }