return 0;
}
+static int
+dpif_netdev_handlers_set(struct dpif *dpif OVS_UNUSED,
+ uint32_t n_handlers OVS_UNUSED)
+{
+ return 0;
+}
+
static int
dpif_netdev_queue_to_priority(const struct dpif *dpif OVS_UNUSED,
uint32_t queue_id, uint32_t *priority)
}
static int
-dpif_netdev_recv(struct dpif *dpif, struct dpif_upcall *upcall,
- struct ofpbuf *buf)
+dpif_netdev_recv(struct dpif *dpif, uint32_t n_handlers OVS_UNUSED,
+ struct dpif_upcall *upcall, struct ofpbuf *buf)
{
struct dp_netdev *dp = get_dp_netdev(dpif);
struct dp_netdev_queue *q;
}
static void
-dpif_netdev_recv_wait(struct dpif *dpif)
+dpif_netdev_recv_wait(struct dpif *dpif, uint32_t handler_id OVS_UNUSED)
{
struct dp_netdev *dp = get_dp_netdev(dpif);
uint64_t seq;
static void
dp_netdev_flow_used(struct dp_netdev_flow *netdev_flow,
- const struct ofpbuf *packet)
+ const struct ofpbuf *packet,
+ const struct flow *key)
{
- uint16_t tcp_flags = packet_get_tcp_flags(packet, &netdev_flow->flow);
+ uint16_t tcp_flags = ntohs(key->tcp_flags);
long long int now = time_msec();
struct dp_netdev_flow_stats *bucket;
if (netdev_flow) {
struct dp_netdev_actions *actions;
- dp_netdev_flow_used(netdev_flow, packet);
+ dp_netdev_flow_used(netdev_flow, packet, &key);
actions = dp_netdev_flow_get_actions(netdev_flow);
dp_netdev_execute_actions(dp, &key, packet, md,
dpif_netdev_execute,
NULL, /* operate */
dpif_netdev_recv_set,
+ dpif_netdev_handlers_set,
dpif_netdev_queue_to_priority,
dpif_netdev_recv,
dpif_netdev_recv_wait,