if (IS_PF(cdev)) {
                int max_vf_vlan_filters = 0;
+               int max_vf_mac_filters = 0;
 
                if (cdev->int_params.out.int_mode == QED_INT_MODE_MSIX) {
                        for_each_hwfn(cdev, i)
                        info->num_queues = cdev->num_hwfns;
                }
 
-               if (IS_QED_SRIOV(cdev))
+               if (IS_QED_SRIOV(cdev)) {
                        max_vf_vlan_filters = cdev->p_iov_info->total_vfs *
                                              QED_ETH_VF_NUM_VLAN_FILTERS;
-               info->num_vlan_filters = RESC_NUM(&cdev->hwfns[0], QED_VLAN) -
+                       max_vf_mac_filters = cdev->p_iov_info->total_vfs *
+                                            QED_ETH_VF_NUM_MAC_FILTERS;
+               }
+               info->num_vlan_filters = RESC_NUM(QED_LEADING_HWFN(cdev),
+                                                 QED_VLAN) -
                                         max_vf_vlan_filters;
+               info->num_mac_filters = RESC_NUM(QED_LEADING_HWFN(cdev),
+                                                QED_MAC) -
+                                       max_vf_mac_filters;
 
                ether_addr_copy(info->port_mac,
                                cdev->hwfns[0].hw_info.hw_mac_addr);
 
 
        qede_set_ethtool_ops(ndev);
 
+       ndev->priv_flags = IFF_UNICAST_FLT;
+
        /* user-changeble features */
        hw_features = NETIF_F_GRO | NETIF_F_SG |
                      NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM |
 
        /* Check for promiscuous */
        if ((ndev->flags & IFF_PROMISC) ||
-           (uc_count > 15)) { /* @@@TBD resource allocation - 1 */
+           (uc_count > edev->dev_info.num_mac_filters - 1)) {
                accept_flags = QED_FILTER_RX_MODE_TYPE_PROMISC;
        } else {
                /* Add MAC filters according to the unicast secondary macs */