BCC: [email protected]
CC: [email protected]
CC: [email protected]
TO: Lorenzo Bianconi <[email protected]>
CC: Felix Fietkau <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   568035b01cfb107af8d2e4bd2fb9aea22cf5b868
commit: 0880d40871d1d0155c157a68add961d8dbcca2a3 mt76: connac: move 
mt76_connac2_reverse_frag0_hdr_trans in mt76-connac module
date:   5 weeks ago
:::::: branch date: 16 hours ago
:::::: commit date: 5 weeks ago
config: ia64-randconfig-m031-20220814 
(https://download.01.org/0day-ci/archive/20220815/[email protected]/config)
compiler: ia64-linux-gcc (GCC) 12.1.0

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <[email protected]>
Reported-by: Dan Carpenter <[email protected]>

New smatch warnings:
drivers/net/wireless/mediatek/mt76/mt7915/mac.c:530 mt7915_mac_fill_rx() error: 
uninitialized symbol 'msta'.
drivers/net/wireless/mediatek/mt76/mt7921/mac.c:506 mt7921_mac_fill_rx() error: 
uninitialized symbol 'msta'.

Old smatch warnings:
drivers/net/wireless/mediatek/mt76/mt7915/mac.c:2108 
mt7915_mac_twt_sched_list_add() error: uninitialized symbol 'start_tsf'.

vim +/msta +530 drivers/net/wireless/mediatek/mt76/mt7915/mac.c

1c9db0aa23fd11 Bo Jiao          2021-12-20  318  
338330bd26b1fe Felix Fietkau    2021-05-07  319  static int
338330bd26b1fe Felix Fietkau    2021-05-07  320  mt7915_mac_fill_rx(struct 
mt7915_dev *dev, struct sk_buff *skb)
e57b7901469fc0 Ryder Lee        2020-04-25  321  {
e57b7901469fc0 Ryder Lee        2020-04-25  322         struct mt76_rx_status 
*status = (struct mt76_rx_status *)skb->cb;
e57b7901469fc0 Ryder Lee        2020-04-25  323         struct mt76_phy *mphy = 
&dev->mt76.phy;
e57b7901469fc0 Ryder Lee        2020-04-25  324         struct mt7915_phy *phy 
= &dev->phy;
e57b7901469fc0 Ryder Lee        2020-04-25  325         struct 
ieee80211_supported_band *sband;
e57b7901469fc0 Ryder Lee        2020-04-25  326         __le32 *rxd = (__le32 
*)skb->data;
0d4b6909987723 Ryder Lee        2020-07-01  327         __le32 *rxv = NULL;
94244d2ea50345 Felix Fietkau    2020-12-16  328         u32 rxd0 = 
le32_to_cpu(rxd[0]);
e57b7901469fc0 Ryder Lee        2020-04-25  329         u32 rxd1 = 
le32_to_cpu(rxd[1]);
e57b7901469fc0 Ryder Lee        2020-04-25  330         u32 rxd2 = 
le32_to_cpu(rxd[2]);
e57b7901469fc0 Ryder Lee        2020-04-25  331         u32 rxd3 = 
le32_to_cpu(rxd[3]);
cc4b3c139ad308 Lorenzo Bianconi 2020-10-11  332         u32 rxd4 = 
le32_to_cpu(rxd[4]);
94244d2ea50345 Felix Fietkau    2020-12-16  333         u32 csum_mask = 
MT_RXD0_NORMAL_IP_SUM | MT_RXD0_NORMAL_UDP_TCP_SUM;
e57b7901469fc0 Ryder Lee        2020-04-25  334         bool unicast, 
insert_ccmp_hdr = false;
cc4b3c139ad308 Lorenzo Bianconi 2020-10-11  335         u8 remove_pad, 
amsdu_info;
05268cf1789d99 Lorenzo Bianconi 2022-04-04  336         u8 mode = 0, qos_ctl = 
0;
0880d40871d1d0 Lorenzo Bianconi 2022-06-08  337         struct mt7915_sta *msta;
90e3abf07c80a7 Felix Fietkau    2020-12-16  338         bool hdr_trans;
dc5399a50b45fa Xing Song        2021-11-10  339         u16 hdr_gap;
90e3abf07c80a7 Felix Fietkau    2020-12-16  340         u16 seq_ctrl = 0;
90e3abf07c80a7 Felix Fietkau    2020-12-16  341         __le16 fc = 0;
4550fb9e98104f Felix Fietkau    2022-02-04  342         int idx;
e57b7901469fc0 Ryder Lee        2020-04-25  343  
e57b7901469fc0 Ryder Lee        2020-04-25  344         memset(status, 0, 
sizeof(*status));
e57b7901469fc0 Ryder Lee        2020-04-25  345  
006b9d4ad5bf04 Bo Jiao          2022-02-09  346         if ((rxd1 & 
MT_RXD1_NORMAL_BAND_IDX) && !phy->band_idx) {
e57b7901469fc0 Ryder Lee        2020-04-25  347                 mphy = 
dev->mt76.phy2;
e57b7901469fc0 Ryder Lee        2020-04-25  348                 if (!mphy)
e57b7901469fc0 Ryder Lee        2020-04-25  349                         return 
-EINVAL;
e57b7901469fc0 Ryder Lee        2020-04-25  350  
e57b7901469fc0 Ryder Lee        2020-04-25  351                 phy = 
mphy->priv;
e57b7901469fc0 Ryder Lee        2020-04-25  352                 status->ext_phy 
= true;
e57b7901469fc0 Ryder Lee        2020-04-25  353         }
e57b7901469fc0 Ryder Lee        2020-04-25  354  
e57b7901469fc0 Ryder Lee        2020-04-25  355         if 
(!test_bit(MT76_STATE_RUNNING, &mphy->state))
e57b7901469fc0 Ryder Lee        2020-04-25  356                 return -EINVAL;
e57b7901469fc0 Ryder Lee        2020-04-25  357  
cc4b3c139ad308 Lorenzo Bianconi 2020-10-11  358         if (rxd2 & 
MT_RXD2_NORMAL_AMSDU_ERR)
cc4b3c139ad308 Lorenzo Bianconi 2020-10-11  359                 return -EINVAL;
cc4b3c139ad308 Lorenzo Bianconi 2020-10-11  360  
dd28dea52ad937 Xing Song        2021-11-19  361         hdr_trans = rxd2 & 
MT_RXD2_NORMAL_HDR_TRANS;
dd28dea52ad937 Xing Song        2021-11-19  362         if (hdr_trans && (rxd1 
& MT_RXD1_NORMAL_CM))
dd28dea52ad937 Xing Song        2021-11-19  363                 return -EINVAL;
dd28dea52ad937 Xing Song        2021-11-19  364  
dd28dea52ad937 Xing Song        2021-11-19  365         /* ICV error or 
CCMP/BIP/WPI MIC error */
dd28dea52ad937 Xing Song        2021-11-19  366         if (rxd1 & 
MT_RXD1_NORMAL_ICV_ERR)
dd28dea52ad937 Xing Song        2021-11-19  367                 status->flag |= 
RX_FLAG_ONLY_MONITOR;
dd28dea52ad937 Xing Song        2021-11-19  368  
e57b7901469fc0 Ryder Lee        2020-04-25  369         unicast = 
FIELD_GET(MT_RXD3_NORMAL_ADDR_TYPE, rxd3) == MT_RXD3_NORMAL_U2M;
e57b7901469fc0 Ryder Lee        2020-04-25  370         idx = 
FIELD_GET(MT_RXD1_NORMAL_WLAN_IDX, rxd1);
e57b7901469fc0 Ryder Lee        2020-04-25  371         status->wcid = 
mt7915_rx_get_wcid(dev, idx, unicast);
e57b7901469fc0 Ryder Lee        2020-04-25  372  
e57b7901469fc0 Ryder Lee        2020-04-25  373         if (status->wcid) {
e57b7901469fc0 Ryder Lee        2020-04-25  374                 msta = 
container_of(status->wcid, struct mt7915_sta, wcid);
e57b7901469fc0 Ryder Lee        2020-04-25  375                 
spin_lock_bh(&dev->sta_poll_lock);
e57b7901469fc0 Ryder Lee        2020-04-25  376                 if 
(list_empty(&msta->poll_list))
e57b7901469fc0 Ryder Lee        2020-04-25  377                         
list_add_tail(&msta->poll_list, &dev->sta_poll_list);
e57b7901469fc0 Ryder Lee        2020-04-25  378                 
spin_unlock_bh(&dev->sta_poll_lock);
e57b7901469fc0 Ryder Lee        2020-04-25  379         }
e57b7901469fc0 Ryder Lee        2020-04-25  380  
e57b7901469fc0 Ryder Lee        2020-04-25  381         status->freq = 
mphy->chandef.chan->center_freq;
e57b7901469fc0 Ryder Lee        2020-04-25  382         status->band = 
mphy->chandef.chan->band;
e57b7901469fc0 Ryder Lee        2020-04-25  383         if (status->band == 
NL80211_BAND_5GHZ)
e57b7901469fc0 Ryder Lee        2020-04-25  384                 sband = 
&mphy->sband_5g.sband;
b4d093e321bd15 MeiChia Chiu     2022-03-07  385         else if (status->band 
== NL80211_BAND_6GHZ)
b4d093e321bd15 MeiChia Chiu     2022-03-07  386                 sband = 
&mphy->sband_6g.sband;
e57b7901469fc0 Ryder Lee        2020-04-25  387         else
e57b7901469fc0 Ryder Lee        2020-04-25  388                 sband = 
&mphy->sband_2g.sband;
e57b7901469fc0 Ryder Lee        2020-04-25  389  
e57b7901469fc0 Ryder Lee        2020-04-25  390         if (!sband->channels)
e57b7901469fc0 Ryder Lee        2020-04-25  391                 return -EINVAL;
e57b7901469fc0 Ryder Lee        2020-04-25  392  
94244d2ea50345 Felix Fietkau    2020-12-16  393         if ((rxd0 & csum_mask) 
== csum_mask)
94244d2ea50345 Felix Fietkau    2020-12-16  394                 skb->ip_summed 
= CHECKSUM_UNNECESSARY;
94244d2ea50345 Felix Fietkau    2020-12-16  395  
e57b7901469fc0 Ryder Lee        2020-04-25  396         if (rxd1 & 
MT_RXD1_NORMAL_FCS_ERR)
e57b7901469fc0 Ryder Lee        2020-04-25  397                 status->flag |= 
RX_FLAG_FAILED_FCS_CRC;
e57b7901469fc0 Ryder Lee        2020-04-25  398  
e57b7901469fc0 Ryder Lee        2020-04-25  399         if (rxd1 & 
MT_RXD1_NORMAL_TKIP_MIC_ERR)
e57b7901469fc0 Ryder Lee        2020-04-25  400                 status->flag |= 
RX_FLAG_MMIC_ERROR;
e57b7901469fc0 Ryder Lee        2020-04-25  401  
e57b7901469fc0 Ryder Lee        2020-04-25  402         if 
(FIELD_GET(MT_RXD1_NORMAL_SEC_MODE, rxd1) != 0 &&
e57b7901469fc0 Ryder Lee        2020-04-25  403             !(rxd1 & 
(MT_RXD1_NORMAL_CLM | MT_RXD1_NORMAL_CM))) {
e57b7901469fc0 Ryder Lee        2020-04-25  404                 status->flag |= 
RX_FLAG_DECRYPTED;
e57b7901469fc0 Ryder Lee        2020-04-25  405                 status->flag |= 
RX_FLAG_IV_STRIPPED;
e57b7901469fc0 Ryder Lee        2020-04-25  406                 status->flag |= 
RX_FLAG_MMIC_STRIPPED | RX_FLAG_MIC_STRIPPED;
e57b7901469fc0 Ryder Lee        2020-04-25  407         }
e57b7901469fc0 Ryder Lee        2020-04-25  408  
e57b7901469fc0 Ryder Lee        2020-04-25  409         remove_pad = 
FIELD_GET(MT_RXD2_NORMAL_HDR_OFFSET, rxd2);
e57b7901469fc0 Ryder Lee        2020-04-25  410  
e57b7901469fc0 Ryder Lee        2020-04-25  411         if (rxd2 & 
MT_RXD2_NORMAL_MAX_LEN_ERROR)
e57b7901469fc0 Ryder Lee        2020-04-25  412                 return -EINVAL;
e57b7901469fc0 Ryder Lee        2020-04-25  413  
e57b7901469fc0 Ryder Lee        2020-04-25  414         rxd += 6;
e57b7901469fc0 Ryder Lee        2020-04-25  415         if (rxd1 & 
MT_RXD1_NORMAL_GROUP_4) {
90e3abf07c80a7 Felix Fietkau    2020-12-16  416                 u32 v0 = 
le32_to_cpu(rxd[0]);
90e3abf07c80a7 Felix Fietkau    2020-12-16  417                 u32 v2 = 
le32_to_cpu(rxd[2]);
90e3abf07c80a7 Felix Fietkau    2020-12-16  418  
90e3abf07c80a7 Felix Fietkau    2020-12-16  419                 fc = 
cpu_to_le16(FIELD_GET(MT_RXD6_FRAME_CONTROL, v0));
90e3abf07c80a7 Felix Fietkau    2020-12-16  420                 qos_ctl = 
FIELD_GET(MT_RXD8_QOS_CTL, v2);
90e3abf07c80a7 Felix Fietkau    2020-12-16  421                 seq_ctrl = 
FIELD_GET(MT_RXD8_SEQ_CTRL, v2);
90e3abf07c80a7 Felix Fietkau    2020-12-16  422  
e57b7901469fc0 Ryder Lee        2020-04-25  423                 rxd += 4;
e57b7901469fc0 Ryder Lee        2020-04-25  424                 if ((u8 *)rxd - 
skb->data >= skb->len)
e57b7901469fc0 Ryder Lee        2020-04-25  425                         return 
-EINVAL;
e57b7901469fc0 Ryder Lee        2020-04-25  426         }
e57b7901469fc0 Ryder Lee        2020-04-25  427  
e57b7901469fc0 Ryder Lee        2020-04-25  428         if (rxd1 & 
MT_RXD1_NORMAL_GROUP_1) {
e57b7901469fc0 Ryder Lee        2020-04-25  429                 u8 *data = (u8 
*)rxd;
e57b7901469fc0 Ryder Lee        2020-04-25  430  
e57b7901469fc0 Ryder Lee        2020-04-25  431                 if 
(status->flag & RX_FLAG_DECRYPTED) {
c368362c36d3d4 Ryder Lee        2021-06-17  432                         switch 
(FIELD_GET(MT_RXD1_NORMAL_SEC_MODE, rxd1)) {
c368362c36d3d4 Ryder Lee        2021-06-17  433                         case 
MT_CIPHER_AES_CCMP:
c368362c36d3d4 Ryder Lee        2021-06-17  434                         case 
MT_CIPHER_CCMP_CCX:
c368362c36d3d4 Ryder Lee        2021-06-17  435                         case 
MT_CIPHER_CCMP_256:
c368362c36d3d4 Ryder Lee        2021-06-17  436                                 
insert_ccmp_hdr =
c368362c36d3d4 Ryder Lee        2021-06-17  437                                 
        FIELD_GET(MT_RXD2_NORMAL_FRAG, rxd2);
c368362c36d3d4 Ryder Lee        2021-06-17  438                                 
fallthrough;
c368362c36d3d4 Ryder Lee        2021-06-17  439                         case 
MT_CIPHER_TKIP:
c368362c36d3d4 Ryder Lee        2021-06-17  440                         case 
MT_CIPHER_TKIP_NO_MIC:
c368362c36d3d4 Ryder Lee        2021-06-17  441                         case 
MT_CIPHER_GCMP:
c368362c36d3d4 Ryder Lee        2021-06-17  442                         case 
MT_CIPHER_GCMP_256:
e57b7901469fc0 Ryder Lee        2020-04-25  443                                 
status->iv[0] = data[5];
e57b7901469fc0 Ryder Lee        2020-04-25  444                                 
status->iv[1] = data[4];
e57b7901469fc0 Ryder Lee        2020-04-25  445                                 
status->iv[2] = data[3];
e57b7901469fc0 Ryder Lee        2020-04-25  446                                 
status->iv[3] = data[2];
e57b7901469fc0 Ryder Lee        2020-04-25  447                                 
status->iv[4] = data[1];
e57b7901469fc0 Ryder Lee        2020-04-25  448                                 
status->iv[5] = data[0];
c368362c36d3d4 Ryder Lee        2021-06-17  449                                 
break;
c368362c36d3d4 Ryder Lee        2021-06-17  450                         default:
c368362c36d3d4 Ryder Lee        2021-06-17  451                                 
break;
c368362c36d3d4 Ryder Lee        2021-06-17  452                         }
e57b7901469fc0 Ryder Lee        2020-04-25  453                 }
e57b7901469fc0 Ryder Lee        2020-04-25  454                 rxd += 4;
e57b7901469fc0 Ryder Lee        2020-04-25  455                 if ((u8 *)rxd - 
skb->data >= skb->len)
e57b7901469fc0 Ryder Lee        2020-04-25  456                         return 
-EINVAL;
e57b7901469fc0 Ryder Lee        2020-04-25  457         }
e57b7901469fc0 Ryder Lee        2020-04-25  458  
e57b7901469fc0 Ryder Lee        2020-04-25  459         if (rxd1 & 
MT_RXD1_NORMAL_GROUP_2) {
0fda6d7bb5a29b Ryder Lee        2021-03-30  460                 
status->timestamp = le32_to_cpu(rxd[0]);
0fda6d7bb5a29b Ryder Lee        2021-03-30  461                 status->flag |= 
RX_FLAG_MACTIME_START;
0fda6d7bb5a29b Ryder Lee        2021-03-30  462  
0fda6d7bb5a29b Ryder Lee        2021-03-30  463                 if (!(rxd2 & 
MT_RXD2_NORMAL_NON_AMPDU)) {
0fda6d7bb5a29b Ryder Lee        2021-03-30  464                         
status->flag |= RX_FLAG_AMPDU_DETAILS;
0fda6d7bb5a29b Ryder Lee        2021-03-30  465  
0fda6d7bb5a29b Ryder Lee        2021-03-30  466                         /* all 
subframes of an A-MPDU have the same timestamp */
0fda6d7bb5a29b Ryder Lee        2021-03-30  467                         if 
(phy->rx_ampdu_ts != status->timestamp) {
0fda6d7bb5a29b Ryder Lee        2021-03-30  468                                 
if (!++phy->ampdu_ref)
0fda6d7bb5a29b Ryder Lee        2021-03-30  469                                 
        phy->ampdu_ref++;
0fda6d7bb5a29b Ryder Lee        2021-03-30  470                         }
0fda6d7bb5a29b Ryder Lee        2021-03-30  471                         
phy->rx_ampdu_ts = status->timestamp;
0fda6d7bb5a29b Ryder Lee        2021-03-30  472  
0fda6d7bb5a29b Ryder Lee        2021-03-30  473                         
status->ampdu_ref = phy->ampdu_ref;
0fda6d7bb5a29b Ryder Lee        2021-03-30  474                 }
0fda6d7bb5a29b Ryder Lee        2021-03-30  475  
e57b7901469fc0 Ryder Lee        2020-04-25  476                 rxd += 2;
e57b7901469fc0 Ryder Lee        2020-04-25  477                 if ((u8 *)rxd - 
skb->data >= skb->len)
e57b7901469fc0 Ryder Lee        2020-04-25  478                         return 
-EINVAL;
e57b7901469fc0 Ryder Lee        2020-04-25  479         }
e57b7901469fc0 Ryder Lee        2020-04-25  480  
e57b7901469fc0 Ryder Lee        2020-04-25  481         /* RXD Group 3 - P-RXV 
*/
e57b7901469fc0 Ryder Lee        2020-04-25  482         if (rxd1 & 
MT_RXD1_NORMAL_GROUP_3) {
1c9db0aa23fd11 Bo Jiao          2021-12-20  483                 u32 v0, v1;
1c9db0aa23fd11 Bo Jiao          2021-12-20  484                 int ret;
b62db09aa81c14 Ryder Lee        2020-05-19  485  
0d4b6909987723 Ryder Lee        2020-07-01  486                 rxv = rxd;
e57b7901469fc0 Ryder Lee        2020-04-25  487                 rxd += 2;
e57b7901469fc0 Ryder Lee        2020-04-25  488                 if ((u8 *)rxd - 
skb->data >= skb->len)
e57b7901469fc0 Ryder Lee        2020-04-25  489                         return 
-EINVAL;
e57b7901469fc0 Ryder Lee        2020-04-25  490  
0d4b6909987723 Ryder Lee        2020-07-01  491                 v0 = 
le32_to_cpu(rxv[0]);
0d4b6909987723 Ryder Lee        2020-07-01  492                 v1 = 
le32_to_cpu(rxv[1]);
b62db09aa81c14 Ryder Lee        2020-05-19  493  
b62db09aa81c14 Ryder Lee        2020-05-19  494                 if (v0 & 
MT_PRXV_HT_AD_CODE)
e57b7901469fc0 Ryder Lee        2020-04-25  495                         
status->enc_flags |= RX_ENC_FLAG_LDPC;
e57b7901469fc0 Ryder Lee        2020-04-25  496  
e57b7901469fc0 Ryder Lee        2020-04-25  497                 status->chains 
= mphy->antenna_mask;
b62db09aa81c14 Ryder Lee        2020-05-19  498                 
status->chain_signal[0] = to_rssi(MT_PRXV_RCPI0, v1);
b62db09aa81c14 Ryder Lee        2020-05-19  499                 
status->chain_signal[1] = to_rssi(MT_PRXV_RCPI1, v1);
b62db09aa81c14 Ryder Lee        2020-05-19  500                 
status->chain_signal[2] = to_rssi(MT_PRXV_RCPI2, v1);
b62db09aa81c14 Ryder Lee        2020-05-19  501                 
status->chain_signal[3] = to_rssi(MT_PRXV_RCPI3, v1);
e57b7901469fc0 Ryder Lee        2020-04-25  502  
e57b7901469fc0 Ryder Lee        2020-04-25  503                 /* RXD Group 5 
- C-RXV */
e57b7901469fc0 Ryder Lee        2020-04-25  504                 if (rxd1 & 
MT_RXD1_NORMAL_GROUP_5) {
e57b7901469fc0 Ryder Lee        2020-04-25  505                         rxd += 
18;
e57b7901469fc0 Ryder Lee        2020-04-25  506                         if ((u8 
*)rxd - skb->data >= skb->len)
e57b7901469fc0 Ryder Lee        2020-04-25  507                                 
return -EINVAL;
e57b7901469fc0 Ryder Lee        2020-04-25  508                 }
e57b7901469fc0 Ryder Lee        2020-04-25  509  
b1481b336d3ccd Wan Jiabing      2022-02-23  510                 if 
(!is_mt7915(&dev->mt76) || (rxd1 & MT_RXD1_NORMAL_GROUP_5)) {
05268cf1789d99 Lorenzo Bianconi 2022-04-04  511                         ret = 
mt7915_mac_fill_rx_rate(dev, status, sband, rxv,
05268cf1789d99 Lorenzo Bianconi 2022-04-04  512                                 
                      &mode);
1c9db0aa23fd11 Bo Jiao          2021-12-20  513                         if (ret 
< 0)
1c9db0aa23fd11 Bo Jiao          2021-12-20  514                                 
return ret;
e57b7901469fc0 Ryder Lee        2020-04-25  515                 }
e57b7901469fc0 Ryder Lee        2020-04-25  516         }
e57b7901469fc0 Ryder Lee        2020-04-25  517  
cc4b3c139ad308 Lorenzo Bianconi 2020-10-11  518         amsdu_info = 
FIELD_GET(MT_RXD4_NORMAL_PAYLOAD_FORMAT, rxd4);
cc4b3c139ad308 Lorenzo Bianconi 2020-10-11  519         status->amsdu = 
!!amsdu_info;
cc4b3c139ad308 Lorenzo Bianconi 2020-10-11  520         if (status->amsdu) {
cc4b3c139ad308 Lorenzo Bianconi 2020-10-11  521                 
status->first_amsdu = amsdu_info == MT_RXD4_FIRST_AMSDU_FRAME;
cc4b3c139ad308 Lorenzo Bianconi 2020-10-11  522                 
status->last_amsdu = amsdu_info == MT_RXD4_LAST_AMSDU_FRAME;
dc5399a50b45fa Xing Song        2021-11-10  523         }
dc5399a50b45fa Xing Song        2021-11-10  524  
dc5399a50b45fa Xing Song        2021-11-10  525         hdr_gap = (u8 *)rxd - 
skb->data + 2 * remove_pad;
dc5399a50b45fa Xing Song        2021-11-10  526         if (hdr_trans && 
ieee80211_has_morefrags(fc)) {
0880d40871d1d0 Lorenzo Bianconi 2022-06-08  527                 struct 
ieee80211_vif *vif;
0880d40871d1d0 Lorenzo Bianconi 2022-06-08  528                 int err;
0880d40871d1d0 Lorenzo Bianconi 2022-06-08  529  
0880d40871d1d0 Lorenzo Bianconi 2022-06-08 @530                 if (!msta || 
!msta->vif)
dc5399a50b45fa Xing Song        2021-11-10  531                         return 
-EINVAL;
0880d40871d1d0 Lorenzo Bianconi 2022-06-08  532  
0880d40871d1d0 Lorenzo Bianconi 2022-06-08  533                 vif = 
container_of((void *)msta->vif, struct ieee80211_vif,
0880d40871d1d0 Lorenzo Bianconi 2022-06-08  534                                 
   drv_priv);
0880d40871d1d0 Lorenzo Bianconi 2022-06-08  535                 err = 
mt76_connac2_reverse_frag0_hdr_trans(vif, skb, hdr_gap);
0880d40871d1d0 Lorenzo Bianconi 2022-06-08  536                 if (err)
0880d40871d1d0 Lorenzo Bianconi 2022-06-08  537                         return 
err;
0880d40871d1d0 Lorenzo Bianconi 2022-06-08  538  
dc5399a50b45fa Xing Song        2021-11-10  539                 hdr_trans = 
false;
dc5399a50b45fa Xing Song        2021-11-10  540         } else {
1eeff0b4c1a6c6 Felix Fietkau    2021-11-23  541                 int pad_start = 
0;
1eeff0b4c1a6c6 Felix Fietkau    2021-11-23  542  
dc5399a50b45fa Xing Song        2021-11-10  543                 skb_pull(skb, 
hdr_gap);
dc5399a50b45fa Xing Song        2021-11-10  544                 if (!hdr_trans 
&& status->amsdu) {
1eeff0b4c1a6c6 Felix Fietkau    2021-11-23  545                         
pad_start = ieee80211_get_hdrlen_from_skb(skb);
1eeff0b4c1a6c6 Felix Fietkau    2021-11-23  546                 } else if 
(hdr_trans && (rxd2 & MT_RXD2_NORMAL_HDR_TRANS_ERROR)) {
1eeff0b4c1a6c6 Felix Fietkau    2021-11-23  547                         /*
1eeff0b4c1a6c6 Felix Fietkau    2021-11-23  548                          * When 
header translation failure is indicated,
1eeff0b4c1a6c6 Felix Fietkau    2021-11-23  549                          * the 
hardware will insert an extra 2-byte field
1eeff0b4c1a6c6 Felix Fietkau    2021-11-23  550                          * 
containing the data length after the protocol
1eeff0b4c1a6c6 Felix Fietkau    2021-11-23  551                          * type 
field.
1eeff0b4c1a6c6 Felix Fietkau    2021-11-23  552                          */
1eeff0b4c1a6c6 Felix Fietkau    2021-11-23  553                         
pad_start = 12;
1eeff0b4c1a6c6 Felix Fietkau    2021-11-23  554                         if 
(get_unaligned_be16(skb->data + pad_start) == ETH_P_8021Q)
1eeff0b4c1a6c6 Felix Fietkau    2021-11-23  555                                 
pad_start += 4;
1eeff0b4c1a6c6 Felix Fietkau    2021-11-23  556  
1eeff0b4c1a6c6 Felix Fietkau    2021-11-23  557                         if 
(get_unaligned_be16(skb->data + pad_start) !=
1eeff0b4c1a6c6 Felix Fietkau    2021-11-23  558                             
skb->len - pad_start - 2)
1eeff0b4c1a6c6 Felix Fietkau    2021-11-23  559                                 
pad_start = 0;
1eeff0b4c1a6c6 Felix Fietkau    2021-11-23  560                 }
1eeff0b4c1a6c6 Felix Fietkau    2021-11-23  561  
1eeff0b4c1a6c6 Felix Fietkau    2021-11-23  562                 if (pad_start) {
1eeff0b4c1a6c6 Felix Fietkau    2021-11-23  563                         
memmove(skb->data + 2, skb->data, pad_start);
cc4b3c139ad308 Lorenzo Bianconi 2020-10-11  564                         
skb_pull(skb, 2);
cc4b3c139ad308 Lorenzo Bianconi 2020-10-11  565                 }
90e3abf07c80a7 Felix Fietkau    2020-12-16  566         }
cc4b3c139ad308 Lorenzo Bianconi 2020-10-11  567  
c23fa1bbc5d604 Ryder Lee        2021-11-15  568         if (!hdr_trans) {
087baf9b6d373f Ryder Lee        2021-12-03  569                 struct 
ieee80211_hdr *hdr;
c23fa1bbc5d604 Ryder Lee        2021-11-15  570  
c23fa1bbc5d604 Ryder Lee        2021-11-15  571                 if 
(insert_ccmp_hdr) {
e57b7901469fc0 Ryder Lee        2020-04-25  572                         u8 
key_id = FIELD_GET(MT_RXD1_NORMAL_KEY_ID, rxd1);
e57b7901469fc0 Ryder Lee        2020-04-25  573  
e57b7901469fc0 Ryder Lee        2020-04-25  574                         
mt76_insert_ccmp_hdr(skb, key_id);
e57b7901469fc0 Ryder Lee        2020-04-25  575                 }
e57b7901469fc0 Ryder Lee        2020-04-25  576  
087baf9b6d373f Ryder Lee        2021-12-03  577                 hdr = 
mt76_skb_get_hdr(skb);
90e3abf07c80a7 Felix Fietkau    2020-12-16  578                 fc = 
hdr->frame_control;
90e3abf07c80a7 Felix Fietkau    2020-12-16  579                 if 
(ieee80211_is_data_qos(fc)) {
90e3abf07c80a7 Felix Fietkau    2020-12-16  580                         
seq_ctrl = le16_to_cpu(hdr->seq_ctrl);
90e3abf07c80a7 Felix Fietkau    2020-12-16  581                         qos_ctl 
= *ieee80211_get_qos_ctl(hdr);
90e3abf07c80a7 Felix Fietkau    2020-12-16  582                 }
90e3abf07c80a7 Felix Fietkau    2020-12-16  583         } else {
90e3abf07c80a7 Felix Fietkau    2020-12-16  584                 status->flag |= 
RX_FLAG_8023;
90e3abf07c80a7 Felix Fietkau    2020-12-16  585         }
90e3abf07c80a7 Felix Fietkau    2020-12-16  586  
c23fa1bbc5d604 Ryder Lee        2021-11-15  587         if (rxv && mode >= 
MT_PHY_TYPE_HE_SU && !(status->flag & RX_FLAG_8023))
f71662de66a63e Lorenzo Bianconi 2022-06-08  588                 
mt76_connac2_mac_decode_he_radiotap(&dev->mt76, skb, rxv, mode);
a82dd24d128d63 Ryder Lee        2020-04-25  589  
90e3abf07c80a7 Felix Fietkau    2020-12-16  590         if (!status->wcid || 
!ieee80211_is_data_qos(fc))
e57b7901469fc0 Ryder Lee        2020-04-25  591                 return 0;
e57b7901469fc0 Ryder Lee        2020-04-25  592  
e57b7901469fc0 Ryder Lee        2020-04-25  593         status->aggr = unicast 
&&
90e3abf07c80a7 Felix Fietkau    2020-12-16  594                        
!ieee80211_is_qos_nullfunc(fc);
90e3abf07c80a7 Felix Fietkau    2020-12-16  595         status->qos_ctl = 
qos_ctl;
90e3abf07c80a7 Felix Fietkau    2020-12-16  596         status->seqno = 
IEEE80211_SEQ_TO_SN(seq_ctrl);
e57b7901469fc0 Ryder Lee        2020-04-25  597  
e57b7901469fc0 Ryder Lee        2020-04-25  598         return 0;
e57b7901469fc0 Ryder Lee        2020-04-25  599  }
e57b7901469fc0 Ryder Lee        2020-04-25  600  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to