All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lorenzo Bianconi <lorenzo@kernel.org>
To: Leon Romanovsky <leon@kernel.org>
Cc: netdev@vger.kernel.org, nbd@nbd.name, john@phrozen.org,
	sean.wang@mediatek.com, Mark-MC.Lee@mediatek.com,
	davem@davemloft.net, edumazet@google.com, kuba@kernel.org,
	pabeni@redhat.com, matthias.bgg@gmail.com,
	linux-mediatek@lists.infradead.org, sujuan.chen@mediatek.com,
	lorenzo.bianconi@redhat.com
Subject: Re: [PATCH net-next] net: ethernet: mtk_wed: add reset to rx_ring_setup callback
Date: Mon, 5 Dec 2022 09:53:41 +0100	[thread overview]
Message-ID: <Y42xlcjeuys4pW4j@lore-desk> (raw)
In-Reply-To: <Y42Yz2hhwk1Rw1hz@unreal>

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

> On Sat, Dec 03, 2022 at 02:06:30PM +0100, Lorenzo Bianconi wrote:
> > Introduce reset parameter to mtk_wed_rx_ring_setup signature.
> > This is a preliminary patch to add Wireless Ethernet Dispatcher reset
> > support.
> 
> So please submit it as part the relevant series.

I have not included this patch in my previous reset series since mt76 bit
were missing (merged now in net-next). I posted this now as standalone patch
to be aligned with mtk_wed_tx_ring_setup counterpart that is already merged
into net-next.

@Dave,Eric,Jakub,Paolo: I am fine both ways, what do you prefer?

Regards,
Lorenzo

