bnxt_en: Reduce default rings on multi-port cards.
authorMichael Chan <michael.chan@broadcom.com>
Mon, 28 Aug 2017 17:40:31 +0000 (13:40 -0400)
committerDavid S. Miller <davem@davemloft.net>
Mon, 28 Aug 2017 23:57:10 +0000 (16:57 -0700)
Reduce default rings from 8 to 4 on multi-port cards to reduce memory
usage.

Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bnxt/bnxt.c
drivers/net/ethernet/broadcom/bnxt/bnxt.h

index a34fcddbd14ccc4e70e21976fb07d6ad0b540484..4406f9195851f19f2b3e51daac70c0f2094f963a 100644 (file)
@@ -5795,6 +5795,8 @@ static int bnxt_hwrm_phy_qcaps(struct bnxt *bp)
                link_info->support_auto_speeds =
                        le16_to_cpu(resp->supported_speeds_auto_mode);
 
+       bp->port_count = resp->port_cnt;
+
 hwrm_phy_qcaps_exit:
        mutex_unlock(&bp->hwrm_cmd_lock);
        return rc;
@@ -7877,6 +7879,9 @@ static int bnxt_set_dflt_rings(struct bnxt *bp, bool sh)
        if (sh)
                bp->flags |= BNXT_FLAG_SHARED_RINGS;
        dflt_rings = netif_get_num_default_rss_queues();
+       /* Reduce default rings to reduce memory usage on multi-port cards */
+       if (bp->port_count > 1)
+               dflt_rings = min_t(int, dflt_rings, 4);
        rc = bnxt_get_dflt_rings(bp, &max_rx_rings, &max_tx_rings, sh);
        if (rc)
                return rc;
@@ -8049,6 +8054,10 @@ static int bnxt_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
        bnxt_ethtool_init(bp);
        bnxt_dcb_init(bp);
 
+       rc = bnxt_probe_phy(bp);
+       if (rc)
+               goto init_err_pci_clean;
+
        bnxt_set_rx_skb_mode(bp, false);
        bnxt_set_tpa_flags(bp);
        bnxt_set_ring_params(bp);
@@ -8083,10 +8092,6 @@ static int bnxt_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
        if (dev->hw_features & NETIF_F_HW_VLAN_CTAG_RX)
                bp->flags |= BNXT_FLAG_STRIP_VLAN;
 
-       rc = bnxt_probe_phy(bp);
-       if (rc)
-               goto init_err_pci_clean;
-
        rc = bnxt_init_int_mode(bp);
        if (rc)
                goto init_err_pci_clean;
index 3521e467a64c2fbde75907c28b98c9fcc3b3781b..86af8ead7e5bf20b59d6c7bed0c243fe39e42324 100644 (file)
@@ -1207,6 +1207,7 @@ struct bnxt {
        u8                      nge_port_cnt;
        __le16                  nge_fw_dst_port_id;
        u8                      port_partition_type;
+       u8                      port_count;
        u16                     br_mode;
 
        u16                     rx_coal_ticks;