From ca077186ceac8cdf50dd76dc46e249cac78ce4c5 Mon Sep 17 00:00:00 2001 From: Ethan Jackson Date: Wed, 12 Jun 2013 15:01:11 -0700 Subject: [PATCH] ofproto-dpif: Hide struct priority_to_dscp. Signed-off-by: Ethan Jackson --- ofproto/ofproto-dpif-xlate.c | 7 +++---- ofproto/ofproto-dpif.c | 21 ++++++++++++++++++++- ofproto/ofproto-dpif.h | 14 ++------------ 3 files changed, 25 insertions(+), 17 deletions(-) diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c index 86c5348d9..a796f9860 100644 --- a/ofproto/ofproto-dpif-xlate.c +++ b/ofproto/ofproto-dpif-xlate.c @@ -795,8 +795,8 @@ compose_output_action__(struct xlate_ctx *ctx, uint16_t ofp_port, ovs_be16 flow_vlan_tci; uint32_t flow_skb_mark; uint8_t flow_nw_tos; - struct priority_to_dscp *pdscp; uint32_t out_port, odp_port; + uint8_t dscp; /* If 'struct flow' gets additional metadata, we'll need to zero it out * before traversing a patch port. */ @@ -864,10 +864,9 @@ compose_output_action__(struct xlate_ctx *ctx, uint16_t ofp_port, flow_skb_mark = flow->skb_mark; flow_nw_tos = flow->nw_tos; - pdscp = get_priority(ofport, flow->skb_priority); - if (pdscp) { + if (ofproto_dpif_dscp_from_priority(ofport, flow->skb_priority, &dscp)) { flow->nw_tos &= ~IP_DSCP_MASK; - flow->nw_tos |= pdscp->dscp; + flow->nw_tos |= dscp; } if (ofport->tnl_port) { diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c index a22173406..b917dc770 100644 --- a/ofproto/ofproto-dpif.c +++ b/ofproto/ofproto-dpif.c @@ -258,6 +258,16 @@ static void push_all_stats(void); static bool facet_is_controller_flow(struct facet *); +/* Node in 'ofport_dpif''s 'priorities' map. Used to maintain a map from + * 'priority' (the datapath's term for QoS queue) to the dscp bits which all + * traffic egressing the 'ofport' with that priority should be marked with. */ +struct priority_to_dscp { + struct hmap_node hmap_node; /* Node in 'ofport_dpif''s 'priorities' map. */ + uint32_t priority; /* Priority of this queue (see struct flow). */ + + uint8_t dscp; /* DSCP bits to mark outgoing traffic with. */ +}; + /* Linux VLAN device support (e.g. "eth0.10" for VLAN 10.) * * This is deprecated. It is only for compatibility with broken device drivers @@ -1955,7 +1965,7 @@ ofproto_dpif_queue_to_priority(const struct ofproto_dpif *ofproto, return dpif_queue_to_priority(ofproto->backer->dpif, queue_id, priority); } -struct priority_to_dscp * +static struct priority_to_dscp * get_priority(const struct ofport_dpif *ofport, uint32_t priority) { struct priority_to_dscp *pdscp; @@ -1970,6 +1980,15 @@ get_priority(const struct ofport_dpif *ofport, uint32_t priority) return NULL; } +bool +ofproto_dpif_dscp_from_priority(const struct ofport_dpif *ofport, + uint32_t priority, uint8_t *dscp) +{ + struct priority_to_dscp *pdscp = get_priority(ofport, priority); + *dscp = pdscp ? pdscp->dscp : 0; + return pdscp != NULL; +} + static void ofport_clear_priorities(struct ofport_dpif *ofport) { diff --git a/ofproto/ofproto-dpif.h b/ofproto/ofproto-dpif.h index 313141bde..52e963915 100644 --- a/ofproto/ofproto-dpif.h +++ b/ofproto/ofproto-dpif.h @@ -200,16 +200,6 @@ struct ofmirror { int64_t byte_count; /* Number of bytes sent. */ }; -/* Node in 'ofport_dpif''s 'priorities' map. Used to maintain a map from - * 'priority' (the datapath's term for QoS queue) to the dscp bits which all - * traffic egressing the 'ofport' with that priority should be marked with. */ -struct priority_to_dscp { - struct hmap_node hmap_node; /* Node in 'ofport_dpif''s 'priorities' map. */ - uint32_t priority; /* Priority of this queue (see struct flow). */ - - uint8_t dscp; /* DSCP bits to mark outgoing traffic with. */ -}; - static inline struct rule_dpif *rule_dpif_cast(const struct rule *rule) { return rule ? CONTAINER_OF(rule, struct rule_dpif, up) : NULL; @@ -276,8 +266,8 @@ uint16_t vsp_realdev_to_vlandev(const struct ofproto_dpif *, uint16_t realdev_ofp_port, ovs_be16 vlan_tci); -struct priority_to_dscp *get_priority(const struct ofport_dpif *, - uint32_t priority); +bool ofproto_dpif_dscp_from_priority(const struct ofport_dpif *, + uint32_t priority, uint8_t *dscp); int ofproto_dpif_queue_to_priority(const struct ofproto_dpif *, uint32_t queue_id, uint32_t *priority); -- 2.43.0