size_t actions_len);
static void dp_netdev_port_input(struct dp_netdev *dp,
struct dp_netdev_port *port,
- struct ofpbuf *packet, uint32_t skb_priority,
- uint32_t pkt_mark, const struct flow_tnl *tnl);
+ struct ofpbuf *packet);
static struct dpif_netdev *
dpif_netdev_cast(const struct dpif *dpif)
stats->n_hit = dp->n_hit;
stats->n_missed = dp->n_missed;
stats->n_lost = dp->n_lost;
- stats->n_masks = UINT64_MAX;
+ stats->n_masks = UINT32_MAX;
stats->n_mask_hit = UINT64_MAX;
ovs_mutex_unlock(&dp_netdev_mutex);
static void
dp_netdev_free_flow(struct dp_netdev *dp, struct dp_netdev_flow *netdev_flow)
{
- ovs_rwlock_wrlock(&dp->cls.rwlock);
+ fat_rwlock_wrlock(&dp->cls.rwlock);
classifier_remove(&dp->cls, &netdev_flow->cr);
- ovs_rwlock_unlock(&dp->cls.rwlock);
+ fat_rwlock_unlock(&dp->cls.rwlock);
cls_rule_destroy(&netdev_flow->cr);
hmap_remove(&dp->flow_table, &netdev_flow->node);
{
struct cls_rule *cr;
- ovs_rwlock_wrlock(&dp->cls.rwlock);
+ fat_rwlock_wrlock(&dp->cls.rwlock);
cr = classifier_lookup(&dp->cls, flow, NULL);
- ovs_rwlock_unlock(&dp->cls.rwlock);
+ fat_rwlock_unlock(&dp->cls.rwlock);
return (cr
? CONTAINER_OF(cr, struct dp_netdev_flow, cr)
match_init(&match, flow, wc);
cls_rule_init(&netdev_flow->cr, &match, NETDEV_RULE_PRIORITY);
- ovs_rwlock_wrlock(&dp->cls.rwlock);
+ fat_rwlock_wrlock(&dp->cls.rwlock);
classifier_insert(&dp->cls, &netdev_flow->cr);
- ovs_rwlock_unlock(&dp->cls.rwlock);
+ fat_rwlock_unlock(&dp->cls.rwlock);
error = set_flow_actions(netdev_flow, actions, actions_len);
if (error) {
- ovs_rwlock_wrlock(&dp->cls.rwlock);
+ fat_rwlock_wrlock(&dp->cls.rwlock);
classifier_remove(&dp->cls, &netdev_flow->cr);
- ovs_rwlock_unlock(&dp->cls.rwlock);
+ fat_rwlock_unlock(&dp->cls.rwlock);
cls_rule_destroy(&netdev_flow->cr);
free(netdev_flow);
static void
dp_netdev_port_input(struct dp_netdev *dp, struct dp_netdev_port *port,
- struct ofpbuf *packet, uint32_t skb_priority,
- uint32_t pkt_mark, const struct flow_tnl *tnl)
+ struct ofpbuf *packet)
{
struct dp_netdev_flow *netdev_flow;
struct flow key;
return;
}
in_port_.odp_port = port->port_no;
- flow_extract(packet, skb_priority, pkt_mark, tnl, &in_port_, &key);
+ flow_extract(packet, 0, 0, NULL, &in_port_, &key);
netdev_flow = dp_netdev_lookup_flow(dp, &key);
if (netdev_flow) {
dp_netdev_flow_used(netdev_flow, packet);
error = port->rx ? netdev_rx_recv(port->rx, &packet) : EOPNOTSUPP;
if (!error) {
- dp_netdev_port_input(dp, port, &packet, 0, 0, NULL);
+ dp_netdev_port_input(dp, port, &packet);
} else if (error != EAGAIN && error != EOPNOTSUPP) {
static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 5);