Ping-Ke Shih <pkshih@xxxxxxxxxxx> wrote: > From: Ji-Pin Jou <neo_jou@xxxxxxxxxxx> > > For SDIO/USB interface, since the tranferring speed is slower than > that in PCIE, it may have race condition when the driver sets down > H2C command to the FW. > > In the function rtw_fw_send_h2c_command, before the patch, box_reg > is written first, then box_ex_reg is written. FW starts to work and > fetch the value of box_ex_reg, when the most significant byte of > box_reg(4 bytes) is written. Meanwhile, for SDIO/USB interface, > since the transferring speed is slow, the driver is still in writing > the new value of box_ex_reg through the bus, and FW may get the > wrong value of box_ex_reg at the moment. > > To prevent the above driver/FW racing situation, box_ex_reg is > written first then box_reg. Furthermore, it is written in 4 bytes at > a time, instead of written in one byte one by one. It can increase > the speed for SDIO/USB interface. > > Signed-off-by: Ji-Pin Jou <neo_jou@xxxxxxxxxxx> > Signed-off-by: Ping-Ke Shih <pkshih@xxxxxxxxxxx> > Tested-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> Patch applied to wireless-next.git, thanks. 823092a53556 wifi: rtw88: fix race condition when doing H2C command -- https://patchwork.kernel.org/project/linux-wireless/patch/20221124064442.28042-1-pkshih@xxxxxxxxxxx/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches