cxgb4: reduce resource allocation in kdump kernel
authorGanesh Goudar <ganeshgr@chelsio.com>
Tue, 16 May 2017 15:47:42 +0000 (21:17 +0530)
committerDavid S. Miller <davem@davemloft.net>
Wed, 17 May 2017 16:02:27 +0000 (12:02 -0400)
When is_kdump_kernel() is true, reduce memory footprint of
cxgb4 by using a single "Queue Set".

Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c

index 38a5c6764bb50f45124c212db37e11d2cc777076..4249ffbc0427e81879a7ea0db2e39196c19279c5 100644 (file)
@@ -891,7 +891,7 @@ static u16 cxgb_select_queue(struct net_device *dev, struct sk_buff *skb,
         * The skb's priority is determined via the VLAN Tag Priority Code
         * Point field.
         */
-       if (cxgb4_dcb_enabled(dev)) {
+       if (cxgb4_dcb_enabled(dev) && !is_kdump_kernel()) {
                u16 vlan_tci;
                int err;
 
@@ -4007,10 +4007,7 @@ static void cfg_queues(struct adapter *adap)
 
        /* Reduce memory usage in kdump environment, disable all offload.
         */
-       if (is_kdump_kernel()) {
-               adap->params.offload = 0;
-               adap->params.crypto = 0;
-       } else if (is_uld(adap) && t4_uld_mem_alloc(adap)) {
+       if (is_kdump_kernel() || (is_uld(adap) && t4_uld_mem_alloc(adap))) {
                adap->params.offload = 0;
                adap->params.crypto = 0;
        }
@@ -4031,7 +4028,7 @@ static void cfg_queues(struct adapter *adap)
                struct port_info *pi = adap2pinfo(adap, i);
 
                pi->first_qset = qidx;
-               pi->nqsets = 8;
+               pi->nqsets = is_kdump_kernel() ? 1 : 8;
                qidx += pi->nqsets;
        }
 #else /* !CONFIG_CHELSIO_T4_DCB */
@@ -4044,6 +4041,9 @@ static void cfg_queues(struct adapter *adap)
        if (q10g > netif_get_num_default_rss_queues())
                q10g = netif_get_num_default_rss_queues();
 
+       if (is_kdump_kernel())
+               q10g = 1;
+
        for_each_port(adap, i) {
                struct port_info *pi = adap2pinfo(adap, i);