Skip to content

Commit

Permalink
ofproto-dpif: Hide struct priority_to_dscp.
Browse files Browse the repository at this point in the history
Signed-off-by: Ethan Jackson <[email protected]>
  • Loading branch information
ejj committed Jun 12, 2013
1 parent cdc3ab6 commit ca07718
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 17 deletions.
7 changes: 3 additions & 4 deletions ofproto/ofproto-dpif-xlate.c
Original file line number Diff line number Diff line change
Expand Up @@ -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. */
Expand Down Expand Up @@ -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) {
Expand Down
21 changes: 20 additions & 1 deletion ofproto/ofproto-dpif.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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;
Expand All @@ -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)
{
Expand Down
14 changes: 2 additions & 12 deletions ofproto/ofproto-dpif.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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);

Expand Down

0 comments on commit ca07718

Please sign in to comment.