Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> pci_set_dma_mask(), чет вот не пойму что куда 
V
    Опции темы
kirjanov
Дата 14.1.2007, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 22.1.2006
Где: Dark wood of erro r

Репутация: 3
Всего: 15



Доброго времени суток!
Заметил что иногда используют вышеописанную функцию, а что за маска - не доходит  smile 
int pci_dma_supported(struct pci_dev *pdev, dma_addr_t device_mask)  - здесь
int pci_set_dma_mask(struct pci_dev *pdev, dma_addr_t device_mask) - и здесь и еще мноо где.
Понял что эта маска разной породы бывает:
Код

#define DMA_64BIT_MASK    0xffffffffffffffffULL
#define DMA_40BIT_MASK    0x000000ffffffffffULL
#define DMA_39BIT_MASK    0x0000007fffffffffULL
#define DMA_32BIT_MASK    0x00000000ffffffffULL
#define DMA_31BIT_MASK    0x000000007fffffffULL
#define DMA_30BIT_MASK    0x000000003fffffffULL
#define DMA_29BIT_MASK    0x000000001fffffffULL

исч0 заметил (а вообще это вылело из-за ичучения полена e1000), что если DMA_64BIT_MASK прокатывает в pci_set_dma_mask, то NETIF_F_HIGHDMA флажок вкл

Это сообщение отредактировал(а) kirjanov - 14.1.2007, 14:13
PM MAIL   Вверх
MAKCim
Дата 14.1.2007, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата

а что за маска - не доходит

маска то простая: посредством | (or) установка первых 29, 30, ..., 64 бит
или посредством & (and) получение разделенных множеств 0-ей и 1-ц
а для чего они, так надо по контексту смотреть


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
kirjanov
Дата 14.1.2007, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 22.1.2006
Где: Dark wood of erro r

Репутация: 3
Всего: 15



Цитата(MAKCim @  14.1.2007,  16:54 Найти цитируемый пост)
маска то простая: посредством | (or) установка первых 29, 30, ..., 64 бит

это понятно  smile 
вот для чего они, эти маски - вот что интересовало. Общее тоже понятно - включить bus mastering для сетевухи.
из Documentation/DMA-mapping.txt
Цитата

int pci_set_consistent_dma_mask(struct pci_dev *pdev, u64 device_mask);
Here, pdev is a pointer to the PCI device struct of your device, and
device_mask is a bit mask describing which bits of a PCI address your
device supports.  It returns zero if your card can perform DMA
properly on the machine given the address mask you provided.

Т.е. получается это аппаратно зависимая штуковина, почему же тогда в полене e1000 проверяется всего 2 значения маски:
Код

if (!(err = pci_set_dma_mask(pdev, DMA_64BIT_MASK))) {
        pci_using_dac = 1;
    } else {
        if ((err = pci_set_dma_mask(pdev, DMA_32BIT_MASK))) {
            E1000_ERR("No usable DMA configuration, aborting\n");
            return err;
        }
        pci_using_dac = 0;
    }


Это сообщение отредактировал(а) kirjanov - 14.1.2007, 18:55
PM MAIL   Вверх
GrayCardinal
Дата 14.1.2007, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 8
Всего: 58



kirjanov, 
Хмм... Или я чего-то не понял, или одно из двух. Первый if в означенном пример - проверка на возможность юзания 64-битной маски, если прокатило, включается какой-то DAC, если не прокатило - проверка 32-двух...
А сколько их надо проверять ?  smile 


--------------------
PM MAIL WWW   Вверх
kirjanov
Дата 14.1.2007, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 22.1.2006
Где: Dark wood of erro r

Репутация: 3
Всего: 15



Цитата(GrayCardinal @  14.1.2007,  19:54 Найти цитируемый пост)
А сколько их надо проверять ?  smile  

то что в 1 посте это из include/linux/dma-mapping.h, и их то-там не 2
PM MAIL   Вверх
MAKCim
Дата 14.1.2007, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата

Т.е. получается это аппаратно зависимая штуковина, почему же тогда в полене e1000 проверяется всего 2 значения маски:

наиболее вероятные
или предусмотрено только 2 варианта...


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
GrayCardinal
Дата 15.1.2007, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 8
Всего: 58



kirjanov, 
Так то такие девайсы, в которых может быть либо 64-битная адресация DMA, либо 32-двух. Остальные маски изначально не подходят для данных девайсов smile В других девайсах, возможно (да скорее всего), другие маски проверяют smile


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0872 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.