batman-adv: set skb priority according to content
The skb priority field may help the wireless driver to choose the right queue (e.g. WMM queues). This should be set in batman-adv, as this information is only available here. This patch adds support for IPv4/IPv6 DS fields and VLAN PCP. Note that only VLAN PCP is used if a VLAN header is present. Also initially set TC_PRIO_CONTROL only for self-generated packets, and keep the priority set by higher layers. Signed-off-by: Simon Wunderlich <simon@open-mesh.com> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
This commit is contained in:

committed by
Antonio Quartulli

parent
5b2941b18d
commit
c54f38c9aa
@@ -1626,6 +1626,7 @@ batadv_tt_response_fill_table(uint16_t tt_len, uint8_t ttvn,
|
||||
if (!skb)
|
||||
goto out;
|
||||
|
||||
skb->priority = TC_PRIO_CONTROL;
|
||||
skb_reserve(skb, ETH_HLEN);
|
||||
tt_response = (struct batadv_tt_query_packet *)skb_put(skb, len);
|
||||
tt_response->ttvn = ttvn;
|
||||
@@ -1691,6 +1692,7 @@ static int batadv_send_tt_request(struct batadv_priv *bat_priv,
|
||||
if (!skb)
|
||||
goto out;
|
||||
|
||||
skb->priority = TC_PRIO_CONTROL;
|
||||
skb_reserve(skb, ETH_HLEN);
|
||||
|
||||
tt_req_len = sizeof(*tt_request);
|
||||
@@ -1788,6 +1790,7 @@ batadv_send_other_tt_response(struct batadv_priv *bat_priv,
|
||||
if (!skb)
|
||||
goto unlock;
|
||||
|
||||
skb->priority = TC_PRIO_CONTROL;
|
||||
skb_reserve(skb, ETH_HLEN);
|
||||
packet_pos = skb_put(skb, len);
|
||||
tt_response = (struct batadv_tt_query_packet *)packet_pos;
|
||||
@@ -1906,6 +1909,7 @@ batadv_send_my_tt_response(struct batadv_priv *bat_priv,
|
||||
if (!skb)
|
||||
goto unlock;
|
||||
|
||||
skb->priority = TC_PRIO_CONTROL;
|
||||
skb_reserve(skb, ETH_HLEN);
|
||||
packet_pos = skb_put(skb, len);
|
||||
tt_response = (struct batadv_tt_query_packet *)packet_pos;
|
||||
@@ -2240,6 +2244,7 @@ static void batadv_send_roam_adv(struct batadv_priv *bat_priv, uint8_t *client,
|
||||
if (!skb)
|
||||
goto out;
|
||||
|
||||
skb->priority = TC_PRIO_CONTROL;
|
||||
skb_reserve(skb, ETH_HLEN);
|
||||
|
||||
roam_adv_packet = (struct batadv_roam_adv_packet *)skb_put(skb, len);
|
||||
|
Reference in New Issue
Block a user