The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Раздел полезных советов: Бесшовная миграция (роуминг) Wi-Fi ..., auto_tips (ok), 26-Фев-18, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


16. "Бесшовная миграция (роуминг) Wi-Fi для клиентов Linux и Android"  +/
Сообщение от Andreyemail (??), 01-Мрт-18, 15:32 
Samsung 1316S7 Wi-Fi Module
Ответить | Правка | Наверх | Cообщить модератору

17. "Бесшовная миграция (роуминг) Wi-Fi для клиентов Linux и Android"  +/
Сообщение от sfstudioemail (ok), 01-Мрт-18, 15:38 
> Samsung 1316S7 Wi-Fi Module

Ну так и я умею. =))) Вот только это ни о чём не говорит.

Самсунг сам не делает 802.11 модулей, закупает оное у Murata, внутри модулей чаще всего что-то на чипах BCM или QCA. Вот что внутри модуля тут, вот это надо знать.

В BCM параметры handover не вынесены в конфиг который можно править по факту. Всё задаётся на стадии сборки.

Я допускаю, что там может быть что-то ещё и у этого чего-то ещё вполне как и QCA параметры могут оказаться вынесены в конфиг.

Как пример https://www.murata.com/en-us/about/newsroom/news/application...

Ответить | Правка | Наверх | Cообщить модератору

18. "Бесшовная миграция (роуминг) Wi-Fi для клиентов Linux и Android"  +/
Сообщение от Andreyemail (??), 01-Мрт-18, 15:43 
>> Samsung 1316S7 Wi-Fi Module
> Ну так и я умею. =))) Вот только это ни о чём
> не говорит.

Подскажите как выяснить?

В Edge такой модуль Murata KM5D17074 Wi-Fi module

Вот исходники ядра http://opensource.samsung.com/reception/receptionSub.do?meth...

Не факт же что исходники wifi драйвера открыты?

Ответить | Правка | Наверх | Cообщить модератору

19. "Бесшовная миграция (роуминг) Wi-Fi для клиентов Linux и Android"  +/
Сообщение от sfstudioemail (ok), 01-Мрт-18, 15:46 
>>> Samsung 1316S7 Wi-Fi Module
>> Ну так и я умею. =))) Вот только это ни о чём
>> не говорит.
> Подскажите как выяснить?
> В Edge такой модуль Murata KM5D17074 Wi-Fi module

Модель известна - гуглить. Или внимательно изучать dmesg


> Вот исходники ядра http://opensource.samsung.com/reception/receptionSub.do?meth...
> Не факт же что исходники wifi драйвера открыты?

Абсолютно верно. Но есть у меня тут "один могиличек"/доступ к сырцам через китайских коллег. Не ко всем но есть.

Гляньте лог загрузки ядра, почти уверен что там BCM ;(

Ответить | Правка | Наверх | Cообщить модератору

22. "Бесшовная миграция (роуминг) Wi-Fi для клиентов Linux и Android"  +/
Сообщение от Andreyemail (??), 01-Мрт-18, 16:05 

> Гляньте лог загрузки ядра, почти уверен что там BCM ;(
> Compiled in drivers/net/wireless/bcmdhd4359 on Jan  8 2018 at 13:27:06

И в исходниках кстати есть этот драйвер

Ответить | Правка | Наверх | Cообщить модератору

23. "Бесшовная миграция (роуминг) Wi-Fi для клиентов Linux и Android"  +/
Сообщение от sfstudioemail (ok), 01-Мрт-18, 16:08 
>> Гляньте лог загрузки ядра, почти уверен что там BCM ;(
>> Compiled in drivers/net/wireless/bcmdhd4359 on Jan  8 2018 at 13:27:06
> И в исходниках кстати есть этот драйвер

Скиньте мне на мыло sfstudio[at]wi-cat.ru что бы все сырцы не качать, освобожусь гляну что там наворотили.

Ответить | Правка | Наверх | Cообщить модератору

20. "Бесшовная миграция (роуминг) Wi-Fi для клиентов Linux и Android"  +/
Сообщение от Andreyemail (??), 01-Мрт-18, 15:52 
В папке /system/etc/wifi куча файлов начинающихся с bcm и nvram.

Судя по некоторым текстовым файлам там BCM4359 WLCSPSS Module



Ответить | Правка | К родителю #17 | Наверх | Cообщить модератору

21. "Бесшовная миграция (роуминг) Wi-Fi для клиентов Linux и Android"  +/
Сообщение от sfstudioemail (ok), 01-Мрт-18, 16:04 
> В папке /system/etc/wifi куча файлов начинающихся с bcm и nvram.
> Судя по некоторым текстовым файлам там BCM4359 WLCSPSS Module

Ну фигово. Но не так страшно. Надо смотреть сырцы самсунга, есть ли там дров. В  makefile оного есть стопка параметров задающие пороги и т.д.

Т.к. понятно, что пересобирать его никто не будет, то хотя бы узнать какие пороги заданы. А далее исходя из этого знания скорректировать уровни со стороны сети, что бы миграция инициировалась там где нужно. Скорее всего там задано в пределах -72..-75, т.е. придётся заметно уронить уровень со стороны АП.

Контроллировать это можно утилиткой от Aruba.

Т.к.все топовые самсунги прошли сертифкацию по программе VoIP Enterprise от альянса, то логика хэндовер там включена по дефолту. Весь вопрос на каких порогах она срабатывает.

Ответить | Правка | Наверх | Cообщить модератору

24. "Бесшовная миграция (роуминг) Wi-Fi для клиентов Linux и Android"  +/
Сообщение от Andreyemail (??), 01-Мрт-18, 16:11 
> В  makefile оного есть стопка параметров задающие пороги
> и т.д.

Вот файл https://drive.google.com/file/d/17HoEtFkr23YGMNeB7fqPdRVJ-L7...

Какие имена параметров?

Ответить | Правка | Наверх | Cообщить модератору

25. "Бесшовная миграция (роуминг) Wi-Fi для клиентов Linux и Android"  +/
Сообщение от sfstudioemail (ok), 01-Мрт-18, 17:30 
>> В  makefile оного есть стопка параметров задающие пороги
>> и т.д.
> Вот файл https://drive.google.com/file/d/17HoEtFkr23YGMNeB7fqPdRVJ-L7...
> Какие имена параметров?

Ок щас гляну по быстрому. Вы думаете я на память всё это помню? =)))

Ответить | Правка | Наверх | Cообщить модератору

26. "Бесшовная миграция (роуминг) Wi-Fi для клиентов Linux и Android"  +1 +/
Сообщение от sfstudioemail (ok), 01-Мрт-18, 17:40 
>>> В  makefile оного есть стопка параметров задающие пороги
>>> и т.д.
>> Вот файл https://drive.google.com/file/d/17HoEtFkr23YGMNeB7fqPdRVJ-L7...
>> Какие имена параметров?
> Ок щас гляну по быстрому. Вы думаете я на память всё это
> помню? =)))

Хэндовер включен
DHDCFLAGS += -DDHD_LOSSLESS_ROAMING

Смотрю какой-то API организовали в новых дровах (не прошло и 7ми лет)
DHDCFLAGS += -DROAM_AP_ENV_DETECTION -DKEEP_CUSTOM_ROAM_TRIGGER
DHDCFLAGS += -DROAM_ENABLE -DROAM_CHANNEL_CACHE -DROAM_API

Нас интересуют триггеры
Поиск по KEEP_CUSTOM_ROAM_TRIGGER натыкает нас на WL_AUTO_ROAM_TRIGGER

который живёт в dhd.h

В котором мы видим все дефолты

#define WL_AUTO_ROAM_TRIGGER -75
/* hooks for custom Roaming Trigger  setting via Makefile */
#define DEFAULT_ROAM_TRIGGER_VALUE -75 /* dBm default roam trigger all band */
#define DEFAULT_ROAM_TRIGGER_SETTING    -1
#ifndef CUSTOM_ROAM_TRIGGER_SETTING
#define CUSTOM_ROAM_TRIGGER_SETTING     DEFAULT_ROAM_TRIGGER_VALUE
#endif

/* hooks for custom Roaming Romaing  setting via Makefile */
#define DEFAULT_ROAM_DELTA_VALUE  10 /* dBm default roam delta all band */
#define DEFAULT_ROAM_DELTA_SETTING      -1
#ifndef CUSTOM_ROAM_DELTA_SETTING
#define CUSTOM_ROAM_DELTA_SETTING       DEFAULT_ROAM_DELTA_VALUE
#endif

Но, замечу, они таки дейсвительно реализаовали API для кручения параметров роуминга через IOCTL.

Вопрос в том, что их дёргает, вероятнее всего в их фирменной утилитке wl появились нужные опции. Вот где её свежую дёрнуть это вопрос. Раньше оно в BCM Android SDK шло, но уже пару лет как её там не видать.

В dhd_linux.c можно видеть то, что можно конфигурить по ioctl

#if defined(ROAM_ENABLE) || defined(DISABLE_BUILTIN_ROAM)
#ifdef USE_WFA_CERT_CONF
        if (sec_get_param_wfa_cert(dhd, SET_PARAM_ROAMOFF, &roamvar) == BCME_OK) {
                DHD_ERROR(("%s: read roam_off param =%d\n", __FUNCTION__, roamvar));
        }
#endif /* USE_WFA_CERT_CONF */
        /* Disable built-in roaming to allowed ext supplicant to take care of roaming */
        bcm_mkiovar("roam_off", (char *)&roamvar, 4, iovbuf, sizeof(iovbuf));
        dhd_wl_ioctl_cmd(dhd, WLC_SET_VAR, iovbuf, sizeof(iovbuf), TRUE, 0);
#endif /* ROAM_ENABLE || DISABLE_BUILTIN_ROAM */
#if defined(ROAM_ENABLE)
        if ((ret = dhd_wl_ioctl_cmd(dhd, WLC_SET_ROAM_TRIGGER, roam_trigger,
                sizeof(roam_trigger), TRUE, 0)) < 0)
                DHD_ERROR(("%s: roam trigger set failed %d\n", __FUNCTION__, ret));
        if ((ret = dhd_wl_ioctl_cmd(dhd, WLC_SET_ROAM_SCAN_PERIOD, roam_scan_period,
                sizeof(roam_scan_period), TRUE, 0)) < 0)
                DHD_ERROR(("%s: roam scan period set failed %d\n", __FUNCTION__, ret));
        if ((dhd_wl_ioctl_cmd(dhd, WLC_SET_ROAM_DELTA, roam_delta,
                sizeof(roam_delta), TRUE, 0)) < 0)
                DHD_ERROR(("%s: roam delta set failed %d\n", __FUNCTION__, ret));
        bcm_mkiovar("fullroamperiod", (char *)&roam_fullscan_period, 4, iovbuf, sizeof(iovbuf));
        if ((ret = dhd_wl_ioctl_cmd(dhd, WLC_SET_VAR, iovbuf, sizeof(iovbuf), TRUE, 0)) < 0)
                DHD_ERROR(("%s: roam fullscan period set failed %d\n", __FUNCTION__, ret));
#ifdef ROAM_AP_ENV_DETECTION
        if (roam_trigger[0] == WL_AUTO_ROAM_TRIGGER) {
                bcm_mkiovar("roam_env_detection", (char *)&roam_env_mode,
                        4, iovbuf, sizeof(iovbuf));
                if (dhd_wl_ioctl_cmd(dhd, WLC_SET_VAR, iovbuf, sizeof(iovbuf), TRUE, 0) == BCME_OK)
                        dhd->roam_env_detection = TRUE;
                else {
                        dhd->roam_env_detection = FALSE;
                }
        }
#endif /* ROAM_AP_ENV_DETECTION */
#endif /* ROAM_ENABLE */

Т.е. в общем-то можно наколупать утилитку которая будет через ioctl это дело тюнить.

Ответить | Правка | Наверх | Cообщить модератору

27. "Бесшовная миграция (роуминг) Wi-Fi для клиентов Linux и Android"  +/
Сообщение от Andreyemail (??), 02-Мрт-18, 06:55 
> Т.е. в общем-то можно наколупать утилитку которая будет через ioctl это дело
> тюнить.

Я не исключаю, что как минимум часть из них конфигурируются через механизм CSC, в частности гуглятся следующие параметры:

CscFeature_Wifi_SetOffApRoaming
CscFeature_Wifi_ConfigDisconnectApThreshold
CscFeature_Wifi_SupportEapFastReauth
CscFeature_Wifi_PreferredBand

