get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/66659/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 66659,
    "url": "http://patches.dpdk.org/api/patches/66659/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/96ff24427c7bcdfebb1dea410bdd82aa1a16d97d.1584175469.git.cloud.wangxiaoyun@huawei.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<96ff24427c7bcdfebb1dea410bdd82aa1a16d97d.1584175469.git.cloud.wangxiaoyun@huawei.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/96ff24427c7bcdfebb1dea410bdd82aa1a16d97d.1584175469.git.cloud.wangxiaoyun@huawei.com",
    "date": "2020-03-14T10:02:06",
    "name": "[v1,1/1] net/hinic: alloc IO memory with socketid",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "cba697c99a091805252221dd4069cbbe769497b4",
    "submitter": {
        "id": 1446,
        "url": "http://patches.dpdk.org/api/people/1446/?format=api",
        "name": "Wangxiaoyun (Cloud)",
        "email": "cloud.wangxiaoyun@huawei.com"
    },
    "delegate": {
        "id": 319,
        "url": "http://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/96ff24427c7bcdfebb1dea410bdd82aa1a16d97d.1584175469.git.cloud.wangxiaoyun@huawei.com/mbox/",
    "series": [
        {
            "id": 8910,
            "url": "http://patches.dpdk.org/api/series/8910/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=8910",
            "date": "2020-03-14T10:02:05",
            "name": "alloc IO memory with socketid",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/8910/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/66659/comments/",
    "check": "fail",
    "checks": "http://patches.dpdk.org/api/patches/66659/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id D6215A0576;\n\tSat, 14 Mar 2020 10:46:55 +0100 (CET)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 171751C01F;\n\tSat, 14 Mar 2020 10:46:47 +0100 (CET)",
            "from huawei.com (szxga06-in.huawei.com [45.249.212.32])\n by dpdk.org (Postfix) with ESMTP id 432121C028;\n Sat, 14 Mar 2020 10:46:45 +0100 (CET)",
            "from DGGEMS401-HUB.china.huawei.com (unknown [172.30.72.59])\n by Forcepoint Email with ESMTP id A21C9A487C897F477DB8;\n Sat, 14 Mar 2020 17:46:42 +0800 (CST)",
            "from tester.localdomain (10.175.119.39) by\n DGGEMS401-HUB.china.huawei.com (10.3.19.201) with Microsoft SMTP Server id\n 14.3.487.0; Sat, 14 Mar 2020 17:46:33 +0800"
        ],
        "From": "Xiaoyun wang <cloud.wangxiaoyun@huawei.com>",
        "To": "<dev@dpdk.org>",
        "CC": "<ferruh.yigit@intel.com>, <ktraynor@redhat.com>, <bluca@debian.org>,\n <stable@dpdk.org>, <luoxianjun@huawei.com>, <luoxingyu@huawei.com>,\n <zhouguoyang@huawei.com>, <xuanziyang2@huawei.com>,\n <shahar.belkar@huawei.com>, <yin.yinshi@huawei.com>, Xiaoyun wang\n <cloud.wangxiaoyun@huawei.com>",
        "Date": "Sat, 14 Mar 2020 18:02:06 +0800",
        "Message-ID": "\n <96ff24427c7bcdfebb1dea410bdd82aa1a16d97d.1584175469.git.cloud.wangxiaoyun@huawei.com>",
        "X-Mailer": "git-send-email 1.8.3.1",
        "In-Reply-To": "<cover.1584175469.git.cloud.wangxiaoyun@huawei.com>",
        "References": "<cover.1584175469.git.cloud.wangxiaoyun@huawei.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[10.175.119.39]",
        "X-CFilter-Loop": "Reflected",
        "Subject": "[dpdk-dev] [PATCH v1 1/1] net/hinic: alloc IO memory with socketid",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "This patch makes IO memory allocation with socketid,\nthe txq or rxq descriptor and IO resource can be allocated with\nsocketid that passed by queue setup ops, which can improve\nperformance for cross-numa scene.\n\nCc: stable@dpdk.org\nSigned-off-by: Xiaoyun wang <cloud.wangxiaoyun@huawei.com>\n---\n drivers/net/hinic/base/hinic_compat.h      | 17 ++++++++------\n drivers/net/hinic/base/hinic_pmd_api_cmd.c |  7 +++---\n drivers/net/hinic/base/hinic_pmd_cmdq.c    |  3 +--\n drivers/net/hinic/base/hinic_pmd_eqs.c     |  2 +-\n drivers/net/hinic/base/hinic_pmd_hwdev.c   | 37 +++++++++++++++---------------\n drivers/net/hinic/base/hinic_pmd_hwdev.h   |  1 -\n drivers/net/hinic/base/hinic_pmd_mbox.c    |  6 ++---\n drivers/net/hinic/base/hinic_pmd_nicio.c   | 11 +++++----\n drivers/net/hinic/base/hinic_pmd_wq.c      | 11 +++++----\n drivers/net/hinic/base/hinic_pmd_wq.h      |  2 +-\n drivers/net/hinic/hinic_pmd_ethdev.c       |  7 ++++--\n drivers/net/hinic/hinic_pmd_rx.c           | 28 +++++++++++-----------\n drivers/net/hinic/hinic_pmd_rx.h           |  5 +++-\n drivers/net/hinic/hinic_pmd_tx.c           | 11 +++++----\n drivers/net/hinic/hinic_pmd_tx.h           |  4 +++-\n 15 files changed, 81 insertions(+), 71 deletions(-)",
    "diff": "diff --git a/drivers/net/hinic/base/hinic_compat.h b/drivers/net/hinic/base/hinic_compat.h\nindex b72e8cf..921b830 100644\n--- a/drivers/net/hinic/base/hinic_compat.h\n+++ b/drivers/net/hinic/base/hinic_compat.h\n@@ -149,22 +149,25 @@ static inline int hinic_test_and_set_bit(int nr, volatile unsigned long *addr)\n }\n \n void *dma_zalloc_coherent(void *dev, size_t size, dma_addr_t *dma_handle,\n-\t\t\t  gfp_t flag);\n-void *dma_zalloc_coherent_aligned(void *dev, size_t size,\n-\t\t\t\tdma_addr_t *dma_handle, gfp_t flag);\n-void *dma_zalloc_coherent_aligned256k(void *dev, size_t size,\n-\t\t\t\tdma_addr_t *dma_handle, gfp_t flag);\n+\t\t\t  unsigned int socket_id);\n+\n+void *dma_zalloc_coherent_aligned(void *hwdev, size_t size,\n+\t\tdma_addr_t *dma_handle, unsigned int socket_id);\n+\n+void *dma_zalloc_coherent_aligned256k(void *hwdev, size_t size,\n+\t\t\t      dma_addr_t *dma_handle, unsigned int socket_id);\n+\n void dma_free_coherent(void *dev, size_t size, void *virt, dma_addr_t phys);\n \n /* dma pool alloc and free */\n #define\tpci_pool dma_pool\n-#define\tpci_pool_alloc(pool, flags, handle) dma_pool_alloc(pool, flags, handle)\n+#define\tpci_pool_alloc(pool, handle) dma_pool_alloc(pool, handle)\n #define\tpci_pool_free(pool, vaddr, addr) dma_pool_free(pool, vaddr, addr)\n \n struct dma_pool *dma_pool_create(const char *name, void *dev, size_t size,\n \t\t\t\tsize_t align, size_t boundary);\n void dma_pool_destroy(struct dma_pool *pool);\n-void *dma_pool_alloc(struct pci_pool *pool, int flags, dma_addr_t *dma_addr);\n+void *dma_pool_alloc(struct pci_pool *pool, dma_addr_t *dma_addr);\n void dma_pool_free(struct pci_pool *pool, void *vaddr, dma_addr_t dma);\n \n #define kzalloc(size, flag) rte_zmalloc(NULL, size, HINIC_MEM_ALLOC_ALIGN_MIN)\ndiff --git a/drivers/net/hinic/base/hinic_pmd_api_cmd.c b/drivers/net/hinic/base/hinic_pmd_api_cmd.c\nindex dbffc2e..b72edc0 100644\n--- a/drivers/net/hinic/base/hinic_pmd_api_cmd.c\n+++ b/drivers/net/hinic/base/hinic_pmd_api_cmd.c\n@@ -658,7 +658,7 @@ static int alloc_cmd_buf(struct hinic_api_cmd_chain *chain,\n \n \tcmd_vaddr_alloc = dma_zalloc_coherent(dev, (API_CMD_BUF_SIZE +\n \t\t\t\t\t      API_PAYLOAD_ALIGN_SIZE),\n-\t\t\t\t\t      &cmd_paddr, GFP_KERNEL);\n+\t\t\t\t\t      &cmd_paddr, SOCKET_ID_ANY);\n \tif (!cmd_vaddr_alloc) {\n \t\tPMD_DRV_LOG(ERR, \"Allocate API CMD dma memory failed\");\n \t\treturn -ENOMEM;\n@@ -712,7 +712,7 @@ static int api_cmd_create_cell(struct hinic_api_cmd_chain *chain,\n \n \tnode_vaddr_alloc = dma_zalloc_coherent(dev, (chain->cell_size +\n \t\t\t\t\t       API_CMD_NODE_ALIGN_SIZE),\n-\t\t\t\t\t       &node_paddr, GFP_KERNEL);\n+\t\t\t\t\t       &node_paddr, SOCKET_ID_ANY);\n \tif (!node_vaddr_alloc) {\n \t\tPMD_DRV_LOG(ERR, \"Allocate dma API CMD cell failed\");\n \t\treturn -ENOMEM;\n@@ -889,8 +889,7 @@ static int api_chain_init(struct hinic_api_cmd_chain *chain,\n \n \tchain->wb_status = (struct hinic_api_cmd_status *)\n \t\t\t   dma_zalloc_coherent(dev, sizeof(*chain->wb_status),\n-\t\t\t\t\t       &chain->wb_status_paddr,\n-\t\t\t\t\t       GFP_KERNEL);\n+\t\t\t\t&chain->wb_status_paddr, SOCKET_ID_ANY);\n \tif (!chain->wb_status) {\n \t\tPMD_DRV_LOG(ERR, \"Allocate DMA wb status failed\");\n \t\terr = -ENOMEM;\ndiff --git a/drivers/net/hinic/base/hinic_pmd_cmdq.c b/drivers/net/hinic/base/hinic_pmd_cmdq.c\nindex eb8de24..d73e2bf 100644\n--- a/drivers/net/hinic/base/hinic_pmd_cmdq.c\n+++ b/drivers/net/hinic/base/hinic_pmd_cmdq.c\n@@ -171,8 +171,7 @@ struct hinic_cmd_buf *hinic_alloc_cmd_buf(void *hwdev)\n \t\treturn NULL;\n \t}\n \n-\tcmd_buf->buf = pci_pool_alloc(cmdqs->cmd_buf_pool, GFP_KERNEL,\n-\t\t\t\t      &cmd_buf->dma_addr);\n+\tcmd_buf->buf = pci_pool_alloc(cmdqs->cmd_buf_pool, &cmd_buf->dma_addr);\n \tif (!cmd_buf->buf) {\n \t\tPMD_DRV_LOG(ERR, \"Allocate cmd from the pool failed\");\n \t\tgoto alloc_pci_buf_err;\ndiff --git a/drivers/net/hinic/base/hinic_pmd_eqs.c b/drivers/net/hinic/base/hinic_pmd_eqs.c\nindex abe0dae..79e1b20 100644\n--- a/drivers/net/hinic/base/hinic_pmd_eqs.c\n+++ b/drivers/net/hinic/base/hinic_pmd_eqs.c\n@@ -240,7 +240,7 @@ static int alloc_eq_pages(struct hinic_eq *eq)\n \t\teq->virt_addr[pg_num] =\n \t\t\t(u8 *)dma_zalloc_coherent_aligned(eq->hwdev,\n \t\t\t\t\teq->page_size, &eq->dma_addr[pg_num],\n-\t\t\t\t\tGFP_KERNEL);\n+\t\t\t\t\tSOCKET_ID_ANY);\n \t\tif (!eq->virt_addr[pg_num]) {\n \t\t\terr = -ENOMEM;\n \t\t\tgoto dma_alloc_err;\ndiff --git a/drivers/net/hinic/base/hinic_pmd_hwdev.c b/drivers/net/hinic/base/hinic_pmd_hwdev.c\nindex fd0292f..cf2a970 100644\n--- a/drivers/net/hinic/base/hinic_pmd_hwdev.c\n+++ b/drivers/net/hinic/base/hinic_pmd_hwdev.c\n@@ -112,9 +112,9 @@ void hinic_be32_to_cpu(void *data, u32 len)\n \t}\n }\n \n-static void *\n-hinic_dma_mem_zalloc(struct hinic_hwdev *hwdev, size_t size,\n-\t\tdma_addr_t *dma_handle, unsigned int flag, unsigned int align)\n+static void *hinic_dma_mem_zalloc(struct hinic_hwdev *hwdev, size_t size,\n+\t\t\t   dma_addr_t *dma_handle, unsigned int align,\n+\t\t\t   unsigned int socket_id)\n {\n \tint rc, alloc_cnt;\n \tconst struct rte_memzone *mz;\n@@ -129,8 +129,8 @@ void hinic_be32_to_cpu(void *data, u32 len)\n \tsnprintf(z_name, sizeof(z_name), \"%s_%d\",\n \t\t hwdev->pcidev_hdl->name, alloc_cnt);\n \n-\tmz = rte_memzone_reserve_aligned(z_name, size, SOCKET_ID_ANY,\n-\t\t\t\t\t flag, align);\n+\tmz = rte_memzone_reserve_aligned(z_name, size, socket_id,\n+\t\t\t\t\t RTE_MEMZONE_IOVA_CONTIG, align);\n \tif (!mz) {\n \t\tPMD_DRV_LOG(ERR, \"Alloc dma able memory failed, errno: %d, ma_name: %s, size: 0x%zx\",\n \t\t\t    rte_errno, z_name, size);\n@@ -209,25 +209,26 @@ void hinic_be32_to_cpu(void *data, u32 len)\n \t(void)rte_memzone_free(mz);\n }\n \n-void *dma_zalloc_coherent(void *hwdev, size_t size,\n-\t\t\t  dma_addr_t *dma_handle, gfp_t flag)\n+void *dma_zalloc_coherent(void *hwdev, size_t size, dma_addr_t *dma_handle,\n+\t\t\t  unsigned int socket_id)\n {\n-\treturn hinic_dma_mem_zalloc(hwdev, size, dma_handle, flag,\n-\t\t\t\t    RTE_CACHE_LINE_SIZE);\n+\treturn hinic_dma_mem_zalloc(hwdev, size, dma_handle,\n+\t\t\t\t    RTE_CACHE_LINE_SIZE, socket_id);\n }\n \n void *dma_zalloc_coherent_aligned(void *hwdev, size_t size,\n-\t\t\t\t  dma_addr_t *dma_handle, gfp_t flag)\n+\t\t\t\tdma_addr_t *dma_handle, unsigned int socket_id)\n {\n-\treturn hinic_dma_mem_zalloc(hwdev, size, dma_handle, flag,\n-\t\t\t\t    HINIC_PAGE_SIZE);\n+\treturn hinic_dma_mem_zalloc(hwdev, size, dma_handle, HINIC_PAGE_SIZE,\n+\t\t\t\t    socket_id);\n }\n \n void *dma_zalloc_coherent_aligned256k(void *hwdev, size_t size,\n-\t\t\t\t      dma_addr_t *dma_handle, gfp_t flag)\n+\t\t\t\t      dma_addr_t *dma_handle,\n+\t\t\t\t      unsigned int socket_id)\n {\n-\treturn hinic_dma_mem_zalloc(hwdev, size, dma_handle, flag,\n-\t\t\t\t    HINIC_PAGE_SIZE * 64);\n+\treturn hinic_dma_mem_zalloc(hwdev, size, dma_handle,\n+\t\t\t\t    HINIC_PAGE_SIZE * 64, socket_id);\n }\n \n void dma_free_coherent(void *hwdev, size_t size, void *virt, dma_addr_t phys)\n@@ -304,12 +305,12 @@ void dma_pool_destroy(struct dma_pool *pool)\n \trte_free(pool);\n }\n \n-void *dma_pool_alloc(struct pci_pool *pool, int flags, dma_addr_t *dma_addr)\n+void *dma_pool_alloc(struct pci_pool *pool, dma_addr_t *dma_addr)\n {\n \tvoid *buf;\n \n-\tbuf = hinic_dma_mem_zalloc(pool->hwdev, pool->elem_size,\n-\t\t\t\t   dma_addr, flags, (u32)pool->align);\n+\tbuf = hinic_dma_mem_zalloc(pool->hwdev, pool->elem_size, dma_addr,\n+\t\t\t\t(u32)pool->align, SOCKET_ID_ANY);\n \tif (buf)\n \t\trte_atomic32_inc(&pool->inuse);\n \ndiff --git a/drivers/net/hinic/base/hinic_pmd_hwdev.h b/drivers/net/hinic/base/hinic_pmd_hwdev.h\nindex ac21947..d6896b3 100644\n--- a/drivers/net/hinic/base/hinic_pmd_hwdev.h\n+++ b/drivers/net/hinic/base/hinic_pmd_hwdev.h\n@@ -442,7 +442,6 @@ struct hinic_hwdev {\n \tstruct hinic_msg_pf_to_mgmt *pf_to_mgmt;\n \tstruct hinic_cmdqs *cmdqs;\n \tstruct hinic_nic_io *nic_io;\n-\n };\n \n int hinic_osdep_init(struct hinic_hwdev *hwdev);\ndiff --git a/drivers/net/hinic/base/hinic_pmd_mbox.c b/drivers/net/hinic/base/hinic_pmd_mbox.c\nindex 3d3c1bc..935d60b 100644\n--- a/drivers/net/hinic/base/hinic_pmd_mbox.c\n+++ b/drivers/net/hinic/base/hinic_pmd_mbox.c\n@@ -404,10 +404,8 @@ static int alloc_mbox_wb_status(struct hinic_mbox_func_to_func *func_to_func)\n \tstruct hinic_hwif *hwif = hwdev->hwif;\n \tu32 addr_h, addr_l;\n \n-\tsend_mbox->wb_vaddr = dma_zalloc_coherent(hwdev,\n-\t\t\t\t  MBOX_WB_STATUS_LEN,\n-\t\t\t\t  &send_mbox->wb_paddr,\n-\t\t\t\t  GFP_KERNEL);\n+\tsend_mbox->wb_vaddr = dma_zalloc_coherent(hwdev, MBOX_WB_STATUS_LEN,\n+\t\t\t\t\t&send_mbox->wb_paddr, SOCKET_ID_ANY);\n \tif (!send_mbox->wb_vaddr) {\n \t\tPMD_DRV_LOG(ERR, \"Allocating memory for mailbox wb status failed\");\n \t\treturn -ENOMEM;\ndiff --git a/drivers/net/hinic/base/hinic_pmd_nicio.c b/drivers/net/hinic/base/hinic_pmd_nicio.c\nindex f6cc033..59e39ed 100644\n--- a/drivers/net/hinic/base/hinic_pmd_nicio.c\n+++ b/drivers/net/hinic/base/hinic_pmd_nicio.c\n@@ -728,9 +728,10 @@ void hinic_update_rq_local_ci(struct hinic_hwdev *hwdev, u16 q_id, int wqe_cnt)\n \n static int hinic_alloc_nicio(struct hinic_hwdev *hwdev)\n {\n-\tint err;\n-\tu16 max_qps, num_qp;\n \tstruct hinic_nic_io *nic_io = hwdev->nic_io;\n+\tstruct rte_pci_device *pdev = hwdev->pcidev_hdl;\n+\tu16 max_qps, num_qp;\n+\tint err;\n \n \tmax_qps = hinic_func_max_qnum(hwdev);\n \tif ((max_qps & (max_qps - 1))) {\n@@ -751,10 +752,10 @@ static int hinic_alloc_nicio(struct hinic_hwdev *hwdev)\n \t\tgoto alloc_qps_err;\n \t}\n \n-\tnic_io->ci_vaddr_base =\n-\t\tdma_zalloc_coherent(hwdev,\n+\tnic_io->ci_vaddr_base = dma_zalloc_coherent(hwdev,\n \t\t\t\t    CI_TABLE_SIZE(num_qp, HINIC_PAGE_SIZE),\n-\t\t\t\t    &nic_io->ci_dma_base, GFP_KERNEL);\n+\t\t\t\t    &nic_io->ci_dma_base,\n+\t\t\t\t    pdev->device.numa_node);\n \tif (!nic_io->ci_vaddr_base) {\n \t\tPMD_DRV_LOG(ERR, \"Failed to allocate ci area\");\n \t\terr = -ENOMEM;\ndiff --git a/drivers/net/hinic/base/hinic_pmd_wq.c b/drivers/net/hinic/base/hinic_pmd_wq.c\nindex 04c81f9..345248c 100644\n--- a/drivers/net/hinic/base/hinic_pmd_wq.c\n+++ b/drivers/net/hinic/base/hinic_pmd_wq.c\n@@ -15,13 +15,14 @@ static void free_wq_pages(struct hinic_hwdev *hwdev, struct hinic_wq *wq)\n \twq->queue_buf_vaddr = 0;\n }\n \n-static int alloc_wq_pages(struct hinic_hwdev *hwdev, struct hinic_wq *wq)\n+static int alloc_wq_pages(struct hinic_hwdev *hwdev, struct hinic_wq *wq,\n+\t\t\tunsigned int socket_id)\n {\n \tdma_addr_t dma_addr = 0;\n \n \twq->queue_buf_vaddr = (u64)(u64 *)\n \t\tdma_zalloc_coherent_aligned256k(hwdev, wq->wq_buf_size,\n-\t\t\t\t\t\t&dma_addr, GFP_KERNEL);\n+\t\t\t\t\t\t&dma_addr, socket_id);\n \tif (!wq->queue_buf_vaddr) {\n \t\tPMD_DRV_LOG(ERR, \"Failed to allocate wq page\");\n \t\treturn -ENOMEM;\n@@ -40,7 +41,7 @@ static int alloc_wq_pages(struct hinic_hwdev *hwdev, struct hinic_wq *wq)\n }\n \n int hinic_wq_allocate(struct hinic_hwdev *hwdev, struct hinic_wq *wq,\n-\t\t      u32 wqebb_shift, u16 q_depth)\n+\t\t      u32 wqebb_shift, u16 q_depth, unsigned int socket_id)\n {\n \tint err;\n \n@@ -60,7 +61,7 @@ int hinic_wq_allocate(struct hinic_hwdev *hwdev, struct hinic_wq *wq,\n \t\treturn -EINVAL;\n \t}\n \n-\terr = alloc_wq_pages(hwdev, wq);\n+\terr = alloc_wq_pages(hwdev, wq, socket_id);\n \tif (err) {\n \t\tPMD_DRV_LOG(ERR, \"Failed to allocate wq pages\");\n \t\treturn err;\n@@ -114,7 +115,7 @@ int hinic_cmdq_alloc(struct hinic_wq *wq, struct hinic_hwdev *hwdev,\n \t\twq[i].wq_buf_size = wq_buf_size;\n \t\twq[i].q_depth = q_depth;\n \n-\t\terr = alloc_wq_pages(hwdev, &wq[i]);\n+\t\terr = alloc_wq_pages(hwdev, &wq[i], SOCKET_ID_ANY);\n \t\tif (err) {\n \t\t\tPMD_DRV_LOG(ERR, \"Failed to alloc CMDQ blocks\");\n \t\t\tgoto cmdq_block_err;\ndiff --git a/drivers/net/hinic/base/hinic_pmd_wq.h b/drivers/net/hinic/base/hinic_pmd_wq.h\nindex 53ecc22..354d033 100644\n--- a/drivers/net/hinic/base/hinic_pmd_wq.h\n+++ b/drivers/net/hinic/base/hinic_pmd_wq.h\n@@ -122,7 +122,7 @@ void hinic_cmdq_free(struct hinic_hwdev *hwdev, struct hinic_wq *wq,\n \t\t     int cmdq_blocks);\n \n int hinic_wq_allocate(struct hinic_hwdev *hwdev, struct hinic_wq *wq,\n-\t\t      u32 wqebb_shift, u16 q_depth);\n+\t\t      u32 wqebb_shift, u16 q_depth, unsigned int socket_id);\n \n void hinic_wq_free(struct hinic_hwdev *hwdev, struct hinic_wq *wq);\n \ndiff --git a/drivers/net/hinic/hinic_pmd_ethdev.c b/drivers/net/hinic/hinic_pmd_ethdev.c\nindex 803a39e..8493f6e 100644\n--- a/drivers/net/hinic/hinic_pmd_ethdev.c\n+++ b/drivers/net/hinic/hinic_pmd_ethdev.c\n@@ -57,6 +57,7 @@\n #define HINIC_DEFAULT_BURST_SIZE\t32\n #define HINIC_DEFAULT_NB_QUEUES\t\t1\n #define HINIC_DEFAULT_RING_SIZE\t\t1024\n+#define HINIC_MAX_LRO_SIZE\t\t65536\n \n /*\n  * vlan_id is a 12 bit number.\n@@ -439,7 +440,7 @@ static int hinic_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,\n \tnic_dev->rxqs[queue_idx] = rxq;\n \n \t/* alloc rx sq hw wqepage*/\n-\trc = hinic_create_rq(hwdev, queue_idx, rq_depth);\n+\trc = hinic_create_rq(hwdev, queue_idx, rq_depth, socket_id);\n \tif (rc) {\n \t\tPMD_DRV_LOG(ERR, \"Create rxq[%d] failed, dev_name: %s, rq_depth: %d\",\n \t\t\t    queue_idx, dev->data->name, rq_depth);\n@@ -466,6 +467,7 @@ static int hinic_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,\n \trxq->q_depth = rq_depth;\n \trxq->buf_len = (u16)buf_size;\n \trxq->rx_free_thresh = rx_free_thresh;\n+\trxq->socket_id = socket_id;\n \n \t/* the last point cant do mbuf rearm in bulk */\n \trxq->rxinfo_align_end = rxq->q_depth - rxq->rx_free_thresh;\n@@ -593,7 +595,7 @@ static int hinic_tx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,\n \tnic_dev->txqs[queue_idx] = txq;\n \n \t/* alloc tx sq hw wqepage */\n-\trc = hinic_create_sq(hwdev, queue_idx, sq_depth);\n+\trc = hinic_create_sq(hwdev, queue_idx, sq_depth, socket_id);\n \tif (rc) {\n \t\tPMD_DRV_LOG(ERR, \"Create txq[%d] failed, dev_name: %s, sq_depth: %d\",\n \t\t\t    queue_idx, dev->data->name, sq_depth);\n@@ -612,6 +614,7 @@ static int hinic_tx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,\n \ttxq->sq_bot_sge_addr = HINIC_GET_WQ_TAIL(txq) -\n \t\t\t\t\tsizeof(struct hinic_sq_bufdesc);\n \ttxq->cos = nic_dev->default_cos;\n+\ttxq->socket_id = socket_id;\n \n \t/* alloc software txinfo */\n \trc = hinic_setup_tx_resources(txq);\ndiff --git a/drivers/net/hinic/hinic_pmd_rx.c b/drivers/net/hinic/hinic_pmd_rx.c\nindex f865f2f..f1b873a 100644\n--- a/drivers/net/hinic/hinic_pmd_rx.c\n+++ b/drivers/net/hinic/hinic_pmd_rx.c\n@@ -209,7 +209,8 @@ void hinic_get_func_rx_buf_size(struct hinic_nic_dev *nic_dev)\n \tnic_dev->hwdev->nic_io->rq_buf_size = buf_size;\n }\n \n-int hinic_create_rq(struct hinic_hwdev *hwdev, u16 q_id, u16 rq_depth)\n+int hinic_create_rq(struct hinic_hwdev *hwdev, u16 q_id,\n+\t\t\tu16 rq_depth, unsigned int socket_id)\n {\n \tint err;\n \tstruct hinic_nic_io *nic_io = hwdev->nic_io;\n@@ -223,17 +224,15 @@ int hinic_create_rq(struct hinic_hwdev *hwdev, u16 q_id, u16 rq_depth)\n \tnic_io->rq_depth = rq_depth;\n \n \terr = hinic_wq_allocate(hwdev, &nic_io->rq_wq[q_id],\n-\t\t\t\tHINIC_RQ_WQEBB_SHIFT, nic_io->rq_depth);\n+\t\t\tHINIC_RQ_WQEBB_SHIFT, nic_io->rq_depth, socket_id);\n \tif (err) {\n \t\tPMD_DRV_LOG(ERR, \"Failed to allocate WQ for RQ\");\n \t\treturn err;\n \t}\n \trq->wq = &nic_io->rq_wq[q_id];\n \n-\trq->pi_virt_addr =\n-\t\t(volatile u16 *)dma_zalloc_coherent(hwdev, HINIC_PAGE_SIZE,\n-\t\t\t\t\t\t    &rq->pi_dma_addr,\n-\t\t\t\t\t\t    GFP_KERNEL);\n+\trq->pi_virt_addr = (volatile u16 *)dma_zalloc_coherent(hwdev,\n+\t\t\tHINIC_PAGE_SIZE, &rq->pi_dma_addr, socket_id);\n \tif (!rq->pi_virt_addr) {\n \t\tPMD_DRV_LOG(ERR, \"Failed to allocate rq pi virt addr\");\n \t\terr = -ENOMEM;\n@@ -305,15 +304,13 @@ void hinic_rxq_stats_reset(struct hinic_rxq *rxq)\n \tmemset(rxq_stats, 0, sizeof(*rxq_stats));\n }\n \n-static int hinic_rx_alloc_cqe(struct hinic_rxq *rxq)\n+static int hinic_rx_alloc_cqe(struct hinic_rxq *rxq, unsigned int socket_id)\n {\n \tsize_t cqe_mem_size;\n \n \tcqe_mem_size = sizeof(struct hinic_rq_cqe) * rxq->q_depth;\n-\trxq->cqe_start_vaddr =\n-\t\tdma_zalloc_coherent(rxq->nic_dev->hwdev,\n-\t\t\t\t    cqe_mem_size, &rxq->cqe_start_paddr,\n-\t\t\t\t    GFP_KERNEL);\n+\trxq->cqe_start_vaddr = dma_zalloc_coherent(rxq->nic_dev->hwdev,\n+\t\t\t\tcqe_mem_size, &rxq->cqe_start_paddr, socket_id);\n \tif (!rxq->cqe_start_vaddr) {\n \t\tPMD_DRV_LOG(ERR, \"Allocate cqe dma memory failed\");\n \t\treturn -ENOMEM;\n@@ -369,11 +366,12 @@ int hinic_setup_rx_resources(struct hinic_rxq *rxq)\n \tint err, pkts;\n \n \trx_info_sz = rxq->q_depth * sizeof(*rxq->rx_info);\n-\trxq->rx_info = kzalloc_aligned(rx_info_sz, GFP_KERNEL);\n+\trxq->rx_info = rte_zmalloc_socket(\"rx_info\", rx_info_sz,\n+\t\t\t\tRTE_CACHE_LINE_SIZE, rxq->socket_id);\n \tif (!rxq->rx_info)\n \t\treturn -ENOMEM;\n \n-\terr = hinic_rx_alloc_cqe(rxq);\n+\terr = hinic_rx_alloc_cqe(rxq, rxq->socket_id);\n \tif (err) {\n \t\tPMD_DRV_LOG(ERR, \"Allocate rx cqe failed\");\n \t\tgoto rx_cqe_err;\n@@ -392,7 +390,7 @@ int hinic_setup_rx_resources(struct hinic_rxq *rxq)\n \thinic_rx_free_cqe(rxq);\n \n rx_cqe_err:\n-\tkfree(rxq->rx_info);\n+\trte_free(rxq->rx_info);\n \trxq->rx_info = NULL;\n \n \treturn err;\n@@ -404,7 +402,7 @@ void hinic_free_rx_resources(struct hinic_rxq *rxq)\n \t\treturn;\n \n \thinic_rx_free_cqe(rxq);\n-\tkfree(rxq->rx_info);\n+\trte_free(rxq->rx_info);\n \trxq->rx_info = NULL;\n }\n \ndiff --git a/drivers/net/hinic/hinic_pmd_rx.h b/drivers/net/hinic/hinic_pmd_rx.h\nindex 1a80f95..49fa565 100644\n--- a/drivers/net/hinic/hinic_pmd_rx.h\n+++ b/drivers/net/hinic/hinic_pmd_rx.h\n@@ -82,6 +82,8 @@ struct hinic_rxq {\n \tu16 rx_free_thresh;\n \tu16 rxinfo_align_end;\n \n+\tu32 socket_id;\n+\n \tunsigned long status;\n \tstruct hinic_rxq_stats rxq_stats;\n \n@@ -121,7 +123,8 @@ struct hinic_rxq {\n \n void hinic_get_func_rx_buf_size(struct hinic_nic_dev *nic_dev);\n \n-int hinic_create_rq(struct hinic_hwdev *hwdev, u16 q_id, u16 rq_depth);\n+int hinic_create_rq(struct hinic_hwdev *hwdev, u16 q_id,\n+\t\t\tu16 rq_depth, unsigned int socket_id);\n \n void hinic_destroy_rq(struct hinic_hwdev *hwdev, u16 q_id);\n \ndiff --git a/drivers/net/hinic/hinic_pmd_tx.c b/drivers/net/hinic/hinic_pmd_tx.c\nindex 985540a..64ec2c1 100644\n--- a/drivers/net/hinic/hinic_pmd_tx.c\n+++ b/drivers/net/hinic/hinic_pmd_tx.c\n@@ -1216,7 +1216,8 @@ int hinic_setup_tx_resources(struct hinic_txq *txq)\n \tu64 tx_info_sz;\n \n \ttx_info_sz = txq->q_depth * sizeof(*txq->tx_info);\n-\ttxq->tx_info = kzalloc_aligned(tx_info_sz, GFP_KERNEL);\n+\ttxq->tx_info = rte_zmalloc_socket(\"tx_info\", tx_info_sz,\n+\t\t\tRTE_CACHE_LINE_SIZE, txq->socket_id);\n \tif (!txq->tx_info)\n \t\treturn -ENOMEM;\n \n@@ -1228,11 +1229,12 @@ void hinic_free_tx_resources(struct hinic_txq *txq)\n \tif (txq->tx_info == NULL)\n \t\treturn;\n \n-\tkfree(txq->tx_info);\n+\trte_free(txq->tx_info);\n \ttxq->tx_info = NULL;\n }\n \n-int hinic_create_sq(struct hinic_hwdev *hwdev, u16 q_id, u16 sq_depth)\n+int hinic_create_sq(struct hinic_hwdev *hwdev, u16 q_id,\n+\t\t\tu16 sq_depth, unsigned int socket_id)\n {\n \tint err;\n \tstruct hinic_nic_io *nic_io = hwdev->nic_io;\n@@ -1246,7 +1248,8 @@ int hinic_create_sq(struct hinic_hwdev *hwdev, u16 q_id, u16 sq_depth)\n \n \t/* alloc wq */\n \terr = hinic_wq_allocate(nic_io->hwdev, &nic_io->sq_wq[q_id],\n-\t\t\t\tHINIC_SQ_WQEBB_SHIFT, nic_io->sq_depth);\n+\t\t\t\tHINIC_SQ_WQEBB_SHIFT, nic_io->sq_depth,\n+\t\t\t\tsocket_id);\n \tif (err) {\n \t\tPMD_DRV_LOG(ERR, \"Failed to allocate WQ for SQ\");\n \t\treturn err;\ndiff --git a/drivers/net/hinic/hinic_pmd_tx.h b/drivers/net/hinic/hinic_pmd_tx.h\nindex a1ca580..dabbc6c 100644\n--- a/drivers/net/hinic/hinic_pmd_tx.h\n+++ b/drivers/net/hinic/hinic_pmd_tx.h\n@@ -114,6 +114,7 @@ struct hinic_txq {\n \tu16 q_id;\n \tu16 q_depth;\n \tu32 cos;\n+\tu32 socket_id;\n \n \t/* cacheline1 */\n \tstruct hinic_txq_stats txq_stats;\n@@ -137,7 +138,8 @@ struct hinic_txq {\n \n void hinic_txq_stats_reset(struct hinic_txq *txq);\n \n-int hinic_create_sq(struct hinic_hwdev *hwdev, u16 q_id, u16 sq_depth);\n+int hinic_create_sq(struct hinic_hwdev *hwdev, u16 q_id,\n+\t\t\tu16 sq_depth, unsigned int socket_id);\n \n void hinic_destroy_sq(struct hinic_hwdev *hwdev, u16 q_id);\n \n",
    "prefixes": [
        "v1",
        "1/1"
    ]
}