get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 5236,
    "url": "https://patches.dpdk.org/api/patches/5236/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/1433546120-2254-17-git-send-email-adrien.mazarguil@6wind.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": "<1433546120-2254-17-git-send-email-adrien.mazarguil@6wind.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1433546120-2254-17-git-send-email-adrien.mazarguil@6wind.com",
    "date": "2015-06-05T23:15:20",
    "name": "[dpdk-dev,16/16] mlx4: query netdevice to get initial MAC address",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "b6bcdbcd5979aede83312c2751673df223fa89f0",
    "submitter": {
        "id": 165,
        "url": "https://patches.dpdk.org/api/people/165/?format=api",
        "name": "Adrien Mazarguil",
        "email": "adrien.mazarguil@6wind.com"
    },
    "delegate": null,
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/1433546120-2254-17-git-send-email-adrien.mazarguil@6wind.com/mbox/",
    "series": [],
    "comments": "https://patches.dpdk.org/api/patches/5236/comments/",
    "check": "pending",
    "checks": "https://patches.dpdk.org/api/patches/5236/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 B5271C39C;\n\tSat,  6 Jun 2015 01:16:33 +0200 (CEST)",
            "from mail-wg0-f43.google.com (mail-wg0-f43.google.com\n\t[74.125.82.43]) by dpdk.org (Postfix) with ESMTP id 7A238C424\n\tfor <dev@dpdk.org>; Sat,  6 Jun 2015 01:16:32 +0200 (CEST)",
            "by wgv5 with SMTP id 5so66809153wgv.1\n\tfor <dev@dpdk.org>; Fri, 05 Jun 2015 16:16:32 -0700 (PDT)",
            "from 6wind.com (guy78-3-82-239-227-177.fbx.proxad.net.\n\t[82.239.227.177]) by mx.google.com with ESMTPSA id\n\tfa8sm5297304wib.14.2015.06.05.16.16.30\n\t(version=TLSv1.2 cipher=RC4-SHA bits=128/128);\n\tFri, 05 Jun 2015 16:16:31 -0700 (PDT)"
        ],
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20130820;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n\t:references;\n\tbh=DPK4vYPf1N6O8x31U2R3X6rP9gzBZBQB3DKCYhoNTkE=;\n\tb=cIr1lj3rzW3dHLr9YwtMz2IIA7x5/l6PyeAlJab4qubLESbpimxmRjLwx9w+XKiF5N\n\tOLeNwjASPg0fEOd2+HoNNBFECPXSCIRfVObdbwSMMDIZ6tL3cWZiGvmzfANLQ3CZDuhO\n\tlZKxXEWNm/cD85+fy+PsiR8ZTdkrRZRD8+82fKktvc/Q0YhwtqYM04Ruxqv2rI9Vio4a\n\thhswEFUR07mUwC/3wLdqECQI6WrtMj444y5/f2ThLEgmu+z5A5bAu+snmUvRjLQc510m\n\tc6foWPEiMgH2KdT2tu7mx4dIyO2Cmjvk8NDg4IOC5E+EQREqirAGZVnw9LHLP5x+4n2S\n\tmsKQ==",
        "X-Gm-Message-State": "ALoCoQlOVWbov72UillzLNO+GxUbyvfQkA1yy/mBt/dghNv/CZ8MxRaMEOYi0/3Q+rbo6niL+Dju",
        "X-Received": "by 10.194.248.227 with SMTP id yp3mr10308187wjc.32.1433546192365;\n\tFri, 05 Jun 2015 16:16:32 -0700 (PDT)",
        "From": "Adrien Mazarguil <adrien.mazarguil@6wind.com>",
        "To": "dev@dpdk.org",
        "Date": "Sat,  6 Jun 2015 01:15:20 +0200",
        "Message-Id": "<1433546120-2254-17-git-send-email-adrien.mazarguil@6wind.com>",
        "X-Mailer": "git-send-email 2.1.0",
        "In-Reply-To": "<1433546120-2254-1-git-send-email-adrien.mazarguil@6wind.com>",
        "References": "<1433546120-2254-1-git-send-email-adrien.mazarguil@6wind.com>",
        "Subject": "[dpdk-dev] [PATCH 16/16] mlx4: query netdevice to get initial MAC\n\taddress",
        "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: Or Ami <ora@mellanox.com>\n\nQuerying the netdevice instead of deriving the port's MAC address from its\nGID is less prone to errors. There is no guarantee that the GID will always\ncontain it nor that the algorithm won't change.\n\nSigned-off-by: Or Ami <ora@mellanox.com>\nSigned-off-by: Olga Shern <olgas@mellanox.com>\nSigned-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>\n---\n drivers/net/mlx4/mlx4.c | 34 ++++++++++++++++++----------------\n 1 file changed, 18 insertions(+), 16 deletions(-)",
    "diff": "diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c\nindex 4c4f693..04cc5e1 100644\n--- a/drivers/net/mlx4/mlx4.c\n+++ b/drivers/net/mlx4/mlx4.c\n@@ -4427,22 +4427,25 @@ mlx4_ibv_device_to_pci_addr(const struct ibv_device *device,\n }\n \n /**\n- * Derive MAC address from port GID.\n+ * Get MAC address by querying netdevice.\n  *\n+ * @param[in] priv\n+ *   struct priv for the requested device.\n  * @param[out] mac\n  *   MAC address output buffer.\n- * @param port\n- *   Physical port number.\n- * @param[in] gid\n- *   Port GID.\n+ *\n+ * @return\n+ *   0 on success, -1 on failure and errno is set.\n  */\n-static void\n-mac_from_gid(uint8_t (*mac)[ETHER_ADDR_LEN], uint32_t port, uint8_t *gid)\n+static int\n+priv_get_mac(struct priv *priv, uint8_t (*mac)[ETHER_ADDR_LEN])\n {\n-\tmemcpy(&(*mac)[0], gid + 8, 3);\n-\tmemcpy(&(*mac)[3], gid + 13, 3);\n-\tif (port == 1)\n-\t\t(*mac)[0] ^= 2;\n+\tstruct ifreq request;\n+\n+\tif (priv_ifreq(priv, SIOCGIFHWADDR, &request))\n+\t\treturn -1;\n+\tmemcpy(mac, request.ifr_hwaddr.sa_data, ETHER_ADDR_LEN);\n+\treturn 0;\n }\n \n /* Support up to 32 adapters. */\n@@ -4604,7 +4607,6 @@ mlx4_pci_devinit(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)\n \t\tstruct ibv_exp_device_attr exp_device_attr;\n #endif /* HAVE_EXP_QUERY_DEVICE */\n \t\tstruct ether_addr mac;\n-\t\tunion ibv_gid temp_gid;\n \n #ifdef HAVE_EXP_QUERY_DEVICE\n \t\texp_device_attr.comp_mask = IBV_EXP_DEVICE_ATTR_EXP_CAP_FLAGS;\n@@ -4729,12 +4731,12 @@ mlx4_pci_devinit(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)\n \n \t\t(void)mlx4_getenv_int;\n \t\tpriv->vf = vf;\n-\t\tif (ibv_query_gid(ctx, port, 0, &temp_gid)) {\n-\t\t\tERROR(\"ibv_query_gid() failure\");\n+\t\t/* Configure the first MAC address by default. */\n+\t\tif (priv_get_mac(priv, &mac.addr_bytes)) {\n+\t\t\tERROR(\"cannot get MAC address, is mlx4_en loaded?\"\n+\t\t\t      \" (errno: %s)\", strerror(errno));\n \t\t\tgoto port_error;\n \t\t}\n-\t\t/* Configure the first MAC address by default. */\n-\t\tmac_from_gid(&mac.addr_bytes, port, temp_gid.raw);\n \t\tINFO(\"port %u MAC address is %02x:%02x:%02x:%02x:%02x:%02x\",\n \t\t     priv->port,\n \t\t     mac.addr_bytes[0], mac.addr_bytes[1],\n",
    "prefixes": [
        "dpdk-dev",
        "16/16"
    ]
}