Lines Matching full:skb
90 static struct deferred_action *add_deferred_actions(struct sk_buff *skb, in add_deferred_actions() argument
100 da->skb = skb; in add_deferred_actions()
119 static int clone_execute(struct datapath *dp, struct sk_buff *skb,
125 static int do_execute_actions(struct datapath *dp, struct sk_buff *skb,
129 static int push_mpls(struct sk_buff *skb, struct sw_flow_key *key, in push_mpls() argument
134 err = skb_mpls_push(skb, mpls_lse, mpls_ethertype, mac_len, !!mac_len); in push_mpls()
145 static int pop_mpls(struct sk_buff *skb, struct sw_flow_key *key, in pop_mpls() argument
150 err = skb_mpls_pop(skb, ethertype, skb->mac_len, in pop_mpls()
162 static int set_mpls(struct sk_buff *skb, struct sw_flow_key *flow_key, in set_mpls() argument
169 if (!pskb_may_pull(skb, skb_network_offset(skb) + MPLS_HLEN)) in set_mpls()
172 stack = mpls_hdr(skb); in set_mpls()
174 err = skb_mpls_update_lse(skb, lse); in set_mpls()
182 static int pop_vlan(struct sk_buff *skb, struct sw_flow_key *key) in pop_vlan() argument
186 err = skb_vlan_pop(skb); in pop_vlan()
187 if (skb_vlan_tag_present(skb)) { in pop_vlan()
196 static int push_vlan(struct sk_buff *skb, struct sw_flow_key *key, in push_vlan() argument
201 if (skb_vlan_tag_present(skb)) { in push_vlan()
207 err = skb_vlan_push(skb, vlan->vlan_tpid, in push_vlan()
209 skb_reset_mac_len(skb); in push_vlan()
225 static int set_eth_addr(struct sk_buff *skb, struct sw_flow_key *flow_key, in set_eth_addr() argument
231 err = skb_ensure_writable(skb, ETH_HLEN); in set_eth_addr()
235 skb_postpull_rcsum(skb, eth_hdr(skb), ETH_ALEN * 2); in set_eth_addr()
237 ether_addr_copy_masked(eth_hdr(skb)->h_source, key->eth_src, in set_eth_addr()
239 ether_addr_copy_masked(eth_hdr(skb)->h_dest, key->eth_dst, in set_eth_addr()
242 skb_postpush_rcsum(skb, eth_hdr(skb), ETH_ALEN * 2); in set_eth_addr()
244 ether_addr_copy(flow_key->eth.src, eth_hdr(skb)->h_source); in set_eth_addr()
245 ether_addr_copy(flow_key->eth.dst, eth_hdr(skb)->h_dest); in set_eth_addr()
252 static int pop_eth(struct sk_buff *skb, struct sw_flow_key *key) in pop_eth() argument
256 err = skb_eth_pop(skb); in pop_eth()
266 static int push_eth(struct sk_buff *skb, struct sw_flow_key *key, in push_eth() argument
271 err = skb_eth_push(skb, ethh->addresses.eth_dst, in push_eth()
282 static noinline_for_stack int push_nsh(struct sk_buff *skb, in push_nsh() argument
294 err = nsh_push(skb, nh); in push_nsh()
304 static int pop_nsh(struct sk_buff *skb, struct sw_flow_key *key) in pop_nsh() argument
308 err = nsh_pop(skb); in pop_nsh()
313 if (skb->protocol == htons(ETH_P_TEB)) in pop_nsh()
321 static void update_ip_l4_checksum(struct sk_buff *skb, struct iphdr *nh, in update_ip_l4_checksum() argument
324 int transport_len = skb->len - skb_transport_offset(skb); in update_ip_l4_checksum()
331 inet_proto_csum_replace4(&tcp_hdr(skb)->check, skb, in update_ip_l4_checksum()
335 struct udphdr *uh = udp_hdr(skb); in update_ip_l4_checksum()
337 if (uh->check || skb->ip_summed == CHECKSUM_PARTIAL) { in update_ip_l4_checksum()
338 inet_proto_csum_replace4(&uh->check, skb, in update_ip_l4_checksum()
347 static void set_ip_addr(struct sk_buff *skb, struct iphdr *nh, in set_ip_addr() argument
350 update_ip_l4_checksum(skb, nh, *addr, new_addr); in set_ip_addr()
352 skb_clear_hash(skb); in set_ip_addr()
353 ovs_ct_clear(skb, NULL); in set_ip_addr()
357 static void update_ipv6_checksum(struct sk_buff *skb, u8 l4_proto, in update_ipv6_checksum() argument
360 int transport_len = skb->len - skb_transport_offset(skb); in update_ipv6_checksum()
364 inet_proto_csum_replace16(&tcp_hdr(skb)->check, skb, in update_ipv6_checksum()
368 struct udphdr *uh = udp_hdr(skb); in update_ipv6_checksum()
370 if (uh->check || skb->ip_summed == CHECKSUM_PARTIAL) { in update_ipv6_checksum()
371 inet_proto_csum_replace16(&uh->check, skb, in update_ipv6_checksum()
379 inet_proto_csum_replace16(&icmp6_hdr(skb)->icmp6_cksum, in update_ipv6_checksum()
380 skb, addr, new_addr, true); in update_ipv6_checksum()
393 static void set_ipv6_addr(struct sk_buff *skb, u8 l4_proto, in set_ipv6_addr() argument
398 update_ipv6_checksum(skb, l4_proto, addr, new_addr); in set_ipv6_addr()
400 skb_clear_hash(skb); in set_ipv6_addr()
401 ovs_ct_clear(skb, NULL); in set_ipv6_addr()
405 static void set_ipv6_dsfield(struct sk_buff *skb, struct ipv6hdr *nh, u8 ipv6_tclass, u8 mask) in set_ipv6_dsfield() argument
411 if (skb->ip_summed == CHECKSUM_COMPLETE) in set_ipv6_dsfield()
412 csum_replace(&skb->csum, (__force __wsum)(old_ipv6_tclass << 12), in set_ipv6_dsfield()
418 static void set_ipv6_fl(struct sk_buff *skb, struct ipv6hdr *nh, u32 fl, u32 mask) in set_ipv6_fl() argument
430 if (skb->ip_summed == CHECKSUM_COMPLETE) in set_ipv6_fl()
431 csum_replace(&skb->csum, (__force __wsum)htonl(ofl), (__force __wsum)htonl(fl)); in set_ipv6_fl()
434 static void set_ipv6_ttl(struct sk_buff *skb, struct ipv6hdr *nh, u8 new_ttl, u8 mask) in set_ipv6_ttl() argument
438 if (skb->ip_summed == CHECKSUM_COMPLETE) in set_ipv6_ttl()
439 csum_replace(&skb->csum, (__force __wsum)(nh->hop_limit << 8), in set_ipv6_ttl()
444 static void set_ip_ttl(struct sk_buff *skb, struct iphdr *nh, u8 new_ttl, in set_ip_ttl() argument
453 static int set_ipv4(struct sk_buff *skb, struct sw_flow_key *flow_key, in set_ipv4() argument
461 err = skb_ensure_writable(skb, skb_network_offset(skb) + in set_ipv4()
466 nh = ip_hdr(skb); in set_ipv4()
476 set_ip_addr(skb, nh, &nh->saddr, new_addr); in set_ipv4()
484 set_ip_addr(skb, nh, &nh->daddr, new_addr); in set_ipv4()
493 set_ip_ttl(skb, nh, key->ipv4_ttl, mask->ipv4_ttl); in set_ipv4()
505 static int set_ipv6(struct sk_buff *skb, struct sw_flow_key *flow_key, in set_ipv6() argument
512 err = skb_ensure_writable(skb, skb_network_offset(skb) + in set_ipv6()
517 nh = ipv6_hdr(skb); in set_ipv6()
530 set_ipv6_addr(skb, flow_key->ip.proto, saddr, masked, in set_ipv6()
547 recalc_csum = (ipv6_find_hdr(skb, &offset, in set_ipv6()
552 set_ipv6_addr(skb, flow_key->ip.proto, daddr, masked, in set_ipv6()
559 set_ipv6_dsfield(skb, nh, key->ipv6_tclass, mask->ipv6_tclass); in set_ipv6()
563 set_ipv6_fl(skb, nh, ntohl(key->ipv6_label), in set_ipv6()
569 set_ipv6_ttl(skb, nh, key->ipv6_hlimit, mask->ipv6_hlimit); in set_ipv6()
575 static int set_nsh(struct sk_buff *skb, struct sw_flow_key *flow_key, in set_nsh() argument
593 if (!pskb_may_pull(skb, skb_network_offset(skb) + NSH_BASE_HDR_LEN)) in set_nsh()
596 nh = nsh_hdr(skb); in set_nsh()
600 err = skb_ensure_writable(skb, skb_network_offset(skb) + in set_nsh()
605 nh = nsh_hdr(skb); in set_nsh()
606 skb_postpull_rcsum(skb, nh, length); in set_nsh()
634 skb_postpush_rcsum(skb, nh, length); in set_nsh()
638 /* Must follow skb_ensure_writable() since that can move the skb data. */
639 static void set_tp_port(struct sk_buff *skb, __be16 *port, in set_tp_port() argument
642 ovs_ct_clear(skb, NULL); in set_tp_port()
643 inet_proto_csum_replace2(check, skb, *port, new_port, false); in set_tp_port()
647 static int set_udp(struct sk_buff *skb, struct sw_flow_key *flow_key, in set_udp() argument
655 err = skb_ensure_writable(skb, skb_transport_offset(skb) + in set_udp()
660 uh = udp_hdr(skb); in set_udp()
665 if (uh->check && skb->ip_summed != CHECKSUM_PARTIAL) { in set_udp()
667 set_tp_port(skb, &uh->source, src, &uh->check); in set_udp()
671 set_tp_port(skb, &uh->dest, dst, &uh->check); in set_udp()
682 ovs_ct_clear(skb, NULL); in set_udp()
685 skb_clear_hash(skb); in set_udp()
690 static int set_tcp(struct sk_buff *skb, struct sw_flow_key *flow_key, in set_tcp() argument
698 err = skb_ensure_writable(skb, skb_transport_offset(skb) + in set_tcp()
703 th = tcp_hdr(skb); in set_tcp()
706 set_tp_port(skb, &th->source, src, &th->check); in set_tcp()
711 set_tp_port(skb, &th->dest, dst, &th->check); in set_tcp()
714 skb_clear_hash(skb); in set_tcp()
719 static int set_sctp(struct sk_buff *skb, struct sw_flow_key *flow_key, in set_sctp() argument
723 unsigned int sctphoff = skb_transport_offset(skb); in set_sctp()
728 err = skb_ensure_writable(skb, sctphoff + sizeof(struct sctphdr)); in set_sctp()
732 sh = sctp_hdr(skb); in set_sctp()
734 old_correct_csum = sctp_compute_cksum(skb, sctphoff); in set_sctp()
739 new_csum = sctp_compute_cksum(skb, sctphoff); in set_sctp()
744 skb_clear_hash(skb); in set_sctp()
745 ovs_ct_clear(skb, NULL); in set_sctp()
754 struct sk_buff *skb) in ovs_vport_output() argument
759 if (skb_cow_head(skb, data->l2_len) < 0) { in ovs_vport_output()
760 kfree_skb_reason(skb, SKB_DROP_REASON_NOMEM); in ovs_vport_output()
764 __skb_dst_copy(skb, data->dst); in ovs_vport_output()
765 *OVS_CB(skb) = data->cb; in ovs_vport_output()
766 skb->inner_protocol = data->inner_protocol; in ovs_vport_output()
768 __vlan_hwaccel_put_tag(skb, data->vlan_proto, data->vlan_tci & ~VLAN_CFI_MASK); in ovs_vport_output()
770 __vlan_hwaccel_clear_tag(skb); in ovs_vport_output()
773 skb_push(skb, data->l2_len); in ovs_vport_output()
774 memcpy(skb->data, &data->l2_data, data->l2_len); in ovs_vport_output()
775 skb_postpush_rcsum(skb, skb->data, data->l2_len); in ovs_vport_output()
776 skb_reset_mac_header(skb); in ovs_vport_output()
778 if (eth_p_mpls(skb->protocol)) { in ovs_vport_output()
779 skb->inner_network_header = skb->network_header; in ovs_vport_output()
780 skb_set_network_header(skb, data->network_offset); in ovs_vport_output()
781 skb_reset_mac_len(skb); in ovs_vport_output()
784 ovs_vport_send(vport, skb, data->mac_proto); in ovs_vport_output()
802 static void prepare_frag(struct vport *vport, struct sk_buff *skb, in prepare_frag() argument
805 unsigned int hlen = skb_network_offset(skb); in prepare_frag()
809 data->dst = skb->_skb_refdst; in prepare_frag()
811 data->cb = *OVS_CB(skb); in prepare_frag()
812 data->inner_protocol = skb->inner_protocol; in prepare_frag()
814 if (skb_vlan_tag_present(skb)) in prepare_frag()
815 data->vlan_tci = skb_vlan_tag_get(skb) | VLAN_CFI_MASK; in prepare_frag()
818 data->vlan_proto = skb->vlan_proto; in prepare_frag()
821 memcpy(&data->l2_data, skb->data, hlen); in prepare_frag()
823 memset(IPCB(skb), 0, sizeof(struct inet_skb_parm)); in prepare_frag()
824 skb_pull(skb, hlen); in prepare_frag()
828 struct sk_buff *skb, u16 mru, in ovs_fragment() argument
834 if (eth_p_mpls(skb->protocol)) { in ovs_fragment()
835 orig_network_offset = skb_network_offset(skb); in ovs_fragment()
836 skb->network_header = skb->inner_network_header; in ovs_fragment()
839 if (skb_network_offset(skb) > MAX_L2_LEN) { in ovs_fragment()
849 prepare_frag(vport, skb, orig_network_offset, in ovs_fragment()
855 orig_dst = skb->_skb_refdst; in ovs_fragment()
856 skb_dst_set_noref(skb, &ovs_rt.dst); in ovs_fragment()
857 IPCB(skb)->frag_max_size = mru; in ovs_fragment()
859 ip_do_fragment(net, skb->sk, skb, ovs_vport_output); in ovs_fragment()
865 prepare_frag(vport, skb, orig_network_offset, in ovs_fragment()
872 orig_dst = skb->_skb_refdst; in ovs_fragment()
873 skb_dst_set_noref(skb, &ovs_rt.dst); in ovs_fragment()
874 IP6CB(skb)->frag_max_size = mru; in ovs_fragment()
876 ipv6_stub->ipv6_fragment(net, skb->sk, skb, ovs_vport_output); in ovs_fragment()
888 ovs_kfree_skb_reason(skb, reason); in ovs_fragment()
891 static void do_output(struct datapath *dp, struct sk_buff *skb, int out_port, in do_output() argument
899 u16 mru = OVS_CB(skb)->mru; in do_output()
900 u32 cutlen = OVS_CB(skb)->cutlen; in do_output()
903 if (skb->len - cutlen > ovs_mac_header_len(key)) in do_output()
904 pskb_trim(skb, skb->len - cutlen); in do_output()
906 pskb_trim(skb, ovs_mac_header_len(key)); in do_output()
910 (skb->len <= mru + vport->dev->hard_header_len))) { in do_output()
911 ovs_vport_send(vport, skb, ovs_key_mac_proto(key)); in do_output()
915 ovs_fragment(net, vport, skb, mru, key); in do_output()
917 kfree_skb_reason(skb, SKB_DROP_REASON_PKT_TOO_BIG); in do_output()
920 kfree_skb_reason(skb, SKB_DROP_REASON_DEV_READY); in do_output()
924 static int output_userspace(struct datapath *dp, struct sk_buff *skb, in output_userspace() argument
935 upcall.mru = OVS_CB(skb)->mru; in output_userspace()
944 if (OVS_CB(skb)->upcall_pid) in output_userspace()
945 upcall.portid = OVS_CB(skb)->upcall_pid; in output_userspace()
963 err = dev_fill_metadata_dst(vport->dev, skb); in output_userspace()
965 upcall.egress_tun_info = skb_tunnel_info(skb); in output_userspace()
981 return ovs_dp_upcall(dp, skb, key, &upcall, cutlen); in output_userspace()
984 static int dec_ttl_exception_handler(struct datapath *dp, struct sk_buff *skb, in dec_ttl_exception_handler() argument
992 return clone_execute(dp, skb, key, 0, nla_data(actions), in dec_ttl_exception_handler()
995 ovs_kfree_skb_reason(skb, OVS_DROP_IP_TTL); in dec_ttl_exception_handler()
999 /* When 'last' is true, sample() should always consume the 'skb'.
1000 * Otherwise, sample() should keep 'skb' intact regardless what
1003 static int sample(struct datapath *dp, struct sk_buff *skb, in sample() argument
1019 init_probability = OVS_CB(skb)->probability; in sample()
1024 ovs_kfree_skb_reason(skb, OVS_DROP_LAST_ACTION); in sample()
1028 OVS_CB(skb)->probability = arg->probability; in sample()
1031 err = clone_execute(dp, skb, key, 0, actions, rem, last, in sample()
1035 OVS_CB(skb)->probability = init_probability; in sample()
1040 /* When 'last' is true, clone() should always consume the 'skb'.
1041 * Otherwise, clone() should keep 'skb' intact regardless what
1044 static int clone(struct datapath *dp, struct sk_buff *skb, in clone() argument
1058 return clone_execute(dp, skb, key, 0, actions, rem, last, in clone()
1062 static void execute_hash(struct sk_buff *skb, struct sw_flow_key *key, in execute_hash() argument
1070 hash = skb_get_hash(skb); in execute_hash()
1075 hash = __skb_get_hash_symmetric(skb); in execute_hash()
1085 static int execute_set_action(struct sk_buff *skb, in execute_set_action() argument
1093 skb_dst_drop(skb); in execute_set_action()
1095 skb_dst_set(skb, (struct dst_entry *)tun->tun_dst); in execute_set_action()
1105 static int execute_masked_set_action(struct sk_buff *skb, in execute_masked_set_action() argument
1113 OVS_SET_MASKED(skb->priority, nla_get_u32(a), in execute_masked_set_action()
1115 flow_key->phy.priority = skb->priority; in execute_masked_set_action()
1119 OVS_SET_MASKED(skb->mark, nla_get_u32(a), *get_mask(a, u32 *)); in execute_masked_set_action()
1120 flow_key->phy.skb_mark = skb->mark; in execute_masked_set_action()
1129 err = set_eth_addr(skb, flow_key, nla_data(a), in execute_masked_set_action()
1134 err = set_nsh(skb, flow_key, a); in execute_masked_set_action()
1138 err = set_ipv4(skb, flow_key, nla_data(a), in execute_masked_set_action()
1143 err = set_ipv6(skb, flow_key, nla_data(a), in execute_masked_set_action()
1148 err = set_tcp(skb, flow_key, nla_data(a), in execute_masked_set_action()
1153 err = set_udp(skb, flow_key, nla_data(a), in execute_masked_set_action()
1158 err = set_sctp(skb, flow_key, nla_data(a), in execute_masked_set_action()
1163 err = set_mpls(skb, flow_key, nla_data(a), get_mask(a, in execute_masked_set_action()
1180 static int execute_recirc(struct datapath *dp, struct sk_buff *skb, in execute_recirc() argument
1189 err = ovs_flow_key_update(skb, key); in execute_recirc()
1196 return clone_execute(dp, skb, key, recirc_id, NULL, 0, last, true); in execute_recirc()
1199 static int execute_check_pkt_len(struct datapath *dp, struct sk_buff *skb, in execute_check_pkt_len() argument
1203 struct ovs_skb_cb *ovs_cb = OVS_CB(skb); in execute_check_pkt_len()
1215 len = ovs_cb->mru ? ovs_cb->mru + skb->mac_len : skb->len; in execute_check_pkt_len()
1218 if ((skb_is_gso(skb) && skb_gso_validate_mac_len(skb, max_len)) || in execute_check_pkt_len()
1234 return clone_execute(dp, skb, key, 0, nla_data(actions), in execute_check_pkt_len()
1238 static int execute_dec_ttl(struct sk_buff *skb, struct sw_flow_key *key) in execute_dec_ttl() argument
1242 if (skb->protocol == htons(ETH_P_IPV6)) { in execute_dec_ttl()
1245 err = skb_ensure_writable(skb, skb_network_offset(skb) + in execute_dec_ttl()
1250 nh = ipv6_hdr(skb); in execute_dec_ttl()
1256 } else if (skb->protocol == htons(ETH_P_IP)) { in execute_dec_ttl()
1260 err = skb_ensure_writable(skb, skb_network_offset(skb) + in execute_dec_ttl()
1265 nh = ip_hdr(skb); in execute_dec_ttl()
1278 static void execute_psample(struct datapath *dp, struct sk_buff *skb, in execute_psample() argument
1301 md.in_ifindex = OVS_CB(skb)->input_vport->dev->ifindex; in execute_psample()
1302 md.trunc_size = skb->len - OVS_CB(skb)->cutlen; in execute_psample()
1305 rate = OVS_CB(skb)->probability ? OVS_CB(skb)->probability : U32_MAX; in execute_psample()
1307 psample_sample_packet(&psample_group, skb, rate, &md); in execute_psample()
1310 static void execute_psample(struct datapath *dp, struct sk_buff *skb, in execute_psample() argument
1315 /* Execute a list of actions against 'skb'. */
1316 static int do_execute_actions(struct datapath *dp, struct sk_buff *skb, in do_execute_actions() argument
1328 trace_ovs_do_execute_action(dp, skb, key, a, rem); in do_execute_actions()
1330 /* Actions that rightfully have to consume the skb should do it in do_execute_actions()
1339 * of 'skb', In case the output action is the in do_execute_actions()
1343 do_output(dp, skb, port, key); in do_execute_actions()
1344 /* 'skb' has been used for output. in do_execute_actions()
1349 clone = skb_clone(skb, GFP_ATOMIC); in do_execute_actions()
1352 OVS_CB(skb)->cutlen = 0; in do_execute_actions()
1359 if (skb->len > trunc->max_len) in do_execute_actions()
1360 OVS_CB(skb)->cutlen = skb->len - trunc->max_len; in do_execute_actions()
1365 output_userspace(dp, skb, key, a, attr, in do_execute_actions()
1366 len, OVS_CB(skb)->cutlen); in do_execute_actions()
1367 OVS_CB(skb)->cutlen = 0; in do_execute_actions()
1369 consume_skb(skb); in do_execute_actions()
1375 execute_hash(skb, key, a); in do_execute_actions()
1381 err = push_mpls(skb, key, mpls->mpls_lse, in do_execute_actions()
1382 mpls->mpls_ethertype, skb->mac_len); in do_execute_actions()
1390 mac_len = skb->mac_len; in do_execute_actions()
1392 err = push_mpls(skb, key, mpls->mpls_lse, in do_execute_actions()
1397 err = pop_mpls(skb, key, nla_get_be16(a)); in do_execute_actions()
1401 err = push_vlan(skb, key, nla_data(a)); in do_execute_actions()
1405 err = pop_vlan(skb, key); in do_execute_actions()
1411 err = execute_recirc(dp, skb, key, a, last); in do_execute_actions()
1413 /* If this is the last action, the skb has in do_execute_actions()
1423 err = execute_set_action(skb, key, nla_data(a)); in do_execute_actions()
1428 err = execute_masked_set_action(skb, key, nla_data(a)); in do_execute_actions()
1434 err = sample(dp, skb, key, a, last); in do_execute_actions()
1443 err = ovs_flow_key_update(skb, key); in do_execute_actions()
1448 err = ovs_ct_execute(ovs_dp_get_net(dp), skb, key, in do_execute_actions()
1457 err = ovs_ct_clear(skb, key); in do_execute_actions()
1461 err = push_eth(skb, key, nla_data(a)); in do_execute_actions()
1465 err = pop_eth(skb, key); in do_execute_actions()
1469 err = push_nsh(skb, key, nla_data(a)); in do_execute_actions()
1473 err = pop_nsh(skb, key); in do_execute_actions()
1477 if (ovs_meter_execute(dp, skb, key, nla_get_u32(a))) { in do_execute_actions()
1478 ovs_kfree_skb_reason(skb, OVS_DROP_METER); in do_execute_actions()
1486 err = clone(dp, skb, key, a, last); in do_execute_actions()
1496 err = execute_check_pkt_len(dp, skb, key, a, last); in do_execute_actions()
1504 err = execute_dec_ttl(skb, key); in do_execute_actions()
1506 return dec_ttl_exception_handler(dp, skb, in do_execute_actions()
1515 ovs_kfree_skb_reason(skb, reason); in do_execute_actions()
1520 execute_psample(dp, skb, a); in do_execute_actions()
1521 OVS_CB(skb)->cutlen = 0; in do_execute_actions()
1523 consume_skb(skb); in do_execute_actions()
1530 ovs_kfree_skb_reason(skb, OVS_DROP_ACTION_ERROR); in do_execute_actions()
1535 ovs_kfree_skb_reason(skb, OVS_DROP_LAST_ACTION); in do_execute_actions()
1540 * execution does not affect the original 'skb' nor the original 'key'.
1545 static int clone_execute(struct datapath *dp, struct sk_buff *skb, in clone_execute() argument
1553 skb = last ? skb : skb_clone(skb, GFP_ATOMIC); in clone_execute()
1554 if (!skb) { in clone_execute()
1573 err = do_execute_actions(dp, skb, clone, in clone_execute()
1580 ovs_dp_process_packet(skb, clone); in clone_execute()
1586 da = add_deferred_actions(skb, key, actions, len); in clone_execute()
1593 /* Out of per CPU action FIFO space. Drop the 'skb' and in clone_execute()
1596 ovs_kfree_skb_reason(skb, OVS_DROP_DEFERRED_LIMIT); in clone_execute()
1622 struct sk_buff *skb = da->skb; in process_deferred_actions() local
1628 do_execute_actions(dp, skb, key, actions, actions_len); in process_deferred_actions()
1630 ovs_dp_process_packet(skb, key); in process_deferred_actions()
1637 /* Execute a list of actions against 'skb'. */
1638 int ovs_execute_actions(struct datapath *dp, struct sk_buff *skb, in ovs_execute_actions() argument
1648 ovs_kfree_skb_reason(skb, OVS_DROP_RECURSION_LIMIT); in ovs_execute_actions()
1653 OVS_CB(skb)->acts_origlen = acts->orig_len; in ovs_execute_actions()
1654 err = do_execute_actions(dp, skb, key, in ovs_execute_actions()