@@ -210,6 +210,12 @@ static void rtw8723de_efuse_parsing(struct rtw_efuse *efuse,
210210 ether_addr_copy (efuse -> addr , map -> e .mac_addr );
211211}
212212
213+ static void rtw8723du_efuse_parsing (struct rtw_efuse * efuse ,
214+ struct rtw8723d_efuse * map )
215+ {
216+ ether_addr_copy (efuse -> addr , map -> u .mac_addr );
217+ }
218+
213219static int rtw8723d_read_efuse (struct rtw_dev * rtwdev , u8 * log_map )
214220{
215221 struct rtw_efuse * efuse = & rtwdev -> efuse ;
@@ -239,6 +245,9 @@ static int rtw8723d_read_efuse(struct rtw_dev *rtwdev, u8 *log_map)
239245 case RTW_HCI_TYPE_PCIE :
240246 rtw8723de_efuse_parsing (efuse , map );
241247 break ;
248+ case RTW_HCI_TYPE_USB :
249+ rtw8723du_efuse_parsing (efuse , map );
250+ break ;
242251 default :
243252 /* unsupported now */
244253 return - ENOTSUPP ;
@@ -1945,6 +1954,24 @@ static void rtw8723d_pwr_track(struct rtw_dev *rtwdev)
19451954 dm_info -> pwr_trk_triggered = false;
19461955}
19471956
1957+ static void rtw8723d_fill_txdesc_checksum (struct rtw_dev * rtwdev ,
1958+ struct rtw_tx_pkt_info * pkt_info ,
1959+ u8 * txdesc )
1960+ {
1961+ size_t words = 32 / 2 ; /* calculate the first 32 bytes (16 words) */
1962+ __le16 chksum = 0 ;
1963+ __le16 * data = (__le16 * )(txdesc );
1964+
1965+ SET_TX_DESC_TXDESC_CHECKSUM (txdesc , 0x0000 );
1966+
1967+ while (words -- )
1968+ chksum ^= * data ++ ;
1969+
1970+ chksum = ~chksum ;
1971+
1972+ SET_TX_DESC_TXDESC_CHECKSUM (txdesc , __le16_to_cpu (chksum ));
1973+ }
1974+
19481975static struct rtw_chip_ops rtw8723d_ops = {
19491976 .phy_set_param = rtw8723d_phy_set_param ,
19501977 .read_efuse = rtw8723d_read_efuse ,
@@ -1965,6 +1992,7 @@ static struct rtw_chip_ops rtw8723d_ops = {
19651992 .config_bfee = NULL ,
19661993 .set_gid_table = NULL ,
19671994 .cfg_csi_rate = NULL ,
1995+ .fill_txdesc_checksum = rtw8723d_fill_txdesc_checksum ,
19681996
19691997 .coex_set_init = rtw8723d_coex_cfg_init ,
19701998 .coex_set_ant_switch = NULL ,
0 commit comments