From: Alan Ott <alan@signal11.us> To: Alexander Smirnov <alex.bluesman.smirnov@gmail.com>, Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>, "David S. Miller" <davem@davemloft.net> Cc: linux-zigbee-devel@lists.sourceforge.net, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Alan Ott <alan@signal11.us> Subject: [PATCH v2 2/4] mac802154: Use netif flow control Date: Wed, 3 Apr 2013 10:00:56 -0400 [thread overview] Message-ID: <1364997658-16498-3-git-send-email-alan@signal11.us> (raw) In-Reply-To: <1364997658-16498-1-git-send-email-alan@signal11.us> Use netif_stop_queue() and netif_wake_queue() to control the flow of packets to mac802154 devices. Since many IEEE 802.15.4 devices have no output buffer, and since the mac802154 xmit() function is designed to block, netif_stop_queue() is called after each packet. Signed-off-by: Alan Ott <alan@signal11.us> --- net/mac802154/tx.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/net/mac802154/tx.c b/net/mac802154/tx.c index 7264874..3fd3e07 100644 --- a/net/mac802154/tx.c +++ b/net/mac802154/tx.c @@ -25,6 +25,7 @@ #include <linux/if_arp.h> #include <linux/crc-ccitt.h> +#include <net/ieee802154_netdev.h> #include <net/mac802154.h> #include <net/wpan-phy.h> @@ -44,6 +45,7 @@ struct xmit_work { static void mac802154_xmit_worker(struct work_struct *work) { struct xmit_work *xw = container_of(work, struct xmit_work, work); + struct mac802154_sub_if_data *sdata; int res; mutex_lock(&xw->priv->phy->pib_lock); @@ -65,6 +67,11 @@ static void mac802154_xmit_worker(struct work_struct *work) out: mutex_unlock(&xw->priv->phy->pib_lock); + /* Restart the netif queue on each sub_if_data object. */ + rcu_read_lock(); + list_for_each_entry_rcu(sdata, &xw->priv->slaves, list) + netif_wake_queue(sdata->dev); + rcu_read_unlock(); dev_kfree_skb(xw->skb); @@ -75,6 +82,7 @@ netdev_tx_t mac802154_tx(struct mac802154_priv *priv, struct sk_buff *skb, u8 page, u8 chan) { struct xmit_work *work; + struct mac802154_sub_if_data *sdata; if (!(priv->phy->channels_supported[page] & (1 << chan))) { WARN_ON(1); @@ -102,6 +110,12 @@ netdev_tx_t mac802154_tx(struct mac802154_priv *priv, struct sk_buff *skb, return NETDEV_TX_BUSY; } + /* Stop the netif queue on each sub_if_data object. */ + rcu_read_lock(); + list_for_each_entry_rcu(sdata, &priv->slaves, list) + netif_stop_queue(sdata->dev); + rcu_read_unlock(); + INIT_WORK(&work->work, mac802154_xmit_worker); work->skb = skb; work->priv = priv; -- 1.7.11.2
WARNING: multiple messages have this Message-ID (diff)
From: Alan Ott <alan-yzvJWuRpmD1zbRFIqnYvSA@public.gmane.org> To: Alexander Smirnov <alex.bluesman.smirnov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>, Dmitry Eremin-Solenikov <dbaryshkov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>, "David S. Miller" <davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org> Cc: Alan Ott <alan-yzvJWuRpmD1zbRFIqnYvSA@public.gmane.org>, netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-zigbee-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org Subject: [PATCH v2 2/4] mac802154: Use netif flow control Date: Wed, 3 Apr 2013 10:00:56 -0400 [thread overview] Message-ID: <1364997658-16498-3-git-send-email-alan@signal11.us> (raw) In-Reply-To: <1364997658-16498-1-git-send-email-alan-yzvJWuRpmD1zbRFIqnYvSA@public.gmane.org> Use netif_stop_queue() and netif_wake_queue() to control the flow of packets to mac802154 devices. Since many IEEE 802.15.4 devices have no output buffer, and since the mac802154 xmit() function is designed to block, netif_stop_queue() is called after each packet. Signed-off-by: Alan Ott <alan-yzvJWuRpmD1zbRFIqnYvSA@public.gmane.org> --- net/mac802154/tx.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/net/mac802154/tx.c b/net/mac802154/tx.c index 7264874..3fd3e07 100644 --- a/net/mac802154/tx.c +++ b/net/mac802154/tx.c @@ -25,6 +25,7 @@ #include <linux/if_arp.h> #include <linux/crc-ccitt.h> +#include <net/ieee802154_netdev.h> #include <net/mac802154.h> #include <net/wpan-phy.h> @@ -44,6 +45,7 @@ struct xmit_work { static void mac802154_xmit_worker(struct work_struct *work) { struct xmit_work *xw = container_of(work, struct xmit_work, work); + struct mac802154_sub_if_data *sdata; int res; mutex_lock(&xw->priv->phy->pib_lock); @@ -65,6 +67,11 @@ static void mac802154_xmit_worker(struct work_struct *work) out: mutex_unlock(&xw->priv->phy->pib_lock); + /* Restart the netif queue on each sub_if_data object. */ + rcu_read_lock(); + list_for_each_entry_rcu(sdata, &xw->priv->slaves, list) + netif_wake_queue(sdata->dev); + rcu_read_unlock(); dev_kfree_skb(xw->skb); @@ -75,6 +82,7 @@ netdev_tx_t mac802154_tx(struct mac802154_priv *priv, struct sk_buff *skb, u8 page, u8 chan) { struct xmit_work *work; + struct mac802154_sub_if_data *sdata; if (!(priv->phy->channels_supported[page] & (1 << chan))) { WARN_ON(1); @@ -102,6 +110,12 @@ netdev_tx_t mac802154_tx(struct mac802154_priv *priv, struct sk_buff *skb, return NETDEV_TX_BUSY; } + /* Stop the netif queue on each sub_if_data object. */ + rcu_read_lock(); + list_for_each_entry_rcu(sdata, &priv->slaves, list) + netif_stop_queue(sdata->dev); + rcu_read_unlock(); + INIT_WORK(&work->work, mac802154_xmit_worker); work->skb = skb; work->priv = priv; -- 1.7.11.2 ------------------------------------------------------------------------------ Minimize network downtime and maximize team effectiveness. Reduce network management and security costs.Learn how to hire the most talented Cisco Certified professionals. Visit the Employer Resources Portal http://www.cisco.com/web/learning/employer_resources/index.html
next prev parent reply other threads:[~2013-04-03 14:01 UTC|newest] Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-04-02 18:47 [PATCH 0/6] 802.15.4 and 6LoWPAN Buffering Fixes Alan Ott 2013-04-02 18:47 ` Alan Ott 2013-04-02 18:47 ` [PATCH 1/6] mac802154: Immediately retry sending failed packets Alan Ott 2013-04-02 18:47 ` Alan Ott [not found] ` <1364928481-1813-2-git-send-email-alan-yzvJWuRpmD1zbRFIqnYvSA@public.gmane.org> 2013-04-02 19:11 ` Alexander Smirnov 2013-04-02 20:28 ` Alan Ott 2013-04-02 20:28 ` Alan Ott 2013-04-02 21:28 ` Alan Ott 2013-04-02 22:35 ` Alan Ott 2013-04-02 22:35 ` Alan Ott 2013-04-02 23:13 ` [Linux-zigbee-devel] " Werner Almesberger 2013-04-02 23:13 ` Werner Almesberger 2013-04-03 1:24 ` [Linux-zigbee-devel] " Alan Ott 2013-04-03 1:24 ` Alan Ott 2013-04-03 1:56 ` [Linux-zigbee-devel] " David Miller 2013-04-03 1:59 ` Alan Ott 2013-04-03 1:59 ` Alan Ott 2013-04-03 2:03 ` [Linux-zigbee-devel] " David Miller 2013-04-03 2:03 ` David Miller 2013-04-03 2:25 ` [Linux-zigbee-devel] " Alan Ott 2013-04-03 2:25 ` Alan Ott 2013-04-03 2:30 ` [Linux-zigbee-devel] " David Miller 2013-04-03 2:30 ` David Miller 2013-04-03 2:57 ` [Linux-zigbee-devel] " Alan Ott 2013-04-03 2:38 ` Werner Almesberger 2013-04-02 18:47 ` [PATCH 2/6] mac802154: Move xmit_attemps to stack Alan Ott 2013-04-02 18:47 ` Alan Ott 2013-04-02 18:47 ` [PATCH 3/6] mac802154: Use netif flow control Alan Ott 2013-04-02 18:47 ` Alan Ott 2013-04-02 21:21 ` Sergei Shtylyov 2013-04-02 18:47 ` [PATCH 4/6] mac802154: Increase tx_buffer_len Alan Ott 2013-04-02 18:47 ` Alan Ott 2013-04-02 18:48 ` [PATCH 5/6] 6lowpan: handle dev_queue_xmit error code properly Alan Ott 2013-04-02 18:48 ` Alan Ott [not found] ` <1364928481-1813-6-git-send-email-alan-yzvJWuRpmD1zbRFIqnYvSA@public.gmane.org> 2013-04-02 19:21 ` Alexander Smirnov [not found] ` <CAJmB2rB+9-gLV=SVvr4JUc2swjmTaWxD0gYM5VLw8PL1d455JA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2013-04-02 19:30 ` Alan Ott 2013-04-02 18:48 ` [PATCH 6/6] 6lowpan: return the dev_queue_xmit() return value from lowpan_xmit() Alan Ott 2013-04-02 18:48 ` Alan Ott [not found] ` <1364928481-1813-7-git-send-email-alan-yzvJWuRpmD1zbRFIqnYvSA@public.gmane.org> 2013-04-02 19:27 ` Alexander Smirnov 2013-04-03 14:00 ` [PATCH v2 0/4] 802.15.4 and 6LoWPAN Buffering Fixes Alan Ott 2013-04-03 14:00 ` Alan Ott 2013-04-03 14:00 ` [PATCH v2 1/4] mac802154: Do not try to resend failed packets Alan Ott 2013-04-03 14:00 ` Alan Ott [this message] 2013-04-03 14:00 ` [PATCH v2 2/4] mac802154: Use netif flow control Alan Ott 2013-04-03 14:00 ` [PATCH v2 3/4] mac802154: Increase tx_buffer_len Alan Ott 2013-04-03 14:00 ` Alan Ott 2013-04-03 14:00 ` [PATCH v2 4/4] 6lowpan: handle dev_queue_xmit() error code properly Alan Ott 2013-04-03 14:00 ` Alan Ott 2013-04-07 21:06 ` [PATCH v2 0/4] 802.15.4 and 6LoWPAN Buffering Fixes David Miller
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1364997658-16498-3-git-send-email-alan@signal11.us \ --to=alan@signal11.us \ --cc=alex.bluesman.smirnov@gmail.com \ --cc=davem@davemloft.net \ --cc=dbaryshkov@gmail.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-zigbee-devel@lists.sourceforge.net \ --cc=netdev@vger.kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.