10 de junho de 2013

No OpenWrt se eventualmente descobrir que o wifi está falhando, e os logs o levarem a erros como: OpenWrt kern.warn kernel: [71736.430000] WARNING: at /build/ar71xx/generic/build_dir/linux-ar71xx_generic/compat-wireless-2012-09-07/net/mac80211/rx.c:3087 0x80c99fe4()

Bug que parece não ter solução: https://dev.openwrt.org/ticket/6411
Um workaround seria resetar o hostapd
#!/bin/sh
is_alive=`ps | grep -v grep | grep -o hostapd`
if [ "$is_alive" == "hostapd" ];
then
        echo "HOSTAPD IS ALIVE"
        exit 1
else
        echo "RELOADING...."
        /sbin/wifi
        exit 1
fi



Na lei da preguiça ficaria:
echo "#!/bin/sh" > ka_hostap
echo "is_alive=`ps | grep -v grep | grep -o hostapd`" >> ka_hostap
echo "if [ \"\$is_alive\" == \"hostapd\" ];" >> ka_hostap
echo "then" >> ka_hostap
echo "        echo \"HOSTAPD IS ALIVE\"" >> ka_hostap
echo "        exit 1" >> ka_hostap
echo "else" >> ka_hostap
echo "        echo \"RELOADING....\"" >> ka_hostap
echo "        /sbin/wifi" >> ka_hostap
echo "        exit 1" >> ka_hostap
echo "fi" >> ka_hostap


chmod+x ka_hostap
e joga no cron:
5   *   *   *   * /root/ka_hostap
pra rodar a cada 5 minutos...

atualizado: testando a versão 12.09 há algum tempo no meu TL-WR1043ND e parece que a falha ocorre com menos frequência...