linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/3] remove mmio dependency from mcu event code
@ 2020-02-05 23:53 Lorenzo Bianconi
  2020-02-05 23:53 ` [PATCH 1/3] mt76: reuse mt76_mcu in mt76u_mcu Lorenzo Bianconi
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Lorenzo Bianconi @ 2020-02-05 23:53 UTC (permalink / raw)
  To: nbd; +Cc: lorenzo.bianconi, linux-wireless

Remove mmio dependency from mt76_mcu_rx_event and mt76_mcu_get_response in
order to reuse them in usb code and remove duplicated code

Lorenzo Bianconi (3):
  mt76: reuse mt76_mcu in mt76u_mcu
  mt76: generalize mt76_mcu_rx_event routine
  mt76: generalize mt76_mcu_get_response routine

 drivers/net/wireless/mediatek/mt76/mcu.c      | 15 ++++---
 drivers/net/wireless/mediatek/mt76/mt76.h     | 43 ++++++++++---------
 .../net/wireless/mediatek/mt76/mt7603/dma.c   |  4 +-
 .../net/wireless/mediatek/mt76/mt7615/mcu.c   |  2 +-
 .../net/wireless/mediatek/mt76/mt76x02_txrx.c |  3 +-
 .../wireless/mediatek/mt76/mt76x02_usb_mcu.c  | 22 ++++++----
 drivers/net/wireless/mediatek/mt76/usb.c      |  6 ++-
 7 files changed, 52 insertions(+), 43 deletions(-)

-- 
2.21.1


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

* [PATCH 1/3] mt76: reuse mt76_mcu in mt76u_mcu
  2020-02-05 23:53 [PATCH 0/3] remove mmio dependency from mcu event code Lorenzo Bianconi
@ 2020-02-05 23:53 ` Lorenzo Bianconi
  2020-02-07 17:11   ` Felix Fietkau
  2020-02-05 23:53 ` [PATCH 2/3] mt76: generalize mt76_mcu_rx_event routine Lorenzo Bianconi
  2020-02-05 23:53 ` [PATCH 3/3] mt76: generalize mt76_mcu_get_response routine Lorenzo Bianconi
  2 siblings, 1 reply; 8+ messages in thread
From: Lorenzo Bianconi @ 2020-02-05 23:53 UTC (permalink / raw)
  To: nbd; +Cc: lorenzo.bianconi, linux-wireless

Introduce mt76_mcu data structure to contain common fields between
mt76u_mcu and mt76e_mcu.
Move mt76u_mcu at the beginning of mt76_usb in order to rely on mt76_mcu
to access mt76u_mcu common fields

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
 drivers/net/wireless/mediatek/mt76/mt76.h     | 41 ++++++++++---------
 .../wireless/mediatek/mt76/mt76x02_usb_mcu.c  | 22 ++++++----
 drivers/net/wireless/mediatek/mt76/usb.c      |  6 ++-
 3 files changed, 39 insertions(+), 30 deletions(-)

diff --git a/drivers/net/wireless/mediatek/mt76/mt76.h b/drivers/net/wireless/mediatek/mt76/mt76.h
index 0956785ad6f8..c09f929c2d31 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76.h
+++ b/drivers/net/wireless/mediatek/mt76/mt76.h
@@ -388,12 +388,31 @@ enum mt76u_out_ep {
 	__MT_EP_OUT_MAX,
 };
 
+struct mt76_mcu {
+	struct mutex mutex;
+	u32 msg_seq;
+
+	struct sk_buff_head res_q;
+	wait_queue_head_t wait;
+};
+
 #define MT_TX_SG_MAX_SIZE	8
 #define MT_RX_SG_MAX_SIZE	1
 #define MT_NUM_TX_ENTRIES	256
 #define MT_NUM_RX_ENTRIES	128
 #define MCU_RESP_URB_SIZE	1024
 struct mt76_usb {
+	struct mt76u_mcu {
+		struct mt76_mcu common; /* first */
+		u8 *data;
+
+		/* multiple reads */
+		struct mt76_reg_pair *rp;
+		int rp_len;
+		u32 base;
+		bool burst;
+	} mcu;
+
 	struct mutex usb_ctrl_mtx;
 	__le32 reg_val;
 	u8 *data;
@@ -406,29 +425,10 @@ struct mt76_usb {
 	u8 out_ep[__MT_EP_OUT_MAX];
 	u8 in_ep[__MT_EP_IN_MAX];
 	bool sg_en;
-
-	struct mt76u_mcu {
-		struct mutex mutex;
-		u8 *data;
-		u32 msg_seq;
-
-		/* multiple reads */
-		struct mt76_reg_pair *rp;
-		int rp_len;
-		u32 base;
-		bool burst;
-	} mcu;
 };
 
 struct mt76_mmio {
-	struct mt76e_mcu {
-		struct mutex mutex;
-
-		wait_queue_head_t wait;
-		struct sk_buff_head res_q;
-
-		u32 msg_seq;
-	} mcu;
+	struct mt76_mcu mcu;
 	void __iomem *regs;
 	spinlock_t irq_lock;
 	u32 irqmask;
@@ -561,6 +561,7 @@ struct mt76_dev {
 	union {
 		struct mt76_mmio mmio;
 		struct mt76_usb usb;
+		struct mt76_mcu mcu;
 	};
 };
 
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_usb_mcu.c b/drivers/net/wireless/mediatek/mt76/mt76x02_usb_mcu.c
index c58282baee46..5055fea3a382 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02_usb_mcu.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02_usb_mcu.c
@@ -84,17 +84,18 @@ __mt76x02u_mcu_send_msg(struct mt76_dev *dev, struct sk_buff *skb,
 			int cmd, bool wait_resp)
 {
 	struct mt76_usb *usb = &dev->usb;
-	int ret;
+	struct mt76_mcu *mcu = &usb->mcu.common;
 	u8 seq = 0;
 	u32 info;
+	int ret;
 
 	if (test_bit(MT76_REMOVED, &dev->phy.state))
 		return 0;
 
 	if (wait_resp) {
-		seq = ++usb->mcu.msg_seq & 0xf;
+		seq = ++mcu->msg_seq & 0xf;
 		if (!seq)
-			seq = ++usb->mcu.msg_seq & 0xf;
+			seq = ++mcu->msg_seq & 0xf;
 	}
 
 	info = FIELD_PREP(MT_MCU_MSG_CMD_SEQ, seq) |
@@ -122,6 +123,7 @@ mt76x02u_mcu_send_msg(struct mt76_dev *dev, int cmd, const void *data,
 		      int len, bool wait_resp)
 {
 	struct mt76_usb *usb = &dev->usb;
+	struct mt76_mcu *mcu = &usb->mcu.common;
 	struct sk_buff *skb;
 	int err;
 
@@ -129,9 +131,9 @@ mt76x02u_mcu_send_msg(struct mt76_dev *dev, int cmd, const void *data,
 	if (!skb)
 		return -ENOMEM;
 
-	mutex_lock(&usb->mcu.mutex);
+	mutex_lock(&mcu->mutex);
 	err = __mt76x02u_mcu_send_msg(dev, skb, cmd, wait_resp);
-	mutex_unlock(&usb->mcu.mutex);
+	mutex_unlock(&mcu->mutex);
 
 	return err;
 }
@@ -148,6 +150,7 @@ mt76x02u_mcu_wr_rp(struct mt76_dev *dev, u32 base,
 	const int CMD_RANDOM_WRITE = 12;
 	const int max_vals_per_cmd = MT_INBAND_PACKET_MAX_LEN / 8;
 	struct mt76_usb *usb = &dev->usb;
+	struct mt76_mcu *mcu = &usb->mcu.common;
 	struct sk_buff *skb;
 	int cnt, i, ret;
 
@@ -166,9 +169,9 @@ mt76x02u_mcu_wr_rp(struct mt76_dev *dev, u32 base,
 		skb_put_le32(skb, data[i].value);
 	}
 
-	mutex_lock(&usb->mcu.mutex);
+	mutex_lock(&mcu->mutex);
 	ret = __mt76x02u_mcu_send_msg(dev, skb, CMD_RANDOM_WRITE, cnt == n);
-	mutex_unlock(&usb->mcu.mutex);
+	mutex_unlock(&mcu->mutex);
 	if (ret)
 		return ret;
 
@@ -182,6 +185,7 @@ mt76x02u_mcu_rd_rp(struct mt76_dev *dev, u32 base,
 	const int CMD_RANDOM_READ = 10;
 	const int max_vals_per_cmd = MT_INBAND_PACKET_MAX_LEN / 8;
 	struct mt76_usb *usb = &dev->usb;
+	struct mt76_mcu *mcu = &usb->mcu.common;
 	struct sk_buff *skb;
 	int cnt, i, ret;
 
@@ -202,7 +206,7 @@ mt76x02u_mcu_rd_rp(struct mt76_dev *dev, u32 base,
 		skb_put_le32(skb, data[i].value);
 	}
 
-	mutex_lock(&usb->mcu.mutex);
+	mutex_lock(&mcu->mutex);
 
 	usb->mcu.rp = data;
 	usb->mcu.rp_len = n;
@@ -213,7 +217,7 @@ mt76x02u_mcu_rd_rp(struct mt76_dev *dev, u32 base,
 
 	usb->mcu.rp = NULL;
 
-	mutex_unlock(&usb->mcu.mutex);
+	mutex_unlock(&mcu->mutex);
 
 	return ret;
 }
diff --git a/drivers/net/wireless/mediatek/mt76/usb.c b/drivers/net/wireless/mediatek/mt76/usb.c
index 981d8a985557..5510baa22ff2 100644
--- a/drivers/net/wireless/mediatek/mt76/usb.c
+++ b/drivers/net/wireless/mediatek/mt76/usb.c
@@ -1150,6 +1150,7 @@ int mt76u_init(struct mt76_dev *dev,
 	};
 	struct usb_device *udev = interface_to_usbdev(intf);
 	struct mt76_usb *usb = &dev->usb;
+	struct mt76_mcu *mcu = &usb->mcu.common;
 
 	mt76u_ops.rr = ext ? mt76u_rr_ext : mt76u_rr;
 	mt76u_ops.wr = ext ? mt76u_wr_ext : mt76u_wr;
@@ -1167,13 +1168,16 @@ int mt76u_init(struct mt76_dev *dev,
 	usb->data_len = usb_maxpacket(udev, usb_sndctrlpipe(udev, 0), 1);
 	if (usb->data_len < 32)
 		usb->data_len = 32;
+
 	usb->data = devm_kmalloc(dev->dev, usb->data_len, GFP_KERNEL);
 	if (!usb->data) {
 		mt76u_deinit(dev);
 		return -ENOMEM;
 	}
 
-	mutex_init(&usb->mcu.mutex);
+	skb_queue_head_init(&mcu->res_q);
+	init_waitqueue_head(&mcu->wait);
+	mutex_init(&mcu->mutex);
 
 	mutex_init(&usb->usb_ctrl_mtx);
 	dev->bus = &mt76u_ops;
-- 
2.21.1


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

* [PATCH 2/3] mt76: generalize mt76_mcu_rx_event routine
  2020-02-05 23:53 [PATCH 0/3] remove mmio dependency from mcu event code Lorenzo Bianconi
  2020-02-05 23:53 ` [PATCH 1/3] mt76: reuse mt76_mcu in mt76u_mcu Lorenzo Bianconi
