mirror of https://gitee.com/openkylin/linux.git
NFC: digital: Randomize poll cycles
This change adds some entropy to polling cycles, choosing the next polling rf technology randomly. This reflects the change done in the pn533 driver, avoiding possible infinite loop for devices that export 2 targets on 2 different modulations. If the first target is not readable, we will stay in an error loop for ever. Signed-off-by: Thierry Escande <thierry.escande@linux.intel.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
This commit is contained in:
parent
00e625df3e
commit
9dc33705b2
|
@ -386,6 +386,8 @@ int digital_target_found(struct nfc_digital_dev *ddev,
|
|||
|
||||
void digital_poll_next_tech(struct nfc_digital_dev *ddev)
|
||||
{
|
||||
u8 rand_mod;
|
||||
|
||||
digital_switch_rf(ddev, 0);
|
||||
|
||||
mutex_lock(&ddev->poll_lock);
|
||||
|
@ -395,8 +397,8 @@ void digital_poll_next_tech(struct nfc_digital_dev *ddev)
|
|||
return;
|
||||
}
|
||||
|
||||
ddev->poll_tech_index = (ddev->poll_tech_index + 1) %
|
||||
ddev->poll_tech_count;
|
||||
get_random_bytes(&rand_mod, sizeof(rand_mod));
|
||||
ddev->poll_tech_index = rand_mod % ddev->poll_tech_count;
|
||||
|
||||
mutex_unlock(&ddev->poll_lock);
|
||||
|
||||
|
|
Loading…
Reference in New Issue