From: Jakub Kicinski <jakub.kicinski@netronome.com>
To: Arend Van Spriel <arend.vanspriel@broadcom.com>
Cc: Kalle Valo <kvalo@codeaurora.org>,
Linux Wireless List <linux-wireless@vger.kernel.org>
Subject: Re: [PATCHv7 4/4] mt7601u: use linux/bitfield.h
Date: Mon, 22 Aug 2016 11:52:54 +0100 [thread overview]
Message-ID: <20160822115254.62ee6589@jkicinski-Precision-T1700> (raw)
In-Reply-To: <161e3391-9a95-6388-6b93-99a5b12a2036@broadcom.com>
On Fri, 19 Aug 2016 21:02:02 +0200, Arend Van Spriel wrote:
> On 19-8-2016 18:44, Jakub Kicinski wrote:
> > Use the newly added linux/bitfield.h.
> >
> > Reviewed-by: Dinan Gunawardena <dinan.gunawardena@netronome.com>
> > Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
> > ---
> > drivers/net/wireless/mediatek/mt7601u/dma.c | 2 +-
> > drivers/net/wireless/mediatek/mt7601u/dma.h | 10 ++--
> > drivers/net/wireless/mediatek/mt7601u/eeprom.c | 12 ++--
> > drivers/net/wireless/mediatek/mt7601u/init.c | 10 ++--
> > drivers/net/wireless/mediatek/mt7601u/mac.c | 38 ++++++------
> > drivers/net/wireless/mediatek/mt7601u/mcu.c | 20 +++----
> > drivers/net/wireless/mediatek/mt7601u/mt7601u.h | 4 +-
> > drivers/net/wireless/mediatek/mt7601u/phy.c | 44 +++++++-------
> > drivers/net/wireless/mediatek/mt7601u/tx.c | 19 +++---
> > drivers/net/wireless/mediatek/mt7601u/util.h | 77 -------------------------
> > 10 files changed, 81 insertions(+), 155 deletions(-)
> > delete mode 100644 drivers/net/wireless/mediatek/mt7601u/util.h
> >
> > diff --git a/drivers/net/wireless/mediatek/mt7601u/dma.c b/drivers/net/wireless/mediatek/mt7601u/dma.c
> > index 57a80cfa39b1..a8bc064bc14f 100644
> > --- a/drivers/net/wireless/mediatek/mt7601u/dma.c
> > +++ b/drivers/net/wireless/mediatek/mt7601u/dma.c
> > @@ -103,7 +103,7 @@ static void mt7601u_rx_process_seg(struct mt7601u_dev *dev, u8 *data,
> >
> > if (unlikely(rxwi->zero[0] || rxwi->zero[1] || rxwi->zero[2]))
> > dev_err_once(dev->dev, "Error: RXWI zero fields are set\n");
> > - if (unlikely(MT76_GET(MT_RXD_INFO_TYPE, fce_info)))
> > + if (unlikely(FIELD_GET(MT_RXD_INFO_TYPE, fce_info)))
> > dev_err_once(dev->dev, "Error: RX path seen a non-pkt urb\n");
> >
> > trace_mt_rx(dev, rxwi, fce_info);
> > diff --git a/drivers/net/wireless/mediatek/mt7601u/dma.h b/drivers/net/wireless/mediatek/mt7601u/dma.h
> > index 978e8a90b87f..270d126880c0 100644
> > --- a/drivers/net/wireless/mediatek/mt7601u/dma.h
> > +++ b/drivers/net/wireless/mediatek/mt7601u/dma.h
> > @@ -18,8 +18,6 @@
> > #include <asm/unaligned.h>
> > #include <linux/skbuff.h>
> >
> > -#include "util.h"
> > -
> > #define MT_DMA_HDR_LEN 4
> > #define MT_RX_INFO_LEN 4
> > #define MT_FCE_INFO_LEN 4
> > @@ -79,9 +77,9 @@ static inline int mt7601u_dma_skb_wrap(struct sk_buff *skb,
> > */
> >
> > info = flags |
> > - MT76_SET(MT_TXD_INFO_LEN, round_up(skb->len, 4)) |
> > - MT76_SET(MT_TXD_INFO_D_PORT, d_port) |
> > - MT76_SET(MT_TXD_INFO_TYPE, type);
> > + FIELD_PREP(MT_TXD_INFO_LEN, round_up(skb->len, 4)) |
> > + FIELD_PREP(MT_TXD_INFO_D_PORT, d_port) |
> > + FIELD_PREP(MT_TXD_INFO_TYPE, type);
>
> So what are those flags? Is there no field definition for those.
>
> > put_unaligned_le32(info, skb_push(skb, sizeof(info)));
> > return skb_put_padto(skb, round_up(skb->len, 4) + 4);
> > @@ -90,7 +88,7 @@ static inline int mt7601u_dma_skb_wrap(struct sk_buff *skb,
> > static inline int
> > mt7601u_dma_skb_wrap_pkt(struct sk_buff *skb, enum mt76_qsel qsel, u32 flags)
> > {
> > - flags |= MT76_SET(MT_TXD_PKT_INFO_QSEL, qsel);
> > + flags |= FIELD_PREP(MT_TXD_PKT_INFO_QSEL, qsel);
>
> Ah. This is the flags being ORed in above. I suppose there are more
> callsites to mt7601u_dma_skb_wrap().
Yes, the field layout differs slightly between data and MCU commands.
Additionally some packet flags depend on mac80211 info and I didn't
want to pollute dma.h with mac80211 info so I just pass those flags
as opaque u32.
> > return mt7601u_dma_skb_wrap(skb, WLAN_PORT, DMA_PACKET, flags);
> > }
> >
> > diff --git a/drivers/net/wireless/mediatek/mt7601u/eeprom.c b/drivers/net/wireless/mediatek/mt7601u/eeprom.c
> > index 8d8ee0344f7b..da6faea092d6 100644
> > --- a/drivers/net/wireless/mediatek/mt7601u/eeprom.c
> > +++ b/drivers/net/wireless/mediatek/mt7601u/eeprom.c
> > @@ -45,8 +45,8 @@ mt7601u_efuse_read(struct mt7601u_dev *dev, u16 addr, u8 *data,
> > val = mt76_rr(dev, MT_EFUSE_CTRL);
> > val &= ~(MT_EFUSE_CTRL_AIN |
> > MT_EFUSE_CTRL_MODE);
> > - val |= MT76_SET(MT_EFUSE_CTRL_AIN, addr & ~0xf) |
> > - MT76_SET(MT_EFUSE_CTRL_MODE, mode) |
> > + val |= FIELD_PREP(MT_EFUSE_CTRL_AIN, addr & ~0xf) |
> > + FIELD_PREP(MT_EFUSE_CTRL_MODE, mode) |
> > MT_EFUSE_CTRL_KICK;
>
> MT_EFUSE_CTRL_KICK is probably a 1-bit field in MT_EFUSE_CTRL register.
> It looks like you did not want to go all the way although you do give an
> example in bitfield.h, ie. + * #define REG_FIELD_B BIT(7).
True, I just wanted to show in the examples that BIT() is OK to use.
My feeling is that ORing in always set flags is acceptable, or at least
it was my feeling when I wrote this code ;)
next prev parent reply other threads:[~2016-08-22 10:53 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-19 16:44 [PATCHv7 0/4] register-field manipulation macros Jakub Kicinski
2016-08-19 16:44 ` [PATCHv7 1/4] add basic " Jakub Kicinski
2016-08-19 16:44 ` [PATCHv7 2/4] mt7601u: remove redefinition of GENMASK Jakub Kicinski
2016-08-19 16:44 ` [PATCHv7 3/4] mt7601u: remove unnecessary include Jakub Kicinski
2016-08-19 16:44 ` [PATCHv7 4/4] mt7601u: use linux/bitfield.h Jakub Kicinski
2016-08-19 19:02 ` Arend Van Spriel
2016-08-22 10:52 ` Jakub Kicinski [this message]
2016-08-22 19:19 ` Arend Van Spriel
2016-08-22 20:59 ` Jakub Kicinski
2016-08-31 11:46 ` [PATCHv8 0/4] register-field manipulation macros Jakub Kicinski
2016-08-31 11:46 ` [PATCHv8 1/4] add basic " Jakub Kicinski
2016-09-09 9:11 ` [PATCHv8,1/4] " Kalle Valo
2016-08-31 11:46 ` [PATCHv8 2/4] mt7601u: remove redefinition of GENMASK Jakub Kicinski
2016-08-31 11:46 ` [PATCHv8 3/4] mt7601u: remove unnecessary include Jakub Kicinski
2016-08-31 11:46 ` [PATCHv8 4/4] mt7601u: use linux/bitfield.h Jakub Kicinski
2016-09-03 11:05 ` [PATCHv8 0/4] register-field manipulation macros Kalle Valo
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=20160822115254.62ee6589@jkicinski-Precision-T1700 \
--to=jakub.kicinski@netronome.com \
--cc=arend.vanspriel@broadcom.com \
--cc=kvalo@codeaurora.org \
--cc=linux-wireless@vger.kernel.org \
/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 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).