@ 2020-02-05 23:53 ` Lorenzo Bianconi
  2020-02-07 17:12   ` Felix Fietkau
  2020-02-05 23:53 ` [PATCH 3/3] mt76: generalize mt76_mcu_get_response routine Lorenzo Bianconi
  2 siblings, 1 reply; 8+ messages in thread
From: Lorenzo Bianconi @ 2020-02-05 23:53 UTC (permalink / raw)
  To: nbd; +Cc: lorenzo.bianconi, linux-wireless

Rely on mt76_mcu in mt76_mcu_rx_event signature in order to reuse
it in usb code

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
 drivers/net/wireless/mediatek/mt76/mcu.c          | 8 +++++---
 drivers/net/wireless/mediatek/mt76/mt76.h         | 2 +-
 drivers/net/wireless/mediatek/mt76/mt7603/dma.c   | 4 ++--
 drivers/net/wireless/mediatek/mt76/mt7615/mcu.c   | 2 +-
 drivers/net/wireless/mediatek/mt76/mt76x02_txrx.c | 3 +--
 5 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/drivers/net/wireless/mediatek/mt76/mcu.c b/drivers/net/wireless/mediatek/mt76/mcu.c
index b0fb0830c9e1..a2936f8de915 100644
--- a/drivers/net/wireless/mediatek/mt76/mcu.c
+++ b/drivers/net/wireless/mediatek/mt76/mcu.c
@@ -42,9 +42,11 @@ struct sk_buff *mt76_mcu_get_response(struct mt76_dev *dev,
 }
 EXPORT_SYMBOL_GPL(mt76_mcu_get_response);
 
-void mt76_mcu_rx_event(struct mt76_dev *dev, struct sk_buff *skb)
+void mt76_mcu_rx_event(void *data, struct sk_buff *skb)
 {
-	skb_queue_tail(&dev->mmio.mcu.res_q, skb);
-	wake_up(&dev->mmio.mcu.wait);
+	struct mt76_mcu *mcu = (struct mt76_mcu *)data;
+
+	skb_queue_tail(&mcu->res_q, skb);
+	wake_up(&mcu->wait);
 }
 EXPORT_SYMBOL_GPL(mt76_mcu_rx_event);
diff --git a/drivers/net/wireless/mediatek/mt76/mt76.h b/drivers/net/wireless/mediatek/mt76/mt76.h
index c09f929c2d31..48d6101dc4ee 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76.h
+++ b/drivers/net/wireless/mediatek/mt76/mt76.h
@@ -903,7 +903,7 @@ void mt76u_queues_deinit(struct mt76_dev *dev);
 struct sk_buff *
 mt76_mcu_msg_alloc(const void *data, int head_len,
 		   int data_len, int tail_len);
-void mt76_mcu_rx_event(struct mt76_dev *dev, struct sk_buff *skb);
+void mt76_mcu_rx_event(void *data, struct sk_buff *skb);
 struct sk_buff *mt76_mcu_get_response(struct mt76_dev *dev,
 				      unsigned long expires);
 
diff --git a/drivers/net/wireless/mediatek/mt76/mt7603/dma.c b/drivers/net/wireless/mediatek/mt76/mt7603/dma.c
index a08b85281170..a5e23b349999 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7603/dma.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7603/dma.c
@@ -103,7 +103,7 @@ void mt7603_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q,
 
 	if (q == MT_RXQ_MCU) {
 		if (type == PKT_TYPE_RX_EVENT)
-			mt76_mcu_rx_event(&dev->mt76, skb);
+			mt76_mcu_rx_event(&dev->mt76.mcu, skb);
 		else
 			mt7603_rx_loopback_skb(dev, skb);
 		return;
@@ -116,7 +116,7 @@ void mt7603_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q,
 		dev_kfree_skb(skb);
 		break;
 	case PKT_TYPE_RX_EVENT:
-		mt76_mcu_rx_event(&dev->mt76, skb);
+		mt76_mcu_rx_event(&dev->mt76.mcu, skb);
 		return;
 	case PKT_TYPE_NORMAL:
 		if (mt7603_mac_fill_rx(dev, skb) == 0) {
diff --git a/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
index c93a22110cf9..60cfa7366ea7 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
@@ -301,7 +301,7 @@ void mt7615_mcu_rx_event(struct mt7615_dev *dev, struct sk_buff *skb)
 	    !rxd->seq)
 		mt7615_mcu_rx_unsolicited_event(dev, skb);
 	else
-		mt76_mcu_rx_event(&dev->mt76, skb);
+		mt76_mcu_rx_event(&dev->mt76.mcu, skb);
 }
 
 static int mt7615_mcu_init_download(struct mt7615_dev *dev, u32 addr,
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_txrx.c b/drivers/net/wireless/mediatek/mt76/mt76x02_txrx.c
index 039f96877787..d1aec50bccae 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02_txrx.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02_txrx.c
@@ -39,8 +39,7 @@ void mt76x02_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q,
 	void *rxwi = skb->data;
 
 	if (q == MT_RXQ_MCU) {
-		/* this is used just by mmio code */
-		mt76_mcu_rx_event(&dev->mt76, skb);
+		mt76_mcu_rx_event(&mdev->mcu, skb);
 		return;
 	}
 
-- 
2.21.1


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

* [PATCH 3/3] mt76: generalize mt76_mcu_get_response routine
  2020-02-05 23:53 [PATCH 0/3] remove mmio dependency from mcu event code Lorenzo Bianconi
  2020-02-05 23:53 ` [PATCH 1/3] mt76: reuse mt76_mcu in mt76u_mcu Lorenzo Bianconi
  2020-02-05 23:53 ` [PATCH 2/3] mt76: generalize mt76_mcu_rx_event routine Lorenzo Bianconi
@ 2020-02-05 23:53 ` Lorenzo Bianconi
  2 siblings, 0 replies; 8+ messages in thread
