get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 66534,
    "url": "http://patches.dpdk.org/api/patches/66534/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/8588b54e1962e4c92f8f31543308cfe9d8942ace.1583906144.git.kaara.satwik@chelsio.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": "<8588b54e1962e4c92f8f31543308cfe9d8942ace.1583906144.git.kaara.satwik@chelsio.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/8588b54e1962e4c92f8f31543308cfe9d8942ace.1583906144.git.kaara.satwik@chelsio.com",
    "date": "2020-03-11T09:05:47",
    "name": "[5/9] net/cxgbe: add rte_flow support for overwriting destination MAC",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "cbad82df4297b1b52bfa775a77579577e33c3601",
    "submitter": {
        "id": 241,
        "url": "http://patches.dpdk.org/api/people/241/?format=api",
        "name": "Rahul Lakkireddy",
        "email": "rahul.lakkireddy@chelsio.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/8588b54e1962e4c92f8f31543308cfe9d8942ace.1583906144.git.kaara.satwik@chelsio.com/mbox/",
    "series": [
        {
            "id": 8880,
            "url": "http://patches.dpdk.org/api/series/8880/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=8880",
            "date": "2020-03-11T09:05:42",
            "name": "net/cxgbe: updates for rte_flow support",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/8880/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/66534/comments/",
    "check": "fail",
    "checks": "http://patches.dpdk.org/api/patches/66534/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 77864A0567;\n\tWed, 11 Mar 2020 10:17:33 +0100 (CET)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 745871C05C;\n\tWed, 11 Mar 2020 10:16:54 +0100 (CET)",
            "from stargate.chelsio.com (stargate.chelsio.com [12.32.117.8])\n by dpdk.org (Postfix) with ESMTP id D29021C05C\n for <dev@dpdk.org>; Wed, 11 Mar 2020 10:16:52 +0100 (CET)",
            "from localhost (scalar.blr.asicdesigners.com [10.193.185.94])\n by stargate.chelsio.com (8.13.8/8.13.8) with ESMTP id 02B9GoWx014336;\n Wed, 11 Mar 2020 02:16:51 -0700"
        ],
        "From": "Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>",
        "To": "dev@dpdk.org",
        "Cc": "nirranjan@chelsio.com, kaara.satwik@chelsio.com",
        "Date": "Wed, 11 Mar 2020 14:35:47 +0530",
        "Message-Id": "\n <8588b54e1962e4c92f8f31543308cfe9d8942ace.1583906144.git.kaara.satwik@chelsio.com>",
        "X-Mailer": "git-send-email 2.5.3",
        "In-Reply-To": [
            "<cover.1583906144.git.kaara.satwik@chelsio.com>",
            "<cover.1583906144.git.kaara.satwik@chelsio.com>"
        ],
        "References": [
            "<cover.1583906144.git.kaara.satwik@chelsio.com>",
            "<cover.1583906144.git.kaara.satwik@chelsio.com>"
        ],
        "Subject": "[dpdk-dev] [PATCH 5/9] net/cxgbe: add rte_flow support for\n\toverwriting destination MAC",
        "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": "From: Karra Satwik <kaara.satwik@chelsio.com>\n\nAdd support for overwriting destination MAC addresses.\nThe new MAC address is written into a free entry in the\nL2T table and the corresponding L2T index is used by\nhardware to overwrite the destination MAC address of the\npackets hitting the flow\n\nSigned-off-by: Karra Satwik <kaara.satwik@chelsio.com>\nSigned-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>\n---\n drivers/net/cxgbe/base/t4_tcb.h  |  2 ++\n drivers/net/cxgbe/cxgbe_filter.c |  8 ++++++--\n drivers/net/cxgbe/cxgbe_filter.h |  1 +\n drivers/net/cxgbe/cxgbe_flow.c   | 14 ++++++++++++++\n 4 files changed, 23 insertions(+), 2 deletions(-)",
    "diff": "diff --git a/drivers/net/cxgbe/base/t4_tcb.h b/drivers/net/cxgbe/base/t4_tcb.h\nindex 3c590e053..834169ab4 100644\n--- a/drivers/net/cxgbe/base/t4_tcb.h\n+++ b/drivers/net/cxgbe/base/t4_tcb.h\n@@ -32,6 +32,8 @@\n #define M_TCB_T_RTSEQ_RECENT    0xffffffffULL\n #define V_TCB_T_RTSEQ_RECENT(x) ((x) << S_TCB_T_RTSEQ_RECENT)\n \n+#define S_TF_CCTRL_ECE    60\n+\n #define S_TF_CCTRL_RFR    62\n \n #endif /* _T4_TCB_DEFS_H */\ndiff --git a/drivers/net/cxgbe/cxgbe_filter.c b/drivers/net/cxgbe/cxgbe_filter.c\nindex 9c10520b2..b009217f8 100644\n--- a/drivers/net/cxgbe/cxgbe_filter.c\n+++ b/drivers/net/cxgbe/cxgbe_filter.c\n@@ -593,7 +593,7 @@ static int cxgbe_set_hash_filter(struct rte_eth_dev *dev,\n \t * rewriting then we need to allocate a Layer 2 Table (L2T) entry for\n \t * the filter.\n \t */\n-\tif (f->fs.newvlan == VLAN_INSERT ||\n+\tif (f->fs.newdmac || f->fs.newvlan == VLAN_INSERT ||\n \t    f->fs.newvlan == VLAN_REWRITE) {\n \t\t/* allocate L2T entry for new filter */\n \t\tf->l2t = cxgbe_l2t_alloc_switching(dev, f->fs.vlan,\n@@ -749,10 +749,11 @@ static int set_filter_wr(struct rte_eth_dev *dev, unsigned int fidx)\n \t * rewriting then we need to allocate a Layer 2 Table (L2T) entry for\n \t * the filter.\n \t */\n-\tif (f->fs.newvlan) {\n+\tif (f->fs.newvlan || f->fs.newdmac) {\n \t\t/* allocate L2T entry for new filter */\n \t\tf->l2t = cxgbe_l2t_alloc_switching(f->dev, f->fs.vlan,\n \t\t\t\t\t\t   f->fs.eport, f->fs.dmac);\n+\n \t\tif (!f->l2t)\n \t\t\treturn -ENOMEM;\n \t}\n@@ -787,6 +788,7 @@ static int set_filter_wr(struct rte_eth_dev *dev, unsigned int fidx)\n \t\tcpu_to_be32(V_FW_FILTER_WR_DROP(f->fs.action == FILTER_DROP) |\n \t\t\t    V_FW_FILTER_WR_DIRSTEER(f->fs.dirsteer) |\n \t\t\t    V_FW_FILTER_WR_LPBK(f->fs.action == FILTER_SWITCH) |\n+\t\t\t    V_FW_FILTER_WR_DMAC(f->fs.newdmac) |\n \t\t\t    V_FW_FILTER_WR_INSVLAN\n \t\t\t\t(f->fs.newvlan == VLAN_INSERT ||\n \t\t\t\t f->fs.newvlan == VLAN_REWRITE) |\n@@ -1137,6 +1139,8 @@ void cxgbe_hash_filter_rpl(struct adapter *adap,\n \t\t\t\t      V_TCB_TIMESTAMP(0ULL) |\n \t\t\t\t      V_TCB_T_RTT_TS_RECENT_AGE(0ULL),\n \t\t\t\t      1);\n+\t\tif (f->fs.newdmac)\n+\t\t\tset_tcb_tflag(adap, tid, S_TF_CCTRL_ECE, 1, 1);\n \t\tif (f->fs.newvlan == VLAN_INSERT ||\n \t\t    f->fs.newvlan == VLAN_REWRITE)\n \t\t\tset_tcb_tflag(adap, tid, S_TF_CCTRL_RFR, 1, 1);\ndiff --git a/drivers/net/cxgbe/cxgbe_filter.h b/drivers/net/cxgbe/cxgbe_filter.h\nindex 6b1bf25e2..7a1e72ded 100644\n--- a/drivers/net/cxgbe/cxgbe_filter.h\n+++ b/drivers/net/cxgbe/cxgbe_filter.h\n@@ -100,6 +100,7 @@ struct ch_filter_specification {\n \tuint32_t iq:10;\t\t/* ingress queue */\n \n \tuint32_t eport:2;\t/* egress port to switch packet out */\n+\tuint32_t newdmac:1;     /* rewrite destination MAC address */\n \tuint32_t swapmac:1;     /* swap SMAC/DMAC for loopback packet */\n \tuint32_t newvlan:2;     /* rewrite VLAN Tag */\n \tuint8_t dmac[RTE_ETHER_ADDR_LEN];   /* new destination MAC address */\ndiff --git a/drivers/net/cxgbe/cxgbe_flow.c b/drivers/net/cxgbe/cxgbe_flow.c\nindex 3e27a3f68..b009005c5 100644\n--- a/drivers/net/cxgbe/cxgbe_flow.c\n+++ b/drivers/net/cxgbe/cxgbe_flow.c\n@@ -647,6 +647,7 @@ ch_rte_parse_atype_switch(const struct rte_flow_action *a,\n \tconst struct rte_flow_action_set_ipv6 *ipv6;\n \tconst struct rte_flow_action_set_tp *tp_port;\n \tconst struct rte_flow_action_phy_port *port;\n+\tconst struct rte_flow_action_set_mac *mac;\n \tint item_index;\n \tu16 tmp_vlan;\n \n@@ -794,6 +795,18 @@ ch_rte_parse_atype_switch(const struct rte_flow_action *a,\n \t\t\t\t\t\t  \"found\");\n \t\tfs->swapmac = 1;\n \t\tbreak;\n+\tcase RTE_FLOW_ACTION_TYPE_SET_MAC_DST:\n+\t\titem_index = cxgbe_get_flow_item_index(items,\n+\t\t\t\t\t\t       RTE_FLOW_ITEM_TYPE_ETH);\n+\t\tif (item_index < 0)\n+\t\t\treturn rte_flow_error_set(e, EINVAL,\n+\t\t\t\t\t\t  RTE_FLOW_ERROR_TYPE_ACTION, a,\n+\t\t\t\t\t\t  \"No RTE_FLOW_ITEM_TYPE_ETH found\");\n+\t\tmac = (const struct rte_flow_action_set_mac *)a->conf;\n+\n+\t\tfs->newdmac = 1;\n+\t\tmemcpy(fs->dmac, mac->mac_addr, sizeof(fs->dmac));\n+\t\tbreak;\n \tdefault:\n \t\t/* We are not supposed to come here */\n \t\treturn rte_flow_error_set(e, EINVAL,\n@@ -870,6 +883,7 @@ cxgbe_rtef_parse_actions(struct rte_flow *flow,\n \t\t\tgoto action_switch;\n \t\tcase RTE_FLOW_ACTION_TYPE_SET_TP_SRC:\n \t\tcase RTE_FLOW_ACTION_TYPE_SET_TP_DST:\n+\t\tcase RTE_FLOW_ACTION_TYPE_SET_MAC_DST:\n action_switch:\n \t\t\t/* We allow multiple switch actions, but switch is\n \t\t\t * not compatible with either queue or drop\n",
    "prefixes": [
        "5/9"
    ]
}