All of lore.kernel.org
 help / color / mirror / Atom feed
* [RESEND net-next v2 00/12]drivers: net: convert tasklets to use new tasklet_setup() API
@ 2020-09-14  7:43 ` Allen Pais
  0 siblings, 0 replies; 42+ messages in thread
From: Allen Pais @ 2020-09-14  7:31 UTC (permalink / raw)
  To: davem
  Cc: m.grzeschik, kuba, paulus, oliver, woojung.huh, UNGLinuxDriver,
	petkan, netdev, linux-usb, linux-ppp, Allen Pais

From: Allen Pais <apais@linux.microsoft.com>

ommit 12cc923f1ccc ("tasklet: Introduce new initialization API")'
introduced a new tasklet initialization API. This series converts
all the net/* drivers to use the new tasklet_setup() API

This series is based on v5.9-rc5

Allen Pais (12):
  net: mvpp2: Prepare to use the new tasklet API
  net: arcnet: convert tasklets to use new tasklet_setup() API
  net: caif: convert tasklets to use new tasklet_setup() API
  net: ifb: convert tasklets to use new tasklet_setup() API
  net: ppp: convert tasklets to use new tasklet_setup() API
  net: cdc_ncm: convert tasklets to use new tasklet_setup() API
  net: hso: convert tasklets to use new tasklet_setup() API
  net: lan78xx: convert tasklets to use new tasklet_setup() API
  net: pegasus: convert tasklets to use new tasklet_setup() API
  net: r8152: convert tasklets to use new tasklet_setup() API
  net: rtl8150: convert tasklets to use new tasklet_setup() API
  net: usbnet: convert tasklets to use new tasklet_setup() API

 drivers/net/arcnet/arcnet.c                     |  7 +++----
 drivers/net/caif/caif_virtio.c                  |  8 +++-----
 drivers/net/ethernet/marvell/mvpp2/mvpp2.h      |  1 +
 drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c |  1 +
 drivers/net/ifb.c                               |  7 +++----
 drivers/net/ppp/ppp_async.c                     |  8 ++++----
 drivers/net/ppp/ppp_synctty.c                   |  8 ++++----
 drivers/net/usb/cdc_ncm.c                       |  8 ++++----
 drivers/net/usb/hso.c                           | 10 +++++-----
 drivers/net/usb/lan78xx.c                       |  6 +++---
 drivers/net/usb/pegasus.c                       |  6 +++---
 drivers/net/usb/r8152.c                         |  8 +++-----
 drivers/net/usb/rtl8150.c                       |  6 +++---
 drivers/net/usb/usbnet.c                        |  3 +--
 14 files changed, 41 insertions(+), 46 deletions(-)

-- 
2.25.1


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

* [RESEND net-next v2 01/12] net: mvpp2: Prepare to use the new tasklet API
  2020-09-14  7:43 ` Allen Pais
@ 2020-09-14  7:43   ` Allen Pais
  -1 siblings, 0 replies; 42+ messages in thread
From: Allen Pais @ 2020-09-14  7:31 UTC (permalink / raw)
  To: davem
  Cc: m.grzeschik, kuba, paulus, oliver, woojung.huh, UNGLinuxDriver,
	petkan, netdev, linux-usb, linux-ppp, Allen Pais, Romain Perier

From: Allen Pais <apais@linux.microsoft.com>

The future tasklet API will no longer allow to pass an arbitrary
"unsigned long" data parameter. The tasklet data structure will need to
be embedded into a data structure that will be retrieved from the tasklet
handler. Currently, there are no ways to retrieve the "struct mvpp2_port
*" from a given "struct mvpp2_port_pcpu *". This commit adds a new field
to get the address of the main port for each pcpu context.

Signed-off-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: Allen Pais <apais@linux.microsoft.com>
---
 drivers/net/ethernet/marvell/mvpp2/mvpp2.h      | 1 +
 drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 1 +
 2 files changed, 2 insertions(+)

diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2.h b/drivers/net/ethernet/marvell/mvpp2/mvpp2.h
index 32753cc771bf..198860a4527d 100644
--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2.h
+++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2.h
@@ -861,6 +861,7 @@ struct mvpp2_port_pcpu {
 	struct hrtimer tx_done_timer;
 	struct net_device *dev;
 	bool timer_scheduled;
+	struct mvpp2_port *port;
 };
 
 struct mvpp2_queue_vector {
diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
index 6e140d1b8967..e8e68e8acdb3 100644
--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
+++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
@@ -6025,6 +6025,7 @@ static int mvpp2_port_probe(struct platform_device *pdev,
 		err = -ENOMEM;
 		goto err_free_txq_pcpu;
 	}
+	port->pcpu->port = port;
 
 	if (!port->has_tx_irqs) {
 		for (thread = 0; thread < priv->nthreads; thread++) {
-- 
2.25.1


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

* [RESEND net-next v2 02/12] net: arcnet: convert tasklets to use new tasklet_setup() API
  2020-09-14  7:43 ` Allen Pais
@ 2020-09-14  7:43   ` Allen Pais
  -1 siblings, 0 replies; 42+ messages in thread
From: Allen Pais @ 2020-09-14  7:31 UTC (permalink / raw)
  To: davem
  Cc: m.grzeschik, kuba, paulus, oliver, woojung.huh, UNGLinuxDriver,
	petkan, netdev, linux-usb, linux-ppp, Allen Pais, Romain Perier

From: Allen Pais <apais@linux.microsoft.com>

In preparation for unconditionally passing the
struct tasklet_struct pointer to all tasklet
callbacks, switch to using the new tasklet_setup()
and from_tasklet() to pass the tasklet pointer explicitly.

Signed-off-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: Allen Pais <apais@linux.microsoft.com>
---
 drivers/net/arcnet/arcnet.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/net/arcnet/arcnet.c b/drivers/net/arcnet/arcnet.c
index e04efc0a5c97..69d8920e394b 100644
--- a/drivers/net/arcnet/arcnet.c
+++ b/drivers/net/arcnet/arcnet.c
@@ -393,9 +393,9 @@ static void arcnet_timer(struct timer_list *t)
 	}
 }
 
-static void arcnet_reply_tasklet(unsigned long data)
+static void arcnet_reply_tasklet(struct tasklet_struct *t)
 {
-	struct arcnet_local *lp = (struct arcnet_local *)data;
+	struct arcnet_local *lp = from_tasklet(lp, t, reply_tasklet);
 
 	struct sk_buff *ackskb, *skb;
 	struct sock_exterr_skb *serr;
@@ -483,8 +483,7 @@ int arcnet_open(struct net_device *dev)
 		arc_cont(D_PROTO, "\n");
 	}
 
-	tasklet_init(&lp->reply_tasklet, arcnet_reply_tasklet,
-		     (unsigned long)lp);
+	tasklet_setup(&lp->reply_tasklet, arcnet_reply_tasklet);
 
 	arc_printk(D_INIT, dev, "arcnet_open: resetting card.\n");
 
-- 
2.25.1


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

* [RESEND net-next v2 03/12] net: caif: convert tasklets to use new tasklet_setup() API
  2020-09-14  7:43 ` Allen Pais
@ 2020-09-14  7:43   ` Allen Pais
  -1 siblings, 0 replies; 42+ messages in thread
From: Allen Pais @ 2020-09-14  7:31 UTC (permalink / raw)
  To: davem
  Cc: m.grzeschik, kuba, paulus, oliver, woojung.huh, UNGLinuxDriver,
	petkan, netdev, linux-usb, linux-ppp, Allen Pais, Romain Perier

From: Allen Pais <apais@linux.microsoft.com>

In preparation for unconditionally passing the
struct tasklet_struct pointer to all tasklet
callbacks, switch to using the new tasklet_setup()
and from_tasklet() to pass the tasklet pointer explicitly.

Signed-off-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: Allen Pais <apais@linux.microsoft.com>
---
 drivers/net/caif/caif_virtio.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/drivers/net/caif/caif_virtio.c b/drivers/net/caif/caif_virtio.c
index 80ea2e913c2b..23c2eb8ceeec 100644
--- a/drivers/net/caif/caif_virtio.c
+++ b/drivers/net/caif/caif_virtio.c
@@ -598,9 +598,9 @@ static netdev_tx_t cfv_netdev_tx(struct sk_buff *skb, struct net_device *netdev)
 	return NETDEV_TX_OK;
 }
 
-static void cfv_tx_release_tasklet(unsigned long drv)
+static void cfv_tx_release_tasklet(struct tasklet_struct *t)
 {
-	struct cfv_info *cfv = (struct cfv_info *)drv;
+	struct cfv_info *cfv = from_tasklet(cfv, t, tx_release_tasklet);
 	cfv_release_used_buf(cfv->vq_tx);
 }
 
@@ -716,9 +716,7 @@ static int cfv_probe(struct virtio_device *vdev)
 	cfv->ctx.head = USHRT_MAX;
 	netif_napi_add(netdev, &cfv->napi, cfv_rx_poll, CFV_DEFAULT_QUOTA);
 
-	tasklet_init(&cfv->tx_release_tasklet,
-		     cfv_tx_release_tasklet,
-		     (unsigned long)cfv);
+	tasklet_setup(&cfv->tx_release_tasklet, cfv_tx_release_tasklet);
 
 	/* Carrier is off until netdevice is opened */
 	netif_carrier_off(netdev);
-- 
2.25.1


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

* [RESEND net-next v2 04/12] net: ifb: convert tasklets to use new tasklet_setup() API
  2020-09-14  7:43 ` Allen Pais
@ 2020-09-14  7:43   ` Allen Pais
  -1 siblings, 0 replies; 42+ messages in thread
From: Allen Pais @ 2020-09-14  7:31 UTC (permalink / raw)
  To: davem
  Cc: m.grzeschik, kuba, paulus, oliver, woojung.huh, UNGLinuxDriver,
	petkan, netdev, linux-usb, linux-ppp, Allen Pais, Romain Perier

From: Allen Pais <apais@linux.microsoft.com>

In preparation for unconditionally passing the
struct tasklet_struct pointer to all tasklet
callbacks, switch to using the new tasklet_setup()
and from_tasklet() to pass the tasklet pointer explicitly.

Signed-off-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: Allen Pais <apais@linux.microsoft.com>
---
 drivers/net/ifb.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ifb.c b/drivers/net/ifb.c
index 7fe306e76281..a2d6027362d2 100644
--- a/drivers/net/ifb.c
+++ b/drivers/net/ifb.c
@@ -59,9 +59,9 @@ static netdev_tx_t ifb_xmit(struct sk_buff *skb, struct net_device *dev);
 static int ifb_open(struct net_device *dev);
 static int ifb_close(struct net_device *dev);
 
-static void ifb_ri_tasklet(unsigned long _txp)
+static void ifb_ri_tasklet(struct tasklet_struct *t)
 {
-	struct ifb_q_private *txp = (struct ifb_q_private *)_txp;
+	struct ifb_q_private *txp = from_tasklet(txp, t, ifb_tasklet);
 	struct netdev_queue *txq;
 	struct sk_buff *skb;
 
@@ -170,8 +170,7 @@ static int ifb_dev_init(struct net_device *dev)
 		__skb_queue_head_init(&txp->tq);
 		u64_stats_init(&txp->rsync);
 		u64_stats_init(&txp->tsync);
-		tasklet_init(&txp->ifb_tasklet, ifb_ri_tasklet,
-			     (unsigned long)txp);
+		tasklet_setup(&txp->ifb_tasklet, ifb_ri_tasklet);
 		netif_tx_start_queue(netdev_get_tx_queue(dev, i));
 	}
 	return 0;
-- 
2.25.1


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

* [RESEND net-next v2 05/12] net: ppp: convert tasklets to use new tasklet_setup() API
  2020-09-14  7:43 ` Allen Pais
@ 2020-09-14  7:43   ` Allen Pais
  -1 siblings, 0 replies; 42+ messages in thread
From: Allen Pais @ 2020-09-14  7:31 UTC (permalink / raw)
  To: davem
  Cc: m.grzeschik, kuba, paulus, oliver, woojung.huh, UNGLinuxDriver,
	petkan, netdev, linux-usb, linux-ppp, Allen Pais, Romain Perier

From: Allen Pais <apais@linux.microsoft.com>

In preparation for unconditionally passing the
struct tasklet_struct pointer to all tasklet
callbacks, switch to using the new tasklet_setup()
and from_tasklet() to pass the tasklet pointer explicitly.

Signed-off-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: Allen Pais <apais@linux.microsoft.com>
---
 drivers/net/ppp/ppp_async.c   | 8 ++++----
 drivers/net/ppp/ppp_synctty.c | 8 ++++----
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/net/ppp/ppp_async.c b/drivers/net/ppp/ppp_async.c
index 29a0917a81e6..2b66cf301b0e 100644
--- a/drivers/net/ppp/ppp_async.c
+++ b/drivers/net/ppp/ppp_async.c
@@ -101,7 +101,7 @@ static void ppp_async_input(struct asyncppp *ap, const unsigned char *buf,
 			    char *flags, int count);
 static int ppp_async_ioctl(struct ppp_channel *chan, unsigned int cmd,
 			   unsigned long arg);
-static void ppp_async_process(unsigned long arg);
+static void ppp_async_process(struct tasklet_struct *t);
 
 static void async_lcp_peek(struct asyncppp *ap, unsigned char *data,
 			   int len, int inbound);
@@ -179,7 +179,7 @@ ppp_asynctty_open(struct tty_struct *tty)
 	ap->lcp_fcs = -1;
 
 	skb_queue_head_init(&ap->rqueue);
-	tasklet_init(&ap->tsk, ppp_async_process, (unsigned long) ap);
+	tasklet_setup(&ap->tsk, ppp_async_process);
 
 	refcount_set(&ap->refcnt, 1);
 	init_completion(&ap->dead);
@@ -488,9 +488,9 @@ ppp_async_ioctl(struct ppp_channel *chan, unsigned int cmd, unsigned long arg)
  * to the ppp_generic code, and to tell the ppp_generic code
  * if we can accept more output now.
  */
-static void ppp_async_process(unsigned long arg)
+static void ppp_async_process(struct tasklet_struct *t)
 {
-	struct asyncppp *ap = (struct asyncppp *) arg;
+	struct asyncppp *ap = from_tasklet(ap, t, tsk);
 	struct sk_buff *skb;
 
 	/* process received packets */
diff --git a/drivers/net/ppp/ppp_synctty.c b/drivers/net/ppp/ppp_synctty.c
index 0f338752c38b..86ee5149f4f2 100644
--- a/drivers/net/ppp/ppp_synctty.c
+++ b/drivers/net/ppp/ppp_synctty.c
@@ -90,7 +90,7 @@ static struct sk_buff* ppp_sync_txmunge(struct syncppp *ap, struct sk_buff *);
 static int ppp_sync_send(struct ppp_channel *chan, struct sk_buff *skb);
 static int ppp_sync_ioctl(struct ppp_channel *chan, unsigned int cmd,
 			  unsigned long arg);
-static void ppp_sync_process(unsigned long arg);
+static void ppp_sync_process(struct tasklet_struct *t);
 static int ppp_sync_push(struct syncppp *ap);
 static void ppp_sync_flush_output(struct syncppp *ap);
 static void ppp_sync_input(struct syncppp *ap, const unsigned char *buf,
@@ -177,7 +177,7 @@ ppp_sync_open(struct tty_struct *tty)
 	ap->raccm = ~0U;
 
 	skb_queue_head_init(&ap->rqueue);
-	tasklet_init(&ap->tsk, ppp_sync_process, (unsigned long) ap);
+	tasklet_setup(&ap->tsk, ppp_sync_process);
 
 	refcount_set(&ap->refcnt, 1);
 	init_completion(&ap->dead_cmp);
@@ -480,9 +480,9 @@ ppp_sync_ioctl(struct ppp_channel *chan, unsigned int cmd, unsigned long arg)
  * to the ppp_generic code, and to tell the ppp_generic code
  * if we can accept more output now.
  */
-static void ppp_sync_process(unsigned long arg)
+static void ppp_sync_process(struct tasklet_struct *t)
 {
-	struct syncppp *ap = (struct syncppp *) arg;
+	struct syncppp *ap = from_tasklet(ap, t, tsk);
 	struct sk_buff *skb;
 
 	/* process received packets */
-- 
2.25.1


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

* [RESEND net-next v2 06/12] net: cdc_ncm: convert tasklets to use new tasklet_setup() API
  2020-09-14  7:43 ` Allen Pais
