Bon, mon patch ne changera finalement rien au problème, car manifestement un paquet raw bypass aussi le calcul du skb_priority. En effet, avec un TOS de 0x10, skb_priority devrait déjà être à 6... :
Dans le kernel, la fonction qui convertit le TOS en skb_priority est la suivante:
static inline char rt_tos2priority(u8 tos)
{
return ip_tos2prio[IPTOS_TOS(tos)>>1];
}
IPTOS_TOS est une macro qui fait un "et logique" entre "tos" et 0x1E. Donc entre 0x10 et 0x1E, ce qui donne 0x10.
Ensuite la valeur est divisée par 2 (shift à droite), donc on obtient 0x8.
Sachant que le tableau ip_tos2prio est défini comme suit:
const __u8 ip_tos2prio[16]={0,0,0,0,2,2,2,2,6,6,6,4,4,4,4};
A l'index 0x8 (les index commencent à 0 en C pour ceux qui ne savent pas), il y a bien 6.
En pratique, on (@zommak et @kgersen) a remarqué que la prio est à 0. Conclusion, pas de mapping TOS -> skb_priority -> 802.1p pour les paquets RAW...