From: Dalon Westergreen <dwesterg@gmail.com>
To: netdev@vger.kernel.org, dinguyen@kernel.org, thor.thayer@linux.intel.com
Cc: Dalon Westergreen <dalon.westergreen@intel.com>
Subject: [PATCH net-next 1/8] net: eth: altera: tse_start_xmit ignores tx_buffer call response
Date: Wed, 14 Nov 2018 16:50:40 -0800 [thread overview]
Message-ID: <20181115005047.28464-2-dwesterg@gmail.com> (raw)
In-Reply-To: <20181115005047.28464-1-dwesterg@gmail.com>
From: Dalon Westergreen <dalon.westergreen@intel.com>
The return from tx_buffer call in tse_start_xmit is
inapropriately ignored. tse_buffer calls should return
0 for success or NETDEV_TX_BUSY. tse_start_xmit should
return not report a successful transmit when the tse_buffer
call returns an error condition.
In addition to the above, the msgdma and sgdma do not return
the same value on success or failure. The sgdma_tx_buffer
returned 0 on failure and a positive number of transmitted
packets on success. Given that it only ever sends 1 packet,
this made no sense. The msgdma implementation msgdma_tx_buffer
returns 0 on success.
-> Don't ignore the return from tse_buffer calls
-> Fix sgdma tse_buffer call to return 0 on success
and NETDEV_TX_BUSY on failure.
Signed-off-by: Dalon Westergreen <dalon.westergreen@intel.com>
---
drivers/net/ethernet/altera/altera_sgdma.c | 14 ++++++++------
drivers/net/ethernet/altera/altera_tse_main.c | 4 +++-
2 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/drivers/net/ethernet/altera/altera_sgdma.c b/drivers/net/ethernet/altera/altera_sgdma.c
index 88ef67a998b4..eb47b9b820bb 100644
--- a/drivers/net/ethernet/altera/altera_sgdma.c
+++ b/drivers/net/ethernet/altera/altera_sgdma.c
@@ -15,6 +15,7 @@
*/
#include <linux/list.h>
+#include <linux/netdevice.h>
#include "altera_utils.h"
#include "altera_tse.h"
#include "altera_sgdmahw.h"
@@ -170,10 +171,11 @@ void sgdma_clear_txirq(struct altera_tse_private *priv)
SGDMA_CTRLREG_CLRINT);
}
-/* transmits buffer through SGDMA. Returns number of buffers
- * transmitted, 0 if not possible.
- *
- * tx_lock is held by the caller
+/* transmits buffer through SGDMA.
+ * original behavior returned the number of transmitted packets (always 1) &
+ * returned 0 on error. This differs from the msgdma. the calling function
+ * will now actually look at the code, so from now, 0 is good and return
+ * NETDEV_TX_BUSY when busy.
*/
int sgdma_tx_buffer(struct altera_tse_private *priv, struct tse_buffer *buffer)
{
@@ -185,7 +187,7 @@ int sgdma_tx_buffer(struct altera_tse_private *priv, struct tse_buffer *buffer)
/* wait 'til the tx sgdma is ready for the next transmit request */
if (sgdma_txbusy(priv))
- return 0;
+ return NETDEV_TX_BUSY;
sgdma_setup_descrip(cdesc, /* current descriptor */
ndesc, /* next descriptor */
@@ -202,7 +204,7 @@ int sgdma_tx_buffer(struct altera_tse_private *priv, struct tse_buffer *buffer)
/* enqueue the request to the pending transmit queue */
queue_tx(priv, buffer);
- return 1;
+ return 0;
}
diff --git a/drivers/net/ethernet/altera/altera_tse_main.c b/drivers/net/ethernet/altera/altera_tse_main.c
index baca8f704a45..dcb330129e23 100644
--- a/drivers/net/ethernet/altera/altera_tse_main.c
+++ b/drivers/net/ethernet/altera/altera_tse_main.c
@@ -606,7 +606,9 @@ static int tse_start_xmit(struct sk_buff *skb, struct net_device *dev)
buffer->dma_addr = dma_addr;
buffer->len = nopaged_len;
- priv->dmaops->tx_buffer(priv, buffer);
+ ret = priv->dmaops->tx_buffer(priv, buffer);
+ if (ret)
+ goto out;
skb_tx_timestamp(skb);
--
2.19.1
next prev parent reply other threads:[~2018-11-15 10:56 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-15 0:50 [PATCH net-next 0/8] net: eth: altera: tse: Add PTP and mSGDMA prefetcher Dalon Westergreen
2018-11-15 0:50 ` Dalon Westergreen [this message]
2018-11-15 23:07 ` [PATCH net-next 1/8] net: eth: altera: tse_start_xmit ignores tx_buffer call response Thor Thayer
2018-11-17 4:38 ` David Miller
2018-11-17 15:29 ` Westergreen, Dalon
2018-11-15 0:50 ` [PATCH net-next 2/8] net: eth: altera: set rx and tx ring size before init_dma call Dalon Westergreen
2018-11-15 23:08 ` Thor Thayer
2018-11-15 0:50 ` [PATCH net-next 3/8] net: eth: altera: tse: fix altera_dmaops declaration Dalon Westergreen
2018-11-15 23:10 ` Thor Thayer
2018-11-15 0:50 ` [PATCH net-next 4/8] net: eth: altera: tse: add optional function to start tx dma Dalon Westergreen
2018-11-15 23:12 ` Thor Thayer
2018-11-15 0:50 ` [PATCH net-next 5/8] net: eth: altera: tse: Move common functions to altera_utils Dalon Westergreen
2018-11-15 23:14 ` Thor Thayer
2018-11-15 0:50 ` [PATCH net-next 6/8] net: eth: altera: tse: add support for ptp and timestamping Dalon Westergreen
2018-11-15 3:24 ` Richard Cochran
[not found] ` <729c71a95091f0902396be8b6c73409cd1e8ae9d.camel@gmail.com>
2018-11-16 2:14 ` Richard Cochran
2018-11-16 13:33 ` Dalon Westergreen
2018-11-16 14:48 ` Dalon Westergreen
2018-11-16 18:37 ` Richard Cochran
2018-11-15 0:50 ` [PATCH net-next 7/8] net: eth: altera: tse: add msgdma prefetcher Dalon Westergreen
2018-11-16 15:20 ` Thor Thayer
2018-11-28 0:26 ` Dalon Westergreen
2018-11-15 0:50 ` [PATCH net-next 8/8] net: eth: altera: tse: update devicetree bindings documentation Dalon Westergreen
2018-11-15 23:49 ` Thor Thayer
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=20181115005047.28464-2-dwesterg@gmail.com \
--to=dwesterg@gmail.com \
--cc=dalon.westergreen@intel.com \
--cc=dinguyen@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=thor.thayer@linux.intel.com \
/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: link
Be 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.