Commit f1fe8eef authored by Ryder Lee's avatar Ryder Lee Committed by Felix Fietkau

mt76: use le32/16_get_bits() whenever possible

Switch to use le32/16_get_bits() to simplfy codes and specify
the size explicitly to avoid potential issues.
Signed-off-by: default avatarRyder Lee <ryder.lee@mediatek.com>
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent c00e1372
...@@ -76,7 +76,7 @@ void mt7603_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q, ...@@ -76,7 +76,7 @@ void mt7603_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q,
__le32 *end = (__le32 *)&skb->data[skb->len]; __le32 *end = (__le32 *)&skb->data[skb->len];
enum rx_pkt_type type; enum rx_pkt_type type;
type = FIELD_GET(MT_RXD0_PKT_TYPE, le32_to_cpu(rxd[0])); type = le32_get_bits(rxd[0], MT_RXD0_PKT_TYPE);
if (q == MT_RXQ_MCU) { if (q == MT_RXQ_MCU) {
if (type == PKT_TYPE_RX_EVENT) if (type == PKT_TYPE_RX_EVENT)
......
...@@ -1130,7 +1130,7 @@ mt7603_fill_txs(struct mt7603_dev *dev, struct mt7603_sta *sta, ...@@ -1130,7 +1130,7 @@ mt7603_fill_txs(struct mt7603_dev *dev, struct mt7603_sta *sta,
} }
rate_set_tsf = READ_ONCE(sta->rate_set_tsf); rate_set_tsf = READ_ONCE(sta->rate_set_tsf);
rs_idx = !((u32)(FIELD_GET(MT_TXS1_F0_TIMESTAMP, le32_to_cpu(txs_data[1])) - rs_idx = !((u32)(le32_get_bits(txs_data[1], MT_TXS1_F0_TIMESTAMP) -
rate_set_tsf) < 1000000); rate_set_tsf) < 1000000);
rs_idx ^= rate_set_tsf & BIT(0); rs_idx ^= rate_set_tsf & BIT(0);
rs = &sta->rateset[rs_idx]; rs = &sta->rateset[rs_idx];
...@@ -1244,14 +1244,11 @@ void mt7603_mac_add_txs(struct mt7603_dev *dev, void *data) ...@@ -1244,14 +1244,11 @@ void mt7603_mac_add_txs(struct mt7603_dev *dev, void *data)
struct mt7603_sta *msta = NULL; struct mt7603_sta *msta = NULL;
struct mt76_wcid *wcid; struct mt76_wcid *wcid;
__le32 *txs_data = data; __le32 *txs_data = data;
u32 txs;
u8 wcidx; u8 wcidx;
u8 pid; u8 pid;
txs = le32_to_cpu(txs_data[4]); pid = le32_get_bits(txs_data[4], MT_TXS4_PID);
pid = FIELD_GET(MT_TXS4_PID, txs); wcidx = le32_get_bits(txs_data[3], MT_TXS3_WCID);
txs = le32_to_cpu(txs_data[3]);
wcidx = FIELD_GET(MT_TXS3_WCID, txs);
if (pid == MT_PACKET_ID_NO_ACK) if (pid == MT_PACKET_ID_NO_ACK)
return; return;
......
...@@ -261,7 +261,7 @@ static int mt7615_reverse_frag0_hdr_trans(struct sk_buff *skb, u16 hdr_gap) ...@@ -261,7 +261,7 @@ static int mt7615_reverse_frag0_hdr_trans(struct sk_buff *skb, u16 hdr_gap)
struct ieee80211_hdr hdr; struct ieee80211_hdr hdr;
u16 frame_control; u16 frame_control;
if (FIELD_GET(MT_RXD1_NORMAL_ADDR_TYPE, le32_to_cpu(rxd[1])) != if (le32_get_bits(rxd[1], MT_RXD1_NORMAL_ADDR_TYPE) !=
MT_RXD1_NORMAL_U2M) MT_RXD1_NORMAL_U2M)
return -EINVAL; return -EINVAL;
...@@ -1427,7 +1427,7 @@ static bool mt7615_fill_txs(struct mt7615_dev *dev, struct mt7615_sta *sta, ...@@ -1427,7 +1427,7 @@ static bool mt7615_fill_txs(struct mt7615_dev *dev, struct mt7615_sta *sta,
} }
rate_set_tsf = READ_ONCE(sta->rate_set_tsf); rate_set_tsf = READ_ONCE(sta->rate_set_tsf);
rs_idx = !((u32)(FIELD_GET(MT_TXS4_F0_TIMESTAMP, le32_to_cpu(txs_data[4])) - rs_idx = !((u32)(le32_get_bits(txs_data[4], MT_TXS4_F0_TIMESTAMP) -
rate_set_tsf) < 1000000); rate_set_tsf) < 1000000);
rs_idx ^= rate_set_tsf & BIT(0); rs_idx ^= rate_set_tsf & BIT(0);
rs = &sta->rateset[rs_idx]; rs = &sta->rateset[rs_idx];
...@@ -1558,14 +1558,11 @@ static void mt7615_mac_add_txs(struct mt7615_dev *dev, void *data) ...@@ -1558,14 +1558,11 @@ static void mt7615_mac_add_txs(struct mt7615_dev *dev, void *data)
struct mt76_wcid *wcid; struct mt76_wcid *wcid;
struct mt76_phy *mphy = &dev->mt76.phy; struct mt76_phy *mphy = &dev->mt76.phy;
__le32 *txs_data = data; __le32 *txs_data = data;
u32 txs;
u8 wcidx; u8 wcidx;
u8 pid; u8 pid;
txs = le32_to_cpu(txs_data[0]); pid = le32_get_bits(txs_data[0], MT_TXS0_PID);
pid = FIELD_GET(MT_TXS0_PID, txs); wcidx = le32_get_bits(txs_data[2], MT_TXS2_WCID);
txs = le32_to_cpu(txs_data[2]);
wcidx = FIELD_GET(MT_TXS2_WCID, txs);
if (pid == MT_PACKET_ID_NO_ACK) if (pid == MT_PACKET_ID_NO_ACK)
return; return;
...@@ -1653,7 +1650,7 @@ static void mt7615_mac_tx_free(struct mt7615_dev *dev, void *data, int len) ...@@ -1653,7 +1650,7 @@ static void mt7615_mac_tx_free(struct mt7615_dev *dev, void *data, int len)
mt76_queue_tx_cleanup(dev, dev->mphy.q_tx[i], false); mt76_queue_tx_cleanup(dev, dev->mphy.q_tx[i], false);
} }
count = FIELD_GET(MT_TX_FREE_MSDU_ID_CNT, le16_to_cpu(free->ctrl)); count = le16_get_bits(free->ctrl, MT_TX_FREE_MSDU_ID_CNT);
if (is_mt7615(&dev->mt76)) { if (is_mt7615(&dev->mt76)) {
__le16 *token = &free->token[0]; __le16 *token = &free->token[0];
...@@ -1686,7 +1683,8 @@ bool mt7615_rx_check(struct mt76_dev *mdev, void *data, int len) ...@@ -1686,7 +1683,8 @@ bool mt7615_rx_check(struct mt76_dev *mdev, void *data, int len)
__le32 *end = (__le32 *)&rxd[len / 4]; __le32 *end = (__le32 *)&rxd[len / 4];
enum rx_pkt_type type; enum rx_pkt_type type;
type = FIELD_GET(MT_RXD0_PKT_TYPE, le32_to_cpu(rxd[0])); type = le32_get_bits(rxd[0], MT_RXD0_PKT_TYPE);
switch (type) { switch (type) {
case PKT_TYPE_TXRX_NOTIFY: case PKT_TYPE_TXRX_NOTIFY:
mt7615_mac_tx_free(dev, data, len); mt7615_mac_tx_free(dev, data, len);
...@@ -1710,8 +1708,8 @@ void mt7615_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q, ...@@ -1710,8 +1708,8 @@ void mt7615_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q,
enum rx_pkt_type type; enum rx_pkt_type type;
u16 flag; u16 flag;
type = FIELD_GET(MT_RXD0_PKT_TYPE, le32_to_cpu(rxd[0])); type = le32_get_bits(rxd[0], MT_RXD0_PKT_TYPE);
flag = FIELD_GET(MT_RXD0_PKT_FLAG, le32_to_cpu(rxd[0])); flag = le32_get_bits(rxd[0], MT_RXD0_PKT_FLAG);
if (type == PKT_TYPE_RX_EVENT && flag == 0x1) if (type == PKT_TYPE_RX_EVENT && flag == 0x1)
type = PKT_TYPE_NORMAL_MCU; type = PKT_TYPE_NORMAL_MCU;
......
...@@ -226,8 +226,8 @@ mt7915_mac_decode_he_radiotap_ru(struct mt76_rx_status *status, ...@@ -226,8 +226,8 @@ mt7915_mac_decode_he_radiotap_ru(struct mt76_rx_status *status,
u32 ru_h, ru_l; u32 ru_h, ru_l;
u8 ru, offs = 0; u8 ru, offs = 0;
ru_l = FIELD_GET(MT_PRXV_HE_RU_ALLOC_L, le32_to_cpu(rxv[0])); ru_l = le32_get_bits(rxv[0], MT_PRXV_HE_RU_ALLOC_L);
ru_h = FIELD_GET(MT_PRXV_HE_RU_ALLOC_H, le32_to_cpu(rxv[1])); ru_h = le32_get_bits(rxv[1], MT_PRXV_HE_RU_ALLOC_H);
ru = (u8)(ru_l | ru_h << 4); ru = (u8)(ru_l | ru_h << 4);
status->bw = RATE_INFO_BW_HE_RU; status->bw = RATE_INFO_BW_HE_RU;
...@@ -400,7 +400,7 @@ static int mt7915_reverse_frag0_hdr_trans(struct sk_buff *skb, u16 hdr_gap) ...@@ -400,7 +400,7 @@ static int mt7915_reverse_frag0_hdr_trans(struct sk_buff *skb, u16 hdr_gap)
struct ieee80211_hdr hdr; struct ieee80211_hdr hdr;
u16 frame_control; u16 frame_control;
if (FIELD_GET(MT_RXD3_NORMAL_ADDR_TYPE, le32_to_cpu(rxd[3])) != if (le32_get_bits(rxd[3], MT_RXD3_NORMAL_ADDR_TYPE) !=
MT_RXD3_NORMAL_U2M) MT_RXD3_NORMAL_U2M)
return -EINVAL; return -EINVAL;
...@@ -861,7 +861,7 @@ mt7915_mac_fill_rx_vector(struct mt7915_dev *dev, struct sk_buff *skb) ...@@ -861,7 +861,7 @@ mt7915_mac_fill_rx_vector(struct mt7915_dev *dev, struct sk_buff *skb)
u8 snr; u8 snr;
int i; int i;
band_idx = FIELD_GET(MT_RXV_HDR_BAND_IDX, le32_to_cpu(rxv_hdr[1])); band_idx = le32_get_bits(rxv_hdr[1], MT_RXV_HDR_BAND_IDX);
if (band_idx && !phy->band_idx) if (band_idx && !phy->band_idx)
phy = mt7915_ext_phy(dev); phy = mt7915_ext_phy(dev);
...@@ -1356,7 +1356,7 @@ mt7915_tx_check_aggr(struct ieee80211_sta *sta, __le32 *txwi) ...@@ -1356,7 +1356,7 @@ mt7915_tx_check_aggr(struct ieee80211_sta *sta, __le32 *txwi)
if (!sta || !(sta->ht_cap.ht_supported || sta->he_cap.has_he)) if (!sta || !(sta->ht_cap.ht_supported || sta->he_cap.has_he))
return; return;
tid = FIELD_GET(MT_TXD1_TID, le32_to_cpu(txwi[1])); tid = le32_get_bits(txwi[1], MT_TXD1_TID);
if (tid >= 6) /* skip VO queue */ if (tid >= 6) /* skip VO queue */
return; return;
...@@ -1404,7 +1404,7 @@ mt7915_txwi_free(struct mt7915_dev *dev, struct mt76_txwi_cache *t, ...@@ -1404,7 +1404,7 @@ mt7915_txwi_free(struct mt7915_dev *dev, struct mt76_txwi_cache *t,
if (likely(t->skb->protocol != cpu_to_be16(ETH_P_PAE))) if (likely(t->skb->protocol != cpu_to_be16(ETH_P_PAE)))
mt7915_tx_check_aggr(sta, txwi); mt7915_tx_check_aggr(sta, txwi);
} else { } else {
wcid_idx = FIELD_GET(MT_TXD1_WLAN_IDX, le32_to_cpu(txwi[1])); wcid_idx = le32_get_bits(txwi[1], MT_TXD1_WLAN_IDX);
} }
__mt76_tx_complete_skb(mdev, wcid_idx, t->skb, free_list); __mt76_tx_complete_skb(mdev, wcid_idx, t->skb, free_list);
...@@ -1438,12 +1438,7 @@ mt7915_mac_tx_free(struct mt7915_dev *dev, void *data, int len) ...@@ -1438,12 +1438,7 @@ mt7915_mac_tx_free(struct mt7915_dev *dev, void *data, int len)
mt76_queue_tx_cleanup(dev, mphy_ext->q_tx[MT_TXQ_BE], false); mt76_queue_tx_cleanup(dev, mphy_ext->q_tx[MT_TXQ_BE], false);
} }
/* total = le16_get_bits(free->ctrl, MT_TX_FREE_MSDU_CNT);
* TODO: MT_TX_FREE_LATENCY is msdu time from the TXD is queued into PLE,
* to the time ack is received or dropped by hw (air + hw queue time).
* Should avoid accessing WTBL to get Tx airtime, and use it instead.
*/
total = FIELD_GET(MT_TX_FREE_MSDU_CNT, le16_to_cpu(free->ctrl));
v3 = (FIELD_GET(MT_TX_FREE_VER, txd) == 0x4); v3 = (FIELD_GET(MT_TX_FREE_VER, txd) == 0x4);
if (WARN_ON_ONCE((void *)&free->info[total >> v3] > end)) if (WARN_ON_ONCE((void *)&free->info[total >> v3] > end))
return; return;
...@@ -1636,18 +1631,13 @@ static void mt7915_mac_add_txs(struct mt7915_dev *dev, void *data) ...@@ -1636,18 +1631,13 @@ static void mt7915_mac_add_txs(struct mt7915_dev *dev, void *data)
struct mt76_wcid *wcid; struct mt76_wcid *wcid;
__le32 *txs_data = data; __le32 *txs_data = data;
u16 wcidx; u16 wcidx;
u32 txs;
u8 pid; u8 pid;
txs = le32_to_cpu(txs_data[0]); if (le32_get_bits(txs_data[0], MT_TXS0_TXS_FORMAT) > 1)
if (FIELD_GET(MT_TXS0_TXS_FORMAT, txs) > 1)
return; return;
txs = le32_to_cpu(txs_data[2]); wcidx = le32_get_bits(txs_data[2], MT_TXS2_WCID);
wcidx = FIELD_GET(MT_TXS2_WCID, txs); pid = le32_get_bits(txs_data[3], MT_TXS3_PID);
txs = le32_to_cpu(txs_data[3]);
pid = FIELD_GET(MT_TXS3_PID, txs);
if (pid < MT_PACKET_ID_FIRST) if (pid < MT_PACKET_ID_FIRST)
return; return;
...@@ -1684,7 +1674,8 @@ bool mt7915_rx_check(struct mt76_dev *mdev, void *data, int len) ...@@ -1684,7 +1674,8 @@ bool mt7915_rx_check(struct mt76_dev *mdev, void *data, int len)
__le32 *end = (__le32 *)&rxd[len / 4]; __le32 *end = (__le32 *)&rxd[len / 4];
enum rx_pkt_type type; enum rx_pkt_type type;
type = FIELD_GET(MT_RXD0_PKT_TYPE, le32_to_cpu(rxd[0])); type = le32_get_bits(rxd[0], MT_RXD0_PKT_TYPE);
switch (type) { switch (type) {
case PKT_TYPE_TXRX_NOTIFY: case PKT_TYPE_TXRX_NOTIFY:
mt7915_mac_tx_free(dev, data, len); mt7915_mac_tx_free(dev, data, len);
...@@ -1709,7 +1700,7 @@ void mt7915_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q, ...@@ -1709,7 +1700,7 @@ void mt7915_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q,
__le32 *end = (__le32 *)&skb->data[skb->len]; __le32 *end = (__le32 *)&skb->data[skb->len];
enum rx_pkt_type type; enum rx_pkt_type type;
type = FIELD_GET(MT_RXD0_PKT_TYPE, le32_to_cpu(rxd[0])); type = le32_get_bits(rxd[0], MT_RXD0_PKT_TYPE);
switch (type) { switch (type) {
case PKT_TYPE_TXRX_NOTIFY: case PKT_TYPE_TXRX_NOTIFY:
......
...@@ -176,8 +176,8 @@ mt7921_mac_decode_he_radiotap_ru(struct mt76_rx_status *status, ...@@ -176,8 +176,8 @@ mt7921_mac_decode_he_radiotap_ru(struct mt76_rx_status *status,
u32 ru_h, ru_l; u32 ru_h, ru_l;
u8 ru, offs = 0; u8 ru, offs = 0;
ru_l = FIELD_GET(MT_PRXV_HE_RU_ALLOC_L, le32_to_cpu(rxv[0])); ru_l = le32_get_bits(rxv[0], MT_PRXV_HE_RU_ALLOC_L);
ru_h = FIELD_GET(MT_PRXV_HE_RU_ALLOC_H, le32_to_cpu(rxv[1])); ru_h = le32_get_bits(rxv[1], MT_PRXV_HE_RU_ALLOC_H);
ru = (u8)(ru_l | ru_h << 4); ru = (u8)(ru_l | ru_h << 4);
status->bw = RATE_INFO_BW_HE_RU; status->bw = RATE_INFO_BW_HE_RU;
...@@ -247,19 +247,19 @@ mt7921_mac_decode_he_mu_radiotap(struct sk_buff *skb, __le32 *rxv) ...@@ -247,19 +247,19 @@ mt7921_mac_decode_he_mu_radiotap(struct sk_buff *skb, __le32 *rxv)
MU_PREP(FLAGS2_SIG_B_SYMS_USERS, MU_PREP(FLAGS2_SIG_B_SYMS_USERS,
le32_get_bits(rxv[2], MT_CRXV_HE_NUM_USER)); le32_get_bits(rxv[2], MT_CRXV_HE_NUM_USER));
he_mu->ru_ch1[0] = FIELD_GET(MT_CRXV_HE_RU0, le32_to_cpu(rxv[3])); he_mu->ru_ch1[0] = le32_get_bits(rxv[3], MT_CRXV_HE_RU0);
if (status->bw >= RATE_INFO_BW_40) { if (status->bw >= RATE_INFO_BW_40) {
he_mu->flags1 |= HE_BITS(MU_FLAGS1_CH2_RU_KNOWN); he_mu->flags1 |= HE_BITS(MU_FLAGS1_CH2_RU_KNOWN);
he_mu->ru_ch2[0] = he_mu->ru_ch2[0] =
FIELD_GET(MT_CRXV_HE_RU1, le32_to_cpu(rxv[3])); le32_get_bits(rxv[3], MT_CRXV_HE_RU1);
} }
if (status->bw >= RATE_INFO_BW_80) { if (status->bw >= RATE_INFO_BW_80) {
he_mu->ru_ch1[1] = he_mu->ru_ch1[1] =
FIELD_GET(MT_CRXV_HE_RU2, le32_to_cpu(rxv[3])); le32_get_bits(rxv[3], MT_CRXV_HE_RU2);
he_mu->ru_ch2[1] = he_mu->ru_ch2[1] =
FIELD_GET(MT_CRXV_HE_RU3, le32_to_cpu(rxv[3])); le32_get_bits(rxv[3], MT_CRXV_HE_RU3);
} }
} }
...@@ -409,7 +409,7 @@ static int mt7921_reverse_frag0_hdr_trans(struct sk_buff *skb, u16 hdr_gap) ...@@ -409,7 +409,7 @@ static int mt7921_reverse_frag0_hdr_trans(struct sk_buff *skb, u16 hdr_gap)
struct ieee80211_hdr hdr; struct ieee80211_hdr hdr;
u16 frame_control; u16 frame_control;
if (FIELD_GET(MT_RXD3_NORMAL_ADDR_TYPE, le32_to_cpu(rxd[3])) != if (le32_get_bits(rxd[3], MT_RXD3_NORMAL_ADDR_TYPE) !=
MT_RXD3_NORMAL_U2M) MT_RXD3_NORMAL_U2M)
return -EINVAL; return -EINVAL;
...@@ -1024,7 +1024,7 @@ void mt7921_tx_check_aggr(struct ieee80211_sta *sta, __le32 *txwi) ...@@ -1024,7 +1024,7 @@ void mt7921_tx_check_aggr(struct ieee80211_sta *sta, __le32 *txwi)
if (!sta || !(sta->ht_cap.ht_supported || sta->he_cap.has_he)) if (!sta || !(sta->ht_cap.ht_supported || sta->he_cap.has_he))
return; return;
tid = FIELD_GET(MT_TXD1_TID, le32_to_cpu(txwi[1])); tid = le32_get_bits(txwi[1], MT_TXD1_TID);
if (tid >= 6) /* skip VO queue */ if (tid >= 6) /* skip VO queue */
return; return;
...@@ -1163,18 +1163,13 @@ void mt7921_mac_add_txs(struct mt7921_dev *dev, void *data) ...@@ -1163,18 +1163,13 @@ void mt7921_mac_add_txs(struct mt7921_dev *dev, void *data)
struct mt76_wcid *wcid; struct mt76_wcid *wcid;
__le32 *txs_data = data; __le32 *txs_data = data;
u16 wcidx; u16 wcidx;
u32 txs;
u8 pid; u8 pid;
txs = le32_to_cpu(txs_data[0]); if (le32_get_bits(txs_data[0], MT_TXS0_TXS_FORMAT) > 1)
if (FIELD_GET(MT_TXS0_TXS_FORMAT, txs) > 1)
return; return;
txs = le32_to_cpu(txs_data[2]); wcidx = le32_get_bits(txs_data[2], MT_TXS2_WCID);
wcidx = FIELD_GET(MT_TXS2_WCID, txs); pid = le32_get_bits(txs_data[3], MT_TXS3_PID);
txs = le32_to_cpu(txs_data[3]);
pid = FIELD_GET(MT_TXS3_PID, txs);
if (pid < MT_PACKET_ID_FIRST) if (pid < MT_PACKET_ID_FIRST)
return; return;
...@@ -1213,8 +1208,8 @@ void mt7921_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q, ...@@ -1213,8 +1208,8 @@ void mt7921_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q,
enum rx_pkt_type type; enum rx_pkt_type type;
u16 flag; u16 flag;
type = FIELD_GET(MT_RXD0_PKT_TYPE, le32_to_cpu(rxd[0])); type = le32_get_bits(rxd[0], MT_RXD0_PKT_TYPE);
flag = FIELD_GET(MT_RXD0_PKT_FLAG, le32_to_cpu(rxd[0])); flag = le32_get_bits(rxd[0], MT_RXD0_PKT_FLAG);
if (type == PKT_TYPE_RX_EVENT && flag == 0x1) if (type == PKT_TYPE_RX_EVENT && flag == 0x1)
type = PKT_TYPE_NORMAL_MCU; type = PKT_TYPE_NORMAL_MCU;
......
...@@ -137,7 +137,7 @@ mt7921_txwi_free(struct mt7921_dev *dev, struct mt76_txwi_cache *t, ...@@ -137,7 +137,7 @@ mt7921_txwi_free(struct mt7921_dev *dev, struct mt76_txwi_cache *t,
wcid_idx = wcid->idx; wcid_idx = wcid->idx;
} else { } else {
wcid_idx = FIELD_GET(MT_TXD1_WLAN_IDX, le32_to_cpu(txwi[1])); wcid_idx = le32_get_bits(txwi[1], MT_TXD1_WLAN_IDX);
} }
__mt76_tx_complete_skb(mdev, wcid_idx, t->skb, free_list); __mt76_tx_complete_skb(mdev, wcid_idx, t->skb, free_list);
...@@ -164,11 +164,7 @@ mt7921e_mac_tx_free(struct mt7921_dev *dev, void *data, int len) ...@@ -164,11 +164,7 @@ mt7921e_mac_tx_free(struct mt7921_dev *dev, void *data, int len)
mt76_queue_tx_cleanup(dev, dev->mphy.q_tx[MT_TXQ_PSD], false); mt76_queue_tx_cleanup(dev, dev->mphy.q_tx[MT_TXQ_PSD], false);
mt76_queue_tx_cleanup(dev, dev->mphy.q_tx[MT_TXQ_BE], false); mt76_queue_tx_cleanup(dev, dev->mphy.q_tx[MT_TXQ_BE], false);
/* TODO: MT_TX_FREE_LATENCY is msdu time from the TXD is queued into PLE, count = le16_get_bits(free->ctrl, MT_TX_FREE_MSDU_CNT);
* to the time ack is received or dropped by hw (air + hw queue time).
* Should avoid accessing WTBL to get Tx airtime, and use it instead.
*/
count = FIELD_GET(MT_TX_FREE_MSDU_CNT, le16_to_cpu(free->ctrl));
if (WARN_ON_ONCE((void *)&free->info[count] > end)) if (WARN_ON_ONCE((void *)&free->info[count] > end))
return; return;
...@@ -231,7 +227,8 @@ bool mt7921e_rx_check(struct mt76_dev *mdev, void *data, int len) ...@@ -231,7 +227,8 @@ bool mt7921e_rx_check(struct mt76_dev *mdev, void *data, int len)
__le32 *end = (__le32 *)&rxd[len / 4]; __le32 *end = (__le32 *)&rxd[len / 4];
enum rx_pkt_type type; enum rx_pkt_type type;
type = FIELD_GET(MT_RXD0_PKT_TYPE, le32_to_cpu(rxd[0])); type = le32_get_bits(rxd[0], MT_RXD0_PKT_TYPE);
switch (type) { switch (type) {
case PKT_TYPE_TXRX_NOTIFY: case PKT_TYPE_TXRX_NOTIFY:
mt7921e_mac_tx_free(dev, data, len); mt7921e_mac_tx_free(dev, data, len);
...@@ -252,7 +249,7 @@ void mt7921e_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q, ...@@ -252,7 +249,7 @@ void mt7921e_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q,
__le32 *rxd = (__le32 *)skb->data; __le32 *rxd = (__le32 *)skb->data;
enum rx_pkt_type type; enum rx_pkt_type type;
type = FIELD_GET(MT_RXD0_PKT_TYPE, le32_to_cpu(rxd[0])); type = le32_get_bits(rxd[0], MT_RXD0_PKT_TYPE);
switch (type) { switch (type) {
case PKT_TYPE_TXRX_NOTIFY: case PKT_TYPE_TXRX_NOTIFY:
......
...@@ -202,7 +202,7 @@ void mt7921s_tx_complete_skb(struct mt76_dev *mdev, struct mt76_queue_entry *e) ...@@ -202,7 +202,7 @@ void mt7921s_tx_complete_skb(struct mt76_dev *mdev, struct mt76_queue_entry *e)
struct mt76_wcid *wcid; struct mt76_wcid *wcid;
u16 idx; u16 idx;
idx = FIELD_GET(MT_TXD1_WLAN_IDX, le32_to_cpu(txwi[1])); idx = le32_get_bits(txwi[1], MT_TXD1_WLAN_IDX);
wcid = rcu_dereference(mdev->wcid[idx]); wcid = rcu_dereference(mdev->wcid[idx]);
sta = wcid_to_sta(wcid); sta = wcid_to_sta(wcid);
......
...@@ -118,7 +118,7 @@ mt76s_rx_run_queue(struct mt76_dev *dev, enum mt76_rxq_id qid, ...@@ -118,7 +118,7 @@ mt76s_rx_run_queue(struct mt76_dev *dev, enum mt76_rxq_id qid,
__le32 *rxd = (__le32 *)buf; __le32 *rxd = (__le32 *)buf;
/* parse rxd to get the actual packet length */ /* parse rxd to get the actual packet length */
len = FIELD_GET(GENMASK(15, 0), le32_to_cpu(rxd[0])); len = le32_get_bits(rxd[0], GENMASK(15, 0));
e->skb = mt76s_build_rx_skb(buf, len, round_up(len + 4, 4)); e->skb = mt76s_build_rx_skb(buf, len, round_up(len + 4, 4));
if (!e->skb) if (!e->skb)
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment