All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next 0/2] r8169: improve rtl_rx and NUM_RX_DESC handling
@ 2020-12-05 23:58 Heiner Kallweit
  2020-12-06  0:00 ` [PATCH net-next 1/2] r8169: improve rtl_rx Heiner Kallweit
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Heiner Kallweit @ 2020-12-05 23:58 UTC (permalink / raw)
  To: Jakub Kicinski, David Miller, Realtek linux nic maintainers; +Cc: netdev

This series improves rtl_rx() and the handling of NUM_RX_DESC.

Heiner Kallweit (2):
  r8169: improve rtl_rx
  r8169: make NUM_RX_DESC a signed int

 drivers/net/ethernet/realtek/r8169_main.c | 21 ++++++++-------------
 1 file changed, 8 insertions(+), 13 deletions(-)

-- 
2.29.2


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH net-next 1/2] r8169: improve rtl_rx
  2020-12-05 23:58 [PATCH net-next 0/2] r8169: improve rtl_rx and NUM_RX_DESC handling Heiner Kallweit
@ 2020-12-06  0:00 ` Heiner Kallweit
  2020-12-06  0:00 ` [PATCH net-next 2/2] r8169: make NUM_RX_DESC a signed int Heiner Kallweit
  2020-12-06  0:32 ` [PATCH net-next 0/2] r8169: improve rtl_rx and NUM_RX_DESC handling David Miller
  2 siblings, 0 replies; 4+ messages in thread
From: Heiner Kallweit @ 2020-12-06  0:00 UTC (permalink / raw)
  To: Jakub Kicinski, David Miller, Realtek linux nic maintainers; +Cc: netdev

There's no need to check min(budget, NUM_RX_DESC). At first budget
(NAPI_POLL_WEIGHT = 64) is less then NUM_RX_DESC (256).
And more important: Even in case of budget > NUM_RX_DESC we could
safely continue processing descriptors as long as they are owned by
the CPU. In addition replace rx_left with a normal counter variable,
this allows to simplify the code. Last but not least there's no need
any longer to pass the budget as an u32.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/ethernet/realtek/r8169_main.c | 15 +++++----------
 1 file changed, 5 insertions(+), 10 deletions(-)

diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index 3ef1b31c9..3ea27a657 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -4415,15 +4415,13 @@ static inline void rtl8169_rx_csum(struct sk_buff *skb, u32 opts1)
 		skb_checksum_none_assert(skb);
 }
 
