Linux-WPAN Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH 1/8] net: dccp: convert tasklets to use new tasklet_setup() API
@ 2020-08-17  8:51 Allen Pais
  2020-08-17  8:51 ` [PATCH 2/8] net: ipv4: " Allen Pais
                   ` (6 more replies)
  0 siblings, 7 replies; 10+ messages in thread
From: Allen Pais @ 2020-08-17  8:51 UTC (permalink / raw)
  To: gerrit, davem, kuba, edumazet, kuznet, yoshfuji, johannes,
	alex.aring, stefan, santosh.shilimkar, jhs, xiyou.wangcong, jiri
  Cc: keescook, netdev, linux-wireless, linux-kernel, linux-wpan,
	linux-rdma, linux-s390, Allen Pais, Romain Perier

From: Allen Pais <allen.lkml@gmail.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 <allen.lkml@gmail.com>
---
 net/dccp/timer.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/net/dccp/timer.c b/net/dccp/timer.c
index 0e06dfc32273..f174ecb2fb4e 100644
--- a/net/dccp/timer.c
+++ b/net/dccp/timer.c
@@ -220,9 +220,10 @@ static void dccp_delack_timer(struct timer_list *t)
  *
  * See the comments above %ccid_dequeueing_decision for supported modes.
  */
-static void dccp_write_xmitlet(unsigned long data)
+static void dccp_write_xmitlet(struct tasklet_struct *t)
 {
-	struct sock *sk = (struct sock *)data;
+	struct dccp_sock *dp = from_tasklet(dp, t, dccps_xmitlet);
+	struct sock *sk = &dp->dccps_inet_connection.icsk_inet.sk;
 
 	bh_lock_sock(sk);
 	if (sock_owned_by_user(sk))
@@ -236,16 +237,15 @@ static void dccp_write_xmitlet(unsigned long data)
 static void dccp_write_xmit_timer(struct timer_list *t)
 {
 	struct dccp_sock *dp = from_timer(dp, t, dccps_xmit_timer);
-	struct sock *sk = &dp->dccps_inet_connection.icsk_inet.sk;
 
-	dccp_write_xmitlet((unsigned long)sk);
+	dccp_write_xmitlet(&dp->dccps_xmitlet);
 }
 
 void dccp_init_xmit_timers(struct sock *sk)
 {
 	struct dccp_sock *dp = dccp_sk(sk);
 
-	tasklet_init(&dp->dccps_xmitlet, dccp_write_xmitlet, (unsigned long)sk);
+	tasklet_setup(&dp->dccps_xmitlet, dccp_write_xmitlet);
 	timer_setup(&dp->dccps_xmit_timer, dccp_write_xmit_timer, 0);
 	inet_csk_init_xmit_timers(sk, &dccp_write_timer, &dccp_delack_timer,
 				  &dccp_keepalive_timer);
-- 
2.17.1


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

* [PATCH 2/8] net: ipv4: convert tasklets to use new tasklet_setup() API
  2020-08-17  8:51 [PATCH 1/8] net: dccp: convert tasklets to use new tasklet_setup() API Allen Pais
@ 2020-08-17  8:51 ` Allen Pais
  2020-08-17  8:51 ` [PATCH 3/8] net: mac80211: " Allen Pais
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 10+ messages in thread
From: Allen Pais @ 2020-08-17  8:51 UTC (permalink / raw)
  To: gerrit, davem, kuba, edumazet, kuznet, yoshfuji, johannes,
	alex.aring, stefan, santosh.shilimkar, jhs, xiyou.wangcong, jiri
  Cc: keescook, netdev, linux-wireless, linux-kernel, linux-wpan,
	linux-rdma, linux-s390, Allen Pais, Romain Perier

From: Allen Pais <allen.lkml@gmail.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 <allen.lkml@gmail.com>
---
 net/ipv4/tcp_output.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index 85ff417bda7f..6afad9b407a1 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -883,9 +883,9 @@ static void tcp_tsq_handler(struct sock *sk)
  * transferring tsq->head because tcp_wfree() might
  * interrupt us (non NAPI drivers)
  */
-static void tcp_tasklet_func(unsigned long data)
+static void tcp_tasklet_func(struct tasklet_struct *t)
 {
-	struct tsq_tasklet *tsq = (struct tsq_tasklet *)data;
+	struct tsq_tasklet *tsq = from_tasklet(tsq,  t, tasklet);
 	LIST_HEAD(list);
 	unsigned long flags;
 	struct list_head *q, *n;
@@ -970,9 +970,7 @@ void __init tcp_tasklet_init(void)
 		struct tsq_tasklet *tsq = &per_cpu(tsq_tasklet, i);
 
 		INIT_LIST_HEAD(&tsq->head);
-		tasklet_init(&tsq->tasklet,
-			     tcp_tasklet_func,
-			     (unsigned long)tsq);
+		tasklet_setup(&tsq->tasklet, tcp_tasklet_func);
 	}
 }
 
-- 
2.17.1


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

* [PATCH 3/8] net: mac80211: convert tasklets to use new tasklet_setup() API
  2020-08-17  8:51 [PATCH 1/8] net: dccp: convert tasklets to use new tasklet_setup() API Allen Pais
  2020-08-17  8:51 ` [PATCH 2/8] net: ipv4: " Allen Pais
@ 2020-08-17  8:51 ` Allen Pais
  2020-08-17  8:56   ` Johannes Berg
  2020-08-17  8:51 ` [PATCH 4/8] net: mac802154: " Allen Pais
                   ` (4 subsequent siblings)
  6 siblings, 1 reply; 10+ messages in thread
From: Allen Pais @ 2020-08-17  8:51 UTC (permalink / raw)
  To: gerrit, davem, kuba, edumazet, kuznet, yoshfuji, johannes,
	alex.aring, stefan, santosh.shilimkar, jhs, xiyou.wangcong, jiri
  Cc: keescook, netdev, linux-wireless, linux-kernel, linux-wpan,
	linux-rdma, linux-s390, Allen Pais, Romain Perier

From: Allen Pais <allen.lkml@gmail.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 <allen.lkml@gmail.com>
---
 net/mac80211/ieee80211_i.h |  4 ++--
 net/mac80211/main.c        | 14 +++++---------
 net/mac80211/tx.c          |  5 +++--
 net/mac80211/util.c        |  5 +++--
 4 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index 0b1eaec6649f..3fb87a3cee30 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -1775,7 +1775,7 @@ static inline bool ieee80211_sdata_running(struct ieee80211_sub_if_data *sdata)
 
 /* tx handling */
 void ieee80211_clear_tx_pending(struct ieee80211_local *local);
-void ieee80211_tx_pending(unsigned long data);
+void ieee80211_tx_pending(struct tasklet_struct *t);
 netdev_tx_t ieee80211_monitor_start_xmit(struct sk_buff *skb,
 					 struct net_device *dev);
 netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb,
@@ -2125,7 +2125,7 @@ void ieee80211_txq_remove_vlan(struct ieee80211_local *local,
 			       struct ieee80211_sub_if_data *sdata);
 void ieee80211_fill_txq_stats(struct cfg80211_txq_stats *txqstats,
 			      struct txq_info *txqi);
-void ieee80211_wake_txqs(unsigned long data);
+void ieee80211_wake_txqs(struct tasklet_struct *t);
 void ieee80211_send_auth(struct ieee80211_sub_if_data *sdata,
 			 u16 transaction, u16 auth_alg, u16 status,
 			 const u8 *extra, size_t extra_len, const u8 *bssid,
diff --git a/net/mac80211/main.c b/net/mac80211/main.c
index b4a2efe8e83a..dd489b841bb7 100644
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
@@ -220,9 +220,9 @@ u32 ieee80211_reset_erp_info(struct ieee80211_sub_if_data *sdata)
 	       BSS_CHANGED_ERP_SLOT;
 }
 
-static void ieee80211_tasklet_handler(unsigned long data)
+static void ieee80211_tasklet_handler(struct tasklet_struct *t)
 {
-	struct ieee80211_local *local = (struct ieee80211_local *) data;
+	struct ieee80211_local *local = from_tasklet(local, t, tasklet);
 	struct sk_buff *skb;
 
 	while ((skb = skb_dequeue(&local->skb_queue)) ||
@@ -733,16 +733,12 @@ struct ieee80211_hw *ieee80211_alloc_hw_nm(size_t priv_data_len,
 		skb_queue_head_init(&local->pending[i]);
 		atomic_set(&local->agg_queue_stop[i], 0);
 	}
-	tasklet_init(&local->tx_pending_tasklet, ieee80211_tx_pending,
-		     (unsigned long)local);
+	tasklet_setup(&local->tx_pending_tasklet, ieee80211_tx_pending);
 
 	if (ops->wake_tx_queue)
-		tasklet_init(&local->wake_txqs_tasklet, ieee80211_wake_txqs,
-			     (unsigned long)local);
+		tasklet_setup(&local->wake_txqs_tasklet, ieee80211_wake_txqs);
 
-	tasklet_init(&local->tasklet,
-		     ieee80211_tasklet_handler,
-		     (unsigned long) local);
+	tasklet_setup(&local->tasklet, ieee80211_tasklet_handler);
 
 	skb_queue_head_init(&local->skb_queue);
 	skb_queue_head_init(&local->skb_queue_unreliable);
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index dca01d7e6e3e..a7fafd2f196b 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -4401,9 +4401,10 @@ static bool ieee80211_tx_pending_skb(struct ieee80211_local *local,
 /*
  * Transmit all pending packets. Called from tasklet.
  */
-void ieee80211_tx_pending(unsigned long data)
+void ieee80211_tx_pending(struct tasklet_struct *t)
 {
-	struct ieee80211_local *local = (struct ieee80211_local *)data;
+	struct ieee80211_local *local = from_tasklet(local, t,
+						     tx_pending_tasklet);
 	unsigned long flags;
 	int i;
 	bool txok;
diff --git a/net/mac80211/util.c b/net/mac80211/util.c
index c8504ffc71a1..b99d3d2721df 100644
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -334,9 +334,10 @@ _ieee80211_wake_txqs(struct ieee80211_local *local, unsigned long *flags)
 	rcu_read_unlock();
 }
 
-void ieee80211_wake_txqs(unsigned long data)
+void ieee80211_wake_txqs(struct tasklet_struct *t)
 {
-	struct ieee80211_local *local = (struct ieee80211_local *)data;
+	struct ieee80211_local *local = from_tasklet(local, t,
+						     wake_txqs_tasklet);
 	unsigned long flags;
 
 	spin_lock_irqsave(&local->queue_stop_reason_lock, flags);
-- 
2.17.1


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

* [PATCH 4/8] net: mac802154: convert tasklets to use new tasklet_setup() API
  2020-08-17  8:51 [PATCH 1/8] net: dccp: convert tasklets to use new tasklet_setup() API Allen Pais
  2020-08-17  8:51 ` [PATCH 2/8] net: ipv4: " Allen Pais
  2020-08-17  8:51 ` [PATCH 3/8] net: mac80211: " Allen Pais
@ 2020-08-17  8:51 ` Allen Pais
  2020-08-17 12:19   ` Stefan Schmidt
  2020-08-17  8:51 ` [PATCH 5/8] net: rds: " Allen Pais
                   ` (3 subsequent siblings)
  6 siblings, 1 reply; 10+ messages in thread
From: Allen Pais @ 2020-08-17  8:51 UTC (permalink / raw)
  To: gerrit, davem, kuba, edumazet, kuznet, yoshfuji, johannes,
	alex.aring, stefan, santosh.shilimkar, jhs, xiyou.wangcong, jiri
  Cc: keescook, netdev, linux-wireless, linux-kernel, linux-wpan,
	linux-rdma, linux-s390, Allen Pais, Romain Perier

From: Allen Pais <allen.lkml@gmail.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 <allen.lkml@gmail.com>
---
 net/mac802154/main.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/net/mac802154/main.c b/net/mac802154/main.c
index 06ea0f8bfd5c..520cedc594e1 100644
--- a/net/mac802154/main.c
+++ b/net/mac802154/main.c
@@ -20,9 +20,9 @@
 #include "ieee802154_i.h"
 #include "cfg.h"
 
-static void ieee802154_tasklet_handler(unsigned long data)
+static void ieee802154_tasklet_handler(struct tasklet_struct *t)
 {
-	struct ieee802154_local *local = (struct ieee802154_local *)data;
+	struct ieee802154_local *local = from_tasklet(local, t, tasklet);
 	struct sk_buff *skb;
 
 	while ((skb = skb_dequeue(&local->skb_queue))) {
@@ -91,9 +91,7 @@ ieee802154_alloc_hw(size_t priv_data_len, const struct ieee802154_ops *ops)
 	INIT_LIST_HEAD(&local->interfaces);
 	mutex_init(&local->iflist_mtx);
 
-	tasklet_init(&local->tasklet,
-		     ieee802154_tasklet_handler,
-		     (unsigned long)local);
+	tasklet_setup(&local->tasklet, ieee802154_tasklet_handler);
 
 	skb_queue_head_init(&local->skb_queue);
 
-- 
2.17.1


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

* [PATCH 5/8] net: rds: convert tasklets to use new tasklet_setup() API
  2020-08-17  8:51 [PATCH 1/8] net: dccp: convert tasklets to use new tasklet_setup() API Allen Pais
                   ` (2 preceding siblings ...)
  2020-08-17  8:51 ` [PATCH 4/8] net: mac802154: " Allen Pais
@ 2020-08-17  8:51 ` Allen Pais
  2020-08-17  8:51 ` [PATCH 6/8] net: sched: " Allen Pais
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 10+ messages in thread
From: Allen Pais @ 2020-08-17  8:51 UTC (permalink / raw)
  To: gerrit, davem, kuba, edumazet, kuznet, yoshfuji, johannes,
	alex.aring, stefan, santosh.shilimkar, jhs, xiyou.wangcong, jiri
  Cc: keescook, netdev, linux-wireless, linux-kernel, linux-wpan,
	linux-rdma, linux-s390, Allen Pais, Romain Perier

From: Allen Pais <allen.lkml@gmail.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 <allen.lkml@gmail.com>
---
 net/rds/ib_cm.c | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/net/rds/ib_cm.c b/net/rds/ib_cm.c
index c3319ff3ee11..2e8872d51fa8 100644
--- a/net/rds/ib_cm.c
+++ b/net/rds/ib_cm.c
@@ -314,9 +314,9 @@ static void poll_scq(struct rds_ib_connection *ic, struct ib_cq *cq,
 	}
 }
 
-static void rds_ib_tasklet_fn_send(unsigned long data)
+static void rds_ib_tasklet_fn_send(struct tasklet_struct *t)
 {
-	struct rds_ib_connection *ic = (struct rds_ib_connection *)data;
+	struct rds_ib_connection *ic = from_tasklet(ic, t, i_send_tasklet);
 	struct rds_connection *conn = ic->conn;
 
 	rds_ib_stats_inc(s_ib_tasklet_call);
@@ -354,9 +354,9 @@ static void poll_rcq(struct rds_ib_connection *ic, struct ib_cq *cq,
 	}
 }
 
-static void rds_ib_tasklet_fn_recv(unsigned long data)
+static void rds_ib_tasklet_fn_recv(struct tasklet_struct *t)
 {
-	struct rds_ib_connection *ic = (struct rds_ib_connection *)data;
+	struct rds_ib_connection *ic = from_tasklet(ic, t, i_recv_tasklet);
 	struct rds_connection *conn = ic->conn;
 	struct rds_ib_device *rds_ibdev = ic->rds_ibdev;
 	struct rds_ib_ack_state state;
@@ -1218,10 +1218,8 @@ int rds_ib_conn_alloc(struct rds_connection *conn, gfp_t gfp)
 	}
 
 	INIT_LIST_HEAD(&ic->ib_node);
-	tasklet_init(&ic->i_send_tasklet, rds_ib_tasklet_fn_send,
-		     (unsigned long)ic);
-	tasklet_init(&ic->i_recv_tasklet, rds_ib_tasklet_fn_recv,
-		     (unsigned long)ic);
+	tasklet_setup(&ic->i_send_tasklet, rds_ib_tasklet_fn_send);
+	tasklet_setup(&ic->i_recv_tasklet, rds_ib_tasklet_fn_recv);
 	mutex_init(&ic->i_recv_mutex);
 #ifndef KERNEL_HAS_ATOMIC64
 	spin_lock_init(&ic->i_ack_lock);
-- 
2.17.1


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

* [PATCH 6/8] net: sched: convert tasklets to use new tasklet_setup() API
  2020-08-17  8:51 [PATCH 1/8] net: dccp: convert tasklets to use new tasklet_setup() API Allen Pais
                   ` (3 preceding siblings ...)
  2020-08-17  8:51 ` [PATCH 5/8] net: rds: " Allen Pais
@ 2020-08-17  8:51 ` Allen Pais
  2020-08-17  8:51 ` [PATCH 7/8] net: smc: " Allen Pais
  2020-08-17  8:51 ` [PATCH 8/8] net: xfrm: " Allen Pais
  6 siblings, 0 replies; 10+ messages in thread
From: Allen Pais @ 2020-08-17  8:51 UTC (permalink / raw)
  To: gerrit, davem, kuba, edumazet, kuznet, yoshfuji, johannes,
	alex.aring, stefan, santosh.shilimkar, jhs, xiyou.wangcong, jiri
  Cc: keescook, netdev, linux-wireless, linux-kernel, linux-wpan,
	linux-rdma, linux-s390, Allen Pais, Romain Perier

From: Allen Pais <allen.lkml@gmail.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 <allen.lkml@gmail.com>
---
 net/sched/sch_atm.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/net/sched/sch_atm.c b/net/sched/sch_atm.c
index 1c281cc81f57..0a4452178d5d 100644
--- a/net/sched/sch_atm.c
+++ b/net/sched/sch_atm.c
@@ -466,10 +466,11 @@ drop: __maybe_unused
  * non-ATM interfaces.
  */
 
-static void sch_atm_dequeue(unsigned long data)
+static void sch_atm_dequeue(struct tasklet_struct *t)
 {
-	struct Qdisc *sch = (struct Qdisc *)data;
-	struct atm_qdisc_data *p = qdisc_priv(sch);
+	struct atm_qdisc_data *p = from_tasklet(p, t, task);
+	struct Qdisc *sch = (struct Qdisc *)((char *) p -
+					     QDISC_ALIGN(sizeof(struct Qdisc)));
 	struct atm_flow_data *flow;
 	struct sk_buff *skb;
 
@@ -563,7 +564,7 @@ static int atm_tc_init(struct Qdisc *sch, struct nlattr *opt,
 	if (err)
 		return err;
 
-	tasklet_init(&p->task, sch_atm_dequeue, (unsigned long)sch);
+	tasklet_setup(&p->task, sch_atm_dequeue);
 	return 0;
 }
 
-- 
2.17.1


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

* [PATCH 7/8] net: smc: convert tasklets to use new tasklet_setup() API
  2020-08-17  8:51 [PATCH 1/8] net: dccp: convert tasklets to use new tasklet_setup() API Allen Pais
                   ` (4 preceding siblings ...)
  2020-08-17  8:51 ` [PATCH 6/8] net: sched: " Allen Pais
@ 2020-08-17  8:51 ` Allen Pais
  2020-08-17  8:51 ` [PATCH 8/8] net: xfrm: " Allen Pais
  6 siblings, 0 replies; 10+ messages in thread
From: Allen Pais @ 2020-08-17  8:51 UTC (permalink / raw)
  To: gerrit, davem, kuba, edumazet, kuznet, yoshfuji, johannes,
	alex.aring, stefan, santosh.shilimkar, jhs, xiyou.wangcong, jiri
  Cc: keescook, netdev, linux-wireless, linux-kernel, linux-wpan,
	linux-rdma, linux-s390, Allen Pais, Romain Perier

From: Allen Pais <allen.lkml@gmail.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 <allen.lkml@gmail.com>
---
 net/smc/smc_cdc.c |  6 +++---
 net/smc/smc_wr.c  | 14 ++++++--------
 2 files changed, 9 insertions(+), 11 deletions(-)

diff --git a/net/smc/smc_cdc.c b/net/smc/smc_cdc.c
index ce468ff62a19..5db2166197d3 100644
--- a/net/smc/smc_cdc.c
+++ b/net/smc/smc_cdc.c
@@ -389,9 +389,9 @@ static void smc_cdc_msg_recv(struct smc_sock *smc, struct smc_cdc_msg *cdc)
  * Context:
  * - tasklet context
  */
-static void smcd_cdc_rx_tsklet(unsigned long data)
+static void smcd_cdc_rx_tsklet(struct tasklet_struct *t)
 {
-	struct smc_connection *conn = (struct smc_connection *)data;
+	struct smc_connection *conn = from_tasklet(conn, t, rx_tsklet);
 	struct smcd_cdc_msg *data_cdc;
 	struct smcd_cdc_msg cdc;
 	struct smc_sock *smc;
@@ -411,7 +411,7 @@ static void smcd_cdc_rx_tsklet(unsigned long data)
  */
 void smcd_cdc_rx_init(struct smc_connection *conn)
 {
-	tasklet_init(&conn->rx_tsklet, smcd_cdc_rx_tsklet, (unsigned long)conn);
+	tasklet_setup(&conn->rx_tsklet, smcd_cdc_rx_tsklet);
 }
 
 /***************************** init, exit, misc ******************************/
diff --git a/net/smc/smc_wr.c b/net/smc/smc_wr.c
index 1e23cdd41eb1..cbc73a7e4d59 100644
--- a/net/smc/smc_wr.c
+++ b/net/smc/smc_wr.c
@@ -131,9 +131,9 @@ static inline void smc_wr_tx_process_cqe(struct ib_wc *wc)
 	wake_up(&link->wr_tx_wait);
 }
 
-static void smc_wr_tx_tasklet_fn(unsigned long data)
+static void smc_wr_tx_tasklet_fn(struct tasklet_struct *t)
 {
-	struct smc_ib_device *dev = (struct smc_ib_device *)data;
+	struct smc_ib_device *dev = from_tasklet(dev, t, send_tasklet);
 	struct ib_wc wc[SMC_WR_MAX_POLL_CQE];
 	int i = 0, rc;
 	int polled = 0;
@@ -435,9 +435,9 @@ static inline void smc_wr_rx_process_cqes(struct ib_wc wc[], int num)
 	}
 }
 
-static void smc_wr_rx_tasklet_fn(unsigned long data)
+static void smc_wr_rx_tasklet_fn(struct tasklet_struct *t)
 {
-	struct smc_ib_device *dev = (struct smc_ib_device *)data;
+	struct smc_ib_device *dev = from_tasklet(dev, t, recv_tasklet);
 	struct ib_wc wc[SMC_WR_MAX_POLL_CQE];
 	int polled = 0;
 	int rc;
@@ -698,10 +698,8 @@ void smc_wr_remove_dev(struct smc_ib_device *smcibdev)
 
 void smc_wr_add_dev(struct smc_ib_device *smcibdev)
 {
-	tasklet_init(&smcibdev->recv_tasklet, smc_wr_rx_tasklet_fn,
-		     (unsigned long)smcibdev);
-	tasklet_init(&smcibdev->send_tasklet, smc_wr_tx_tasklet_fn,
-		     (unsigned long)smcibdev);
+	tasklet_setup(&smcibdev->recv_tasklet, smc_wr_rx_tasklet_fn);
+	tasklet_setup(&smcibdev->send_tasklet, smc_wr_tx_tasklet_fn);
 }
 
 int smc_wr_create_link(struct smc_link *lnk)
-- 
2.17.1


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

* [PATCH 8/8] net: xfrm: convert tasklets to use new tasklet_setup() API
  2020-08-17  8:51 [PATCH 1/8] net: dccp: convert tasklets to use new tasklet_setup() API Allen Pais
                   ` (5 preceding siblings ...)
  2020-08-17  8:51 ` [PATCH 7/8] net: smc: " Allen Pais
@ 2020-08-17  8:51 ` Allen Pais
  6 siblings, 0 replies; 10+ messages in thread
From: Allen Pais @ 2020-08-17  8:51 UTC (permalink / raw)
  To: gerrit, davem, kuba, edumazet, kuznet, yoshfuji, johannes,
	alex.aring, stefan, santosh.shilimkar, jhs, xiyou.wangcong, jiri
  Cc: keescook, netdev, linux-wireless, linux-kernel, linux-wpan,
	linux-rdma, linux-s390, Allen Pais, Romain Perier

From: Allen Pais <allen.lkml@gmail.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 <allen.lkml@gmail.com>
---
 net/xfrm/xfrm_input.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/net/xfrm/xfrm_input.c b/net/xfrm/xfrm_input.c
index 37456d022cfa..be6351e3f3cd 100644
--- a/net/xfrm/xfrm_input.c
+++ b/net/xfrm/xfrm_input.c
@@ -760,9 +760,9 @@ int xfrm_input_resume(struct sk_buff *skb, int nexthdr)
 }
 EXPORT_SYMBOL(xfrm_input_resume);
 
-static void xfrm_trans_reinject(unsigned long data)
+static void xfrm_trans_reinject(struct tasklet_struct *t)
 {
-	struct xfrm_trans_tasklet *trans = (void *)data;
+	struct xfrm_trans_tasklet *trans = from_tasklet(trans, t, tasklet);
 	struct sk_buff_head queue;
 	struct sk_buff *skb;
 
@@ -818,7 +818,6 @@ void __init xfrm_input_init(void)
 
 		trans = &per_cpu(xfrm_trans_tasklet, i);
 		__skb_queue_head_init(&trans->queue);
-		tasklet_init(&trans->tasklet, xfrm_trans_reinject,
-			     (unsigned long)trans);
+		tasklet_setup(&trans->tasklet, xfrm_trans_reinject);
 	}
 }
-- 
2.17.1


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

* Re: [PATCH 3/8] net: mac80211: convert tasklets to use new tasklet_setup() API
  2020-08-17  8:51 ` [PATCH 3/8] net: mac80211: " Allen Pais
@ 2020-08-17  8:56   ` Johannes Berg
  0 siblings, 0 replies; 10+ messages in thread
From: Johannes Berg @ 2020-08-17  8:56 UTC (permalink / raw)
  To: Allen Pais, gerrit, davem, kuba, edumazet, kuznet, yoshfuji,
	alex.aring, stefan, santosh.shilimkar, jhs, xiyou.wangcong, jiri
  Cc: keescook, netdev, linux-wireless, linux-kernel, linux-wpan,
	linux-rdma, linux-s390, Allen Pais, Romain Perier

On Mon, 2020-08-17 at 14:21 +0530, Allen Pais wrote:
> 
> -static void ieee80211_tasklet_handler(unsigned long data)
> +static void ieee80211_tasklet_handler(struct tasklet_struct *t)
>  {
> -	struct ieee80211_local *local = (struct ieee80211_local *) data;
> +	struct ieee80211_local *local = from_tasklet(local, t, tasklet);

Yay, thank you!

Reviewed-by: Johannes Berg <johannes@sipsolutions.net>


Dave, if you want to take this patch, I have no objections - I have
nothing in my mac80211-next tree (yet).

johannes


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

* Re: [PATCH 4/8] net: mac802154: convert tasklets to use new tasklet_setup() API
  2020-08-17  8:51 ` [PATCH 4/8] net: mac802154: " Allen Pais
@ 2020-08-17 12:19   ` Stefan Schmidt
  0 siblings, 0 replies; 10+ messages in thread
From: Stefan Schmidt @ 2020-08-17 12:19 UTC (permalink / raw)
  To: Allen Pais, gerrit, davem, kuba, edumazet, kuznet, yoshfuji,
	johannes, alex.aring, santosh.shilimkar, jhs, xiyou.wangcong,
	jiri
  Cc: keescook, netdev, linux-wireless, linux-kernel, linux-wpan,
	linux-rdma, linux-s390, Allen Pais, Romain Perier

Hello.

On 17.08.20 10:51, Allen Pais wrote:
> From: Allen Pais <allen.lkml@gmail.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 <allen.lkml@gmail.com>
> ---
>   net/mac802154/main.c | 8 +++-----
>   1 file changed, 3 insertions(+), 5 deletions(-)
> 
> diff --git a/net/mac802154/main.c b/net/mac802154/main.c
> index 06ea0f8bfd5c..520cedc594e1 100644
> --- a/net/mac802154/main.c
> +++ b/net/mac802154/main.c
> @@ -20,9 +20,9 @@
>   #include "ieee802154_i.h"
>   #include "cfg.h"
>   
> -static void ieee802154_tasklet_handler(unsigned long data)
> +static void ieee802154_tasklet_handler(struct tasklet_struct *t)
>   {
> -	struct ieee802154_local *local = (struct ieee802154_local *)data;
> +	struct ieee802154_local *local = from_tasklet(local, t, tasklet);
>   	struct sk_buff *skb;
>   
>   	while ((skb = skb_dequeue(&local->skb_queue))) {
> @@ -91,9 +91,7 @@ ieee802154_alloc_hw(size_t priv_data_len, const struct ieee802154_ops *ops)
>   	INIT_LIST_HEAD(&local->interfaces);
>   	mutex_init(&local->iflist_mtx);
>   
> -	tasklet_init(&local->tasklet,
> -		     ieee802154_tasklet_handler,
> -		     (unsigned long)local);
> +	tasklet_setup(&local->tasklet, ieee802154_tasklet_handler);
>   
>   	skb_queue_head_init(&local->skb_queue);
>   
> 


Acked-by: Stefan Schmidt <stefan@datenfreihafen.org>

regards
Stefan Schmidt

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

end of thread, back to index

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-17  8:51 [PATCH 1/8] net: dccp: convert tasklets to use new tasklet_setup() API Allen Pais
2020-08-17  8:51 ` [PATCH 2/8] net: ipv4: " Allen Pais
2020-08-17  8:51 ` [PATCH 3/8] net: mac80211: " Allen Pais
2020-08-17  8:56   ` Johannes Berg
2020-08-17  8:51 ` [PATCH 4/8] net: mac802154: " Allen Pais
2020-08-17 12:19   ` Stefan Schmidt
2020-08-17  8:51 ` [PATCH 5/8] net: rds: " Allen Pais
2020-08-17  8:51 ` [PATCH 6/8] net: sched: " Allen Pais
2020-08-17  8:51 ` [PATCH 7/8] net: smc: " Allen Pais
2020-08-17  8:51 ` [PATCH 8/8] net: xfrm: " Allen Pais

Linux-WPAN Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-wpan/0 linux-wpan/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-wpan linux-wpan/ https://lore.kernel.org/linux-wpan \
		linux-wpan@vger.kernel.org
	public-inbox-index linux-wpan

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-wpan


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git