linux-mediatek.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [bug report] mt76: add driver for MT7603E and MT7628/7688
@ 2019-03-04 20:03 Dan Carpenter
  0 siblings, 0 replies; only message in thread
From: Dan Carpenter @ 2019-03-04 20:03 UTC (permalink / raw)
  To: nbd-Vt+b4OUoWG0; +Cc: linux-mediatek-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

Hello Felix Fietkau,

The patch c8846e101502: "mt76: add driver for MT7603E and
MT7628/7688" from Nov 6, 2018, leads to the following static checker
warning:

	drivers/net/wireless/mediatek/mt76/mt7603/mac.c:1075 mt7603_fill_txs()
	error: uninitialized symbol 'i'.

drivers/net/wireless/mediatek/mt76/mt7603/mac.c
    976 static bool
    977 mt7603_fill_txs(struct mt7603_dev *dev, struct mt7603_sta *sta,
    978 		struct ieee80211_tx_info *info, __le32 *txs_data)
    979 {
    980 	struct ieee80211_supported_band *sband;
    981 	int final_idx = 0;
    982 	u32 final_rate;
    983 	u32 final_rate_flags;
    984 	bool final_mpdu;
    985 	bool ack_timeout;
    986 	bool fixed_rate;
    987 	bool probe;
    988 	bool ampdu;
    989 	bool cck = false;
    990 	int count;
    991 	u32 txs;
    992 	u8 pid;
    993 	int idx;
    994 	int i;
                ^^^^^

    995 
    996 	fixed_rate = info->status.rates[0].count;
    997 	probe = !!(info->flags & IEEE80211_TX_CTL_RATE_CTRL_PROBE);
    998 
    999 	txs = le32_to_cpu(txs_data[4]);
    1000 	final_mpdu = txs & MT_TXS4_ACKED_MPDU;
    1001 	ampdu = !fixed_rate && (txs & MT_TXS4_AMPDU);
    1002 	pid = FIELD_GET(MT_TXS4_PID, txs);
    1003 	count = FIELD_GET(MT_TXS4_TX_COUNT, txs);
    1004 
    1005 	txs = le32_to_cpu(txs_data[0]);
    1006 	final_rate = FIELD_GET(MT_TXS0_TX_RATE, txs);
    1007 	ack_timeout = txs & MT_TXS0_ACK_TIMEOUT;
    1008 
    1009 	if (!ampdu && (txs & MT_TXS0_RTS_TIMEOUT))
    1010 		return false;
    1011 
    1012 	if (txs & MT_TXS0_QUEUE_TIMEOUT)
    1013 		return false;
    1014 
    1015 	if (!ack_timeout)
    1016 		info->flags |= IEEE80211_TX_STAT_ACK;
    1017 
    1018 	info->status.ampdu_len = 1;
    1019 	info->status.ampdu_ack_len = !!(info->flags &
    1020 					IEEE80211_TX_STAT_ACK);
    1021 
    1022 	if (ampdu || (info->flags & IEEE80211_TX_CTL_AMPDU))
    1023 		info->flags |= IEEE80211_TX_STAT_AMPDU | IEEE80211_TX_CTL_AMPDU;
    1024 
    1025 	if (fixed_rate && !probe) {
    1026 		info->status.rates[0].count = count;
    1027 		goto out;
                        ^^^^^^^^

    1028 	}
    1029 
    1030 	for (i = 0, idx = 0; i < ARRAY_SIZE(info->status.rates); i++) {
    1031 		int cur_count = min_t(int, count, 2 * MT7603_RATE_RETRY);
    1032 
    1033 		if (!i && probe) {
    1034 			cur_count = 1;
    1035 		} else {
    1036 			info->status.rates[i] = sta->rates[idx];
    1037 			idx++;
    1038 		}
    1039 
    1040 		if (i && info->status.rates[i].idx < 0) {
    1041 			info->status.rates[i - 1].count += count;
    1042 			break;
    1043 		}
    1044 
    1045 		if (!count) {
    1046 			info->status.rates[i].idx = -1;
    1047 			break;
    1048 		}
    1049 
    1050 		info->status.rates[i].count = cur_count;
    1051 		final_idx = i;
    1052 		count -= cur_count;
    1053 	}
    1054 
    1055 out:
    1056 	final_rate_flags = info->status.rates[final_idx].flags;
    1057 
    1058 	switch (FIELD_GET(MT_TX_RATE_MODE, final_rate)) {
    1059 	case MT_PHY_TYPE_CCK:
    1060 		cck = true;
    1061 		/* fall through */
    1062 	case MT_PHY_TYPE_OFDM:
    1063 		if (dev->mt76.chandef.chan->band == NL80211_BAND_5GHZ)
    1064 			sband = &dev->mt76.sband_5g.sband;
    1065 		else
    1066 			sband = &dev->mt76.sband_2g.sband;
    1067 		final_rate &= GENMASK(5, 0);
    1068 		final_rate = mt7603_get_rate(dev, sband, final_rate, cck);
    1069 		final_rate_flags = 0;
    1070 		break;
    1071 	case MT_PHY_TYPE_HT_GF:
    1072 	case MT_PHY_TYPE_HT:
    1073 		final_rate_flags |= IEEE80211_TX_RC_MCS;
    1074 		final_rate &= GENMASK(5, 0);
--> 1075 		if (i > 15)
                            ^^^^^^

    1076 			return false;
    1077 		break;
    1078 	default:
    1079 		return false;
    1080 	}
    1081 
    1082 	info->status.rates[final_idx].idx = final_rate;
    1083 	info->status.rates[final_idx].flags = final_rate_flags;
    1084 
    1085 	return true;
    1086 }

regards,
dan carpenter

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2019-03-04 20:03 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-03-04 20:03 [bug report] mt76: add driver for MT7603E and MT7628/7688 Dan Carpenter

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).