Я думаю их больше, но естественно всё не в открытом доступе


Ответить | Правка | Наверх | Cообщить модератору

28. "Бесшовная миграция (роуминг) Wi-Fi для клиентов Linux и Android"  +/
Сообщение от sfstudioemail (ok), 02-Мрт-18, 14:36 
>> Т.е. в общем-то можно наколупать утилитку которая будет через ioctl это дело
>> тюнить.
> Я не исключаю, что как минимум часть из них конфигурируются через механизм
> CSC, в частности гуглятся следующие параметры:
> CscFeature_Wifi_SetOffApRoaming
> CscFeature_Wifi_ConfigDisconnectApThreshold
> CscFeature_Wifi_SupportEapFastReauth
> CscFeature_Wifi_PreferredBand
> Я думаю их больше, но естественно всё не в открытом доступе

Всё может быть. Сейчас не на чем проверить.

Глянул мельком код. В общем тут ещё одна засада заложена броадкомом или самсунгом или вместе взятыми.

Суть в том, что важная часть логики миграции. А именно отключение FlowControl (что бы в процессе по tx retry не отвалилось) срабатывает только если на AP использован WPA Enterprise (802.1x).

Без него если сразу не успел с первого раза и по быстрому (пока счётчик не зашкалил или всю очередь не выбрал на долго) перескочить то отвалишся просто по числу переповторов.

И нет никаких причин почему не юзать ту же логику и для схемы без 802.1x как тот же QCA. Но тут видимо опять муркетинг.

На досуге ещё гляну что там по нюансам.

Чую данных на ещё одну заметку насобирается. =)))

Этой версии драйвера я не видел, хотя на руках есть свежий SDK под соседнюю линейку чипов. Но там заметной части логики нет. Интересно...

Хотя может это уже творчество непосредственно самсунга.

Ответить | Правка | Наверх | Cообщить модератору

31. "Бесшовная миграция (роуминг) Wi-Fi для клиентов Linux и Android"  +/
Сообщение от Andreyemail (??), 02-Мрт-18, 15:04 
> На досуге ещё гляну что там по нюансам.

Если вдруг заметите как одну проблему решить видимо связанную вот с этим:

>Да и ещё:
>   # 1: Enable standby, 2: Enable Deep sleep, 3: Enable Mcast/Bcast Filter
>   gEnableSuspend=3
>По умолчанию обычно 0. В таком режиме клиент при переходе в режим сна (часто просто при выключении >экрана) полностью тушит RF часть, временно просыпаясь только для того, чтобы AP его по таймауту не >выпнула. При этом, реализация такова, что и роумингу зачастую становится плохо. Следует установить >его в 3, т.е. фильтровать броадкасты и мультикасты во сне, и только.

Было бы очень круто, т.к. это большая проблема для S7, если на ТД включено обновление ключей (Group Key Update Interval), то телефон отваливается от WiFi и во сне ходит в инет через сотовую сеть пока не разбудишь.

Ответить | Правка | Наверх | Cообщить модератору

32. "Бесшовная миграция (роуминг) Wi-Fi для клиентов Linux и Android"  +/
Сообщение от sfstudioemail (ok), 02-Мрт-18, 15:09 
> Было бы очень круто, т.к. это большая проблема для S7, если на
> ТД включено обновление ключей (Group Key Update Interval), то телефон отваливается
> от WiFi и во сне ходит в инет через сотовую сеть
> пока не разбудишь.

Это чисто для QCA. У BCM тоже есть типа MCAST/BCAST filter in suspend, но оно работает всегда.

Вообще на наших железках ни на BCM клиентах, ни на QCA ни даже на вечно кривом в этом плане риалтэке такой проблемы не вижу. Я очень много времени потерял на отладку PSM в дровах от MTK.

Возможно проблема не на стороне клиента и никак не связано именно с описанным.


Ответить | Правка | Наверх | Cообщить модератору

33. "Бесшовная миграция (роуминг) Wi-Fi для клиентов Linux и Android"  +/
Сообщение от Andreyemail (??), 02-Мрт-18, 15:18 
> Возможно проблема не на стороне клиента и никак не связано именно с
> описанным.