@ 2020-09-14  7:43   ` Allen Pais
  -1 siblings, 0 replies; 42+ messages in thread
From: Allen Pais @ 2020-09-14  7:31 UTC (permalink / raw)
  To: davem
  Cc: m.grzeschik, kuba, paulus, oliver, woojung.huh, UNGLinuxDriver,
	petkan, netdev, linux-usb, linux-ppp, Allen Pais, Romain Perier

From: Allen Pais <apais@linux.microsoft.com>

In preparation for unconditionally passing the
struct tasklet_struct pointer to all tasklet
callbacks, switch to using the new tasklet_setup()
and from_tasklet() to pass the tasklet pointer explicitly.

Signed-off-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: Allen Pais <apais@linux.microsoft.com>
---
 drivers/net/usb/cdc_ncm.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/net/usb/cdc_ncm.c b/drivers/net/usb/cdc_ncm.c
index e04f588538cc..57a95ef90385 100644
--- a/drivers/net/usb/cdc_ncm.c
+++ b/drivers/net/usb/cdc_ncm.c
@@ -61,7 +61,7 @@ static bool prefer_mbim;
 module_param(prefer_mbim, bool, 0644);
 MODULE_PARM_DESC(prefer_mbim, "Prefer MBIM setting on dual NCM/MBIM functions");
 
-static void cdc_ncm_txpath_bh(unsigned long param);
+static void cdc_ncm_txpath_bh(struct tasklet_struct *t);
 static void cdc_ncm_tx_timeout_start(struct cdc_ncm_ctx *ctx);
 static enum hrtimer_restart cdc_ncm_tx_timer_cb(struct hrtimer *hr_timer);
 static struct usb_driver cdc_ncm_driver;
@@ -815,7 +815,7 @@ int cdc_ncm_bind_common(struct usbnet *dev, struct usb_interface *intf, u8 data_
 
 	hrtimer_init(&ctx->tx_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
 	ctx->tx_timer.function = &cdc_ncm_tx_timer_cb;
-	tasklet_init(&ctx->bh, cdc_ncm_txpath_bh, (unsigned long)dev);
+	tasklet_setup(&ctx->bh, cdc_ncm_txpath_bh);
 	atomic_set(&ctx->stop, 0);
 	spin_lock_init(&ctx->mtx);
 
@@ -1468,9 +1468,9 @@ static enum hrtimer_restart cdc_ncm_tx_timer_cb(struct hrtimer *timer)
 	return HRTIMER_NORESTART;
 }
 
-static void cdc_ncm_txpath_bh(unsigned long param)
+static void cdc_ncm_txpath_bh(struct tasklet_struct *t)
 {
-	struct usbnet *dev = (struct usbnet *)param;
+	struct usbnet *dev = from_tasklet(dev, t, bh);
 	struct cdc_ncm_ctx *ctx = (struct cdc_ncm_ctx *)dev->data[0];
 
 	spin_lock_bh(&ctx->mtx);
-- 
2.25.1


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

* [RESEND net-next v2 07/12] net: hso: convert tasklets to use new tasklet_setup() API
  2020-09-14  7:43 ` Allen Pais
@ 2020-09-14  7:43   ` Allen Pais
  -1 siblings, 0 replies; 42+ messages in thread
From: Allen Pais @ 2020-09-14  7:31 UTC (permalink / raw)
  To: davem
  Cc: m.grzeschik, kuba, paulus, oliver, woojung.huh, UNGLinuxDriver,
	petkan, netdev, linux-usb, linux-ppp, Allen Pais, Romain Perier

From: Allen Pais <apais@linux.microsoft.com>

In preparation for unconditionally passing the
struct tasklet_struct pointer to all tasklet
callbacks, switch to using the new tasklet_setup()
and from_tasklet() to pass the tasklet pointer explicitly.

Signed-off-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: Allen Pais <apais@linux.microsoft.com>
---
 drivers/net/usb/hso.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c
index 2bb28db89432..3b08a6b5db05 100644
--- a/drivers/net/usb/hso.c
+++ b/drivers/net/usb/hso.c
@@ -1213,9 +1213,10 @@ static void hso_std_serial_read_bulk_callback(struct urb *urb)
  * This needs to be a tasklet otherwise we will
  * end up recursively calling this function.
  */
-static void hso_unthrottle_tasklet(unsigned long data)
+static void hso_unthrottle_tasklet(struct tasklet_struct *t)
 {
-	struct hso_serial *serial = (struct hso_serial *)data;
+	struct hso_serial *serial = from_tasklet(serial, t,
+						 unthrottle_tasklet);
 	unsigned long flags;
 
 	spin_lock_irqsave(&serial->serial_lock, flags);
@@ -1264,9 +1265,8 @@ static int hso_serial_open(struct tty_struct *tty, struct file *filp)
 		serial->rx_state = RX_IDLE;
 		/* Force default termio settings */
 		_hso_serial_set_termios(tty, NULL);
-		tasklet_init(&serial->unthrottle_tasklet,
-			     hso_unthrottle_tasklet,
-			     (unsigned long)serial);
+		tasklet_setup(&serial->unthrottle_tasklet,
+			      hso_unthrottle_tasklet);
 		result = hso_start_serial_device(serial->parent, GFP_KERNEL);
 		if (result) {
 			hso_stop_serial_device(serial->parent);
-- 
2.25.1


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

* [RESEND net-next v2 08/12] net: lan78xx: convert tasklets to use new tasklet_setup() API
  2020-09-14  7:43 ` Allen Pais
@ 2020-09-14  7:43   ` Allen Pais
  -1 siblings, 0 replies; 42+ messages in thread
From: Allen Pais @ 2020-09-14  7:31 UTC (permalink / raw)
  To: davem
  Cc: m.grzeschik, kuba, paulus, oliver, woojung.huh, UNGLinuxDriver,
	petkan, netdev, linux-usb, linux-ppp, Allen Pais, Romain Perier

From: Allen Pais <apais@linux.microsoft.com>

In preparation for unconditionally passing the
struct tasklet_struct pointer to all tasklet
callbacks, switch to using the new tasklet_setup()
and from_tasklet() to pass the tasklet pointer explicitly.

Signed-off-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: Allen Pais <apais@linux.microsoft.com>
---
 drivers/net/usb/lan78xx.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
index 65b315bc60ab..3f6b3712086b 100644
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
@@ -3386,9 +3386,9 @@ static void lan78xx_rx_bh(struct lan78xx_net *dev)
 		netif_wake_queue(dev->net);
 }
 
-static void lan78xx_bh(unsigned long param)
+static void lan78xx_bh(struct tasklet_struct *t)
 {
-	struct lan78xx_net *dev = (struct lan78xx_net *)param;
+	struct lan78xx_net *dev = from_tasklet(dev, t, bh);
 	struct sk_buff *skb;
 	struct skb_data *entry;
 
@@ -3666,7 +3666,7 @@ static int lan78xx_probe(struct usb_interface *intf,
 	skb_queue_head_init(&dev->txq_pend);
 	mutex_init(&dev->phy_mutex);
 
-	tasklet_init(&dev->bh, lan78xx_bh, (unsigned long)dev);
+	tasklet_setup(&dev->bh, lan78xx_bh);
 	INIT_DELAYED_WORK(&dev->wq, lan78xx_delayedwork);
 	init_usb_anchor(&dev->deferred);
 
-- 
2.25.1


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

* [RESEND net-next v2 09/12] net: pegasus: convert tasklets to use new tasklet_setup() API
  2020-09-14  7:43 ` Allen Pais
@ 2020-09-14  7:43   ` Allen Pais
  -1 siblings, 0 replies; 42+ messages in thread
From: Allen Pais @ 2020-09-14  7:31 UTC (permalink / raw)
  To: davem
  Cc: m.grzeschik, kuba, paulus, oliver, woojung.huh, UNGLinuxDriver,
	petkan, netdev, linux-usb, linux-ppp, Allen Pais, Romain Perier

From: Allen Pais <apais@linux.microsoft.com>

In preparation for unconditionally passing the
struct tasklet_struct pointer to all tasklet
callbacks, switch to using the new tasklet_setup()
and from_tasklet() to pass the tasklet pointer explicitly.

Signed-off-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: Allen Pais <apais@linux.microsoft.com>
---
 drivers/net/usb/pegasus.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/usb/pegasus.c b/drivers/net/usb/pegasus.c
index e92cb51a2c77..1f11e586037f 100644
--- a/drivers/net/usb/pegasus.c
+++ b/drivers/net/usb/pegasus.c
@@ -565,12 +565,12 @@ static void read_bulk_callback(struct urb *urb)
 	tasklet_schedule(&pegasus->rx_tl);
 }
 
-static void rx_fixup(unsigned long data)
+static void rx_fixup(struct tasklet_struct *t)
 {
 	pegasus_t *pegasus;
 	int status;
 
-	pegasus = (pegasus_t *) data;
+	pegasus = from_tasklet(pegasus, t, rx_tl);
 	if (pegasus->flags & PEGASUS_UNPLUG)
 		return;
 
@@ -1141,7 +1141,7 @@ static int pegasus_probe(struct usb_interface *intf,
 		goto out1;
 	}
 
-	tasklet_init(&pegasus->rx_tl, rx_fixup, (unsigned long) pegasus);
+	tasklet_setup(&pegasus->rx_tl, rx_fixup);
 
 	INIT_DELAYED_WORK(&pegasus->carrier_check, check_carrier);
 
-- 
2.25.1


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

* [RESEND net-next v2 10/12] net: r8152: convert tasklets to use new tasklet_setup() API
  2020-09-14  7:43 ` Allen Pais
@ 2020-09-14  7:43   ` Allen Pais
  -1 siblings, 0 replies; 42+ messages in thread
From: Allen Pais @ 2020-09-14  7:31 UTC (permalink / raw)
  To: davem
  Cc: m.grzeschik, kuba, paulus, oliver, woojung.huh, UNGLinuxDriver,
	petkan, netdev, linux-usb, linux-ppp, Allen Pais, Romain Perier

From: Allen Pais <apais@linux.microsoft.com>

In preparation for unconditionally passing the
struct tasklet_struct pointer to all tasklet
callbacks, switch to using the new tasklet_setup()
and from_tasklet() to pass the tasklet pointer explicitly.

Signed-off-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: Allen Pais <apais@linux.microsoft.com>
---
 drivers/net/usb/r8152.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
index b1770489aca5..2d706cdbf9a2 100644
--- a/drivers/net/usb/r8152.c
+++ b/drivers/net/usb/r8152.c
@@ -2410,11 +2410,9 @@ static void tx_bottom(struct r8152 *tp)
 	} while (res == 0);
 }
 
-static void bottom_half(unsigned long data)
+static void bottom_half(struct tasklet_struct *t)
 {
-	struct r8152 *tp;
-
-	tp = (struct r8152 *)data;
+	struct r8152 *tp = from_tasklet(tp, t, tx_tl);
 
 	if (test_bit(RTL8152_UNPLUG, &tp->flags))
 		return;
@@ -6730,7 +6728,7 @@ static int rtl8152_probe(struct usb_interface *intf,
 	mutex_init(&tp->control);
 	INIT_DELAYED_WORK(&tp->schedule, rtl_work_func_t);
 	INIT_DELAYED_WORK(&tp->hw_phy_work, rtl_hw_phy_work_func_t);
-	tasklet_init(&tp->tx_tl, bottom_half, (unsigned long)tp);
+	tasklet_setup(&tp->tx_tl, bottom_half);
 	tasklet_disable(&tp->tx_tl);
 
 	netdev->netdev_ops = &rtl8152_netdev_ops;
-- 
2.25.1


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

* [RESEND net-next v2 11/12] net: rtl8150: convert tasklets to use new tasklet_setup() API
  2020-09-14  7:43 ` Allen Pais
@ 2020-09-14  7:43   ` Allen Pais
  -1 siblings, 0 replies; 42+ messages in thread
From: Allen Pais @ 2020-09-14  7:31 UTC (permalink / raw)
  To: davem
  Cc: m.grzeschik, kuba, paulus, oliver, woojung.huh, UNGLinuxDriver,
	petkan, netdev, linux-usb, linux-ppp, Allen Pais, Romain Perier

From: Allen Pais <apais@linux.microsoft.com>

In preparation for unconditionally passing the
struct tasklet_struct pointer to all tasklet
callbacks, switch to using the new tasklet_setup()
and from_tasklet() to pass the tasklet pointer explicitly.

Signed-off-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: Allen Pais <apais@linux.microsoft.com>
---
 drivers/net/usb/rtl8150.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/usb/rtl8150.c b/drivers/net/usb/rtl8150.c
index 733f120c852b..d8f3b44efc08 100644
--- a/drivers/net/usb/rtl8150.c
+++ b/drivers/net/usb/rtl8150.c
@@ -589,9 +589,9 @@ static void free_skb_pool(rtl8150_t *dev)
 		dev_kfree_skb(dev->rx_skb_pool[i]);
 }
 
-static void rx_fixup(unsigned long data)
+static void rx_fixup(struct tasklet_struct *t)
 {
-	struct rtl8150 *dev = (struct rtl8150 *)data;
+	struct rtl8150 *dev = from_tasklet(dev, t, tl);
 	struct sk_buff *skb;
 	int status;
 
@@ -890,7 +890,7 @@ static int rtl8150_probe(struct usb_interface *intf,
 		return -ENOMEM;
 	}
 
-	tasklet_init(&dev->tl, rx_fixup, (unsigned long)dev);
+	tasklet_setup(&dev->tl, rx_fixup);
 	spin_lock_init(&dev->rx_pool_lock);
 
 	dev->udev = udev;
-- 
2.25.1


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

* [RESEND net-next v2 12/12] net: usbnet: convert tasklets to use new tasklet_setup() API
  2020-09-14  7:43 ` Allen Pais
@ 2020-09-14  7:43   ` Allen Pais
  -1 siblings, 0 replies; 42+ messages in thread
From: Allen Pais @ 2020-09-14  7:31 UTC (permalink / raw)
  To: davem
  Cc: m.grzeschik, kuba, paulus, oliver, woojung.huh, UNGLinuxDriver,
	petkan, netdev, linux-usb, linux-ppp, Allen Pais, Romain Perier

From: Allen Pais <apais@linux.microsoft.com>

In preparation for unconditionally passing the
struct tasklet_struct pointer to all tasklet
callbacks, switch to using the new tasklet_setup()
and from_tasklet() to pass the tasklet pointer explicitly
and remove the .data field.

Signed-off-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: Allen Pais <apais@linux.microsoft.com>
---
 drivers/net/usb/usbnet.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
index 2b2a841cd938..d63485b858ba 100644
--- a/drivers/net/usb/usbnet.c
+++ b/drivers/net/usb/usbnet.c
@@ -1708,8 +1708,7 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)
 	skb_queue_head_init (&dev->txq);
 	skb_queue_head_init (&dev->done);
 	skb_queue_head_init(&dev->rxq_pause);
-	dev->bh.func = usbnet_bh_tasklet;
-	dev->bh.data = (unsigned long)&dev->delay;
+	dev->bh.func = (void(*) (unsigned long))usbnet_bh_tasklet;
 	INIT_WORK (&dev->kevent, usbnet_deferred_kevent);
 	init_usb_anchor(&dev->deferred);
 	timer_setup(&dev->delay, usbnet_bh, 0);
-- 
2.25.1


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

* [RESEND net-next v2 00/12]drivers: net: convert tasklets to use new tasklet_setup() API
@ 2020-09-14  7:43 ` Allen Pais
  0 siblings, 0 replies; 42+ messages in thread
From: Allen Pais @ 2020-09-14  7:43 UTC (permalink / raw)
  To: davem
  Cc: m.grzeschik, kuba, paulus, oliver, woojung.huh, UNGLinuxDriver,
	petkan, netdev, linux-usb, linux-ppp, Allen Pais

From: Allen Pais <apais@linux.microsoft.com>

ommit 12cc923f1ccc ("tasklet: Introduce new initialization API")'
introduced a new tasklet initialization API. This series converts
all the net/* drivers to use the new tasklet_setup() API

This series is based on v5.9-rc5

Allen Pais (12):
  net: mvpp2: Prepare to use the new tasklet API
  net: arcnet: convert tasklets to use new tasklet_setup() API
  net: caif: convert tasklets to use new tasklet_setup() API
  net: ifb: convert tasklets to use new tasklet_setup() API
  net: ppp: convert tasklets to use new tasklet_setup() API
  net: cdc_ncm: convert tasklets to use new tasklet_setup() API
  net: hso: convert tasklets to use new tasklet_setup() API
  net: lan78xx: convert tasklets to use new tasklet_setup() API
  net: pegasus: convert tasklets to use new tasklet_setup() API
  net: r8152: convert tasklets to use new tasklet_setup() API
  net: rtl8150: convert tasklets to use new tasklet_setup() API
  net: usbnet: convert tasklets to use new tasklet_setup() API

 drivers/net/arcnet/arcnet.c                     |  7 +++----
 drivers/net/caif/caif_virtio.c                  |  8 +++-----
 drivers/net/ethernet/marvell/mvpp2/mvpp2.h      |  1 +
 drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c |  1 +
 drivers/net/ifb.c                               |  7 +++----
 drivers/net/ppp/ppp_async.c                     |  8 ++++----
 drivers/net/ppp/ppp_synctty.c                   |  8 ++++----
 drivers/net/usb/cdc_ncm.c                       |  8 ++++----
 drivers/net/usb/hso.c                           | 10 +++++-----
 drivers/net/usb/lan78xx.c                       |  6 +++---
 drivers/net/usb/pegasus.c                       |  6 +++---
 drivers/net/usb/r8152.c                         |  8 +++-----
 drivers/net/usb/rtl8150.c                       |  6 +++---
 drivers/net/usb/usbnet.c                        |  3 +--
 14 files changed, 41 insertions(+), 46 deletions(-)

-- 
2.25.1

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

* [RESEND net-next v2 01/12] net: mvpp2: Prepare to use the new tasklet API
@ 2020-09-14  7:43   ` Allen Pais
  0 siblings, 0 replies; 42+ messages in thread
From: Allen Pais @ 2020-09-14  7:43 UTC (permalink / raw)
  To: davem
  Cc: m.grzeschik, kuba, paulus, oliver, woojung.huh, UNGLinuxDriver,
	petkan, netdev, linux-usb, linux-ppp, Allen Pais, Romain Perier

From: Allen Pais <apais@linux.microsoft.com>

The future tasklet API will no longer allow to pass an arbitrary
"unsigned long" data parameter. The tasklet data structure will need to
be embedded into a data structure that will be retrieved from the tasklet
handler. Currently, there are no ways to retrieve the "struct mvpp2_port
*" from a given "struct mvpp2_port_pcpu *". This commit adds a new field
to get the address of the main port for each pcpu context.

Signed-off-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: Allen Pais <apais@linux.microsoft.com>
---
 drivers/net/ethernet/marvell/mvpp2/mvpp2.h      | 1 +
 drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 1 +
 2 files changed, 2 insertions(+)

diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2.h b/drivers/net/ethernet/marvell/mvpp2/mvpp2.h
index 32753cc771bf..198860a4527d 100644
--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2.h
+++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2.h
@@ -861,6 +861,7 @@ struct mvpp2_port_pcpu {
 	struct hrtimer tx_done_timer;
 	struct net_device *dev;
 	bool timer_scheduled;
+	struct mvpp2_port *port;
 };
 
 struct mvpp2_queue_vector {
diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
index 6e140d1b8967..e8e68e8acdb3 100644
--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
+++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
@@ -6025,6 +6025,7 @@ static int mvpp2_port_probe(struct platform_device *pdev,
 		err = -ENOMEM;
 		goto err_free_txq_pcpu;
 	}
+	port->pcpu->port = port;
 
 	if (!port->has_tx_irqs) {
 		for (thread = 0; thread < priv->nthreads; thread++) {
-- 
2.25.1

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

* [RESEND net-next v2 02/12] net: arcnet: convert tasklets to use new tasklet_setup() API
@ 2020-09-14  7:43   ` Allen Pais
  0 siblings, 0 replies; 42+ messages in thread
From: Allen Pais @ 2020-09-14  7:43 UTC (permalink / raw)
  To: davem
  Cc: m.grzeschik, kuba, paulus, oliver, woojung.huh, UNGLinuxDriver,
	petkan, netdev, linux-usb, linux-ppp, Allen Pais, Romain Perier

From: Allen Pais <apais@linux.microsoft.com>

In preparation for unconditionally passing the
struct tasklet_struct pointer to all tasklet
callbacks, switch to using the new tasklet_setup()
and from_tasklet() to pass the tasklet pointer explicitly.

Signed-off-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: Allen Pais <apais@linux.microsoft.com>
---
 drivers/net/arcnet/arcnet.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/net/arcnet/arcnet.c b/drivers/net/arcnet/arcnet.c
index e04efc0a5c97..69d8920e394b 100644
--- a/drivers/net/arcnet/arcnet.c
+++ b/drivers/net/arcnet/arcnet.c
@@ -393,9 +393,9 @@ static void arcnet_timer(struct timer_list *t)
 	}
 }
 
-static void arcnet_reply_tasklet(unsigned long data)
+static void arcnet_reply_tasklet(struct tasklet_struct *t)
 {
-	struct arcnet_local *lp = (struct arcnet_local *)data;
+	struct arcnet_local *lp = from_tasklet(lp, t, reply_tasklet);
 
 	struct sk_buff *ackskb, *skb;
 	struct sock_exterr_skb *serr;
@@ -483,8 +483,7 @@ int arcnet_open(struct net_device *dev)
 		arc_cont(D_PROTO, "\n");
 	}
 
-	tasklet_init(&lp->reply_tasklet, arcnet_reply_tasklet,
-		     (unsigned long)lp);
+	tasklet_setup(&lp->reply_tasklet, arcnet_reply_tasklet);
 
 	arc_printk(D_INIT, dev, "arcnet_open: resetting card.\n");
 
-- 
2.25.1

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

* [RESEND net-next v2 03/12] net: caif: convert tasklets to use new tasklet_setup() API
@ 2020-09-14  7:43   ` Allen Pais
  0 siblings, 0 replies; 42+ messages in thread
From: Allen Pais @ 2020-09-14  7:43 UTC (permalink / raw)
  To: davem
  Cc: m.grzeschik, kuba, paulus, oliver, woojung.huh, UNGLinuxDriver,
	petkan, netdev, linux-usb, linux-ppp, Allen Pais, Romain Perier

From: Allen Pais <apais@linux.microsoft.com>

In preparation for unconditionally passing the
struct tasklet_struct pointer to all tasklet
callbacks, switch to using the new tasklet_setup()
and from_tasklet() to pass the tasklet pointer explicitly.

Signed-off-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: Allen Pais <apais@linux.microsoft.com>
---
 drivers/net/caif/caif_virtio.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/drivers/net/caif/caif_virtio.c b/drivers/net/caif/caif_virtio.c
index 80ea2e913c2b..23c2eb8ceeec 100644
--- a/drivers/net/caif/caif_virtio.c
+++ b/drivers/net/caif/caif_virtio.c
@@ -598,9 +598,9 @@ static netdev_tx_t cfv_netdev_tx(struct sk_buff *skb, struct net_device *netdev)
 	return NETDEV_TX_OK;
 }
 
-static void cfv_tx_release_tasklet(unsigned long drv)
+static void cfv_tx_release_tasklet(struct tasklet_struct *t)
 {
-	struct cfv_info *cfv = (struct cfv_info *)drv;
+	struct cfv_info *cfv = from_tasklet(cfv, t, tx_release_tasklet);
 	cfv_release_used_buf(cfv->vq_tx);
 }
 
@@ -716,9 +716,7 @@ static int cfv_probe(struct virtio_device *vdev)
 	cfv->ctx.head = USHRT_MAX;
 	netif_napi_add(netdev, &cfv->napi, cfv_rx_poll, CFV_DEFAULT_QUOTA);
 
-	tasklet_init(&cfv->tx_release_tasklet,
-		     cfv_tx_release_tasklet,
-		     (unsigned long)cfv);
+	tasklet_setup(&cfv->tx_release_tasklet, cfv_tx_release_tasklet);
 
 	/* Carrier is off until netdevice is opened */
 	netif_carrier_off(netdev);
-- 
2.25.1

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

* [RESEND net-next v2 04/12] net: ifb: convert tasklets to use new tasklet_setup() API
@ 2020-09-14  7:43   ` Allen Pais
  0 siblings, 0 replies; 42+ messages in thread
From: Allen Pais @ 2020-09-14  7:43 UTC (permalink / raw)
  To: davem
  Cc: m.grzeschik, kuba, paulus, oliver, woojung.huh, UNGLinuxDriver,
	petkan, netdev, linux-usb, linux-ppp, Allen Pais, Romain Perier

From: Allen Pais <apais@linux.microsoft.com>

In preparation for unconditionally passing the
struct tasklet_struct pointer to all tasklet
callbacks, switch to using the new tasklet_setup()
and from_tasklet() to pass the tasklet pointer explicitly.

Signed-off-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: Allen Pais <apais@linux.microsoft.com>
---
 drivers/net/ifb.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ifb.c b/drivers/net/ifb.c
index 7fe306e76281..a2d6027362d2 100644
--- a/drivers/net/ifb.c
+++ b/drivers/net/ifb.c
@@ -59,9 +59,9 @@ static netdev_tx_t ifb_xmit(struct sk_buff *skb, struct net_device *dev);
 static int ifb_open(struct net_device *dev);
 static int ifb_close(struct net_device *dev);
 
-static void ifb_ri_tasklet(unsigned long _txp)
+static void ifb_ri_tasklet(struct tasklet_struct *t)
 {
-	struct ifb_q_private *txp = (struct ifb_q_private *)_txp;
+	struct ifb_q_private *txp = from_tasklet(txp, t, ifb_tasklet);
 	struct netdev_queue *txq;
 	struct sk_buff *skb;
 
@@ -170,8 +170,7 @@ static int ifb_dev_init(struct net_device *dev)
 		__skb_queue_head_init(&txp->tq);
 		u64_stats_init(&txp->rsync);
 		u64_stats_init(&txp->tsync);
-		tasklet_init(&txp->ifb_tasklet, ifb_ri_tasklet,
-			     (unsigned long)txp);
+		tasklet_setup(&txp->ifb_tasklet, ifb_ri_tasklet);
 		netif_tx_start_queue(netdev_get_tx_queue(dev, i));
 	}
 	return 0;
-- 
2.25.1

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

* [RESEND net-next v2 05/12] net: ppp: convert tasklets to use new tasklet_setup() API
@ 2020-09-14  7:43   ` Allen Pais
  0 siblings, 0 replies; 42+ messages in thread
From: Allen Pais @ 2020-09-14  7:43 UTC (permalink / raw)
  To: davem
  Cc: m.grzeschik, kuba, paulus, oliver, woojung.huh, UNGLinuxDriver,
	petkan, netdev, linux-usb, linux-ppp, Allen Pais, Romain Perier

From: Allen Pais <apais@linux.microsoft.com>

In preparation for unconditionally passing the
struct tasklet_struct pointer to all tasklet
callbacks, switch to using the new tasklet_setup()
and from_tasklet() to pass the tasklet pointer explicitly.

Signed-off-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: Allen Pais <apais@linux.microsoft.com>
---
 drivers/net/ppp/ppp_async.c   | 8 ++++----
 drivers/net/ppp/ppp_synctty.c | 8 ++++----
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/net/ppp/ppp_async.c b/drivers/net/ppp/ppp_async.c
index 29a0917a81e6..2b66cf301b0e 100644
--- a/drivers/net/ppp/ppp_async.c
+++ b/drivers/net/ppp/ppp_async.c
@@ -101,7 +101,7 @@ static void ppp_async_input(struct asyncppp *ap, const unsigned char *buf,
 			    char *flags, int count);
 static int ppp_async_ioctl(struct ppp_channel *chan, unsigned int cmd,
 			   unsigned long arg);
-static void ppp_async_process(unsigned long arg);
+static void ppp_async_process(struct tasklet_struct *t);
 
 static void async_lcp_peek(struct asyncppp *ap, unsigned char *data,
 			   int len, int inbound);
@@ -179,7 +179,7 @@ ppp_asynctty_open(struct tty_struct *tty)
 	ap->lcp_fcs = -1;
 
 	skb_queue_head_init(&ap->rqueue);
-	tasklet_init(&ap->tsk, ppp_async_process, (unsigned long) ap);
+	tasklet_setup(&ap->tsk, ppp_async_process);
 
 	refcount_set(&ap->refcnt, 1);
 	init_completion(&ap->dead);
@@ -488,9 +488,9 @@ ppp_async_ioctl(struct ppp_channel *chan, unsigned int cmd, unsigned long arg)
  * to the ppp_generic code, and to tell the ppp_generic code
  * if we can accept more output now.
  */
