get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 8528,
    "url": "https://patches.dpdk.org/api/patches/8528/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/1446467130-300-7-git-send-email-alejandro.lucero@netronome.com/",
    "project": {
        "id": 1,
        "url": "https://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": "<1446467130-300-7-git-send-email-alejandro.lucero@netronome.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1446467130-300-7-git-send-email-alejandro.lucero@netronome.com",
    "date": "2015-11-02T12:25:26",
    "name": "[dpdk-dev,v5,6/9] nfp: adding functionality to pmd",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "a512360d5a5469f29aa016dcdd01f3ff35522c28",
    "submitter": {
        "id": 270,
        "url": "https://patches.dpdk.org/api/people/270/?format=api",
        "name": "Alejandro Lucero",
        "email": "alejandro.lucero@netronome.com"
    },
    "delegate": null,
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/1446467130-300-7-git-send-email-alejandro.lucero@netronome.com/mbox/",
    "series": [],
    "comments": "https://patches.dpdk.org/api/patches/8528/comments/",
    "check": "pending",
    "checks": "https://patches.dpdk.org/api/patches/8528/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id 92C3C8E99;\n\tMon,  2 Nov 2015 13:25:35 +0100 (CET)",
            "from ubuntu (host217-39-174-19.in-addr.btopenworld.com\n\t[217.39.174.19]) by dpdk.org (Postfix) with SMTP id C94A28E7D\n\tfor <dev@dpdk.org>; Mon,  2 Nov 2015 13:25:31 +0100 (CET)",
            "by ubuntu (Postfix, from userid 5466)\n\tid 37EC5EA76D; Mon,  2 Nov 2015 12:25:30 +0000 (GMT)"
        ],
        "From": "\"Alejandro.Lucero\" <alejandro.lucero@netronome.com>",
        "To": "dev@dpdk.org",
        "Date": "Mon,  2 Nov 2015 12:25:26 +0000",
        "Message-Id": "<1446467130-300-7-git-send-email-alejandro.lucero@netronome.com>",
        "X-Mailer": "git-send-email 1.7.9.5",
        "In-Reply-To": "<1446467130-300-1-git-send-email-alejandro.lucero@netronome.com>",
        "References": "<1446467130-300-1-git-send-email-alejandro.lucero@netronome.com>",
        "Subject": "[dpdk-dev] [PATCH v5 6/9] nfp: adding functionality to pmd",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "patches and discussions about DPDK <dev.dpdk.org>",
        "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "From: \"Alejandro.Lucero\" <alejandro.lucero@netronome.com>\n\n - nfp_net_promisc_enable\n - nfp_net_promisc_disable\n - nfp_net_infos_get\n - nfp_net_dev_mtu_set\n - nfp_net_vlan_offload_set\n\nSigned-off-by: Alejandro.Lucero <alejandro.lucero@netronome.com>\nSigned-off-by: Rolf.Neugebauer <rolf.neugebauer@netronome.com>\n---\n drivers/net/nfp/nfp_net.c |  181 +++++++++++++++++++++++++++++++++++++++++++++\n 1 file changed, 181 insertions(+)",
    "diff": "diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c\nindex 9cc7776..98c835e 100644\n--- a/drivers/net/nfp/nfp_net.c\n+++ b/drivers/net/nfp/nfp_net.c\n@@ -739,6 +739,65 @@ nfp_net_close(struct rte_eth_dev *dev)\n \t */\n }\n \n+static void\n+nfp_net_promisc_enable(struct rte_eth_dev *dev)\n+{\n+\tuint32_t new_ctrl, update = 0;\n+\tstruct nfp_net_hw *hw;\n+\n+\tPMD_DRV_LOG(DEBUG, \"Promiscuous mode enable\\n\");\n+\n+\thw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n+\n+\tif (!(hw->cap & NFP_NET_CFG_CTRL_PROMISC)) {\n+\t\tPMD_INIT_LOG(INFO, \"Promiscuous mode not supported\\n\");\n+\t\treturn;\n+\t}\n+\n+\tif (hw->ctrl & NFP_NET_CFG_CTRL_PROMISC) {\n+\t\tPMD_DRV_LOG(INFO, \"Promiscuous mode already enabled\\n\");\n+\t\treturn;\n+\t}\n+\n+\tnew_ctrl = hw->ctrl | NFP_NET_CFG_CTRL_PROMISC;\n+\tupdate = NFP_NET_CFG_UPDATE_GEN;\n+\n+\t/*\n+\t * DPDK sets promiscuous mode on just after this call assuming\n+\t * it can not fail ...\n+\t */\n+\tif (nfp_net_reconfig(hw, new_ctrl, update) < 0)\n+\t\treturn;\n+\n+\thw->ctrl = new_ctrl;\n+}\n+\n+static void\n+nfp_net_promisc_disable(struct rte_eth_dev *dev)\n+{\n+\tuint32_t new_ctrl, update = 0;\n+\tstruct nfp_net_hw *hw;\n+\n+\thw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n+\n+\tif ((hw->ctrl & NFP_NET_CFG_CTRL_PROMISC) == 0) {\n+\t\tPMD_DRV_LOG(INFO, \"Promiscuous mode already disabled\\n\");\n+\t\treturn;\n+\t}\n+\n+\tnew_ctrl = hw->ctrl & ~NFP_NET_CFG_CTRL_PROMISC;\n+\tupdate = NFP_NET_CFG_UPDATE_GEN;\n+\n+\t/*\n+\t * DPDK sets promiscuous mode off just before this call\n+\t * assuming it can not fail ...\n+\t */\n+\tif (nfp_net_reconfig(hw, new_ctrl, update) < 0)\n+\t\treturn;\n+\n+\thw->ctrl = new_ctrl;\n+}\n+\n /*\n  * return 0 means link status changed, -1 means not changed\n  *\n@@ -953,6 +1012,65 @@ nfp_net_stats_reset(struct rte_eth_dev *dev)\n \t\tnn_cfg_readq(hw, NFP_NET_CFG_STATS_RX_DISCARDS);\n }\n \n+static void\n+nfp_net_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)\n+{\n+\tstruct nfp_net_hw *hw;\n+\n+\thw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n+\n+\tdev_info->driver_name = dev->driver->pci_drv.name;\n+\tdev_info->max_rx_queues = (uint16_t)hw->max_rx_queues;\n+\tdev_info->max_tx_queues = (uint16_t)hw->max_tx_queues;\n+\tdev_info->min_rx_bufsize = ETHER_MIN_MTU;\n+\tdev_info->max_rx_pktlen = hw->max_mtu;\n+\t/* Next should change when PF support is implemented */\n+\tdev_info->max_mac_addrs = 1;\n+\n+\tif (hw->cap & NFP_NET_CFG_CTRL_RXVLAN)\n+\t\tdev_info->rx_offload_capa = DEV_RX_OFFLOAD_VLAN_STRIP;\n+\n+\tif (hw->cap & NFP_NET_CFG_CTRL_RXCSUM)\n+\t\tdev_info->rx_offload_capa |= DEV_RX_OFFLOAD_IPV4_CKSUM |\n+\t\t\t\t\t     DEV_RX_OFFLOAD_UDP_CKSUM |\n+\t\t\t\t\t     DEV_RX_OFFLOAD_TCP_CKSUM;\n+\n+\tif (hw->cap & NFP_NET_CFG_CTRL_TXVLAN)\n+\t\tdev_info->tx_offload_capa = DEV_TX_OFFLOAD_VLAN_INSERT;\n+\n+\tif (hw->cap & NFP_NET_CFG_CTRL_TXCSUM)\n+\t\tdev_info->tx_offload_capa |= DEV_TX_OFFLOAD_IPV4_CKSUM |\n+\t\t\t\t\t     DEV_RX_OFFLOAD_UDP_CKSUM |\n+\t\t\t\t\t     DEV_RX_OFFLOAD_TCP_CKSUM;\n+\n+\tdev_info->default_rxconf = (struct rte_eth_rxconf) {\n+\t\t.rx_thresh = {\n+\t\t\t.pthresh = DEFAULT_RX_PTHRESH,\n+\t\t\t.hthresh = DEFAULT_RX_HTHRESH,\n+\t\t\t.wthresh = DEFAULT_RX_WTHRESH,\n+\t\t},\n+\t\t.rx_free_thresh = DEFAULT_RX_FREE_THRESH,\n+\t\t.rx_drop_en = 0,\n+\t};\n+\n+\tdev_info->default_txconf = (struct rte_eth_txconf) {\n+\t\t.tx_thresh = {\n+\t\t\t.pthresh = DEFAULT_TX_PTHRESH,\n+\t\t\t.hthresh = DEFAULT_TX_HTHRESH,\n+\t\t\t.wthresh = DEFAULT_TX_WTHRESH,\n+\t\t},\n+\t\t.tx_free_thresh = DEFAULT_TX_FREE_THRESH,\n+\t\t.tx_rs_thresh = DEFAULT_TX_RSBIT_THRESH,\n+\t\t.txq_flags = ETH_TXQ_FLAGS_NOMULTSEGS |\n+\t\t\t     ETH_TXQ_FLAGS_NOOFFLOADS,\n+\t};\n+\n+\tdev_info->reta_size = NFP_NET_CFG_RSS_ITBL_SZ;\n+#if RTE_VER_MAJOR == 2 && RTE_VER_MINOR >= 1\n+\tdev_info->hash_key_size = NFP_NET_CFG_RSS_KEY_SZ;\n+#endif\n+}\n+\n static uint32_t\n nfp_net_rx_queue_count(struct rte_eth_dev *dev, uint16_t queue_idx)\n {\n@@ -998,6 +1116,34 @@ nfp_net_rx_queue_count(struct rte_eth_dev *dev, uint16_t queue_idx)\n }\n \n static int\n+nfp_net_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n+{\n+\tstruct nfp_net_hw *hw;\n+\n+\thw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n+\n+\t/* check that mtu is within the allowed range */\n+\tif ((mtu < ETHER_MIN_MTU) || ((uint32_t)mtu > hw->max_mtu))\n+\t\treturn -EINVAL;\n+\n+\t/* switch to jumbo mode if needed */\n+\tif ((uint32_t)mtu > ETHER_MAX_LEN)\n+\t\tdev->data->dev_conf.rxmode.jumbo_frame = 1;\n+\telse\n+\t\tdev->data->dev_conf.rxmode.jumbo_frame = 0;\n+\n+\t/* update max frame size */\n+\tdev->data->dev_conf.rxmode.max_rx_pkt_len = (uint32_t)mtu;\n+\n+\t/* writing to configuration space */\n+\tnn_cfg_writel(hw, NFP_NET_CFG_MTU, (uint32_t)mtu);\n+\n+\thw->mtu = mtu;\n+\n+\treturn 0;\n+}\n+\n+static int\n nfp_net_rx_queue_setup(struct rte_eth_dev *dev,\n \t\t       uint16_t queue_idx, uint16_t nb_desc,\n \t\t       unsigned int socket_id,\n@@ -1768,6 +1914,41 @@ xmit_end:\n \treturn i;\n }\n \n+static void\n+nfp_net_vlan_offload_set(struct rte_eth_dev *dev, int mask)\n+{\n+\tuint32_t new_ctrl, update;\n+\tstruct nfp_net_hw *hw;\n+\n+\thw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n+\tnew_ctrl = 0;\n+\n+\tif ((mask & ETH_VLAN_FILTER_OFFLOAD) ||\n+\t    (mask & ETH_VLAN_FILTER_OFFLOAD))\n+\t\tRTE_LOG(INFO, PMD, \"Not support for ETH_VLAN_FILTER_OFFLOAD or\"\n+\t\t\t\" ETH_VLAN_FILTER_EXTEND\");\n+\n+\t/* Enable vlan strip if it is not configured yet */\n+\tif ((mask & ETH_VLAN_STRIP_OFFLOAD) &&\n+\t    !(hw->ctrl & NFP_NET_CFG_CTRL_RXVLAN))\n+\t\tnew_ctrl = hw->ctrl | NFP_NET_CFG_CTRL_RXVLAN;\n+\n+\t/* Disable vlan strip just if it is configured */\n+\tif (!(mask & ETH_VLAN_STRIP_OFFLOAD) &&\n+\t    (hw->ctrl & NFP_NET_CFG_CTRL_RXVLAN))\n+\t\tnew_ctrl = hw->ctrl & ~NFP_NET_CFG_CTRL_RXVLAN;\n+\n+\tif (new_ctrl == 0)\n+\t\treturn;\n+\n+\tupdate = NFP_NET_CFG_UPDATE_GEN;\n+\n+\tif (nfp_net_reconfig(hw, new_ctrl, update) < 0)\n+\t\treturn;\n+\n+\thw->ctrl = new_ctrl;\n+}\n+\n /* Update Redirection Table(RETA) of Receive Side Scaling of Ethernet device */\n static int\n nfp_net_reta_update(struct rte_eth_dev *dev,\n",
    "prefixes": [
        "dpdk-dev",
        "v5",
        "6/9"
    ]
}