From: Lorenzo Bianconi @ 2020-02-05 23:53 UTC (permalink / raw)
  To: nbd; +Cc: lorenzo.bianconi, linux-wireless

Rely on mt76_mcu in mt76_mcu_get_response routine in order to reuse it
in usb code

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
 drivers/net/wireless/mediatek/mt76/mcu.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/net/wireless/mediatek/mt76/mcu.c b/drivers/net/wireless/mediatek/mt76/mcu.c
index a2936f8de915..644f396a58a6 100644
--- a/drivers/net/wireless/mediatek/mt76/mcu.c
+++ b/drivers/net/wireless/mediatek/mt76/mcu.c
@@ -24,7 +24,6 @@ mt76_mcu_msg_alloc(const void *data, int head_len,
 }
 EXPORT_SYMBOL_GPL(mt76_mcu_msg_alloc);
 
-/* mmio */
 struct sk_buff *mt76_mcu_get_response(struct mt76_dev *dev,
 				      unsigned long expires)
 {
@@ -34,11 +33,11 @@ struct sk_buff *mt76_mcu_get_response(struct mt76_dev *dev,
 		return NULL;
 
 	timeout = expires - jiffies;
-	wait_event_timeout(dev->mmio.mcu.wait,
-			   (!skb_queue_empty(&dev->mmio.mcu.res_q) ||
+	wait_event_timeout(dev->mcu.wait,
+			   (!skb_queue_empty(&dev->mcu.res_q) ||
 			    test_bit(MT76_MCU_RESET, &dev->phy.state)),
 			   timeout);
-	return skb_dequeue(&dev->mmio.mcu.res_q);
+	return skb_dequeue(&dev->mcu.res_q);
 }
 EXPORT_SYMBOL_GPL(mt76_mcu_get_response);
 
-- 
2.21.1


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

* Re: [PATCH 1/3] mt76: reuse mt76_mcu in mt76u_mcu
  2020-02-05 23:53 ` [PATCH 1/3] mt76: reuse mt76_mcu in mt76u_mcu Lorenzo Bianconi
@ 2020-02-07 17:11   ` Felix Fietkau
  2020-02-07 17:29     ` Lorenzo Bianconi
  0 siblings, 1 reply; 8+ messages in thread
From: Felix Fietkau @ 2020-02-07 17:11 UTC (permalink / raw)
  To: Lorenzo Bianconi; +Cc: lorenzo.bianconi, linux-wireless

On 2020-02-06 00:53, Lorenzo Bianconi wrote:
> Introduce mt76_mcu data structure to contain common fields between
> mt76u_mcu and mt76e_mcu.
> Move mt76u_mcu at the beginning of mt76_usb in order to rely on mt76_mcu
> to access mt76u_mcu common fields
Why not move it to struct mt76_dev directly and out of the union?
I think that would be cleaner, and you can also initialize its fields in
mt76_alloc_device().

- Felix

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

* Re: [PATCH 2/3] mt76: generalize mt76_mcu_rx_event routine
  2020-02-05 23:53 ` [PATCH 2/3] mt76: generalize mt76_mcu_rx_event routine Lorenzo Bianconi
@ 2020-02-07 17:12   ` Felix Fietkau
  2020-02-07 17:22     ` Lorenzo Bianconi
  0 siblings, 1 reply; 8+ messages in thread
From: Felix Fietkau @ 2020-02-07 17:12 UTC (permalink / raw)
  To: Lorenzo Bianconi; +Cc: lorenzo.bianconi, linux-wireless

On 2020-02-06 00:53, Lorenzo Bianconi wrote:
> Rely on mt76_mcu in mt76_mcu_rx_event signature in order to reuse
> it in usb code
> 
> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
> ---
>  drivers/net/wireless/mediatek/mt76/mcu.c          | 8 +++++---
>  drivers/net/wireless/mediatek/mt76/mt76.h         | 2 +-
>  drivers/net/wireless/mediatek/mt76/mt7603/dma.c   | 4 ++--
>  drivers/net/wireless/mediatek/mt76/mt7615/mcu.c   | 2 +-
>  drivers/net/wireless/mediatek/mt76/mt76x02_txrx.c | 3 +--
>  5 files changed, 10 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/net/wireless/mediatek/mt76/mcu.c b/drivers/net/wireless/mediatek/mt76/mcu.c
> index b0fb0830c9e1..a2936f8de915 100644
> --- a/drivers/net/wireless/mediatek/mt76/mcu.c
> +++ b/drivers/net/wireless/mediatek/mt76/mcu.c
> @@ -42,9 +42,11 @@ struct sk_buff *mt76_mcu_get_response(struct mt76_dev *dev,
>  }
>  EXPORT_SYMBOL_GPL(mt76_mcu_get_response);
>  
> -void mt76_mcu_rx_event(struct mt76_dev *dev, struct sk_buff *skb)
> +void mt76_mcu_rx_event(void *data, struct sk_buff *skb)
Why the void* pointer if we have the mcu struct in a common place in
struct mt76_dev anyway?

- Felix

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

* Re: [PATCH 2/3] mt76: generalize mt76_mcu_rx_event routine
  2020-02-07 17:12   ` Felix Fietkau
@ 2020-02-07 17:22     ` Lorenzo Bianconi
  0 siblings, 0 replies; 8+ messages in thread
From: Lorenzo Bianconi @ 2020-02-07 17:22 UTC (permalink / raw)
  To: Felix Fietkau; +Cc: Lorenzo Bianconi, linux-wireless

[-- Attachment #1: Type: text/plain, Size: 1332 bytes --]

On Feb 07, Felix Fietkau wrote:
> On 2020-02-06 00:53, Lorenzo Bianconi wrote:
> > Rely on mt76_mcu in mt76_mcu_rx_event signature in order to reuse
> > it in usb code
> > 
> > Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
> > ---
> >  drivers/net/wireless/mediatek/mt76/mcu.c          | 8 +++++---
> >  drivers/net/wireless/mediatek/mt76/mt76.h         | 2 +-
> >  drivers/net/wireless/mediatek/mt76/mt7603/dma.c   | 4 ++--
> >  drivers/net/wireless/mediatek/mt76/mt7615/mcu.c   | 2 +-
> >  drivers/net/wireless/mediatek/mt76/mt76x02_txrx.c | 3 +--
> >  5 files changed, 10 insertions(+), 9 deletions(-)
> > 
> > diff --git a/drivers/net/wireless/mediatek/mt76/mcu.c b/drivers/net/wireless/mediatek/mt76/mcu.c
> > index b0fb0830c9e1..a2936f8de915 100644
> > --- a/drivers/net/wireless/mediatek/mt76/mcu.c
> > +++ b/drivers/net/wireless/mediatek/mt76/mcu.c
> > @@ -42,9 +42,11 @@ struct sk_buff *mt76_mcu_get_response(struct mt76_dev *dev,
> >  }
> >  EXPORT_SYMBOL_GPL(mt76_mcu_get_response);
> >  
> > -void mt76_mcu_rx_event(struct mt76_dev *dev, struct sk_buff *skb)
> > +void mt76_mcu_rx_event(void *data, struct sk_buff *skb)
> Why the void* pointer if we have the mcu struct in a common place in
> struct mt76_dev anyway?

ack, I will fix it in v2

Regards,
Lorenzo

> 
> - Felix
> 

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

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

* Re: [PATCH 1/3] mt76: reuse mt76_mcu in mt76u_mcu
  2020-02-07 17:11   ` Felix Fietkau
@ 2020-02-07 17:29     ` Lorenzo Bianconi
  0 siblings, 0 replies; 8+ messages in thread
From: Lorenzo Bianconi @ 2020-02-07 17:29 UTC (permalink / raw)
  To: Felix Fietkau; +Cc: Lorenzo Bianconi, linux-wireless

[-- Attachment #1: Type: text/plain, Size: 625 bytes --]

On Feb 07, Felix Fietkau wrote:
> On 2020-02-06 00:53, Lorenzo Bianconi wrote:
> > Introduce mt76_mcu data structure to contain common fields between
> > mt76u_mcu and mt76e_mcu.
> > Move mt76u_mcu at the beginning of mt76_usb in order to rely on mt76_mcu
> > to access mt76u_mcu common fields
> Why not move it to struct mt76_dev directly and out of the union?
> I think that would be cleaner, and you can also initialize its fields in
> mt76_alloc_device().

ack and I can maintain the usb specific fields (e.g mt76_reg_pair or burst) in
mt76u_mcu. I will fix it in v2

Regards,
Lorenzo

> 
> - Felix
> 

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

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

end of thread, other threads:[~2020-02-07 17:29 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-02-05 23:53 [PATCH 0/3] remove mmio dependency from mcu event code Lorenzo Bianconi
2020-02-05 23:53 ` [PATCH 1/3] mt76: reuse mt76_mcu in mt76u_mcu Lorenzo Bianconi
2020-02-07 17:11   ` Felix Fietkau
2020-02-07 17:29     ` Lorenzo Bianconi
2020-02-05 23:53 ` [PATCH 2/3] mt76: generalize mt76_mcu_rx_event routine Lorenzo Bianconi
2020-02-07 17:12   ` Felix Fietkau
2020-02-07 17:22     ` Lorenzo Bianconi
2020-02-05 23:53 ` [PATCH 3/3] mt76: generalize mt76_mcu_get_response routine Lorenzo Bianconi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).