LINUX.ORG.RU

перенос драйвера linux 4.4 -> 5.4

 


0

1

доброго всем вечера!

решил сегодня перейти на «своей» железяке на новое ядро, но ожидаемо уткнулся в кучку проблем общей протяженностью в три экрана вывода ошибок после команды make.

но тут у меня вопрос, правильно ли я начал вносить коррективы, и эквиваленты ли куски под #if-#else? или я что-то пропускаю?
например, было в 4.4:

if (phydev->supported & SUPPORTED_Pause) {                                   
    if (phydev->advertising & ADVERTISED_Pause)                              
        phydev->advertising &= ~(ADVERTISED_Pause | DVERTISED_Asym_Pause);
    else                                                                     
        phydev->advertising |= ADVERTISED_Pause;                             
}

стало в 5.4:
__ETHTOOL_DECLARE_LINK_MODE_MASK(mask) = { 0, };

if (linkmode_test_bit(SUPPORTED_Pause, phydev->supported)) {                 
    dev_err(&phydev->mdio.dev, "%s: Pause supported. Toggling!\n", DEVICE_NAME);
    if (linkmode_test_bit(ETHTOOL_LINK_MODE_Pause_BIT, phydev->advertising)) {
#if 0                                                                                
        linkmode_set_bit(ETHTOOL_LINK_MODE_Pause_BIT, mask);                 
        linkmode_set_bit(ETHTOOL_LINK_MODE_Asym_Pause_BIT, mask);            
        linkmode_andnot(phydev->advertising, phydev->advertising, mask); 
#else                                                                                
        linkmode_clear_bit(ETHTOOL_LINK_MODE_Pause_BIT, phydev->advertising);
        linkmode_clear_bit(ETHTOOL_LINK_MODE_Asym_Pause_BIT, phydev->advertising);
#endif                                                                               
    } else                                                                   
        linkmode_set_bit(ETHTOOL_LINK_MODE_Pause_BIT, phydev->advertising);
}


p.s. в принципе, мне то, что сразу под #if нравится меньше чем под #else, но «phydev->advertising &= ~(ADVERTISED_Pause | DVERTISED_Asym_Pause);» по-коду встречается еще пару раз, и сейчас вынесу в начало функции linkmode_set_bit'ы и у меня будет только одна строчка «linkmode_andnot(...)» :)

★★★★★

Последнее исправление: metawishmaster (всего исправлений: 2)

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.