> 
> Thanks
> 
> > 
> > Co-developed-by: Sujuan Chen <sujuan.chen@mediatek.com>
> > Signed-off-by: Sujuan Chen <sujuan.chen@mediatek.com>
> > Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
> > ---
> >  drivers/net/ethernet/mediatek/mtk_wed.c  | 20 +++++++++++++-------
> >  drivers/net/wireless/mediatek/mt76/dma.c |  2 +-
> >  include/linux/soc/mediatek/mtk_wed.h     |  8 ++++----
> >  3 files changed, 18 insertions(+), 12 deletions(-)
> > 
> > diff --git a/drivers/net/ethernet/mediatek/mtk_wed.c b/drivers/net/ethernet/mediatek/mtk_wed.c
> > index 6352abd4157e..b1ec3f353b66 100644
> > --- a/drivers/net/ethernet/mediatek/mtk_wed.c
> > +++ b/drivers/net/ethernet/mediatek/mtk_wed.c
> > @@ -1216,7 +1216,8 @@ mtk_wed_wdma_rx_ring_setup(struct mtk_wed_device *dev, int idx, int size,
> >  }
> >  
> >  static int
> > -mtk_wed_wdma_tx_ring_setup(struct mtk_wed_device *dev, int idx, int size)
> > +mtk_wed_wdma_tx_ring_setup(struct mtk_wed_device *dev, int idx, int size,
> > +			   bool reset)
> >  {
> >  	u32 desc_size = sizeof(struct mtk_wdma_desc) * dev->hw->version;
> >  	struct mtk_wed_ring *wdma;
> > @@ -1225,8 +1226,8 @@ mtk_wed_wdma_tx_ring_setup(struct mtk_wed_device *dev, int idx, int size)
> >  		return -EINVAL;
> >  
> >  	wdma = &dev->tx_wdma[idx];
> > -	if (mtk_wed_ring_alloc(dev, wdma, MTK_WED_WDMA_RING_SIZE, desc_size,
> > -			       true))
> > +	if (!reset && mtk_wed_ring_alloc(dev, wdma, MTK_WED_WDMA_RING_SIZE,
> > +					 desc_size, true))
> >  		return -ENOMEM;
> >  
> >  	wdma_w32(dev, MTK_WDMA_RING_TX(idx) + MTK_WED_RING_OFS_BASE,
> > @@ -1236,6 +1237,9 @@ mtk_wed_wdma_tx_ring_setup(struct mtk_wed_device *dev, int idx, int size)
> >  	wdma_w32(dev, MTK_WDMA_RING_TX(idx) + MTK_WED_RING_OFS_CPU_IDX, 0);
> >  	wdma_w32(dev, MTK_WDMA_RING_TX(idx) + MTK_WED_RING_OFS_DMA_IDX, 0);
> >  
> > +	if (reset)
> > +		mtk_wed_ring_reset(wdma, MTK_WED_WDMA_RING_SIZE, true);
> > +
> >  	if (!idx)  {
> >  		wed_w32(dev, MTK_WED_WDMA_RING_TX + MTK_WED_RING_OFS_BASE,
> >  			wdma->desc_phys);
> > @@ -1577,18 +1581,20 @@ mtk_wed_txfree_ring_setup(struct mtk_wed_device *dev, void __iomem *regs)
> >  }
> >  
> >  static int
> > -mtk_wed_rx_ring_setup(struct mtk_wed_device *dev, int idx, void __iomem *regs)
> > +mtk_wed_rx_ring_setup(struct mtk_wed_device *dev, int idx, void __iomem *regs,
> > +		      bool reset)
> >  {
> >  	struct mtk_wed_ring *ring = &dev->rx_ring[idx];
> >  
> >  	if (WARN_ON(idx >= ARRAY_SIZE(dev->rx_ring)))
> >  		return -EINVAL;
> >  
> > -	if (mtk_wed_ring_alloc(dev, ring, MTK_WED_RX_RING_SIZE,
> > -			       sizeof(*ring->desc), false))
> > +	if (!reset && mtk_wed_ring_alloc(dev, ring, MTK_WED_RX_RING_SIZE,
> > +					 sizeof(*ring->desc), false))
> >  		return -ENOMEM;
> >  
> > -	if (mtk_wed_wdma_tx_ring_setup(dev, idx, MTK_WED_WDMA_RING_SIZE))
> > +	if (mtk_wed_wdma_tx_ring_setup(dev, idx, MTK_WED_WDMA_RING_SIZE,
> > +				       reset))
> >  		return -ENOMEM;
> >  
> >  	ring->reg_base = MTK_WED_RING_RX_DATA(idx);
> > diff --git a/drivers/net/wireless/mediatek/mt76/dma.c b/drivers/net/wireless/mediatek/mt76/dma.c
> > index 3f8c0845fcca..f795548562f5 100644
> > --- a/drivers/net/wireless/mediatek/mt76/dma.c
> > +++ b/drivers/net/wireless/mediatek/mt76/dma.c
> > @@ -648,7 +648,7 @@ mt76_dma_wed_setup(struct mt76_dev *dev, struct mt76_queue *q)
> >  			q->wed_regs = wed->txfree_ring.reg_base;
> >  		break;
> >  	case MT76_WED_Q_RX:
> > -		ret = mtk_wed_device_rx_ring_setup(wed, ring, q->regs);
> > +		ret = mtk_wed_device_rx_ring_setup(wed, ring, q->regs, false);
> >  		if (!ret)
> >  			q->wed_regs = wed->rx_ring[ring].reg_base;
> >  		break;
> > diff --git a/include/linux/soc/mediatek/mtk_wed.h b/include/linux/soc/mediatek/mtk_wed.h
> > index beb190449704..a0746d4aec20 100644
> > --- a/include/linux/soc/mediatek/mtk_wed.h
> > +++ b/include/linux/soc/mediatek/mtk_wed.h
> > @@ -160,7 +160,7 @@ struct mtk_wed_ops {
> >  	int (*tx_ring_setup)(struct mtk_wed_device *dev, int ring,
> >  			     void __iomem *regs, bool reset);
> >  	int (*rx_ring_setup)(struct mtk_wed_device *dev, int ring,
> > -			     void __iomem *regs);
> > +			     void __iomem *regs, bool reset);
> >  	int (*txfree_ring_setup)(struct mtk_wed_device *dev,
> >  				 void __iomem *regs);
> >  	int (*msg_update)(struct mtk_wed_device *dev, int cmd_id,
> > @@ -228,8 +228,8 @@ mtk_wed_get_rx_capa(struct mtk_wed_device *dev)
> >  	(_dev)->ops->irq_get(_dev, _mask)
> >  #define mtk_wed_device_irq_set_mask(_dev, _mask) \
> >  	(_dev)->ops->irq_set_mask(_dev, _mask)
> > -#define mtk_wed_device_rx_ring_setup(_dev, _ring, _regs) \
> > -	(_dev)->ops->rx_ring_setup(_dev, _ring, _regs)
> > +#define mtk_wed_device_rx_ring_setup(_dev, _ring, _regs, _reset) \
> > +	(_dev)->ops->rx_ring_setup(_dev, _ring, _regs, _reset)
> >  #define mtk_wed_device_ppe_check(_dev, _skb, _reason, _hash) \
> >  	(_dev)->ops->ppe_check(_dev, _skb, _reason, _hash)
> >  #define mtk_wed_device_update_msg(_dev, _id, _msg, _len) \
> > @@ -249,7 +249,7 @@ static inline bool mtk_wed_device_active(struct mtk_wed_device *dev)
> >  #define mtk_wed_device_reg_write(_dev, _reg, _val) do {} while (0)
> >  #define mtk_wed_device_irq_get(_dev, _mask) 0
> >  #define mtk_wed_device_irq_set_mask(_dev, _mask) do {} while (0)
> > -#define mtk_wed_device_rx_ring_setup(_dev, _ring, _regs) -ENODEV
> > +#define mtk_wed_device_rx_ring_setup(_dev, _ring, _regs, _reset) -ENODEV
> >  #define mtk_wed_device_ppe_check(_dev, _skb, _reason, _hash)  do {} while (0)
> >  #define mtk_wed_device_update_msg(_dev, _id, _msg, _len) -ENODEV
> >  #define mtk_wed_device_stop(_dev) do {} while (0)
> > -- 
> > 2.38.1
> > 

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

  reply	other threads:[~2022-12-05  8:55 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-03 13:06 [PATCH net-next] net: ethernet: mtk_wed: add reset to rx_ring_setup callback Lorenzo Bianconi
2022-12-05  7:07 ` Leon Romanovsky
2022-12-05  8:53   ` Lorenzo Bianconi [this message]
2022-12-05  9:21     ` Leon Romanovsky

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Y42xlcjeuys4pW4j@lore-desk \
    --to=lorenzo@kernel.org \
    --cc=Mark-MC.Lee@mediatek.com \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=john@phrozen.org \
    --cc=kuba@kernel.org \
    --cc=leon@kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=lorenzo.bianconi@redhat.com \
    --cc=matthias.bgg@gmail.com \
    --cc=nbd@nbd.name \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=sean.wang@mediatek.com \
    --cc=sujuan.chen@mediatek.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.