On Sun, Sep 18, 2016 at 11:29 PM, Martin Blumenstingl <martin.blumensti...@googlemail.com> wrote: > ar71xx has an init-script for special devices where the ath10k OTP > calibration data is stored on the PCIe card's EEPROM (and thus can only > be read by ath10k). Unfortunately the OTP data uses the default mac > address (= all devices come with the same mac address, which leads to > problems when you have multiple of these devices in the same network). > > To work around this the mac address is patched in the firmware during > the first boot of the device. To prevent flash wear this was only done > if the ath10k firmware matched a hardcoded md5sum. > However, if the md5sum does not match this can mean that either the mac > address was already patched (which is fine) - unfortunately it can also > mean that the firmware version was updated without updating the > hardcoded md5sum. > > Change the "was the mac address already patched" check to actually > compare the mac address inside the ath10k firmware. > > Signed-off-by: Martin Blumenstingl <martin.blumensti...@googlemail.com> > --- > .../linux/ar71xx/base-files/lib/preinit/82_patch_ath10k | 17 > ++++++++++------- > 1 file changed, 10 insertions(+), 7 deletions(-) > > diff --git a/target/linux/ar71xx/base-files/lib/preinit/82_patch_ath10k > b/target/linux/ar71xx/base-files/lib/preinit/82_patch_ath10k > index af12bd5..b6af921 100644 > --- a/target/linux/ar71xx/base-files/lib/preinit/82_patch_ath10k > +++ b/target/linux/ar71xx/base-files/lib/preinit/82_patch_ath10k > @@ -12,16 +12,19 @@ do_patch_ath10k_firmware() { > return > } > > - local firmware_md5_orig="fcb2fbd42d73a63fbf603505c718cbde" > - local firmware_md5_current="$(md5sum $firmware_file)" > - local firmware_md5_current="${firmware_md5_current%% *}" > + local mac_offset=276 > + local mac_length=6 > + local default_mac="00:03:07:12:34:56" > + local current_mac="$(hexdump -v -n $mac_length -s $mac_offset -e '5/1 > "%02x:" 1/1 "%02x"' $firmware_file 2>/dev/null)" > > - # verify md5sum before patching > - [ "$firmware_md5_orig" != "$firmware_md5_current" ] || { > + # check if mac address was already patched > + [ "$default_mac" = "$current_mac" ] || { > return > } > > - # some boards have bogus mac in otp, patch the default mac in the > firmware > + # some boards have bogus mac in otp (= directly in the PCIe card's > EEPROM). > + # we have to patch the default mac in the firmware because we cannot > change > + # the otp. > case $(ar71xx_board_name) in > dgl-5500-a1 | tew-823dru) I should mention that I do not have access to any of these devices, thus I cannot test this properly. So it would be great if someone with access to any of these devices could give it a try.
_______________________________________________ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev