aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath9k/mac.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/mac.c')
-rw-r--r--drivers/net/wireless/ath/ath9k/mac.c72
1 files changed, 36 insertions, 36 deletions
diff --git a/drivers/net/wireless/ath/ath9k/mac.c b/drivers/net/wireless/ath/ath9k/mac.c
index 08ad6dfa976d..e020b82a677e 100644
--- a/drivers/net/wireless/ath/ath9k/mac.c
+++ b/drivers/net/wireless/ath/ath9k/mac.c
@@ -859,7 +859,7 @@ bool ath9k_hw_resettxqueue(struct ath_hw *ah, u32 q)
859EXPORT_SYMBOL(ath9k_hw_resettxqueue); 859EXPORT_SYMBOL(ath9k_hw_resettxqueue);
860 860
861int ath9k_hw_rxprocdesc(struct ath_hw *ah, struct ath_desc *ds, 861int ath9k_hw_rxprocdesc(struct ath_hw *ah, struct ath_desc *ds,
862 u32 pa, struct ath_desc *nds, u64 tsf) 862 struct ath_rx_status *rs, u64 tsf)
863{ 863{
864 struct ar5416_desc ads; 864 struct ar5416_desc ads;
865 struct ar5416_desc *adsp = AR5416DESC(ds); 865 struct ar5416_desc *adsp = AR5416DESC(ds);
@@ -870,70 +870,70 @@ int ath9k_hw_rxprocdesc(struct ath_hw *ah, struct ath_desc *ds,
870 870
871 ads.u.rx = adsp->u.rx; 871 ads.u.rx = adsp->u.rx;
872 872
873 ds->ds_rxstat.rs_status = 0; 873 rs->rs_status = 0;
874 ds->ds_rxstat.rs_flags = 0; 874 rs->rs_flags = 0;
875 875
876 ds->ds_rxstat.rs_datalen = ads.ds_rxstatus1 & AR_DataLen; 876 rs->rs_datalen = ads.ds_rxstatus1 & AR_DataLen;
877 ds->ds_rxstat.rs_tstamp = ads.AR_RcvTimestamp; 877 rs->rs_tstamp = ads.AR_RcvTimestamp;
878 878
879 if (ads.ds_rxstatus8 & AR_PostDelimCRCErr) { 879 if (ads.ds_rxstatus8 & AR_PostDelimCRCErr) {
880 ds->ds_rxstat.rs_rssi = ATH9K_RSSI_BAD; 880 rs->rs_rssi = ATH9K_RSSI_BAD;
881 ds->ds_rxstat.rs_rssi_ctl0 = ATH9K_RSSI_BAD; 881 rs->rs_rssi_ctl0 = ATH9K_RSSI_BAD;
882 ds->ds_rxstat.rs_rssi_ctl1 = ATH9K_RSSI_BAD; 882 rs->rs_rssi_ctl1 = ATH9K_RSSI_BAD;
883 ds->ds_rxstat.rs_rssi_ctl2 = ATH9K_RSSI_BAD; 883 rs->rs_rssi_ctl2 = ATH9K_RSSI_BAD;
884 ds->ds_rxstat.rs_rssi_ext0 = ATH9K_RSSI_BAD; 884 rs->rs_rssi_ext0 = ATH9K_RSSI_BAD;
885 ds->ds_rxstat.rs_rssi_ext1 = ATH9K_RSSI_BAD; 885 rs->rs_rssi_ext1 = ATH9K_RSSI_BAD;
886 ds->ds_rxstat.rs_rssi_ext2 = ATH9K_RSSI_BAD; 886 rs->rs_rssi_ext2 = ATH9K_RSSI_BAD;
887 } else { 887 } else {
888 ds->ds_rxstat.rs_rssi = MS(ads.ds_rxstatus4, AR_RxRSSICombined); 888 rs->rs_rssi = MS(ads.ds_rxstatus4, AR_RxRSSICombined);
889 ds->ds_rxstat.rs_rssi_ctl0 = MS(ads.ds_rxstatus0, 889 rs->rs_rssi_ctl0 = MS(ads.ds_rxstatus0,
890 AR_RxRSSIAnt00); 890 AR_RxRSSIAnt00);
891 ds->ds_rxstat.rs_rssi_ctl1 = MS(ads.ds_rxstatus0, 891 rs->rs_rssi_ctl1 = MS(ads.ds_rxstatus0,
892 AR_RxRSSIAnt01); 892 AR_RxRSSIAnt01);
893 ds->ds_rxstat.rs_rssi_ctl2 = MS(ads.ds_rxstatus0, 893 rs->rs_rssi_ctl2 = MS(ads.ds_rxstatus0,
894 AR_RxRSSIAnt02); 894 AR_RxRSSIAnt02);
895 ds->ds_rxstat.rs_rssi_ext0 = MS(ads.ds_rxstatus4, 895 rs->rs_rssi_ext0 = MS(ads.ds_rxstatus4,
896 AR_RxRSSIAnt10); 896 AR_RxRSSIAnt10);
897 ds->ds_rxstat.rs_rssi_ext1 = MS(ads.ds_rxstatus4, 897 rs->rs_rssi_ext1 = MS(ads.ds_rxstatus4,
898 AR_RxRSSIAnt11); 898 AR_RxRSSIAnt11);
899 ds->ds_rxstat.rs_rssi_ext2 = MS(ads.ds_rxstatus4, 899 rs->rs_rssi_ext2 = MS(ads.ds_rxstatus4,
900 AR_RxRSSIAnt12); 900 AR_RxRSSIAnt12);
901 } 901 }
902 if (ads.ds_rxstatus8 & AR_RxKeyIdxValid) 902 if (ads.ds_rxstatus8 & AR_RxKeyIdxValid)
903 ds->ds_rxstat.rs_keyix = MS(ads.ds_rxstatus8, AR_KeyIdx); 903 rs->rs_keyix = MS(ads.ds_rxstatus8, AR_KeyIdx);
904 else 904 else
905 ds->ds_rxstat.rs_keyix = ATH9K_RXKEYIX_INVALID; 905 rs->rs_keyix = ATH9K_RXKEYIX_INVALID;
906 906
907 ds->ds_rxstat.rs_rate = RXSTATUS_RATE(ah, (&ads)); 907 rs->rs_rate = RXSTATUS_RATE(ah, (&ads));
908 ds->ds_rxstat.rs_more = (ads.ds_rxstatus1 & AR_RxMore) ? 1 : 0; 908 rs->rs_more = (ads.ds_rxstatus1 & AR_RxMore) ? 1 : 0;
909 909
910 ds->ds_rxstat.rs_isaggr = (ads.ds_rxstatus8 & AR_RxAggr) ? 1 : 0; 910 rs->rs_isaggr = (ads.ds_rxstatus8 & AR_RxAggr) ? 1 : 0;
911 ds->ds_rxstat.rs_moreaggr = 911 rs->rs_moreaggr =
912 (ads.ds_rxstatus8 & AR_RxMoreAggr) ? 1 : 0; 912 (ads.ds_rxstatus8 & AR_RxMoreAggr) ? 1 : 0;
913 ds->ds_rxstat.rs_antenna = MS(ads.ds_rxstatus3, AR_RxAntenna); 913 rs->rs_antenna = MS(ads.ds_rxstatus3, AR_RxAntenna);
914 ds->ds_rxstat.rs_flags = 914 rs->rs_flags =
915 (ads.ds_rxstatus3 & AR_GI) ? ATH9K_RX_GI : 0; 915 (ads.ds_rxstatus3 & AR_GI) ? ATH9K_RX_GI : 0;
916 ds->ds_rxstat.rs_flags |= 916 rs->rs_flags |=
917 (ads.ds_rxstatus3 & AR_2040) ? ATH9K_RX_2040 : 0; 917 (ads.ds_rxstatus3 & AR_2040) ? ATH9K_RX_2040 : 0;
918 918
919 if (ads.ds_rxstatus8 & AR_PreDelimCRCErr) 919 if (ads.ds_rxstatus8 & AR_PreDelimCRCErr)
920 ds->ds_rxstat.rs_flags |= ATH9K_RX_DELIM_CRC_PRE; 920 rs->rs_flags |= ATH9K_RX_DELIM_CRC_PRE;
921 if (ads.ds_rxstatus8 & AR_PostDelimCRCErr) 921 if (ads.ds_rxstatus8 & AR_PostDelimCRCErr)
922 ds->ds_rxstat.rs_flags |= ATH9K_RX_DELIM_CRC_POST; 922 rs->rs_flags |= ATH9K_RX_DELIM_CRC_POST;
923 if (ads.ds_rxstatus8 & AR_DecryptBusyErr) 923 if (ads.ds_rxstatus8 & AR_DecryptBusyErr)
924 ds->ds_rxstat.rs_flags |= ATH9K_RX_DECRYPT_BUSY; 924 rs->rs_flags |= ATH9K_RX_DECRYPT_BUSY;
925 925
926 if ((ads.ds_rxstatus8 & AR_RxFrameOK) == 0) { 926 if ((ads.ds_rxstatus8 & AR_RxFrameOK) == 0) {
927 if (ads.ds_rxstatus8 & AR_CRCErr) 927 if (ads.ds_rxstatus8 & AR_CRCErr)
928 ds->ds_rxstat.rs_status |= ATH9K_RXERR_CRC; 928 rs->rs_status |= ATH9K_RXERR_CRC;
929 else if (ads.ds_rxstatus8 & AR_PHYErr) { 929 else if (ads.ds_rxstatus8 & AR_PHYErr) {
930 ds->ds_rxstat.rs_status |= ATH9K_RXERR_PHY; 930 rs->rs_status |= ATH9K_RXERR_PHY;
931 phyerr = MS(ads.ds_rxstatus8, AR_PHYErrCode); 931 phyerr = MS(ads.ds_rxstatus8, AR_PHYErrCode);
932 ds->ds_rxstat.rs_phyerr = phyerr; 932 rs->rs_phyerr = phyerr;
933 } else if (ads.ds_rxstatus8 & AR_DecryptCRCErr) 933 } else if (ads.ds_rxstatus8 & AR_DecryptCRCErr)
934 ds->ds_rxstat.rs_status |= ATH9K_RXERR_DECRYPT; 934 rs->rs_status |= ATH9K_RXERR_DECRYPT;
935 else if (ads.ds_rxstatus8 & AR_MichaelErr) 935 else if (ads.ds_rxstatus8 & AR_MichaelErr)
936 ds->ds_rxstat.rs_status |= ATH9K_RXERR_MIC; 936 rs->rs_status |= ATH9K_RXERR_MIC;
937 } 937 }
938 938
939 return 0; 939 return 0;