OSDN Git Service

net: qcom/emac: Allocate buffers from local node
authorHemanth Puranik <hpuranik@codeaurora.org>
Fri, 18 May 2018 03:29:29 +0000 (08:59 +0530)
committerDavid S. Miller <davem@davemloft.net>
Sun, 20 May 2018 22:22:35 +0000 (18:22 -0400)
Currently we use non-NUMA aware allocation for TPD and RRD buffers,
this patch modifies to use NUMA friendly allocation.

Signed-off-by: Hemanth Puranik <hpuranik@codeaurora.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/qualcomm/emac/emac-mac.c

index 092718a..031f6e6 100644 (file)
@@ -683,10 +683,11 @@ static int emac_tx_q_desc_alloc(struct emac_adapter *adpt,
                                struct emac_tx_queue *tx_q)
 {
        struct emac_ring_header *ring_header = &adpt->ring_header;
+       int node = dev_to_node(adpt->netdev->dev.parent);
        size_t size;
 
        size = sizeof(struct emac_buffer) * tx_q->tpd.count;
-       tx_q->tpd.tpbuff = kzalloc(size, GFP_KERNEL);
+       tx_q->tpd.tpbuff = kzalloc_node(size, GFP_KERNEL, node);
        if (!tx_q->tpd.tpbuff)
                return -ENOMEM;
 
@@ -723,11 +724,12 @@ static void emac_rx_q_bufs_free(struct emac_adapter *adpt)
 static int emac_rx_descs_alloc(struct emac_adapter *adpt)
 {
        struct emac_ring_header *ring_header = &adpt->ring_header;
+       int node = dev_to_node(adpt->netdev->dev.parent);
        struct emac_rx_queue *rx_q = &adpt->rx_q;
        size_t size;
 
        size = sizeof(struct emac_buffer) * rx_q->rfd.count;
-       rx_q->rfd.rfbuff = kzalloc(size, GFP_KERNEL);
+       rx_q->rfd.rfbuff = kzalloc_node(size, GFP_KERNEL, node);
        if (!rx_q->rfd.rfbuff)
                return -ENOMEM;