Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/889/?format=api
{ "id": 889, "url": "http://patchwork.ozlabs.org/api/patches/889/?format=api", "web_url": "http://patchwork.ozlabs.org/project/netdev/patch/1222098445-26175-11-git-send-email-remi.denis-courmont@nokia.com/", "project": { "id": 7, "url": "http://patchwork.ozlabs.org/api/projects/7/?format=api", "name": "Linux network development", "link_name": "netdev", "list_id": "netdev.vger.kernel.org", "list_email": "netdev@vger.kernel.org", "web_url": null, "scm_url": null, "webscm_url": null, "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<1222098445-26175-11-git-send-email-remi.denis-courmont@nokia.com>", "list_archive_url": null, "date": "2008-09-22T15:47:25", "name": "[11/11] Phonet: kernel documentation", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": true, "hash": "a1c05d5f0cb11034ef92df2507322701230da892", "submitter": { "id": 204, "url": "http://patchwork.ozlabs.org/api/people/204/?format=api", "name": "Rémi Denis-Courmont", "email": "remi.denis-courmont@nokia.com" }, "delegate": { "id": 34, "url": "http://patchwork.ozlabs.org/api/users/34/?format=api", "username": "davem", "first_name": "David", "last_name": "Miller", "email": "davem@davemloft.net" }, "mbox": "http://patchwork.ozlabs.org/project/netdev/patch/1222098445-26175-11-git-send-email-remi.denis-courmont@nokia.com/mbox/", "series": [], "comments": "http://patchwork.ozlabs.org/api/patches/889/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/889/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<netdev-owner@vger.kernel.org>", "X-Original-To": "patchwork-incoming@ozlabs.org", "Delivered-To": "patchwork-incoming@ozlabs.org", "Received": [ "from vger.kernel.org (vger.kernel.org [209.132.176.167])\n\tby ozlabs.org (Postfix) with ESMTP id 60D09DDF25\n\tfor <patchwork-incoming@ozlabs.org>;\n\tTue, 23 Sep 2008 01:48:34 +1000 (EST)", "(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1753868AbYIVPr6 (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tMon, 22 Sep 2008 11:47:58 -0400", "(majordomo@vger.kernel.org) by vger.kernel.org id S1753859AbYIVPr5\n\t(ORCPT <rfc822; netdev-outgoing>); Mon, 22 Sep 2008 11:47:57 -0400", "from smtp.nokia.com ([192.100.122.233]:53013 \"EHLO\n\tmgw-mx06.nokia.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1753619AbYIVPru (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Mon, 22 Sep 2008 11:47:50 -0400", "from vaebh105.NOE.Nokia.com (vaebh105.europe.nokia.com\n\t[10.160.244.31])\n\tby mgw-mx06.nokia.com (Switch-3.2.6/Switch-3.2.6) with ESMTP id\n\tm8MFlZFj027641\n\tfor <netdev@vger.kernel.org>; Mon, 22 Sep 2008 18:47:47 +0300", "from vaebh102.NOE.Nokia.com ([10.160.244.23]) by\n\tvaebh105.NOE.Nokia.com with Microsoft SMTPSVC(6.0.3790.3959); \n\tMon, 22 Sep 2008 18:47:45 +0300", "from localhost.localdomain ([172.21.41.115]) by\n\tvaebh102.NOE.Nokia.com with Microsoft SMTPSVC(6.0.3790.3959); \n\tMon, 22 Sep 2008 18:47:26 +0300" ], "From": "=?utf-8?q?R=C3=A9mi=20Denis-Courmont?= <remi.denis-courmont@nokia.com>", "To": "netdev@vger.kernel.org", "Subject": "[PATCH 11/11] Phonet: kernel documentation", "Date": "Mon, 22 Sep 2008 18:47:25 +0300", "Message-Id": "<1222098445-26175-11-git-send-email-remi.denis-courmont@nokia.com>", "X-Mailer": "git-send-email 1.5.4.3", "In-Reply-To": "<200809221845.54736.remi.denis-courmont@nokia.com>", "References": "<200809221845.54736.remi.denis-courmont@nokia.com>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=utf-8", "Content-Transfer-Encoding": "8bit", "X-OriginalArrivalTime": "22 Sep 2008 15:47:26.0835 (UTC)\n\tFILETIME=[83492430:01C91CCA]", "X-Nokia-AV": "Clean", "Sender": "netdev-owner@vger.kernel.org", "Precedence": "bulk", "List-ID": "<netdev.vger.kernel.org>", "X-Mailing-List": "netdev@vger.kernel.org" }, "content": "Signed-off-by: Rémi Denis-Courmont <remi.denis-courmont@nokia.com>\n---\n Documentation/networking/phonet.txt | 111 +++++++++++++++++++++++++++++++++++\n 1 files changed, 111 insertions(+), 0 deletions(-)\n create mode 100644 Documentation/networking/phonet.txt", "diff": "diff --git a/Documentation/networking/phonet.txt b/Documentation/networking/phonet.txt\nnew file mode 100644\nindex 0000000..f3c72e0\n--- /dev/null\n+++ b/Documentation/networking/phonet.txt\n@@ -0,0 +1,111 @@\n+Linux Phonet protocol family\n+============================\n+\n+Introduction\n+------------\n+\n+Phonet is a packet protocol used by Nokia cellular modems for both IPC\n+and RPC. With the Linux Phonet socket family, Linux host processes can\n+receive and send messages from/to the modem, or any other external\n+device attached to the modem. The modem takes care of routing.\n+\n+Phonet packets can be exchanged through various hardware connections\n+depending on the device, such as:\n+ - USB with the CDC Phonet interface,\n+ - infrared,\n+ - Bluetooth,\n+ - an RS232 serial port (with a dedicated \"FBUS\" line discipline),\n+ - the SSI bus with some TI OMAP processors.\n+\n+\n+Packets format\n+--------------\n+\n+Phonet packet have a common header as follow:\n+\n+ struct phonethdr {\n+ uint8_t pn_media; /* Media type (link-layer identifier) */\n+ uint8_t pn_rdev; /* Receiver device ID */\n+ uint8_t pn_sdev; /* Sender device ID */\n+ uint8_t pn_res; /* Resource ID or function */\n+ uint16_t pn_length; /* Big-endian message byte length (minus 6) */\n+ uint8_t pn_robj; /* Receiver object ID */\n+ uint8_t pn_sobj; /* Sender object ID */\n+ };\n+\n+The device ID is split: the 6 higher order bits consitutes the device\n+address, while the 2 lower order bits are used for multiplexing, as are\n+the 8-bits object identifiers. As such, Phonet can be considered as a\n+network layer with 6 bits of address space and 10 bits for transport\n+protocol (much like port numbers in IP world).\n+\n+The modem always has address number zero. Each other device has a its\n+own 6-bits address.\n+\n+\n+Link layer\n+----------\n+\n+Phonet links are always point-to-point links. The link layer header\n+consists of a single Phonet media type byte. It uniquely identifies the\n+link through which the packet is transmitted, from the modem's\n+perspective.\n+\n+Linux Phonet network interfaces use a dedicated link layer type\n+(ETH_P_PHONET) which is out of the Ethernet type range. They can only\n+send and receive Phonet packets.\n+\n+Note that Phonet interfaces are not allowed to re-order packets, so\n+only the (default) Linux FIFO qdisc should be used with them.\n+\n+\n+Network layer\n+-------------\n+\n+The Phonet socket address family maps the Phonet packet header:\n+\n+ struct sockaddr_pn {\n+ sa_family_t spn_family; /* AF_PHONET */\n+ uint8_t spn_obj; /* Object ID */\n+ uint8_t spn_dev; /* Device ID */\n+ uint8_t spn_resource; /* Resource or function */\n+ uint8_t spn_zero[...]; /* Padding */\n+ };\n+\n+The resource field is only used when sending and receiving;\n+It is ignored by bind() and getsockname().\n+\n+\n+Low-level datagram protocol\n+---------------------------\n+\n+Applications can send Phonet messages using the Phonet datagram socket\n+protocol from the PF_PHONET family. Each socket is bound to one of the\n+2^10 object IDs available, and can send and receive packets with any\n+other peer.\n+\n+ struct sockaddr_pn addr = { .spn_family = AF_PHONET, };\n+ ssize_t len;\n+ socklen_t addrlen = sizeof(addr);\n+ int fd;\n+\n+ fd = socket(PF_PHONET, SOCK_DGRAM, 0);\n+ bind(fd, (struct sockaddr *)&addr, sizeof(addr));\n+ /* ... */\n+\n+ sendto(fd, msg, msglen, 0, (struct sockaddr *)&addr, sizeof(addr));\n+ len = recvfrom(fd, buf, sizeof(buf), 0,\n+ (struct sockaddr *)&addr, &addrlen);\n+\n+This protocol follows the SOCK_DGRAM connection-less semantics.\n+However, connect() and getpeername() are not supported, as they did\n+not seem useful with Phonet usages (could be added easily).\n+\n+\n+Authors\n+-------\n+\n+Linux Phonet was initially written by Sakari Ailus.\n+Other contributors include Mikä Liljeberg, Andras Domokos,\n+Carlos Chinea and Rémi Denis-Courmont.\n+Copyright (C) 2008 Nokia Corporation.\n", "prefixes": [ "11/11" ] }