-static int rtl_rx(struct net_device *dev, struct rtl8169_private *tp, u32 budget)
+static int rtl_rx(struct net_device *dev, struct rtl8169_private *tp, int budget)
 {
-	unsigned int cur_rx, rx_left, count;
 	struct device *d = tp_to_dev(tp);
+	int count;
 
-	cur_rx = tp->cur_rx;
-
-	for (rx_left = min(budget, NUM_RX_DESC); rx_left > 0; rx_left--, cur_rx++) {
-		unsigned int pkt_size, entry = cur_rx % NUM_RX_DESC;
+	for (count = 0; count < budget; count++, tp->cur_rx++) {
+		unsigned int pkt_size, entry = tp->cur_rx % NUM_RX_DESC;
 		struct RxDesc *desc = tp->RxDescArray + entry;
 		struct sk_buff *skb;
 		const void *rx_buf;
@@ -4500,9 +4498,6 @@ static int rtl_rx(struct net_device *dev, struct rtl8169_private *tp, u32 budget
 		rtl8169_mark_to_asic(desc);
 	}
 
-	count = cur_rx - tp->cur_rx;
-	tp->cur_rx = cur_rx;
-
 	return count;
 }
 
@@ -4561,7 +4556,7 @@ static int rtl8169_poll(struct napi_struct *napi, int budget)
 	struct net_device *dev = tp->dev;
 	int work_done;
 
-	work_done = rtl_rx(dev, tp, (u32) budget);
+	work_done = rtl_rx(dev, tp, budget);
 
 	rtl_tx(dev, tp, budget);
 
-- 
2.29.2



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH net-next 2/2] r8169: make NUM_RX_DESC a signed int
  2020-12-05 23:58 [PATCH net-next 0/2] r8169: improve rtl_rx and NUM_RX_DESC handling Heiner Kallweit
  2020-12-06  0:00 ` [PATCH net-next 1/2] r8169: improve rtl_rx Heiner Kallweit
@ 2020-12-06  0:00 ` Heiner Kallweit
  2020-12-06  0:32 ` [PATCH net-next 0/2] r8169: improve rtl_rx and NUM_RX_DESC handling David Miller
  2 siblings, 0 replies; 4+ messages in thread
From: Heiner Kallweit @ 2020-12-06  0:00 UTC (permalink / raw)
  To: Jakub Kicinski, David Miller, Realtek linux nic maintainers; +Cc: netdev

After recent changes there's no need any longer to define NUM_RX_DESC
as an unsigned value.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/ethernet/realtek/r8169_main.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index 3ea27a657..46d8510b2 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -68,7 +68,7 @@
 #define R8169_REGS_SIZE		256
 #define R8169_RX_BUF_SIZE	(SZ_16K - 1)
 #define NUM_TX_DESC	256	/* Number of Tx descriptor registers */
-#define NUM_RX_DESC	256U	/* Number of Rx descriptor registers */
+#define NUM_RX_DESC	256	/* Number of Rx descriptor registers */
 #define R8169_TX_RING_BYTES	(NUM_TX_DESC * sizeof(struct TxDesc))
 #define R8169_RX_RING_BYTES	(NUM_RX_DESC * sizeof(struct RxDesc))
 
@@ -3844,7 +3844,7 @@ static struct page *rtl8169_alloc_rx_data(struct rtl8169_private *tp,
 
 static void rtl8169_rx_clear(struct rtl8169_private *tp)
 {
-	unsigned int i;
+	int i;
 
 	for (i = 0; i < NUM_RX_DESC && tp->Rx_databuff[i]; i++) {
 		dma_unmap_page(tp_to_dev(tp),
@@ -3859,7 +3859,7 @@ static void rtl8169_rx_clear(struct rtl8169_private *tp)
 
 static int rtl8169_rx_fill(struct rtl8169_private *tp)
 {
-	unsigned int i;
+	int i;
 
 	for (i = 0; i < NUM_RX_DESC; i++) {
 		struct page *data;
-- 
2.29.2



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH net-next 0/2] r8169: improve rtl_rx and NUM_RX_DESC handling
  2020-12-05 23:58 [PATCH net-next 0/2] r8169: improve rtl_rx and NUM_RX_DESC handling Heiner Kallweit
  2020-12-06  0:00 ` [PATCH net-next 1/2] r8169: improve rtl_rx Heiner Kallweit
  2020-12-06  0:00 ` [PATCH net-next 2/2] r8169: make NUM_RX_DESC a signed int Heiner Kallweit
@ 2020-12-06  0:32 ` David Miller
  2 siblings, 0 replies; 4+ messages in thread
From: David Miller @ 2020-12-06  0:32 UTC (permalink / raw)
  To: hkallweit1; +Cc: kuba, nic_swsd, netdev

From: Heiner Kallweit <hkallweit1@gmail.com>
Date: Sun, 6 Dec 2020 00:58:12 +0100

> This series improves rtl_rx() and the handling of NUM_RX_DESC.

Series applied, thanks Heiner!


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-12-06  0:33 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-05 23:58 [PATCH net-next 0/2] r8169: improve rtl_rx and NUM_RX_DESC handling Heiner Kallweit
2020-12-06  0:00 ` [PATCH net-next 1/2] r8169: improve rtl_rx Heiner Kallweit
2020-12-06  0:00 ` [PATCH net-next 2/2] r8169: make NUM_RX_DESC a signed int Heiner Kallweit
2020-12-06  0:32 ` [PATCH net-next 0/2] r8169: improve rtl_rx and NUM_RX_DESC handling David Miller

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.