-static void ppp_async_process(unsigned long arg)
+static void ppp_async_process(struct tasklet_struct *t)
 {
-	struct asyncppp *ap = (struct asyncppp *) arg;
+	struct asyncppp *ap = from_tasklet(ap, t, tsk);
 	struct sk_buff *skb;
 
 	/* process received packets */
diff --git a/drivers/net/ppp/ppp_synctty.c b/drivers/net/ppp/ppp_synctty.c
index 0f338752c38b..86ee5149f4f2 100644
--- a/drivers/net/ppp/ppp_synctty.c
+++ b/drivers/net/ppp/ppp_synctty.c
@@ -90,7 +90,7 @@ static struct sk_buff* ppp_sync_txmunge(struct syncppp *ap, struct sk_buff *);
 static int ppp_sync_send(struct ppp_channel *chan, struct sk_buff *skb);
 static int ppp_sync_ioctl(struct ppp_channel *chan, unsigned int cmd,
 			  unsigned long arg);
-static void ppp_sync_process(unsigned long arg);
+static void ppp_sync_process(struct tasklet_struct *t);
 static int ppp_sync_push(struct syncppp *ap);
 static void ppp_sync_flush_output(struct syncppp *ap);
 static void ppp_sync_input(struct syncppp *ap, const unsigned char *buf,
@@ -177,7 +177,7 @@ ppp_sync_open(struct tty_struct *tty)
 	ap->raccm = ~0U;
 
 	skb_queue_head_init(&ap->rqueue);
-	tasklet_init(&ap->tsk, ppp_sync_process, (unsigned long) ap);
+	tasklet_setup(&ap->tsk, ppp_sync_process);
 
 	refcount_set(&ap->refcnt, 1);
 	init_completion(&ap->dead_cmp);
@@ -480,9 +480,9 @@ ppp_sync_ioctl(struct ppp_channel *chan, unsigned int cmd, unsigned long arg)
  * to the ppp_generic code, and to tell the ppp_generic code
  * if we can accept more output now.
  */
-static void ppp_sync_process(unsigned long arg)
+static void ppp_sync_process(struct tasklet_struct *t)
 {
-	struct syncppp *ap = (struct syncppp *) arg;
+	struct syncppp *ap = from_tasklet(ap, t, tsk);
 	struct sk_buff *skb;
 
 	/* process received packets */
-- 
2.25.1

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

* [RESEND net-next v2 06/12] net: cdc_ncm: convert tasklets to use new tasklet_setup() API
@ 2020-09-14  7:43   ` Allen Pais
  0 siblings, 0 replies; 42+ messages in thread
From: Allen Pais @ 2020-09-14  7:43 UTC (permalink / raw)
  To: davem
  Cc: m.grzeschik, kuba, paulus, oliver, woojung.huh, UNGLinuxDriver,
	petkan, netdev, linux-usb, linux-ppp, Allen Pais, Romain Perier

From: Allen Pais <apais@linux.microsoft.com>

In preparation for unconditionally passing the
struct tasklet_struct pointer to all tasklet
callbacks, switch to using the new tasklet_setup()
and from_tasklet() to pass the tasklet pointer explicitly.

Signed-off-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: Allen Pais <apais@linux.microsoft.com>
---
 drivers/net/usb/cdc_ncm.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/net/usb/cdc_ncm.c b/drivers/net/usb/cdc_ncm.c
index e04f588538cc..57a95ef90385 100644
--- a/drivers/net/usb/cdc_ncm.c
+++ b/drivers/net/usb/cdc_ncm.c
@@ -61,7 +61,7 @@ static bool prefer_mbim;
 module_param(prefer_mbim, bool, 0644);
 MODULE_PARM_DESC(prefer_mbim, "Prefer MBIM setting on dual NCM/MBIM functions");
 
-static void cdc_ncm_txpath_bh(unsigned long param);
+static void cdc_ncm_txpath_bh(struct tasklet_struct *t);
 static void cdc_ncm_tx_timeout_start(struct cdc_ncm_ctx *ctx);
 static enum hrtimer_restart cdc_ncm_tx_timer_cb(struct hrtimer *hr_timer);
 static struct usb_driver cdc_ncm_driver;
@@ -815,7 +815,7 @@ int cdc_ncm_bind_common(struct usbnet *dev, struct usb_interface *intf, u8 data_
 
 	hrtimer_init(&ctx->tx_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
 	ctx->tx_timer.function = &cdc_ncm_tx_timer_cb;
-	tasklet_init(&ctx->bh, cdc_ncm_txpath_bh, (unsigned long)dev);
+	tasklet_setup(&ctx->bh, cdc_ncm_txpath_bh);
 	atomic_set(&ctx->stop, 0);
 	spin_lock_init(&ctx->mtx);
 
@@ -1468,9 +1468,9 @@ static enum hrtimer_restart cdc_ncm_tx_timer_cb(struct hrtimer *timer)
 	return HRTIMER_NORESTART;
 }
 
-static void cdc_ncm_txpath_bh(unsigned long param)
+static void cdc_ncm_txpath_bh(struct tasklet_struct *t)
 {
-	struct usbnet *dev = (struct usbnet *)param;
+	struct usbnet *dev = from_tasklet(dev, t, bh);
 	struct cdc_ncm_ctx *ctx = (struct cdc_ncm_ctx *)dev->data[0];
 
 	spin_lock_bh(&ctx->mtx);
-- 
2.25.1

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

* [RESEND net-next v2 07/12] net: hso: convert tasklets to use new tasklet_setup() API
@ 2020-09-14  7:43   ` Allen Pais
  0 siblings, 0 replies; 42+ messages in thread
From: Allen Pais @ 2020-09-14  7:43 UTC (permalink / raw)
  To: davem
  Cc: m.grzeschik, kuba, paulus, oliver, woojung.huh, UNGLinuxDriver,
	petkan, netdev, linux-usb, linux-ppp, Allen Pais, Romain Perier

From: Allen Pais <apais@linux.microsoft.com>

In preparation for unconditionally passing the
struct tasklet_struct pointer to all tasklet
callbacks, switch to using the new tasklet_setup()
and from_tasklet() to pass the tasklet pointer explicitly.

Signed-off-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: Allen Pais <apais@linux.microsoft.com>
---
 drivers/net/usb/hso.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c
index 2bb28db89432..3b08a6b5db05 100644
--- a/drivers/net/usb/hso.c
+++ b/drivers/net/usb/hso.c
@@ -1213,9 +1213,10 @@ static void hso_std_serial_read_bulk_callback(struct urb *urb)
  * This needs to be a tasklet otherwise we will
  * end up recursively calling this function.
  */
-static void hso_unthrottle_tasklet(unsigned long data)
+static void hso_unthrottle_tasklet(struct tasklet_struct *t)
 {
-	struct hso_serial *serial = (struct hso_serial *)data;
+	struct hso_serial *serial = from_tasklet(serial, t,
+						 unthrottle_tasklet);
 	unsigned long flags;
 
 	spin_lock_irqsave(&serial->serial_lock, flags);
@@ -1264,9 +1265,8 @@ static int hso_serial_open(struct tty_struct *tty, struct file *filp)
 		serial->rx_state = RX_IDLE;
 		/* Force default termio settings */
 		_hso_serial_set_termios(tty, NULL);
-		tasklet_init(&serial->unthrottle_tasklet,
-			     hso_unthrottle_tasklet,
-			     (unsigned long)serial);
+		tasklet_setup(&serial->unthrottle_tasklet,
+			      hso_unthrottle_tasklet);
 		result = hso_start_serial_device(serial->parent, GFP_KERNEL);
 		if (result) {
 			hso_stop_serial_device(serial->parent);
-- 
2.25.1

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

* [RESEND net-next v2 08/12] net: lan78xx: convert tasklets to use new tasklet_setup() API
@ 2020-09-14  7:43   ` Allen Pais
  0 siblings, 0 replies; 42+ messages in thread
From: Allen Pais @ 2020-09-14  7:43 UTC (permalink / raw)
  To: davem
  Cc: m.grzeschik, kuba, paulus, oliver, woojung.huh, UNGLinuxDriver,
	petkan, netdev, linux-usb, linux-ppp, Allen Pais, Romain Perier

From: Allen Pais <apais@linux.microsoft.com>

In preparation for unconditionally passing the
struct tasklet_struct pointer to all tasklet
callbacks, switch to using the new tasklet_setup()
and from_tasklet() to pass the tasklet pointer explicitly.

Signed-off-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: Allen Pais <apais@linux.microsoft.com>
---
 drivers/net/usb/lan78xx.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
index 65b315bc60ab..3f6b3712086b 100644
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
@@ -3386,9 +3386,9 @@ static void lan78xx_rx_bh(struct lan78xx_net *dev)
 		netif_wake_queue(dev->net);
 }
 
-static void lan78xx_bh(unsigned long param)
+static void lan78xx_bh(struct tasklet_struct *t)
 {
-	struct lan78xx_net *dev = (struct lan78xx_net *)param;
+	struct lan78xx_net *dev = from_tasklet(dev, t, bh);
 	struct sk_buff *skb;
 	struct skb_data *entry;
 
@@ -3666,7 +3666,7 @@ static int lan78xx_probe(struct usb_interface *intf,
 	skb_queue_head_init(&dev->txq_pend);
 	mutex_init(&dev->phy_mutex);
 
-	tasklet_init(&dev->bh, lan78xx_bh, (unsigned long)dev);
+	tasklet_setup(&dev->bh, lan78xx_bh);
 	INIT_DELAYED_WORK(&dev->wq, lan78xx_delayedwork);
 	init_usb_anchor(&dev->deferred);
 
-- 
2.25.1

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

* [RESEND net-next v2 09/12] net: pegasus: convert tasklets to use new tasklet_setup() API
@ 2020-09-14  7:43   ` Allen Pais
  0 siblings, 0 replies; 42+ messages in thread
From: Allen Pais @ 2020-09-14  7:43 UTC (permalink / raw)
  To: davem
  Cc: m.grzeschik, kuba, paulus, oliver, woojung.huh, UNGLinuxDriver,
	petkan, netdev, linux-usb, linux-ppp, Allen Pais, Romain Perier

From: Allen Pais <apais@linux.microsoft.com>

In preparation for unconditionally passing the
struct tasklet_struct pointer to all tasklet
callbacks, switch to using the new tasklet_setup()
and from_tasklet() to pass the tasklet pointer explicitly.

Signed-off-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: Allen Pais <apais@linux.microsoft.com>
---
 drivers/net/usb/pegasus.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/usb/pegasus.c b/drivers/net/usb/pegasus.c
index e92cb51a2c77..1f11e586037f 100644
--- a/drivers/net/usb/pegasus.c
+++ b/drivers/net/usb/pegasus.c
@@ -565,12 +565,12 @@ static void read_bulk_callback(struct urb *urb)
 	tasklet_schedule(&pegasus->rx_tl);
 }
 
-static void rx_fixup(unsigned long data)
+static void rx_fixup(struct tasklet_struct *t)
 {
 	pegasus_t *pegasus;
 	int status;
 
-	pegasus = (pegasus_t *) data;
+	pegasus = from_tasklet(pegasus, t, rx_tl);
 	if (pegasus->flags & PEGASUS_UNPLUG)
 		return;
 
@@ -1141,7 +1141,7 @@ static int pegasus_probe(struct usb_interface *intf,
 		goto out1;
 	}
 
-	tasklet_init(&pegasus->rx_tl, rx_fixup, (unsigned long) pegasus);
+	tasklet_setup(&pegasus->rx_tl, rx_fixup);
 
 	INIT_DELAYED_WORK(&pegasus->carrier_check, check_carrier);
 
-- 
2.25.1

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

* [RESEND net-next v2 10/12] net: r8152: convert tasklets to use new tasklet_setup() API
@ 2020-09-14  7:43   ` Allen Pais
  0 siblings, 0 replies; 42+ messages in thread
From: Allen Pais @ 2020-09-14  7:43 UTC (permalink / raw)
  To: davem
  Cc: m.grzeschik, kuba, paulus, oliver, woojung.huh, UNGLinuxDriver,
	petkan, netdev, linux-usb, linux-ppp, Allen Pais, Romain Perier

From: Allen Pais <apais@linux.microsoft.com>

In preparation for unconditionally passing the
struct tasklet_struct pointer to all tasklet
callbacks, switch to using the new tasklet_setup()
and from_tasklet() to pass the tasklet pointer explicitly.

Signed-off-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: Allen Pais <apais@linux.microsoft.com>
---
 drivers/net/usb/r8152.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
index b1770489aca5..2d706cdbf9a2 100644
--- a/drivers/net/usb/r8152.c
+++ b/drivers/net/usb/r8152.c
@@ -2410,11 +2410,9 @@ static void tx_bottom(struct r8152 *tp)
 	} while (res = 0);
 }
 
-static void bottom_half(unsigned long data)
+static void bottom_half(struct tasklet_struct *t)
 {
-	struct r8152 *tp;
-
-	tp = (struct r8152 *)data;
+	struct r8152 *tp = from_tasklet(tp, t, tx_tl);
 
 	if (test_bit(RTL8152_UNPLUG, &tp->flags))
 		return;
@@ -6730,7 +6728,7 @@ static int rtl8152_probe(struct usb_interface *intf,
 	mutex_init(&tp->control);
 	INIT_DELAYED_WORK(&tp->schedule, rtl_work_func_t);
 	INIT_DELAYED_WORK(&tp->hw_phy_work, rtl_hw_phy_work_func_t);
-	tasklet_init(&tp->tx_tl, bottom_half, (unsigned long)tp);
+	tasklet_setup(&tp->tx_tl, bottom_half);
 	tasklet_disable(&tp->tx_tl);
 
 	netdev->netdev_ops = &rtl8152_netdev_ops;
-- 
2.25.1

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

* [RESEND net-next v2 11/12] net: rtl8150: convert tasklets to use new tasklet_setup() API
@ 2020-09-14  7:43   ` Allen Pais
  0 siblings, 0 replies; 42+ messages in thread
From: Allen Pais @ 2020-09-14  7:43 UTC (permalink / raw)
  To: davem
  Cc: m.grzeschik, kuba, paulus, oliver, woojung.huh, UNGLinuxDriver,
	petkan, netdev, linux-usb, linux-ppp, Allen Pais, Romain Perier

From: Allen Pais <apais@linux.microsoft.com>

In preparation for unconditionally passing the
struct tasklet_struct pointer to all tasklet
callbacks, switch to using the new tasklet_setup()
and from_tasklet() to pass the tasklet pointer explicitly.

Signed-off-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: Allen Pais <apais@linux.microsoft.com>
---
 drivers/net/usb/rtl8150.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/usb/rtl8150.c b/drivers/net/usb/rtl8150.c
index 733f120c852b..d8f3b44efc08 100644
--- a/drivers/net/usb/rtl8150.c
+++ b/drivers/net/usb/rtl8150.c
@@ -589,9 +589,9 @@ static void free_skb_pool(rtl8150_t *dev)
 		dev_kfree_skb(dev->rx_skb_pool[i]);
 }
 
-static void rx_fixup(unsigned long data)
+static void rx_fixup(struct tasklet_struct *t)
 {
-	struct rtl8150 *dev = (struct rtl8150 *)data;
+	struct rtl8150 *dev = from_tasklet(dev, t, tl);
 	struct sk_buff *skb;
 	int status;
 
@@ -890,7 +890,7 @@ static int rtl8150_probe(struct usb_interface *intf,
 		return -ENOMEM;
 	}
 
-	tasklet_init(&dev->tl, rx_fixup, (unsigned long)dev);
+	tasklet_setup(&dev->tl, rx_fixup);
 	spin_lock_init(&dev->rx_pool_lock);
 
 	dev->udev = udev;
-- 
2.25.1

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

* [RESEND net-next v2 12/12] net: usbnet: convert tasklets to use new tasklet_setup() API
@ 2020-09-14  7:43   ` Allen Pais
  0 siblings, 0 replies; 42+ messages in thread
From: Allen Pais @ 2020-09-14  7:43 UTC (permalink / raw)
  To: davem
  Cc: m.grzeschik, kuba, paulus, oliver, woojung.huh, UNGLinuxDriver,
	petkan, netdev, linux-usb, linux-ppp, Allen Pais, Romain Perier

From: Allen Pais <apais@linux.microsoft.com>

In preparation for unconditionally passing the
struct tasklet_struct pointer to all tasklet
callbacks, switch to using the new tasklet_setup()
and from_tasklet() to pass the tasklet pointer explicitly
and remove the .data field.

Signed-off-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: Allen Pais <apais@linux.microsoft.com>
---
 drivers/net/usb/usbnet.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
index 2b2a841cd938..d63485b858ba 100644
--- a/drivers/net/usb/usbnet.c
+++ b/drivers/net/usb/usbnet.c
@@ -1708,8 +1708,7 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)
 	skb_queue_head_init (&dev->txq);
 	skb_queue_head_init (&dev->done);
 	skb_queue_head_init(&dev->rxq_pause);
-	dev->bh.func = usbnet_bh_tasklet;
-	dev->bh.data = (unsigned long)&dev->delay;
+	dev->bh.func = (void(*) (unsigned long))usbnet_bh_tasklet;
 	INIT_WORK (&dev->kevent, usbnet_deferred_kevent);
 	init_usb_anchor(&dev->deferred);
 	timer_setup(&dev->delay, usbnet_bh, 0);
-- 
2.25.1

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

* Re: [RESEND net-next v2 12/12] net: usbnet: convert tasklets to use new tasklet_setup() API
  2020-09-14  7:43   ` Allen Pais
@ 2020-09-14  8:02     ` Oliver Neukum
  -1 siblings, 0 replies; 42+ messages in thread
From: Oliver Neukum @ 2020-09-14  8:02 UTC (permalink / raw)
  To: Allen Pais, davem
  Cc: m.grzeschik, kuba, paulus, woojung.huh, UNGLinuxDriver, petkan,
	netdev, linux-usb, linux-ppp, Allen Pais, Romain Perier

Am Montag, den 14.09.2020, 13:01 +0530 schrieb Allen Pais:
> From: Allen Pais <apais@linux.microsoft.com>
> 
> In preparation for unconditionally passing the
> struct tasklet_struct pointer to all tasklet
> callbacks, switch to using the new tasklet_setup()
> and from_tasklet() to pass the tasklet pointer explicitly
> and remove the .data field.

Hi,

how would bisecting be supposed to run smoothly, if this
patch were applied? We'd pass a NULL pointer.

	Regards
		Oliver


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

* Re: [RESEND net-next v2 12/12] net: usbnet: convert tasklets to use new tasklet_setup() API
@ 2020-09-14  8:02     ` Oliver Neukum
  0 siblings, 0 replies; 42+ messages in thread
From: Oliver Neukum @ 2020-09-14  8:02 UTC (permalink / raw)
  To: Allen Pais, davem
  Cc: m.grzeschik, kuba, paulus, woojung.huh, UNGLinuxDriver, petkan,
	netdev, linux-usb, linux-ppp, Allen Pais, Romain Perier

Am Montag, den 14.09.2020, 13:01 +0530 schrieb Allen Pais:
> From: Allen Pais <apais@linux.microsoft.com>
> 
> In preparation for unconditionally passing the
> struct tasklet_struct pointer to all tasklet
> callbacks, switch to using the new tasklet_setup()
> and from_tasklet() to pass the tasklet pointer explicitly
> and remove the .data field.

Hi,

how would bisecting be supposed to run smoothly, if this
patch were applied? We'd pass a NULL pointer.

	Regards
		Oliver

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

* Re: [RESEND net-next v2 00/12]drivers: net: convert tasklets to use new tasklet_setup() API
  2020-09-14  7:43 ` Allen Pais
@ 2020-09-14 20:24   ` David Miller
  -1 siblings, 0 replies; 42+ messages in thread
From: David Miller @ 2020-09-14 20:24 UTC (permalink / raw)
  To: allen.lkml
  Cc: m.grzeschik, kuba, paulus, oliver, woojung.huh, UNGLinuxDriver,
	petkan, netdev, linux-usb, linux-ppp, apais

From: Allen Pais <allen.lkml@gmail.com>
Date: Mon, 14 Sep 2020 13:01:19 +0530

> From: Allen Pais <apais@linux.microsoft.com>
> 
> ommit 12cc923f1ccc ("tasklet: Introduce new initialization API")'
> introduced a new tasklet initialization API. This series converts
> all the net/* drivers to use the new tasklet_setup() API
> 
> This series is based on v5.9-rc5

I don't understand how this works, you're not passing the existing
parameter any more so won't that crash until the final parts of the
conversion?

This is like a half-transformation that will break bisection.

I'm not applying this series, sorry.

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

* Re: [RESEND net-next v2 00/12]drivers: net: convert tasklets to use new tasklet_setup() API
@ 2020-09-14 20:24   ` David Miller
  0 siblings, 0 replies; 42+ messages in thread
From: David Miller @ 2020-09-14 20:24 UTC (permalink / raw)
  To: allen.lkml
  Cc: m.grzeschik, kuba, paulus, oliver, woojung.huh, UNGLinuxDriver,
	petkan, netdev, linux-usb, linux-ppp, apais

From: Allen Pais <allen.lkml@gmail.com>
Date: Mon, 14 Sep 2020 13:01:19 +0530

> From: Allen Pais <apais@linux.microsoft.com>
> 
> ommit 12cc923f1ccc ("tasklet: Introduce new initialization API")'
> introduced a new tasklet initialization API. This series converts
> all the net/* drivers to use the new tasklet_setup() API
> 
> This series is based on v5.9-rc5

I don't understand how this works, you're not passing the existing
parameter any more so won't that crash until the final parts of the
conversion?

This is like a half-transformation that will break bisection.

I'm not applying this series, sorry.

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

* Re: [RESEND net-next v2 00/12]drivers: net: convert tasklets to use new tasklet_setup() API
  2020-09-14  7:43 ` Allen Pais
@ 2020-09-14 21:16   ` Saeed Mahameed
  -1 siblings, 0 replies; 42+ messages in thread
From: Saeed Mahameed @ 2020-09-14 21:16 UTC (permalink / raw)
  To: davem, allen.lkml
  Cc: m.grzeschik, linux-usb, woojung.huh, petkan, oliver, netdev,
	kuba, UNGLinuxDriver, paulus, linux-ppp, apais

On Mon, 2020-09-14 at 13:01 +0530, Allen Pais wrote:
> From: Allen Pais <apais@linux.microsoft.com>
> 
> ommit 12cc923f1ccc ("tasklet: Introduce new initialization API")'
> introduced a new tasklet initialization API. This series converts
> all the net/* drivers to use the new tasklet_setup() API
> 
> This series is based on v5.9-rc5
> 
> Allen Pais (12):
>   net: mvpp2: Prepare to use the new tasklet API
>   net: arcnet: convert tasklets to use new tasklet_setup() API
>   net: caif: convert tasklets to use new tasklet_setup() API
>   net: ifb: convert tasklets to use new tasklet_setup() API
>   net: ppp: convert tasklets to use new tasklet_setup() API
>   net: cdc_ncm: convert tasklets to use new tasklet_setup() API
>   net: hso: convert tasklets to use new tasklet_setup() API
>   net: lan78xx: convert tasklets to use new tasklet_setup() API
>   net: pegasus: convert tasklets to use new tasklet_setup() API
>   net: r8152: convert tasklets to use new tasklet_setup() API
>   net: rtl8150: convert tasklets to use new tasklet_setup() API
>   net: usbnet: convert tasklets to use new tasklet_setup() API
> 
> 

You are only converting drivers which are passing the taskelt struct as
data ptr, most of other drivers are passing the container of the
tasklet as data, why not convert them as well, and let them use
container_of to find their data ? it is really straight forward and
will help convert most of net driver if not all.


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

* Re: [RESEND net-next v2 00/12]drivers: net: convert tasklets to use new tasklet_setup() API
@ 2020-09-14 21:16   ` Saeed Mahameed
  0 siblings, 0 replies; 42+ messages in thread
From: Saeed Mahameed @ 2020-09-14 21:16 UTC (permalink / raw)
  To: davem, allen.lkml
  Cc: m.grzeschik, linux-usb, woojung.huh, petkan, oliver, netdev,
	kuba, UNGLinuxDriver, paulus, linux-ppp, apais

T24gTW9uLCAyMDIwLTA5LTE0IGF0IDEzOjAxICswNTMwLCBBbGxlbiBQYWlzIHdyb3RlOg0KPiBG
cm9tOiBBbGxlbiBQYWlzIDxhcGFpc0BsaW51eC5taWNyb3NvZnQuY29tPg0KPiANCj4gb21taXQg
MTJjYzkyM2YxY2NjICgidGFza2xldDogSW50cm9kdWNlIG5ldyBpbml0aWFsaXphdGlvbiBBUEki
KScNCj4gaW50cm9kdWNlZCBhIG5ldyB0YXNrbGV0IGluaXRpYWxpemF0aW9uIEFQSS4gVGhpcyBz
ZXJpZXMgY29udmVydHMNCj4gYWxsIHRoZSBuZXQvKiBkcml2ZXJzIHRvIHVzZSB0aGUgbmV3IHRh
c2tsZXRfc2V0dXAoKSBBUEkNCj4gDQo+IFRoaXMgc2VyaWVzIGlzIGJhc2VkIG9uIHY1LjktcmM1
DQo+IA0KPiBBbGxlbiBQYWlzICgxMik6DQo+ICAgbmV0OiBtdnBwMjogUHJlcGFyZSB0byB1c2Ug
dGhlIG5ldyB0YXNrbGV0IEFQSQ0KPiAgIG5ldDogYXJjbmV0OiBjb252ZXJ0IHRhc2tsZXRzIHRv
IHVzZSBuZXcgdGFza2xldF9zZXR1cCgpIEFQSQ0KPiAgIG5ldDogY2FpZjogY29udmVydCB0YXNr
bGV0cyB0byB1c2UgbmV3IHRhc2tsZXRfc2V0dXAoKSBBUEkNCj4gICBuZXQ6IGlmYjogY29udmVy
dCB0YXNrbGV0cyB0byB1c2UgbmV3IHRhc2tsZXRfc2V0dXAoKSBBUEkNCj4gICBuZXQ6IHBwcDog
Y29udmVydCB0YXNrbGV0cyB0byB1c2UgbmV3IHRhc2tsZXRfc2V0dXAoKSBBUEkNCj4gICBuZXQ6
IGNkY19uY206IGNvbnZlcnQgdGFza2xldHMgdG8gdXNlIG5ldyB0YXNrbGV0X3NldHVwKCkgQVBJ
DQo+ICAgbmV0OiBoc286IGNvbnZlcnQgdGFza2xldHMgdG8gdXNlIG5ldyB0YXNrbGV0X3NldHVw
KCkgQVBJDQo+ICAgbmV0OiBsYW43OHh4OiBjb252ZXJ0IHRhc2tsZXRzIHRvIHVzZSBuZXcgdGFz
a2xldF9zZXR1cCgpIEFQSQ0KPiAgIG5ldDogcGVnYXN1czogY29udmVydCB0YXNrbGV0cyB0byB1
c2UgbmV3IHRhc2tsZXRfc2V0dXAoKSBBUEkNCj4gICBuZXQ6IHI4MTUyOiBjb252ZXJ0IHRhc2ts
ZXRzIHRvIHVzZSBuZXcgdGFza2xldF9zZXR1cCgpIEFQSQ0KPiAgIG5ldDogcnRsODE1MDogY29u
dmVydCB0YXNrbGV0cyB0byB1c2UgbmV3IHRhc2tsZXRfc2V0dXAoKSBBUEkNCj4gICBuZXQ6IHVz
Ym5ldDogY29udmVydCB0YXNrbGV0cyB0byB1c2UgbmV3IHRhc2tsZXRfc2V0dXAoKSBBUEkNCj4g
DQo+IA0KDQpZb3UgYXJlIG9ubHkgY29udmVydGluZyBkcml2ZXJzIHdoaWNoIGFyZSBwYXNzaW5n
IHRoZSB0YXNrZWx0IHN0cnVjdCBhcw0KZGF0YSBwdHIsIG1vc3Qgb2Ygb3RoZXIgZHJpdmVycyBh
cmUgcGFzc2luZyB0aGUgY29udGFpbmVyIG9mIHRoZQ0KdGFza2xldCBhcyBkYXRhLCB3aHkgbm90
IGNvbnZlcnQgdGhlbSBhcyB3ZWxsLCBhbmQgbGV0IHRoZW0gdXNlDQpjb250YWluZXJfb2YgdG8g
ZmluZCB0aGVpciBkYXRhID8gaXQgaXMgcmVhbGx5IHN0cmFpZ2h0IGZvcndhcmQgYW5kDQp3aWxs
IGhlbHAgY29udmVydCBtb3N0IG9mIG5ldCBkcml2ZXIgaWYgbm90IGFsbC4NCg0K

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

* Re: [RESEND net-next v2 01/12] net: mvpp2: Prepare to use the new tasklet API
  2020-09-14  7:43   ` Allen Pais
@ 2020-09-15  1:02     ` Jakub Kicinski
  -1 siblings, 0 replies; 42+ messages in thread
From: Jakub Kicinski @ 2020-09-15  1:02 UTC (permalink / raw)
  To: Allen Pais
  Cc: davem, m.grzeschik, paulus, oliver, woojung.huh, UNGLinuxDriver,
	petkan, netdev, linux-usb, linux-ppp, Allen Pais, Romain Perier

On Mon, 14 Sep 2020 13:01:20 +0530 Allen Pais wrote:
> From: Allen Pais <apais@linux.microsoft.com>
> 
> The future tasklet API will no longer allow to pass an arbitrary
> "unsigned long" data parameter. The tasklet data structure will need to
> be embedded into a data structure that will be retrieved from the tasklet
> handler. Currently, there are no ways to retrieve the "struct mvpp2_port
> *" from a given "struct mvpp2_port_pcpu *". This commit adds a new field
> to get the address of the main port for each pcpu context.
> 
> Signed-off-by: Romain Perier <romain.perier@gmail.com>
> Signed-off-by: Allen Pais <apais@linux.microsoft.com>
> ---
>  drivers/net/ethernet/marvell/mvpp2/mvpp2.h      | 1 +
>  drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 1 +
>  2 files changed, 2 insertions(+)
> 
> diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2.h b/drivers/net/ethernet/marvell/mvpp2/mvpp2.h
> index 32753cc771bf..198860a4527d 100644
> --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2.h
> +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2.h
> @@ -861,6 +861,7 @@ struct mvpp2_port_pcpu {
>  	struct hrtimer tx_done_timer;
>  	struct net_device *dev;
>  	bool timer_scheduled;
> +	struct mvpp2_port *port;
>  };
>  
>  struct mvpp2_queue_vector {
> diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
> index 6e140d1b8967..e8e68e8acdb3 100644
> --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
> +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
> @@ -6025,6 +6025,7 @@ static int mvpp2_port_probe(struct platform_device *pdev,
>  		err = -ENOMEM;
>  		goto err_free_txq_pcpu;
>  	}
> +	port->pcpu->port = port;
>  
>  	if (!port->has_tx_irqs) {
>  		for (thread = 0; thread < priv->nthreads; thread++) {

Not 100% sure but I think this is yours:

drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c:6442:13: warning: dereference of noderef expression

port->pcpu is __percpu, no?

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

* Re: [RESEND net-next v2 01/12] net: mvpp2: Prepare to use the new tasklet API
@ 2020-09-15  1:02     ` Jakub Kicinski
  0 siblings, 0 replies; 42+ messages in thread
From: Jakub Kicinski @ 2020-09-15  1:02 UTC (permalink / raw)
  To: Allen Pais
  Cc: davem, m.grzeschik, paulus, oliver, woojung.huh, UNGLinuxDriver,
	petkan, netdev, linux-usb, linux-ppp, Allen Pais, Romain Perier

On Mon, 14 Sep 2020 13:01:20 +0530 Allen Pais wrote:
> From: Allen Pais <apais@linux.microsoft.com>
> 
> The future tasklet API will no longer allow to pass an arbitrary
> "unsigned long" data parameter. The tasklet data structure will need to
> be embedded into a data structure that will be retrieved from the tasklet
> handler. Currently, there are no ways to retrieve the "struct mvpp2_port
> *" from a given "struct mvpp2_port_pcpu *". This commit adds a new field
> to get the address of the main port for each pcpu context.
> 
> Signed-off-by: Romain Perier <romain.perier@gmail.com>
> Signed-off-by: Allen Pais <apais@linux.microsoft.com>
> ---
>  drivers/net/ethernet/marvell/mvpp2/mvpp2.h      | 1 +
>  drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 1 +
>  2 files changed, 2 insertions(+)
> 
> diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2.h b/drivers/net/ethernet/marvell/mvpp2/mvpp2.h
> index 32753cc771bf..198860a4527d 100644
> --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2.h
> +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2.h
> @@ -861,6 +861,7 @@ struct mvpp2_port_pcpu {
>  	struct hrtimer tx_done_timer;
>  	struct net_device *dev;
>  	bool timer_scheduled;
> +	struct mvpp2_port *port;
>  };
>  
>  struct mvpp2_queue_vector {
> diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
> index 6e140d1b8967..e8e68e8acdb3 100644
> --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
> +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
> @@ -6025,6 +6025,7 @@ static int mvpp2_port_probe(struct platform_device *pdev,
>  		err = -ENOMEM;
>  		goto err_free_txq_pcpu;
>  	}
> +	port->pcpu->port = port;
>  
>  	if (!port->has_tx_irqs) {
>  		for (thread = 0; thread < priv->nthreads; thread++) {

Not 100% sure but I think this is yours:

drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c:6442:13: warning: dereference of noderef expression

port->pcpu is __percpu, no?

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

* Re: [RESEND net-next v2 00/12]drivers: net: convert tasklets to use new tasklet_setup() API
  2020-09-14 20:24   ` David Miller
@ 2020-09-15  4:20     ` Allen Pais
  -1 siblings, 0 replies; 42+ messages in thread
From: Allen Pais @ 2020-09-15  4:08 UTC (permalink / raw)
  To: David Miller, allen.lkml
  Cc: m.grzeschik, kuba, paulus, oliver, woojung.huh, UNGLinuxDriver,
	petkan, netdev, linux-usb, linux-ppp

> 
>> From: Allen Pais <apais@linux.microsoft.com>
>>
>> ommit 12cc923f1ccc ("tasklet: Introduce new initialization API")'
>> introduced a new tasklet initialization API. This series converts
>> all the net/* drivers to use the new tasklet_setup() API
>>
>> This series is based on v5.9-rc5
> 
> I don't understand how this works, you're not passing the existing
> parameter any more so won't that crash until the final parts of the
> conversion?
> 
> This is like a half-transformation that will break bisection.

  I understand, I will re-work on it and send it out.


> 
> I'm not applying this series, sorry.
> 


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

* Re: [RESEND net-next v2 00/12]drivers: net: convert tasklets to use new tasklet_setup() API
  2020-09-14 21:16   ` Saeed Mahameed
@ 2020-09-15  4:24     ` Allen Pais
  -1 siblings, 0 replies; 42+ messages in thread
From: Allen Pais @ 2020-09-15  4:12 UTC (permalink / raw)
  To: Saeed Mahameed, davem, allen.lkml
  Cc: m.grzeschik, linux-usb, woojung.huh, petkan, oliver, netdev,
	kuba, UNGLinuxDriver, paulus, linux-ppp



>>
>> ommit 12cc923f1ccc ("tasklet: Introduce new initialization API")'
>> introduced a new tasklet initialization API. This series converts
>> all the net/* drivers to use the new tasklet_setup() API
>>
>> This series is based on v5.9-rc5
>>
>> Allen Pais (12):
>>    net: mvpp2: Prepare to use the new tasklet API
>>    net: arcnet: convert tasklets to use new tasklet_setup() API
>>    net: caif: convert tasklets to use new tasklet_setup() API
>>    net: ifb: convert tasklets to use new tasklet_setup() API
>>    net: ppp: convert tasklets to use new tasklet_setup() API
>>    net: cdc_ncm: convert tasklets to use new tasklet_setup() API
>>    net: hso: convert tasklets to use new tasklet_setup() API
>>    net: lan78xx: convert tasklets to use new tasklet_setup() API
>>    net: pegasus: convert tasklets to use new tasklet_setup() API
>>    net: r8152: convert tasklets to use new tasklet_setup() API
>>    net: rtl8150: convert tasklets to use new tasklet_setup() API
>>    net: usbnet: convert tasklets to use new tasklet_setup() API
>>
>>
> 
> You are only converting drivers which are passing the taskelt struct as
> data ptr, most of other drivers are passing the container of the
> tasklet as data, why not convert them as well, and let them use
> container_of to find their data ? it is really straight forward and
> will help convert most of net driver if not all.
> 

from_tasklet uses container_of internally. use of container_of is 
avoided cause it end being really long.

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

* Re: [RESEND net-next v2 00/12]drivers: net: convert tasklets to use new tasklet_setup() API
@ 2020-09-15  4:20     ` Allen Pais
  0 siblings, 0 replies; 42+ messages in thread
From: Allen Pais @ 2020-09-15  4:20 UTC (permalink / raw)
  To: David Miller, allen.lkml
  Cc: m.grzeschik, kuba, paulus, oliver, woojung.huh, UNGLinuxDriver,
	petkan, netdev, linux-usb, linux-ppp

> 
>> From: Allen Pais <apais@linux.microsoft.com>
>>
>> ommit 12cc923f1ccc ("tasklet: Introduce new initialization API")'
>> introduced a new tasklet initialization API. This series converts
>> all the net/* drivers to use the new tasklet_setup() API
>>
>> This series is based on v5.9-rc5
> 
> I don't understand how this works, you're not passing the existing
> parameter any more so won't that crash until the final parts of the
> conversion?
> 
> This is like a half-transformation that will break bisection.

  I understand, I will re-work on it and send it out.


> 
> I'm not applying this series, sorry.
> 

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

* Re: [RESEND net-next v2 00/12]drivers: net: convert tasklets to use new tasklet_setup() API
@ 2020-09-15  4:24     ` Allen Pais
  0 siblings, 0 replies; 42+ messages in thread
From: Allen Pais @ 2020-09-15  4:24 UTC (permalink / raw)
  To: Saeed Mahameed, davem, allen.lkml
  Cc: m.grzeschik, linux-usb, woojung.huh, petkan, oliver, netdev,
	kuba, UNGLinuxDriver, paulus, linux-ppp



>>
>> ommit 12cc923f1ccc ("tasklet: Introduce new initialization API")'
>> introduced a new tasklet initialization API. This series converts
>> all the net/* drivers to use the new tasklet_setup() API
>>
>> This series is based on v5.9-rc5
>>
>> Allen Pais (12):
>>    net: mvpp2: Prepare to use the new tasklet API
>>    net: arcnet: convert tasklets to use new tasklet_setup() API
>>    net: caif: convert tasklets to use new tasklet_setup() API
>>    net: ifb: convert tasklets to use new tasklet_setup() API
>>    net: ppp: convert tasklets to use new tasklet_setup() API
>>    net: cdc_ncm: convert tasklets to use new tasklet_setup() API
>>    net: hso: convert tasklets to use new tasklet_setup() API
>>    net: lan78xx: convert tasklets to use new tasklet_setup() API
>>    net: pegasus: convert tasklets to use new tasklet_setup() API
>>    net: r8152: convert tasklets to use new tasklet_setup() API
>>    net: rtl8150: convert tasklets to use new tasklet_setup() API
>>    net: usbnet: convert tasklets to use new tasklet_setup() API
>>
>>
> 
> You are only converting drivers which are passing the taskelt struct as
> data ptr, most of other drivers are passing the container of the
> tasklet as data, why not convert them as well, and let them use
> container_of to find their data ? it is really straight forward and
> will help convert most of net driver if not all.
> 

from_tasklet uses container_of internally. use of container_of is 
avoided cause it end being really long.

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

* Re: [RESEND net-next v2 00/12]drivers: net: convert tasklets to use new tasklet_setup() API
  2020-09-15  4:24     ` Allen Pais
@ 2020-09-15  4:41       ` Saeed Mahameed
  -1 siblings, 0 replies; 42+ messages in thread
From: Saeed Mahameed @ 2020-09-15  4:41 UTC (permalink / raw)
  To: apais, davem, allen.lkml
  Cc: m.grzeschik, linux-usb, woojung.huh, petkan, oliver, netdev,
	kuba, UNGLinuxDriver, paulus, linux-ppp

On Tue, 2020-09-15 at 09:42 +0530, Allen Pais wrote:
> > > ommit 12cc923f1ccc ("tasklet: Introduce new initialization API")'
> > > introduced a new tasklet initialization API. This series converts
> > > all the net/* drivers to use the new tasklet_setup() API
      ^^^
this is not all drivers .. 

see below 

> > > This series is based on v5.9-rc5
> > > 
> > > Allen Pais (12):
> > >    net: mvpp2: Prepare to use the new tasklet API
> > >    net: arcnet: convert tasklets to use new tasklet_setup() API
> > >    net: caif: convert tasklets to use new tasklet_setup() API
> > >    net: ifb: convert tasklets to use new tasklet_setup() API
> > >    net: ppp: convert tasklets to use new tasklet_setup() API
> > >    net: cdc_ncm: convert tasklets to use new tasklet_setup() API
> > >    net: hso: convert tasklets to use new tasklet_setup() API
> > >    net: lan78xx: convert tasklets to use new tasklet_setup() API
> > >    net: pegasus: convert tasklets to use new tasklet_setup() API
> > >    net: r8152: convert tasklets to use new tasklet_setup() API
> > >    net: rtl8150: convert tasklets to use new tasklet_setup() API
> > >    net: usbnet: convert tasklets to use new tasklet_setup() API
> > > 
> > > 
> > 
> > You are only converting drivers which are passing the taskelt
> > struct as
> > data ptr, most of other drivers are passing the container of the
> > tasklet as data, why not convert them as well, and let them use
> > container_of to find their data ? it is really straight forward and
> > will help convert most of net driver if not all.
> > 
> 
> from_tasklet uses container_of internally. use of container_of is 
> avoided cause it end being really long.

I understand that, what I meant, you didn't really convert all drivers,
as you claim in the cover letter, all you did is converting __some__
drivers which are passing the tasklet ptr as data ptr. all other
drivers that use tasklet_init differently are not converted, and it
should be relatively easy as i explained above. 

The list of drivers using tasklet_init is longer than what you touched
in your series:

 drivers/net/arcnet/arcnet.c                     |  7 +++----
 drivers/net/caif/caif_virtio.c                  |  8 +++-----
 drivers/net/ethernet/marvell/mvpp2/mvpp2.h      |  1 +
 drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c |  1 +
 drivers/net/ifb.c                               |  7 +++----
 drivers/net/ppp/ppp_async.c                     |  8 ++++----
 drivers/net/ppp/ppp_synctty.c                   |  8 ++++----
 drivers/net/usb/cdc_ncm.c                       |  8 ++++----
 drivers/net/usb/hso.c                           | 10 +++++-----
 drivers/net/usb/lan78xx.c                       |  6 +++---
 drivers/net/usb/pegasus.c                       |  6 +++---
 drivers/net/usb/r8152.c                         |  8 +++-----
 drivers/net/usb/rtl8150.c                       |  6 +++---
 drivers/net/usb/usbnet.c                        |  3 +--
 14 files changed, 41 insertions(+), 46 deletions(-)

The full file/driver list :

$ git grep -l tasklet_init drivers/net/ 
drivers/net/arcnet/arcnet.c
drivers/net/caif/caif_virtio.c
drivers/net/ethernet/alteon/acenic.c
drivers/net/ethernet/amd/xgbe/xgbe-drv.c
drivers/net/ethernet/amd/xgbe/xgbe-i2c.c
drivers/net/ethernet/amd/xgbe/xgbe-mdio.c
drivers/net/ethernet/broadcom/cnic.c
drivers/net/ethernet/cadence/macb_main.c
drivers/net/ethernet/cavium/liquidio/lio_main.c
drivers/net/ethernet/cavium/octeon/octeon_mgmt.c
drivers/net/ethernet/cavium/thunder/nicvf_main.c
drivers/net/ethernet/chelsio/cxgb/sge.c
drivers/net/ethernet/chelsio/cxgb3/sge.c
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_mqprio.c
drivers/net/ethernet/chelsio/cxgb4/sge.c
drivers/net/ethernet/dlink/sundance.c
drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.c
drivers/net/ethernet/ibm/ehea/ehea_main.c
drivers/net/ethernet/ibm/ibmvnic.c
drivers/net/ethernet/jme.c
drivers/net/ethernet/marvell/skge.c
drivers/net/ethernet/mellanox/mlx4/eq.c
drivers/net/ethernet/mellanox/mlx5/core/eq.c
drivers/net/ethernet/mellanox/mlx5/core/fpga/conn.c
drivers/net/ethernet/mellanox/mlxsw/pci.c
drivers/net/ethernet/micrel/ks8842.c
drivers/net/ethernet/micrel/ksz884x.c
drivers/net/ethernet/natsemi/ns83820.c
drivers/net/ethernet/netronome/nfp/nfp_net_common.c
drivers/net/ethernet/ni/nixge.c
drivers/net/ethernet/qlogic/qed/qed_int.c
drivers/net/ethernet/silan/sc92031.c
drivers/net/ethernet/smsc/smc91x.c
drivers/net/ifb.c
drivers/net/ppp/ppp_async.c
drivers/net/ppp/ppp_synctty.c
drivers/net/usb/cdc_ncm.c
drivers/net/usb/hso.c
drivers/net/usb/lan78xx.c
drivers/net/usb/pegasus.c
drivers/net/usb/r8152.c
drivers/net/usb/rtl8150.c
drivers/net/wireless/ath/ath11k/pci.c
drivers/net/wireless/mediatek/mt76/mac80211.c
drivers/net/wireless/mediatek/mt76/mt7603/init.c
drivers/net/wireless/mediatek/mt76/mt7615/mmio.c
drivers/net/wireless/mediatek/mt76/mt76x02_dfs.c
drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c
drivers/net/wireless/mediatek/mt76/usb.c
drivers/net/wireless/mediatek/mt7601u/dma.c

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

* Re: [RESEND net-next v2 00/12]drivers: net: convert tasklets to use new tasklet_setup() API
@ 2020-09-15  4:41       ` Saeed Mahameed
  0 siblings, 0 replies; 42+ messages in thread
From: Saeed Mahameed @ 2020-09-15  4:41 UTC (permalink / raw)
  To: apais, davem, allen.lkml
  Cc: m.grzeschik, linux-usb, woojung.huh, petkan, oliver, netdev,
	kuba, UNGLinuxDriver, paulus, linux-ppp

T24gVHVlLCAyMDIwLTA5LTE1IGF0IDA5OjQyICswNTMwLCBBbGxlbiBQYWlzIHdyb3RlOg0KPiA+
ID4gb21taXQgMTJjYzkyM2YxY2NjICgidGFza2xldDogSW50cm9kdWNlIG5ldyBpbml0aWFsaXph
dGlvbiBBUEkiKScNCj4gPiA+IGludHJvZHVjZWQgYSBuZXcgdGFza2xldCBpbml0aWFsaXphdGlv
biBBUEkuIFRoaXMgc2VyaWVzIGNvbnZlcnRzDQo+ID4gPiBhbGwgdGhlIG5ldC8qIGRyaXZlcnMg
dG8gdXNlIHRoZSBuZXcgdGFza2xldF9zZXR1cCgpIEFQSQ0KICAgICAgXl5eDQp0aGlzIGlzIG5v
dCBhbGwgZHJpdmVycyAuLiANCg0Kc2VlIGJlbG93IA0KDQo+ID4gPiBUaGlzIHNlcmllcyBpcyBi
YXNlZCBvbiB2NS45LXJjNQ0KPiA+ID4gDQo+ID4gPiBBbGxlbiBQYWlzICgxMik6DQo+ID4gPiAg
ICBuZXQ6IG12cHAyOiBQcmVwYXJlIHRvIHVzZSB0aGUgbmV3IHRhc2tsZXQgQVBJDQo+ID4gPiAg
ICBuZXQ6IGFyY25ldDogY29udmVydCB0YXNrbGV0cyB0byB1c2UgbmV3IHRhc2tsZXRfc2V0dXAo
KSBBUEkNCj4gPiA+ICAgIG5ldDogY2FpZjogY29udmVydCB0YXNrbGV0cyB0byB1c2UgbmV3IHRh
c2tsZXRfc2V0dXAoKSBBUEkNCj4gPiA+ICAgIG5ldDogaWZiOiBjb252ZXJ0IHRhc2tsZXRzIHRv
IHVzZSBuZXcgdGFza2xldF9zZXR1cCgpIEFQSQ0KPiA+ID4gICAgbmV0OiBwcHA6IGNvbnZlcnQg
dGFza2xldHMgdG8gdXNlIG5ldyB0YXNrbGV0X3NldHVwKCkgQVBJDQo+ID4gPiAgICBuZXQ6IGNk
Y19uY206IGNvbnZlcnQgdGFza2xldHMgdG8gdXNlIG5ldyB0YXNrbGV0X3NldHVwKCkgQVBJDQo+
ID4gPiAgICBuZXQ6IGhzbzogY29udmVydCB0YXNrbGV0cyB0byB1c2UgbmV3IHRhc2tsZXRfc2V0
dXAoKSBBUEkNCj4gPiA+ICAgIG5ldDogbGFuNzh4eDogY29udmVydCB0YXNrbGV0cyB0byB1c2Ug
bmV3IHRhc2tsZXRfc2V0dXAoKSBBUEkNCj4gPiA+ICAgIG5ldDogcGVnYXN1czogY29udmVydCB0
YXNrbGV0cyB0byB1c2UgbmV3IHRhc2tsZXRfc2V0dXAoKSBBUEkNCj4gPiA+ICAgIG5ldDogcjgx
NTI6IGNvbnZlcnQgdGFza2xldHMgdG8gdXNlIG5ldyB0YXNrbGV0X3NldHVwKCkgQVBJDQo+ID4g
PiAgICBuZXQ6IHJ0bDgxNTA6IGNvbnZlcnQgdGFza2xldHMgdG8gdXNlIG5ldyB0YXNrbGV0X3Nl
dHVwKCkgQVBJDQo+ID4gPiAgICBuZXQ6IHVzYm5ldDogY29udmVydCB0YXNrbGV0cyB0byB1c2Ug
bmV3IHRhc2tsZXRfc2V0dXAoKSBBUEkNCj4gPiA+IA0KPiA+ID4gDQo+ID4gDQo+ID4gWW91IGFy
ZSBvbmx5IGNvbnZlcnRpbmcgZHJpdmVycyB3aGljaCBhcmUgcGFzc2luZyB0aGUgdGFza2VsdA0K
PiA+IHN0cnVjdCBhcw0KPiA+IGRhdGEgcHRyLCBtb3N0IG9mIG90aGVyIGRyaXZlcnMgYXJlIHBh
c3NpbmcgdGhlIGNvbnRhaW5lciBvZiB0aGUNCj4gPiB0YXNrbGV0IGFzIGRhdGEsIHdoeSBub3Qg
Y29udmVydCB0aGVtIGFzIHdlbGwsIGFuZCBsZXQgdGhlbSB1c2UNCj4gPiBjb250YWluZXJfb2Yg
dG8gZmluZCB0aGVpciBkYXRhID8gaXQgaXMgcmVhbGx5IHN0cmFpZ2h0IGZvcndhcmQgYW5kDQo+
ID4gd2lsbCBoZWxwIGNvbnZlcnQgbW9zdCBvZiBuZXQgZHJpdmVyIGlmIG5vdCBhbGwuDQo+ID4g
DQo+IA0KPiBmcm9tX3Rhc2tsZXQgdXNlcyBjb250YWluZXJfb2YgaW50ZXJuYWxseS4gdXNlIG9m
IGNvbnRhaW5lcl9vZiBpcyANCj4gYXZvaWRlZCBjYXVzZSBpdCBlbmQgYmVpbmcgcmVhbGx5IGxv
bmcuDQoNCkkgdW5kZXJzdGFuZCB0aGF0LCB3aGF0IEkgbWVhbnQsIHlvdSBkaWRuJ3QgcmVhbGx5
IGNvbnZlcnQgYWxsIGRyaXZlcnMsDQphcyB5b3UgY2xhaW0gaW4gdGhlIGNvdmVyIGxldHRlciwg
YWxsIHlvdSBkaWQgaXMgY29udmVydGluZyBfX3NvbWVfXw0KZHJpdmVycyB3aGljaCBhcmUgcGFz
c2luZyB0aGUgdGFza2xldCBwdHIgYXMgZGF0YSBwdHIuIGFsbCBvdGhlcg0KZHJpdmVycyB0aGF0
IHVzZSB0YXNrbGV0X2luaXQgZGlmZmVyZW50bHkgYXJlIG5vdCBjb252ZXJ0ZWQsIGFuZCBpdA0K
c2hvdWxkIGJlIHJlbGF0aXZlbHkgZWFzeSBhcyBpIGV4cGxhaW5lZCBhYm92ZS4gDQoNClRoZSBs
aXN0IG9mIGRyaXZlcnMgdXNpbmcgdGFza2xldF9pbml0IGlzIGxvbmdlciB0aGFuIHdoYXQgeW91
IHRvdWNoZWQNCmluIHlvdXIgc2VyaWVzOg0KDQogZHJpdmVycy9uZXQvYXJjbmV0L2FyY25ldC5j
ICAgICAgICAgICAgICAgICAgICAgfCAgNyArKystLS0tDQogZHJpdmVycy9uZXQvY2FpZi9jYWlm
X3ZpcnRpby5jICAgICAgICAgICAgICAgICAgfCAgOCArKystLS0tLQ0KIGRyaXZlcnMvbmV0L2V0
aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDIuaCAgICAgIHwgIDEgKw0KIGRyaXZlcnMvbmV0L2V0
aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jIHwgIDEgKw0KIGRyaXZlcnMvbmV0L2lm
Yi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDcgKysrLS0tLQ0KIGRyaXZlcnMv
bmV0L3BwcC9wcHBfYXN5bmMuYyAgICAgICAgICAgICAgICAgICAgIHwgIDggKysrKy0tLS0NCiBk
cml2ZXJzL25ldC9wcHAvcHBwX3N5bmN0dHkuYyAgICAgICAgICAgICAgICAgICB8ICA4ICsrKyst
LS0tDQogZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYyAgICAgICAgICAgICAgICAgICAgICAgfCAg
OCArKysrLS0tLQ0KIGRyaXZlcnMvbmV0L3VzYi9oc28uYyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgMTAgKysrKystLS0tLQ0KIGRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMgICAgICAgICAg
ICAgICAgICAgICAgIHwgIDYgKysrLS0tDQogZHJpdmVycy9uZXQvdXNiL3BlZ2FzdXMuYyAgICAg
ICAgICAgICAgICAgICAgICAgfCAgNiArKystLS0NCiBkcml2ZXJzL25ldC91c2IvcjgxNTIuYyAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICA4ICsrKy0tLS0tDQogZHJpdmVycy9uZXQvdXNiL3J0
bDgxNTAuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgNiArKystLS0NCiBkcml2ZXJzL25ldC91
c2IvdXNibmV0LmMgICAgICAgICAgICAgICAgICAgICAgICB8ICAzICstLQ0KIDE0IGZpbGVzIGNo
YW5nZWQsIDQxIGluc2VydGlvbnMoKyksIDQ2IGRlbGV0aW9ucygtKQ0KDQpUaGUgZnVsbCBmaWxl
L2RyaXZlciBsaXN0IDoNCg0KJCBnaXQgZ3JlcCAtbCB0YXNrbGV0X2luaXQgZHJpdmVycy9uZXQv
IA0KZHJpdmVycy9uZXQvYXJjbmV0L2FyY25ldC5jDQpkcml2ZXJzL25ldC9jYWlmL2NhaWZfdmly
dGlvLmMNCmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVvbi9hY2VuaWMuYw0KZHJpdmVycy9uZXQv
ZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYw0KZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hn
YmUveGdiZS1pMmMuYw0KZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1tZGlvLmMN
CmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2NuaWMuYw0KZHJpdmVycy9uZXQvZXRoZXJu
ZXQvY2FkZW5jZS9tYWNiX21haW4uYw0KZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVp
ZGlvL2xpb19tYWluLmMNCmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9vY3Rlb24vb2N0ZW9u
X21nbXQuYw0KZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljdmZfbWFpbi5j
DQpkcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2Ivc2dlLmMNCmRyaXZlcnMvbmV0L2V0
aGVybmV0L2NoZWxzaW8vY3hnYjMvc2dlLmMNCmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8v
Y3hnYjQvY3hnYjRfdGNfbXFwcmlvLmMNCmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hn
YjQvc2dlLmMNCmRyaXZlcnMvbmV0L2V0aGVybmV0L2RsaW5rL3N1bmRhbmNlLmMNCmRyaXZlcnMv
bmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19od19lcXMuYw0KZHJpdmVycy9uZXQvZXRo
ZXJuZXQvaWJtL2VoZWEvZWhlYV9tYWluLmMNCmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12
bmljLmMNCmRyaXZlcnMvbmV0L2V0aGVybmV0L2ptZS5jDQpkcml2ZXJzL25ldC9ldGhlcm5ldC9t
YXJ2ZWxsL3NrZ2UuYw0KZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lcS5jDQpk
cml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXEuYw0KZHJpdmVycy9uZXQv
ZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2ZwZ2EvY29ubi5jDQpkcml2ZXJzL25ldC9ldGhl
cm5ldC9tZWxsYW5veC9tbHhzdy9wY2kuYw0KZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcmVsL2tz
ODg0Mi5jDQpkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyZWwva3N6ODg0eC5jDQpkcml2ZXJzL25l
dC9ldGhlcm5ldC9uYXRzZW1pL25zODM4MjAuYw0KZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9u
b21lL25mcC9uZnBfbmV0X2NvbW1vbi5jDQpkcml2ZXJzL25ldC9ldGhlcm5ldC9uaS9uaXhnZS5j
DQpkcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9pbnQuYw0KZHJpdmVycy9uZXQv
ZXRoZXJuZXQvc2lsYW4vc2M5MjAzMS5jDQpkcml2ZXJzL25ldC9ldGhlcm5ldC9zbXNjL3NtYzkx
eC5jDQpkcml2ZXJzL25ldC9pZmIuYw0KZHJpdmVycy9uZXQvcHBwL3BwcF9hc3luYy5jDQpkcml2
ZXJzL25ldC9wcHAvcHBwX3N5bmN0dHkuYw0KZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYw0KZHJp
dmVycy9uZXQvdXNiL2hzby5jDQpkcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jDQpkcml2ZXJzL25l
dC91c2IvcGVnYXN1cy5jDQpkcml2ZXJzL25ldC91c2IvcjgxNTIuYw0KZHJpdmVycy9uZXQvdXNi
L3J0bDgxNTAuYw0KZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYw0KZHJpdmVy
cy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jDQpkcml2ZXJzL25ldC93aXJl
bGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9pbml0LmMNCmRyaXZlcnMvbmV0L3dpcmVsZXNzL21l
ZGlhdGVrL210NzYvbXQ3NjE1L21taW8uYw0KZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsv
bXQ3Ni9tdDc2eDAyX2Rmcy5jDQpkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210
NzZ4MDJfbW1pby5jDQpkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L3VzYi5jDQpk
cml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2MDF1L2RtYS5jDQo

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

* Re: [RESEND net-next v2 00/12]drivers: net: convert tasklets to use new tasklet_setup() API
  2020-09-15  4:41       ` Saeed Mahameed
@ 2020-09-15  4:56         ` Allen Pais
  -1 siblings, 0 replies; 42+ messages in thread
From: Allen Pais @ 2020-09-15  4:44 UTC (permalink / raw)
  To: Saeed Mahameed, davem, allen.lkml
  Cc: m.grzeschik, linux-usb, woojung.huh, petkan, oliver, netdev,
	kuba, UNGLinuxDriver, paulus, linux-ppp


Saeed,
>>>> ommit 12cc923f1ccc ("tasklet: Introduce new initialization API")'
>>>> introduced a new tasklet initialization API. This series converts
>>>> all the net/* drivers to use the new tasklet_setup() API
>        ^^^
> this is not all drivers ..

Right, my bad, I should not have said net/*.


> see below
> 
>>>> This series is based on v5.9-rc5
>>>>
>>>> Allen Pais (12):
>>>>     net: mvpp2: Prepare to use the new tasklet API
>>>>     net: arcnet: convert tasklets to use new tasklet_setup() API
>>>>     net: caif: convert tasklets to use new tasklet_setup() API
>>>>     net: ifb: convert tasklets to use new tasklet_setup() API
>>>>     net: ppp: convert tasklets to use new tasklet_setup() API
>>>>     net: cdc_ncm: convert tasklets to use new tasklet_setup() API
>>>>     net: hso: convert tasklets to use new tasklet_setup() API
>>>>     net: lan78xx: convert tasklets to use new tasklet_setup() API
>>>>     net: pegasus: convert tasklets to use new tasklet_setup() API
>>>>     net: r8152: convert tasklets to use new tasklet_setup() API
>>>>     net: rtl8150: convert tasklets to use new tasklet_setup() API
>>>>     net: usbnet: convert tasklets to use new tasklet_setup() API
>>>>
>>>>
>>>
>>> You are only converting drivers which are passing the taskelt
>>> struct as
>>> data ptr, most of other drivers are passing the container of the
>>> tasklet as data, why not convert them as well, and let them use
>>> container_of to find their data ? it is really straight forward and
>>> will help convert most of net driver if not all.
>>>
>>
>> from_tasklet uses container_of internally. use of container_of is
>> avoided cause it end being really long.
> 
> I understand that, what I meant, you didn't really convert all drivers,
> as you claim in the cover letter, all you did is converting __some__
> drivers which are passing the tasklet ptr as data ptr. all other
> drivers that use tasklet_init differently are not converted, and it
> should be relatively easy as i explained above.
> 
> The list of drivers using tasklet_init is longer than what you touched
> in your series:
> 
>   drivers/net/arcnet/arcnet.c                     |  7 +++----
>   drivers/net/caif/caif_virtio.c                  |  8 +++-----
>   drivers/net/ethernet/marvell/mvpp2/mvpp2.h      |  1 +
>   drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c |  1 +
>   drivers/net/ifb.c                               |  7 +++----
>   drivers/net/ppp/ppp_async.c                     |  8 ++++----
>   drivers/net/ppp/ppp_synctty.c                   |  8 ++++----
>   drivers/net/usb/cdc_ncm.c                       |  8 ++++----
>   drivers/net/usb/hso.c                           | 10 +++++-----
>   drivers/net/usb/lan78xx.c                       |  6 +++---
>   drivers/net/usb/pegasus.c                       |  6 +++---
>   drivers/net/usb/r8152.c                         |  8 +++-----
>   drivers/net/usb/rtl8150.c                       |  6 +++---
>   drivers/net/usb/usbnet.c                        |  3 +--
>   14 files changed, 41 insertions(+), 46 deletions(-)
> 
> The full file/driver list :

Yes, drivers/net/ethernet/* drivers/net/wireless/* were submitted as a 
separate series. The rest of them were part of the series above.

I should break it down so that it's easier to bisect.

Thanks.


> 
> $ git grep -l tasklet_init drivers/net/
> drivers/net/arcnet/arcnet.c
> drivers/net/caif/caif_virtio.c
> drivers/net/ethernet/alteon/acenic.c
> drivers/net/ethernet/amd/xgbe/xgbe-drv.c
> drivers/net/ethernet/amd/xgbe/xgbe-i2c.c
> drivers/net/ethernet/amd/xgbe/xgbe-mdio.c
> drivers/net/ethernet/broadcom/cnic.c
> drivers/net/ethernet/cadence/macb_main.c
> drivers/net/ethernet/cavium/liquidio/lio_main.c
> drivers/net/ethernet/cavium/octeon/octeon_mgmt.c
> drivers/net/ethernet/cavium/thunder/nicvf_main.c
> drivers/net/ethernet/chelsio/cxgb/sge.c
> drivers/net/ethernet/chelsio/cxgb3/sge.c
> drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_mqprio.c
> drivers/net/ethernet/chelsio/cxgb4/sge.c
> drivers/net/ethernet/dlink/sundance.c
> drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.c
> drivers/net/ethernet/ibm/ehea/ehea_main.c
> drivers/net/ethernet/ibm/ibmvnic.c
> drivers/net/ethernet/jme.c
> drivers/net/ethernet/marvell/skge.c
> drivers/net/ethernet/mellanox/mlx4/eq.c
> drivers/net/ethernet/mellanox/mlx5/core/eq.c
> drivers/net/ethernet/mellanox/mlx5/core/fpga/conn.c
> drivers/net/ethernet/mellanox/mlxsw/pci.c
> drivers/net/ethernet/micrel/ks8842.c
> drivers/net/ethernet/micrel/ksz884x.c
> drivers/net/ethernet/natsemi/ns83820.c
> drivers/net/ethernet/netronome/nfp/nfp_net_common.c
> drivers/net/ethernet/ni/nixge.c
> drivers/net/ethernet/qlogic/qed/qed_int.c
> drivers/net/ethernet/silan/sc92031.c
> drivers/net/ethernet/smsc/smc91x.c
> drivers/net/ifb.c
> drivers/net/ppp/ppp_async.c
> drivers/net/ppp/ppp_synctty.c
> drivers/net/usb/cdc_ncm.c
> drivers/net/usb/hso.c
> drivers/net/usb/lan78xx.c
> drivers/net/usb/pegasus.c
> drivers/net/usb/r8152.c
> drivers/net/usb/rtl8150.c
> drivers/net/wireless/ath/ath11k/pci.c
> drivers/net/wireless/mediatek/mt76/mac80211.c
> drivers/net/wireless/mediatek/mt76/mt7603/init.c
> drivers/net/wireless/mediatek/mt76/mt7615/mmio.c
> drivers/net/wireless/mediatek/mt76/mt76x02_dfs.c
> drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c
> drivers/net/wireless/mediatek/mt76/usb.c
> drivers/net/wireless/mediatek/mt7601u/dma.c
> 

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

* Re: [RESEND net-next v2 00/12]drivers: net: convert tasklets to use new tasklet_setup() API
@ 2020-09-15  4:56         ` Allen Pais
  0 siblings, 0 replies; 42+ messages in thread
From: Allen Pais @ 2020-09-15  4:56 UTC (permalink / raw)
  To: Saeed Mahameed, davem, allen.lkml
  Cc: m.grzeschik, linux-usb, woojung.huh, petkan, oliver, netdev,
	kuba, UNGLinuxDriver, paulus, linux-ppp


Saeed,
>>>> ommit 12cc923f1ccc ("tasklet: Introduce new initialization API")'
>>>> introduced a new tasklet initialization API. This series converts
>>>> all the net/* drivers to use the new tasklet_setup() API
>        ^^^
> this is not all drivers ..

Right, my bad, I should not have said net/*.


> see below
> 
>>>> This series is based on v5.9-rc5
>>>>
>>>> Allen Pais (12):
>>>>     net: mvpp2: Prepare to use the new tasklet API
>>>>     net: arcnet: convert tasklets to use new tasklet_setup() API
>>>>     net: caif: convert tasklets to use new tasklet_setup() API
>>>>     net: ifb: convert tasklets to use new tasklet_setup() API
>>>>     net: ppp: convert tasklets to use new tasklet_setup() API
>>>>     net: cdc_ncm: convert tasklets to use new tasklet_setup() API
>>>>     net: hso: convert tasklets to use new tasklet_setup() API
>>>>     net: lan78xx: convert tasklets to use new tasklet_setup() API
>>>>     net: pegasus: convert tasklets to use new tasklet_setup() API
>>>>     net: r8152: convert tasklets to use new tasklet_setup() API
>>>>     net: rtl8150: convert tasklets to use new tasklet_setup() API
>>>>     net: usbnet: convert tasklets to use new tasklet_setup() API
>>>>
>>>>
>>>
>>> You are only converting drivers which are passing the taskelt
>>> struct as
>>> data ptr, most of other drivers are passing the container of the
>>> tasklet as data, why not convert them as well, and let them use
>>> container_of to find their data ? it is really straight forward and
>>> will help convert most of net driver if not all.
>>>
>>
>> from_tasklet uses container_of internally. use of container_of is
>> avoided cause it end being really long.
> 
> I understand that, what I meant, you didn't really convert all drivers,
> as you claim in the cover letter, all you did is converting __some__
> drivers which are passing the tasklet ptr as data ptr. all other
> drivers that use tasklet_init differently are not converted, and it
> should be relatively easy as i explained above.
> 
> The list of drivers using tasklet_init is longer than what you touched
> in your series:
> 
>   drivers/net/arcnet/arcnet.c                     |  7 +++----
>   drivers/net/caif/caif_virtio.c                  |  8 +++-----
>   drivers/net/ethernet/marvell/mvpp2/mvpp2.h      |  1 +
>   drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c |  1 +
>   drivers/net/ifb.c                               |  7 +++----
>   drivers/net/ppp/ppp_async.c                     |  8 ++++----
>   drivers/net/ppp/ppp_synctty.c                   |  8 ++++----
>   drivers/net/usb/cdc_ncm.c                       |  8 ++++----
>   drivers/net/usb/hso.c                           | 10 +++++-----
>   drivers/net/usb/lan78xx.c                       |  6 +++---
>   drivers/net/usb/pegasus.c                       |  6 +++---
>   drivers/net/usb/r8152.c                         |  8 +++-----
>   drivers/net/usb/rtl8150.c                       |  6 +++---
>   drivers/net/usb/usbnet.c                        |  3 +--
>   14 files changed, 41 insertions(+), 46 deletions(-)
> 
> The full file/driver list :

Yes, drivers/net/ethernet/* drivers/net/wireless/* were submitted as a 
separate series. The rest of them were part of the series above.

I should break it down so that it's easier to bisect.

Thanks.


> 
> $ git grep -l tasklet_init drivers/net/
> drivers/net/arcnet/arcnet.c
> drivers/net/caif/caif_virtio.c
> drivers/net/ethernet/alteon/acenic.c
> drivers/net/ethernet/amd/xgbe/xgbe-drv.c
> drivers/net/ethernet/amd/xgbe/xgbe-i2c.c
> drivers/net/ethernet/amd/xgbe/xgbe-mdio.c
> drivers/net/ethernet/broadcom/cnic.c
> drivers/net/ethernet/cadence/macb_main.c
> drivers/net/ethernet/cavium/liquidio/lio_main.c
> drivers/net/ethernet/cavium/octeon/octeon_mgmt.c
> drivers/net/ethernet/cavium/thunder/nicvf_main.c
> drivers/net/ethernet/chelsio/cxgb/sge.c
> drivers/net/ethernet/chelsio/cxgb3/sge.c
> drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_mqprio.c
> drivers/net/ethernet/chelsio/cxgb4/sge.c
> drivers/net/ethernet/dlink/sundance.c
> drivers/net/ethernet/huawei/hinic/hinic_hw_eqs.c
> drivers/net/ethernet/ibm/ehea/ehea_main.c
> drivers/net/ethernet/ibm/ibmvnic.c
> drivers/net/ethernet/jme.c
> drivers/net/ethernet/marvell/skge.c
> drivers/net/ethernet/mellanox/mlx4/eq.c
> drivers/net/ethernet/mellanox/mlx5/core/eq.c
> drivers/net/ethernet/mellanox/mlx5/core/fpga/conn.c
> drivers/net/ethernet/mellanox/mlxsw/pci.c
> drivers/net/ethernet/micrel/ks8842.c
> drivers/net/ethernet/micrel/ksz884x.c
> drivers/net/ethernet/natsemi/ns83820.c
> drivers/net/ethernet/netronome/nfp/nfp_net_common.c
> drivers/net/ethernet/ni/nixge.c
> drivers/net/ethernet/qlogic/qed/qed_int.c
> drivers/net/ethernet/silan/sc92031.c
> drivers/net/ethernet/smsc/smc91x.c
> drivers/net/ifb.c
> drivers/net/ppp/ppp_async.c
> drivers/net/ppp/ppp_synctty.c
> drivers/net/usb/cdc_ncm.c
> drivers/net/usb/hso.c
> drivers/net/usb/lan78xx.c
> drivers/net/usb/pegasus.c
> drivers/net/usb/r8152.c
> drivers/net/usb/rtl8150.c
> drivers/net/wireless/ath/ath11k/pci.c
> drivers/net/wireless/mediatek/mt76/mac80211.c
> drivers/net/wireless/mediatek/mt76/mt7603/init.c
> drivers/net/wireless/mediatek/mt76/mt7615/mmio.c
> drivers/net/wireless/mediatek/mt76/mt76x02_dfs.c
> drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c
> drivers/net/wireless/mediatek/mt76/usb.c
> drivers/net/wireless/mediatek/mt7601u/dma.c
> 

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

end of thread, other threads:[~2020-09-15  4:56 UTC | newest]

Thread overview: 42+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-14  7:31 [RESEND net-next v2 00/12]drivers: net: convert tasklets to use new tasklet_setup() API Allen Pais
2020-09-14  7:43 ` Allen Pais
2020-09-14  7:31 ` [RESEND net-next v2 01/12] net: mvpp2: Prepare to use the new tasklet API Allen Pais
2020-09-14  7:43   ` Allen Pais
2020-09-15  1:02   ` Jakub Kicinski
2020-09-15  1:02     ` Jakub Kicinski
2020-09-14  7:31 ` [RESEND net-next v2 02/12] net: arcnet: convert tasklets to use new tasklet_setup() API Allen Pais
2020-09-14  7:43   ` Allen Pais
2020-09-14  7:31 ` [RESEND net-next v2 03/12] net: caif: " Allen Pais
2020-09-14  7:43   ` Allen Pais
2020-09-14  7:31 ` [RESEND net-next v2 04/12] net: ifb: " Allen Pais
2020-09-14  7:43   ` Allen Pais
2020-09-14  7:31 ` [RESEND net-next v2 05/12] net: ppp: " Allen Pais
2020-09-14  7:43   ` Allen Pais
2020-09-14  7:31 ` [RESEND net-next v2 06/12] net: cdc_ncm: " Allen Pais
2020-09-14  7:43   ` Allen Pais
2020-09-14  7:31 ` [RESEND net-next v2 07/12] net: hso: " Allen Pais
2020-09-14  7:43   ` Allen Pais
2020-09-14  7:31 ` [RESEND net-next v2 08/12] net: lan78xx: " Allen Pais
2020-09-14  7:43   ` Allen Pais
2020-09-14  7:31 ` [RESEND net-next v2 09/12] net: pegasus: " Allen Pais
2020-09-14  7:43   ` Allen Pais
2020-09-14  7:31 ` [RESEND net-next v2 10/12] net: r8152: " Allen Pais
2020-09-14  7:43   ` Allen Pais
2020-09-14  7:31 ` [RESEND net-next v2 11/12] net: rtl8150: " Allen Pais
2020-09-14  7:43   ` Allen Pais
2020-09-14  7:31 ` [RESEND net-next v2 12/12] net: usbnet: " Allen Pais
2020-09-14  7:43   ` Allen Pais
2020-09-14  8:02   ` Oliver Neukum
2020-09-14  8:02     ` Oliver Neukum
2020-09-14 20:24 ` [RESEND net-next v2 00/12]drivers: net: " David Miller
2020-09-14 20:24   ` David Miller
2020-09-15  4:08   ` Allen Pais
2020-09-15  4:20     ` Allen Pais
2020-09-14 21:16 ` Saeed Mahameed
2020-09-14 21:16   ` Saeed Mahameed
2020-09-15  4:12   ` Allen Pais
2020-09-15  4:24     ` Allen Pais
2020-09-15  4:41     ` Saeed Mahameed
2020-09-15  4:41       ` Saeed Mahameed
2020-09-15  4:44       ` Allen Pais
2020-09-15  4:56         ` Allen Pais

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.