Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/1002/?format=api
{ "id": 1002, "url": "http://patchwork.ozlabs.org/api/patches/1002/?format=api", "web_url": "http://patchwork.ozlabs.org/project/netdev/patch/20080922.191234.193380455.davem@davemloft.net/", "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": "<20080922.191234.193380455.davem@davemloft.net>", "list_archive_url": null, "date": "2008-09-23T02:12:34", "name": "[2/7] : atm: idt77252: Use generic SKB queue management instead of home-grown scheme.", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": true, "hash": "e5d254876521a15eeddf37f95f303f24941cf07a", "submitter": { "id": 15, "url": "http://patchwork.ozlabs.org/api/people/15/?format=api", "name": "David Miller", "email": "davem@davemloft.net" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/netdev/patch/20080922.191234.193380455.davem@davemloft.net/mbox/", "series": [], "comments": "http://patchwork.ozlabs.org/api/patches/1002/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/1002/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 50633DDEEC\n\tfor <patchwork-incoming@ozlabs.org>;\n\tTue, 23 Sep 2008 12:12:59 +1000 (EST)", "(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1754105AbYIWCMu (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tMon, 22 Sep 2008 22:12:50 -0400", "(majordomo@vger.kernel.org) by vger.kernel.org id S1754102AbYIWCMs\n\t(ORCPT <rfc822; netdev-outgoing>); Mon, 22 Sep 2008 22:12:48 -0400", "from 74-93-104-97-Washington.hfc.comcastbusiness.net\n\t([74.93.104.97]:37173\n\t\"EHLO sunset.davemloft.net\" rhost-flags-OK-FAIL-OK-OK)\n\tby vger.kernel.org with ESMTP id S1754069AbYIWCMq (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Mon, 22 Sep 2008 22:12:46 -0400", "from localhost (localhost [127.0.0.1])\n\tby sunset.davemloft.net (Postfix) with ESMTP id 8B77AC8C185\n\tfor <netdev@vger.kernel.org>; Mon, 22 Sep 2008 19:12:34 -0700 (PDT)" ], "Date": "Mon, 22 Sep 2008 19:12:34 -0700 (PDT)", "Message-Id": "<20080922.191234.193380455.davem@davemloft.net>", "To": "netdev@vger.kernel.org", "Subject": "[PATCH 2/7]: atm: idt77252: Use generic SKB queue management\n\tinstead of home-grown scheme.", "From": "David Miller <davem@davemloft.net>", "X-Mailer": "Mew version 6.1 on Emacs 22.1 / Mule 5.0 (SAKAKI)", "Mime-Version": "1.0", "Content-Type": "Text/Plain; charset=us-ascii", "Content-Transfer-Encoding": "7bit", "Sender": "netdev-owner@vger.kernel.org", "Precedence": "bulk", "List-ID": "<netdev.vger.kernel.org>", "X-Mailing-List": "netdev@vger.kernel.org" }, "content": "atm: idt77252: Use generic SKB queue management instead of home-grown scheme.\n\nSigned-off-by: David S. Miller <davem@davemloft.net>\n---\n drivers/atm/idt77252.c | 32 +++++++++-----------------------\n drivers/atm/idt77252.h | 4 +---\n 2 files changed, 10 insertions(+), 26 deletions(-)", "diff": "diff --git a/drivers/atm/idt77252.c b/drivers/atm/idt77252.c\nindex 3a504e9..e33ae00 100644\n--- a/drivers/atm/idt77252.c\n+++ b/drivers/atm/idt77252.c\n@@ -1114,11 +1114,8 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)\n \n \trpp = &vc->rcv.rx_pool;\n \n+\t__skb_queue_tail(&rpp->queue, skb);\n \trpp->len += skb->len;\n-\tif (!rpp->count++)\n-\t\trpp->first = skb;\n-\t*rpp->last = skb;\n-\trpp->last = &skb->next;\n \n \tif (stat & SAR_RSQE_EPDU) {\n \t\tunsigned char *l1l2;\n@@ -1145,7 +1142,7 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)\n \t\t\tatomic_inc(&vcc->stats->rx_err);\n \t\t\treturn;\n \t\t}\n-\t\tif (rpp->count > 1) {\n+\t\tif (skb_queue_len(&rpp->queue) > 1) {\n \t\t\tstruct sk_buff *sb;\n \n \t\t\tskb = dev_alloc_skb(rpp->len);\n@@ -1161,12 +1158,9 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)\n \t\t\t\tdev_kfree_skb(skb);\n \t\t\t\treturn;\n \t\t\t}\n-\t\t\tsb = rpp->first;\n-\t\t\tfor (i = 0; i < rpp->count; i++) {\n+\t\t\tskb_queue_walk(&rpp->queue, sb)\n \t\t\t\tmemcpy(skb_put(skb, sb->len),\n \t\t\t\t sb->data, sb->len);\n-\t\t\t\tsb = sb->next;\n-\t\t\t}\n \n \t\t\trecycle_rx_pool_skb(card, rpp);\n \n@@ -1180,7 +1174,6 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)\n \t\t\treturn;\n \t\t}\n \n-\t\tskb->next = NULL;\n \t\tflush_rx_pool(card, rpp);\n \n \t\tif (!atm_charge(vcc, skb->truesize)) {\n@@ -1918,25 +1911,18 @@ recycle_rx_skb(struct idt77252_dev *card, struct sk_buff *skb)\n static void\n flush_rx_pool(struct idt77252_dev *card, struct rx_pool *rpp)\n {\n+\tskb_queue_head_init(&rpp->queue);\n \trpp->len = 0;\n-\trpp->count = 0;\n-\trpp->first = NULL;\n-\trpp->last = &rpp->first;\n }\n \n static void\n recycle_rx_pool_skb(struct idt77252_dev *card, struct rx_pool *rpp)\n {\n-\tstruct sk_buff *skb, *next;\n-\tint i;\n+\tstruct sk_buff *skb, *tmp;\n \n-\tskb = rpp->first;\n-\tfor (i = 0; i < rpp->count; i++) {\n-\t\tnext = skb->next;\n-\t\tskb->next = NULL;\n+\tskb_queue_walk_safe(&rpp->queue, skb, tmp)\n \t\trecycle_rx_skb(card, skb);\n-\t\tskb = next;\n-\t}\n+\n \tflush_rx_pool(card, rpp);\n }\n \n@@ -2537,7 +2523,7 @@ idt77252_close(struct atm_vcc *vcc)\n \t\twaitfor_idle(card);\n \t\tspin_unlock_irqrestore(&card->cmd_lock, flags);\n \n-\t\tif (vc->rcv.rx_pool.count) {\n+\t\tif (skb_queue_len(&vc->rcv.rx_pool.queue) != 0) {\n \t\t\tDPRINTK(\"%s: closing a VC with pending rx buffers.\\n\",\n \t\t\t\tcard->name);\n \n@@ -2970,7 +2956,7 @@ close_card_oam(struct idt77252_dev *card)\n \t\t\twaitfor_idle(card);\n \t\t\tspin_unlock_irqrestore(&card->cmd_lock, flags);\n \n-\t\t\tif (vc->rcv.rx_pool.count) {\n+\t\t\tif (skb_queue_len(&vc->rcv.rx_pool.queue) != 0) {\n \t\t\t\tDPRINTK(\"%s: closing a VC \"\n \t\t\t\t\t\"with pending rx buffers.\\n\",\n \t\t\t\t\tcard->name);\ndiff --git a/drivers/atm/idt77252.h b/drivers/atm/idt77252.h\nindex e83eaf1..5042bb2 100644\n--- a/drivers/atm/idt77252.h\n+++ b/drivers/atm/idt77252.h\n@@ -173,10 +173,8 @@ struct scq_info\n };\n \n struct rx_pool {\n-\tstruct sk_buff\t\t*first;\n-\tstruct sk_buff\t\t**last;\n+\tstruct sk_buff_head\tqueue;\n \tunsigned int\t\tlen;\n-\tunsigned int\t\tcount;\n };\n \n struct aal1 {\n", "prefixes": [ "2/7" ] }