Возможно и что-то с согласованием обновления ключей, но это прям фича S7 http://4pda.ru/forum/index.php?act=findpost&pid=48167500&anc... (2 пункт)


Ответить | Правка | К родителю #32 | Наверх | Cообщить модератору

35. "Бесшовная миграция (роуминг) Wi-Fi для клиентов Linux и Android"  +/
Сообщение от sfstudioemail (ok), 02-Мрт-18, 15:23 
>> Возможно проблема не на стороне клиента и никак не связано именно с
>> описанным.
> Возможно и что-то с согласованием обновления ключей, но это прям фича S7
> http://4pda.ru/forum/index.php?act=findpost&pid=48167500&anc...
> (2 пункт)

Не факт. А вот последствие фикса WPA2 CRACK запросто. Опять же у нас в софте учтено это дело. Если помогает выставить на стороне АП рекей интервал в 0, то это скорее всего оно самое, и вопросы к АП.

В хостапд даже ключик вроде добавили отключающий новое поведение. Я по другому решил проблему, долго расписывать как. Но у нас нет hostapd, а всё делает драйвер, потому не перенести куда-то ещё.

Или в суппликант ли ключик добавляли, не помню. Но помню что добавляли. =))

Самсунгов в офисе заказчика как грязи, в т.ч. 7х, пока жалоб не было после фикса.

Ответить | Правка | К родителю #33 | Наверх | Cообщить модератору

34. "Бесшовная миграция (роуминг) Wi-Fi для клиентов Linux и Android"  +/
Сообщение от sfstudioemail (ok), 02-Мрт-18, 15:19 
Ещё интересность. Тут сделано всё несколько хитрее.

Обычно практикуется 2 подохода:

SME/MLME в драйвере а суппликант лишь нахлобучка, всё это связывается и управляется через WEXT который не позволяет перетащить SME/MLME на сторону суппликанта. Иногда даже и суппликант или hostapd (если AP) не нужен, как у нас в софте например.

Самая часто используемая схема на клиентах. В т.ч. QCA её практикует. Из плюсов всё в одном месте, все данные по линку и т.д. доступны в любое время не надо дёргать юзерспэйс который может стоять колом из-за взглючевшего приложения и т.д.

Вторая схема это использование NL802.11 интерфейса с переносом SME/MLME на сторону суппликанта (как в заметке моей рядом по интелам).

Из плюсов, можно заставить делать то, что драйвер не умеет. Единый код независимо от чипа на стороне суппликанта и т.д.

Минусы - если кто-то сожрал весь проц пиши пропало вплоть до отвала соединения.

Тут похоже используется третий подход.

SME/MLME на стороне драйвера, управление через суппликант, но часть MLME включая роаминг перетащена на сторону суппликанта. В драйвере храниться кэш PMK для станций на которых побывали, кэши сканов и т.д., но именно решение куда мигрировать и как принимает суппликант.

При этом используется "собственное расширение" активируемого по флагу читаемому через ioctl.

Т.е. тут ещё и суппликант пропатчен. Т.е. что бы разобраться полноценно в критериях нужно ещё и сырцы патченного суппликанта иметь.

Кто-то сильно заморочился. Видимо пилили под прохождения сертификации по программе о которой упоминал выше.

Сейчас пока нет времени глубоко вдаваться, может через месяцок полегче будет.

Пока разве что можно попробовать поиграться параметрами озвученными выше через CSC оно всяко через IOCTL их и дёргает.

Кому не лень - попробуйте.

Ответить | Правка | К родителю #28 | Наверх | Cообщить модератору

29. "Бесшовная миграция (роуминг) Wi-Fi для клиентов Linux и Android"  +/
Сообщение от Andreyemail (??), 02-Мрт-18, 14:38 
Забыл поблагодарить, спасибо за потраченное время и полезную информацию.
Ответить | Правка | К родителю #26 | Наверх | Cообщить модератору

30. "Бесшовная миграция (роуминг) Wi-Fi для клиентов Linux и Android"  +/
Сообщение от sfstudioemail (ok), 02-Мрт-18, 14:40 
> Забыл поблагодарить, спасибо за потраченное время и полезную информацию.

Не за что, как бы часть работы, а публикации это побочный продукт. Жалко просто хоронить инфу.

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру