[sisyphus] Сегодняшнее обновление: hal + NetworkManager

Sergey N. Yatskevich =?iso-8859-1?q?syatskevich_=CE=C1_mail=2Eru?=
Сб Ноя 22 15:15:48 MSK 2008


Чего-то с этими включениями/выключениями дело мутное. Вот описание для
ipw2100 (http://ipw2100.sourceforge.net/README.ipw2100):

rf_kill
	read - 
	0 = RF kill not enabled (radio on)
	1 = SW based RF kill active (radio off)
	2 = HW based RF kill active (radio off)
	3 = Both HW and SW RF kill active (radio off)
	write -
	0 = If SW based RF kill active, turn the radio back on
	1 = If radio is on, activate SW based RF kill

	NOTE: If you enable the SW based RF kill and then toggle the HW
  	based RF kill from ON -> OFF -> ON, the radio will NOT come back on

Так, похоже я был не прав. Всё таки включение/выключение WiFi карточки
у меня работает и управляет ею именно rf_kill.

    0 - означает, что карточка включена
    любое положительное число - что выключена

Вручную проверил, вроде действительно работает. Т.е. изначально у меня в
rf_kill записан 0 и карточка работает. Если я пишу в rf_kill единицу, то
как минимум iwlist eth1 scan никаких сетей не видит (реальное выключение
карточки я естественно проверить не могу, только по косвенным признакам)
Если я опять пишу в rf_kill нолик, то всё опять работает.

Ну а в addon-ipw-killswitch.c я вижу:

/* Setting status of the killswitch */
static int
set_killswitch (gboolean status)
{
   ...

   // Пишем правильно, т.е status = true (включить), то пишем
   // 0, false (выключить) - пишем 1.
   if (status) {
       ret = fputc (0, f/*.../rf_kill*/);
   } else {
       ret = fputc (1, f/*.../rf_kill*/);
   }

   ...
}

/* Getting status of the killswitch */
static int
get_killswitch ()
{
   ...

   if (fgets (buf, sizeof (buf), f/*.../rf_kill*/) == NULL)

   ...

   kill_status = strtol (buf, NULL, 10);

   // А вот и проблема - читаем неправильно, если в rf_kill записан 0,
   // то должны возвращать 1 (а возвращаем 0), а вот если любое другое
   // число - должны возвращать 0 (а возвращаем 1)
   ret = (kill_status) ? 1 : 0;
   // т.е. должно быть
   //ret = (kill_status) ? 0 : 1;

   ...
   return ret;
}

-- 
Sergey N. Yatskevich <syatskevich на mail.ru>
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 197 байтов
Описание: Эта часть сообщения подписана цифровой подписью
Url     : <http://lists.altlinux.org/pipermail/sisyphus/attachments/20081122/42918c3e/attachment.bin>


Подробная информация о списке рассылки Sisyphus