Test-Label: iol-testing Test-Status: WARNING http://dpdk.org/patch/119056 _apply patch failure_ Submitter: Chaoyong He Date: Tuesday, October 25 2022 07:59:18 Applied on: CommitID:011c617ca20858ce0ad20625e9d3e4c3d6252047 Apply patch set 119056-119081 failed: Checking patch drivers/net/nfp/nfp_cpp_bridge.c... error: while searching for: struct nfp_cpp *cpp; struct nfp_pf_dev *pf_dev; int sockfd, datafd, op, ret; unlink("/tmp/nfp_cpp"); sockfd = socket(AF_UNIX, SOCK_STREAM, 0); error: patch failed: drivers/net/nfp/nfp_cpp_bridge.c:379 Hunk #2 succeeded at 386 (offset -3 lines). error: while searching for: while (rte_service_runstate_get(pf_dev->cpp_bridge_id) != 0) { datafd = accept(sockfd, NULL, NULL); if (datafd < 0) { RTE_LOG(ERR, PMD, "%s: accept call error (%d)\n", __func__, errno); RTE_LOG(ERR, PMD, "%s: service failed\n", __func__); error: patch failed: drivers/net/nfp/nfp_cpp_bridge.c:415 Applying patch drivers/net/nfp/nfp_cpp_bridge.c with 2 rejects... Rejected hunk #1. Hunk #2 applied cleanly. Rejected hunk #3. diff a/drivers/net/nfp/nfp_cpp_bridge.c b/drivers/net/nfp/nfp_cpp_bridge.c (rejected hunks) @@ -379,6 +379,7 @@ nfp_cpp_bridge_service_func(void *args) struct nfp_cpp *cpp; struct nfp_pf_dev *pf_dev; int sockfd, datafd, op, ret; + struct timeval timeout = {1, 0}; unlink("/tmp/nfp_cpp"); sockfd = socket(AF_UNIX, SOCK_STREAM, 0); @@ -415,6 +418,9 @@ nfp_cpp_bridge_service_func(void *args) while (rte_service_runstate_get(pf_dev->cpp_bridge_id) != 0) { datafd = accept(sockfd, NULL, NULL); if (datafd < 0) { + if (errno == EAGAIN || errno == EWOULDBLOCK) + continue; + RTE_LOG(ERR, PMD, "%s: accept call error (%d)\n", __func__, errno); RTE_LOG(ERR, PMD, "%s: service failed\n", __func__); Checking patch doc/guides/nics/features/nfp.ini... error: while searching for: tcp = Y udp = Y vlan = Y [rte_flow actions] count = Y error: patch failed: doc/guides/nics/features/nfp.ini:35 Checking patch drivers/net/nfp/flower/nfp_flower_cmsg.h... error: while searching for: uint8_t ipv6_dst[16]; }; struct nfp_fl_act_head { uint8_t jump_id; uint8_t len_lw; error: patch failed: drivers/net/nfp/flower/nfp_flower_cmsg.h:324 Checking patch drivers/net/nfp/nfp_flow.c... error: drivers/net/nfp/nfp_flow.c: does not exist in index Applying patch doc/guides/nics/features/nfp.ini with 1 reject... Rejected hunk #1. Applying patch drivers/net/nfp/flower/nfp_flower_cmsg.h with 1 reject... Rejected hunk #1. diff a/doc/guides/nics/features/nfp.ini b/doc/guides/nics/features/nfp.ini (rejected hunks) @@ -35,6 +35,7 @@ sctp = Y tcp = Y udp = Y vlan = Y +vxlan = Y [rte_flow actions] count = Y diff a/drivers/net/nfp/flower/nfp_flower_cmsg.h b/drivers/net/nfp/flower/nfp_flower_cmsg.h (rejected hunks) @@ -324,6 +324,41 @@ struct nfp_flower_ipv6 { uint8_t ipv6_dst[16]; }; +struct nfp_flower_tun_ipv4 { + rte_be32_t src; + rte_be32_t dst; +}; + +struct nfp_flower_tun_ip_ext { + uint8_t tos; + uint8_t ttl; +}; + +/* + * Flow Frame IPv4 UDP TUNNEL --> Tunnel details (5W/20B) + * ----------------------------------------------------------------- + * 3 2 1 + * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv4_addr_src | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv4_addr_dst | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | Reserved | tos | ttl | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | Reserved | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | VNI | Reserved | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ +struct nfp_flower_ipv4_udp_tun { + struct nfp_flower_tun_ipv4 ipv4; + rte_be16_t reserved1; + struct nfp_flower_tun_ip_ext ip_ext; + rte_be32_t reserved2; + rte_be32_t tun_id; +}; + struct nfp_fl_act_head { uint8_t jump_id; uint8_t len_lw; Checking patch drivers/net/nfp/flower/nfp_flower_cmsg.h... error: while searching for: rte_be32_t dst; }; struct nfp_flower_tun_ip_ext { uint8_t tos; uint8_t ttl; error: patch failed: drivers/net/nfp/flower/nfp_flower_cmsg.h:329 error: while searching for: rte_be32_t tun_id; }; struct nfp_fl_act_head { uint8_t jump_id; uint8_t len_lw; error: patch failed: drivers/net/nfp/flower/nfp_flower_cmsg.h:359 Checking patch drivers/net/nfp/nfp_flow.c... error: drivers/net/nfp/nfp_flow.c: does not exist in index Applying patch drivers/net/nfp/flower/nfp_flower_cmsg.h with 2 rejects... Rejected hunk #1. Rejected hunk #2. diff a/drivers/net/nfp/flower/nfp_flower_cmsg.h b/drivers/net/nfp/flower/nfp_flower_cmsg.h (rejected hunks) @@ -329,6 +329,11 @@ struct nfp_flower_tun_ipv4 { rte_be32_t dst; }; +struct nfp_flower_tun_ipv6 { + uint8_t ipv6_src[16]; + uint8_t ipv6_dst[16]; +}; + struct nfp_flower_tun_ip_ext { uint8_t tos; uint8_t ttl; @@ -359,6 +364,43 @@ struct nfp_flower_ipv4_udp_tun { rte_be32_t tun_id; }; +/* + * Flow Frame IPv6 UDP TUNNEL --> Tunnel details (11W/44B) + * ----------------------------------------------------------------- + * 3 2 1 + * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv6_addr_src, 31 - 0 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv6_addr_src, 63 - 32 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv6_addr_src, 95 - 64 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv6_addr_src, 127 - 96 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv6_addr_dst, 31 - 0 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv6_addr_dst, 63 - 32 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv6_addr_dst, 95 - 64 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv6_addr_dst, 127 - 96 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | Reserved | tos | ttl | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | Reserved | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | VNI | Reserved | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ +struct nfp_flower_ipv6_udp_tun { + struct nfp_flower_tun_ipv6 ipv6; + rte_be16_t reserved1; + struct nfp_flower_tun_ip_ext ip_ext; + rte_be32_t reserved2; + rte_be32_t tun_id; +}; + struct nfp_fl_act_head { uint8_t jump_id; uint8_t len_lw; Checking patch drivers/net/nfp/flower/nfp_flower_cmsg.c... Hunk #1 succeeded at 177 (offset -69 lines). Checking patch drivers/net/nfp/flower/nfp_flower_cmsg.h... error: while searching for: rte_be16_t mtu; }; /* * NFP_FLOWER_CMSG_TYPE_FLOW_STATS * Bit 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 error: patch failed: drivers/net/nfp/flower/nfp_flower_cmsg.h:129 error: while searching for: rte_be16_t dst_port; }; int nfp_flower_cmsg_mac_repr(struct nfp_app_fw_flower *app_fw_flower); int nfp_flower_cmsg_repr_reify(struct nfp_app_fw_flower *app_fw_flower, struct nfp_flower_representor *repr); error: patch failed: drivers/net/nfp/flower/nfp_flower_cmsg.h:574 error: while searching for: struct rte_flow *flow); int nfp_flower_cmsg_flow_add(struct nfp_app_fw_flower *app_fw_flower, struct rte_flow *flow); #endif /* _NFP_CMSG_H_ */ error: patch failed: drivers/net/nfp/flower/nfp_flower_cmsg.h:583 Checking patch drivers/net/nfp/nfp_flow.c... error: drivers/net/nfp/nfp_flow.c: does not exist in index Checking patch drivers/net/nfp/nfp_flow.h... error: drivers/net/nfp/nfp_flow.h: does not exist in index Applied patch drivers/net/nfp/flower/nfp_flower_cmsg.c cleanly. Applying patch drivers/net/nfp/flower/nfp_flower_cmsg.h with 3 rejects... Rejected hunk #1. Rejected hunk #2. Rejected hunk #3. diff a/drivers/net/nfp/flower/nfp_flower_cmsg.h b/drivers/net/nfp/flower/nfp_flower_cmsg.h (rejected hunks) @@ -129,6 +129,36 @@ struct nfp_flower_cmsg_port_mod { rte_be16_t mtu; }; +struct nfp_flower_tun_neigh { + uint8_t dst_mac[RTE_ETHER_ADDR_LEN]; + uint8_t src_mac[RTE_ETHER_ADDR_LEN]; + rte_be32_t port_id; +}; + +/* + * NFP_FLOWER_CMSG_TYPE_TUN_NEIGH_V4 + * Bit 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 + * -----\ 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +---------------------------------------------------------------+ + * 0 | DST_IPV4 | + * +---------------------------------------------------------------+ + * 1 | SRC_IPV4 | + * +---------------------------------------------------------------+ + * 2 | DST_MAC_B5_B4_B3_B2 | + * +-------------------------------+-------------------------------+ + * 3 | DST_MAC_B1_B0 | SRC_MAC_B5_B4 | + * +-------------------------------+-------------------------------+ + * 4 | SRC_MAC_B3_B2_B1_B0 | + * +---------------------------------------------------------------+ + * 5 | Egress Port (NFP internal) | + * +---------------------------------------------------------------+ + */ +struct nfp_flower_cmsg_tun_neigh_v4 { + rte_be32_t dst_ipv4; + rte_be32_t src_ipv4; + struct nfp_flower_tun_neigh common; +}; + /* * NFP_FLOWER_CMSG_TYPE_FLOW_STATS * Bit 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 @@ -574,6 +604,67 @@ struct nfp_fl_act_set_tport { rte_be16_t dst_port; }; +/* + * Pre-tunnel + * 3 2 1 + * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | - | opcode | |jump_id| - |M| - |V| + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv6_daddr_127_96 / ipv4_daddr | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv6_daddr_95_64 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv6_daddr_63_32 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv6_daddr_31_0 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ +struct nfp_fl_act_pre_tun { + struct nfp_fl_act_head head; + rte_be16_t flags; + union { + rte_be32_t ipv4_dst; + uint8_t ipv6_dst[16]; + }; +}; + +/* + * Set tunnel + * 3 2 1 + * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | res | opcode | res | len_lw| reserved | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | tun_id0 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | tun_id1 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | reserved | type |r| idx | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv4_flags | ttl | tos | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | reserved_cvs1 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | reserved_cvs2 | reserved_cvs3 | + * | var_flags | var_np | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ +struct nfp_fl_act_set_tun { + struct nfp_fl_act_head head; + rte_be16_t reserved; + rte_be64_t tun_id; + rte_be32_t tun_type_index; + rte_be16_t tun_flags; + uint8_t ttl; + uint8_t tos; + rte_be16_t outer_vlan_tpid; + rte_be16_t outer_vlan_tci; + uint8_t tun_len; /* Only valid for NFP_FL_TUNNEL_GENEVE */ + uint8_t reserved2; + rte_be16_t tun_proto; /* Only valid for NFP_FL_TUNNEL_GENEVE */ +} __rte_packed; + int nfp_flower_cmsg_mac_repr(struct nfp_app_fw_flower *app_fw_flower); int nfp_flower_cmsg_repr_reify(struct nfp_app_fw_flower *app_fw_flower, struct nfp_flower_representor *repr); @@ -583,5 +674,7 @@ int nfp_flower_cmsg_flow_delete(struct nfp_app_fw_flower *app_fw_flower, struct rte_flow *flow); int nfp_flower_cmsg_flow_add(struct nfp_app_fw_flower *app_fw_flower, struct rte_flow *flow); +int nfp_flower_cmsg_tun_neigh_v4_rule(struct nfp_app_fw_flower *app_fw_flower, + struct nfp_flower_cmsg_tun_neigh_v4 *payload); #endif /* _NFP_CMSG_H_ */ Checking patch drivers/net/nfp/flower/nfp_flower_cmsg.c... error: drivers/net/nfp/flower/nfp_flower_cmsg.c: does not match index Checking patch drivers/net/nfp/flower/nfp_flower_cmsg.h... error: while searching for: struct nfp_flower_tun_neigh common; }; /* * NFP_FLOWER_CMSG_TYPE_FLOW_STATS * Bit 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 error: patch failed: drivers/net/nfp/flower/nfp_flower_cmsg.h:159 error: while searching for: }; }; /* * Set tunnel * 3 2 1 error: patch failed: drivers/net/nfp/flower/nfp_flower_cmsg.h:629 error: while searching for: struct rte_flow *flow); int nfp_flower_cmsg_tun_neigh_v4_rule(struct nfp_app_fw_flower *app_fw_flower, struct nfp_flower_cmsg_tun_neigh_v4 *payload); #endif /* _NFP_CMSG_H_ */ error: patch failed: drivers/net/nfp/flower/nfp_flower_cmsg.h:676 Checking patch drivers/net/nfp/nfp_flow.c... error: drivers/net/nfp/nfp_flow.c: does not exist in index Applying patch drivers/net/nfp/flower/nfp_flower_cmsg.h with 3 rejects... Rejected hunk #1. Rejected hunk #2. Rejected hunk #3. diff a/drivers/net/nfp/flower/nfp_flower_cmsg.h b/drivers/net/nfp/flower/nfp_flower_cmsg.h (rejected hunks) @@ -159,6 +159,42 @@ struct nfp_flower_cmsg_tun_neigh_v4 { struct nfp_flower_tun_neigh common; }; +/* + * NFP_FLOWER_CMSG_TYPE_TUN_NEIGH_V6 + * Bit 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 + * -----\ 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +---------------------------------------------------------------+ + * 0 | DST_IPV6 [0] | + * +---------------------------------------------------------------+ + * 1 | DST_IPV6 [1] | + * +---------------------------------------------------------------+ + * 2 | DST_IPV6 [2] | + * +---------------------------------------------------------------+ + * 3 | DST_IPV6 [3] | + * +---------------------------------------------------------------+ + * 4 | SRC_IPV6 [0] | + * +---------------------------------------------------------------+ + * 5 | SRC_IPV6 [1] | + * +---------------------------------------------------------------+ + * 6 | SRC_IPV6 [2] | + * +---------------------------------------------------------------+ + * 7 | SRC_IPV6 [3] | + * +---------------------------------------------------------------+ + * 8 | DST_MAC_B5_B4_B3_B2 | + * +-------------------------------+-------------------------------+ + * 9 | DST_MAC_B1_B0 | SRC_MAC_B5_B4 | + * +-------------------------------+-------------------------------+ + * 10 | SRC_MAC_B3_B2_B1_B0 | + * +---------------+---------------+---------------+---------------+ + * 11 | Egress Port (NFP internal) | + * +---------------------------------------------------------------+ + */ +struct nfp_flower_cmsg_tun_neigh_v6 { + uint8_t dst_ipv6[16]; + uint8_t src_ipv6[16]; + struct nfp_flower_tun_neigh common; +}; + /* * NFP_FLOWER_CMSG_TYPE_FLOW_STATS * Bit 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 @@ -629,6 +665,8 @@ struct nfp_fl_act_pre_tun { }; }; +#define NFP_FL_PRE_TUN_IPV6 (1 << 0) + /* * Set tunnel * 3 2 1 @@ -676,5 +714,7 @@ int nfp_flower_cmsg_flow_add(struct nfp_app_fw_flower *app_fw_flower, struct rte_flow *flow); int nfp_flower_cmsg_tun_neigh_v4_rule(struct nfp_app_fw_flower *app_fw_flower, struct nfp_flower_cmsg_tun_neigh_v4 *payload); +int nfp_flower_cmsg_tun_neigh_v6_rule(struct nfp_app_fw_flower *app_fw_flower, + struct nfp_flower_cmsg_tun_neigh_v6 *payload); #endif /* _NFP_CMSG_H_ */ Checking patch doc/guides/nics/features/nfp.ini... error: while searching for: set_tp_dst = Y set_tp_src = Y set_ttl = Y error: patch failed: doc/guides/nics/features/nfp.ini:56 Checking patch drivers/net/nfp/nfp_flow.c... error: drivers/net/nfp/nfp_flow.c: does not exist in index Applying patch doc/guides/nics/features/nfp.ini with 1 reject... Rejected hunk #1. diff a/doc/guides/nics/features/nfp.ini b/doc/guides/nics/features/nfp.ini (rejected hunks) @@ -56,3 +56,4 @@ set_mac_src = Y set_tp_dst = Y set_tp_src = Y set_ttl = Y +vxlan_encap = Y Checking patch drivers/net/nfp/nfp_flow.c... error: drivers/net/nfp/nfp_flow.c: does not exist in index Checking patch doc/guides/nics/features/nfp.ini... error: while searching for: [rte_flow actions] count = Y drop = Y of_pop_vlan = Y of_push_vlan = Y of_set_vlan_pcp = Y error: patch failed: doc/guides/nics/features/nfp.ini:40 Checking patch drivers/net/nfp/flower/nfp_flower_cmsg.c... error: drivers/net/nfp/flower/nfp_flower_cmsg.c: does not match index Checking patch drivers/net/nfp/flower/nfp_flower_cmsg.h... error: while searching for: struct nfp_flower_tun_neigh common; }; /* * NFP_FLOWER_CMSG_TYPE_FLOW_STATS * Bit 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 error: patch failed: drivers/net/nfp/flower/nfp_flower_cmsg.h:195 error: while searching for: struct nfp_flower_cmsg_tun_neigh_v4 *payload); int nfp_flower_cmsg_tun_neigh_v6_rule(struct nfp_app_fw_flower *app_fw_flower, struct nfp_flower_cmsg_tun_neigh_v6 *payload); #endif /* _NFP_CMSG_H_ */ error: patch failed: drivers/net/nfp/flower/nfp_flower_cmsg.h:716 Checking patch drivers/net/nfp/nfp_flow.c... error: drivers/net/nfp/nfp_flow.c: does not exist in index Checking patch drivers/net/nfp/nfp_flow.h... error: drivers/net/nfp/nfp_flow.h: does not exist in index Applying patch doc/guides/nics/features/nfp.ini with 1 reject... Rejected hunk #1. Applying patch drivers/net/nfp/flower/nfp_flower_cmsg.h with 2 rejects... Rejected hunk #1. Rejected hunk #2. diff a/doc/guides/nics/features/nfp.ini b/doc/guides/nics/features/nfp.ini (rejected hunks) @@ -40,6 +40,7 @@ vxlan = Y [rte_flow actions] count = Y drop = Y +jump = Y of_pop_vlan = Y of_push_vlan = Y of_set_vlan_pcp = Y diff a/drivers/net/nfp/flower/nfp_flower_cmsg.h b/drivers/net/nfp/flower/nfp_flower_cmsg.h (rejected hunks) @@ -195,6 +195,91 @@ struct nfp_flower_cmsg_tun_neigh_v6 { struct nfp_flower_tun_neigh common; }; +#define NFP_TUN_PRE_TUN_RULE_DEL (1 << 0) +#define NFP_TUN_PRE_TUN_IDX_BIT (1 << 3) +#define NFP_TUN_PRE_TUN_IPV6_BIT (1 << 7) + +/* + * NFP_FLOWER_CMSG_TYPE_PRE_TUN_RULE + * Bit 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 + * -----\ 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +---------------------------------------------------------------+ + * 0 | FLAGS | + * +---------------------------------------------------------------+ + * 1 | MAC_IDX | VLAN_ID | + * +---------------------------------------------------------------+ + * 2 | HOST_CTX | + * +---------------------------------------------------------------+ + */ +struct nfp_flower_cmsg_pre_tun_rule { + rte_be32_t flags; + rte_be16_t port_idx; + rte_be16_t vlan_tci; + rte_be32_t host_ctx_id; +}; + +#define NFP_TUN_MAC_OFFLOAD_DEL_FLAG 0x2 + +/* + * NFP_FLOWER_CMSG_TYPE_TUN_MAC + * Bit 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 + * -----\ 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * Word +-----------------------+---+-+-+---------------+---------------+ + * 0 | spare |NBI|D|F| Amount of MAC’s in this msg | + * +---------------+-------+---+-+-+---------------+---------------+ + * 1 | Index 0 | MAC[0] | MAC[1] | + * +---------------+---------------+---------------+---------------+ + * 2 | MAC[2] | MAC[3] | MAC[4] | MAC[5] | + * +---------------+---------------+---------------+---------------+ + * 3 | Index 1 | MAC[0] | MAC[1] | + * +---------------+---------------+---------------+---------------+ + * 4 | MAC[2] | MAC[3] | MAC[4] | MAC[5] | + * +---------------+---------------+---------------+---------------+ + * ... + * +---------------+---------------+---------------+---------------+ + * 2N-1 | Index N | MAC[0] | MAC[1] | + * +---------------+---------------+---------------+---------------+ + * 2N | MAC[2] | MAC[3] | MAC[4] | MAC[5] | + * +---------------+---------------+---------------+---------------+ + * + * F: Flush bit. Set if entire table must be flushed. Rest of info in cmsg + * will be ignored. Not implemented. + * D: Delete bit. Set if entry must be deleted instead of added + * NBI: Network Block Interface. Set to 0 + * The amount of MAC’s per control message is limited only by the packet + * buffer size. A 2048B buffer can fit 253 MAC address and a 10240B buffer + * 1277 MAC addresses. + */ +struct nfp_flower_cmsg_tun_mac { + rte_be16_t flags; + rte_be16_t count; /**< Should always be 1 */ + rte_be16_t index; + struct rte_ether_addr addr; +}; + +#define NFP_FL_IPV4_ADDRS_MAX 32 + +/* + * NFP_FLOWER_CMSG_TYPE_TUN_IPS + * Bit 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 + * -----\ 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +---------------------------------------------------------------+ + * 0 | Number of IP Addresses | + * +---------------------------------------------------------------+ + * 1 | IP Address #1 | + * +---------------------------------------------------------------+ + * 2 | IP Address #2 | + * +---------------------------------------------------------------+ + * | ... | + * +---------------------------------------------------------------+ + * 32 | IP Address #32 | + * +---------------------------------------------------------------+ + */ +struct nfp_flower_cmsg_tun_ipv4_addr { + rte_be32_t count; + rte_be32_t ipv4_addr[NFP_FL_IPV4_ADDRS_MAX]; +}; + /* * NFP_FLOWER_CMSG_TYPE_FLOW_STATS * Bit 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 @@ -716,5 +801,14 @@ int nfp_flower_cmsg_tun_neigh_v4_rule(struct nfp_app_fw_flower *app_fw_flower, struct nfp_flower_cmsg_tun_neigh_v4 *payload); int nfp_flower_cmsg_tun_neigh_v6_rule(struct nfp_app_fw_flower *app_fw_flower, struct nfp_flower_cmsg_tun_neigh_v6 *payload); +int nfp_flower_cmsg_tun_off_v4(struct nfp_app_fw_flower *app_fw_flower); +int nfp_flower_cmsg_pre_tunnel_rule(struct nfp_app_fw_flower *app_fw_flower, + struct nfp_fl_rule_metadata *nfp_flow_meta, + uint16_t mac_idx, + bool is_del); +int nfp_flower_cmsg_tun_mac_rule(struct nfp_app_fw_flower *app_fw_flower, + struct rte_ether_addr *mac, + uint16_t mac_idx, + bool is_del); #endif /* _NFP_CMSG_H_ */ Checking patch drivers/net/nfp/flower/nfp_flower_cmsg.c... error: drivers/net/nfp/flower/nfp_flower_cmsg.c: does not match index Checking patch drivers/net/nfp/flower/nfp_flower_cmsg.h... error: while searching for: rte_be32_t ipv4_addr[NFP_FL_IPV4_ADDRS_MAX]; }; /* * NFP_FLOWER_CMSG_TYPE_FLOW_STATS * Bit 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 error: patch failed: drivers/net/nfp/flower/nfp_flower_cmsg.h:280 error: while searching for: int nfp_flower_cmsg_tun_neigh_v6_rule(struct nfp_app_fw_flower *app_fw_flower, struct nfp_flower_cmsg_tun_neigh_v6 *payload); int nfp_flower_cmsg_tun_off_v4(struct nfp_app_fw_flower *app_fw_flower); int nfp_flower_cmsg_pre_tunnel_rule(struct nfp_app_fw_flower *app_fw_flower, struct nfp_fl_rule_metadata *nfp_flow_meta, uint16_t mac_idx, error: patch failed: drivers/net/nfp/flower/nfp_flower_cmsg.h:802 Checking patch drivers/net/nfp/nfp_flow.c... error: drivers/net/nfp/nfp_flow.c: does not exist in index Checking patch drivers/net/nfp/nfp_flow.h... error: drivers/net/nfp/nfp_flow.h: does not exist in index Applying patch drivers/net/nfp/flower/nfp_flower_cmsg.h with 2 rejects... Rejected hunk #1. Rejected hunk #2. diff a/drivers/net/nfp/flower/nfp_flower_cmsg.h b/drivers/net/nfp/flower/nfp_flower_cmsg.h (rejected hunks) @@ -280,6 +280,29 @@ struct nfp_flower_cmsg_tun_ipv4_addr { rte_be32_t ipv4_addr[NFP_FL_IPV4_ADDRS_MAX]; }; +#define NFP_FL_IPV6_ADDRS_MAX 4 + +/* + * NFP_FLOWER_CMSG_TYPE_TUN_IP_V6 + * Bit 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 + * -----\ 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +---------------------------------------------------------------+ + * 0 | Number of IP Addresses | + * +---------------------------------------------------------------+ + * 1 | IP Address1 #1 | + * +---------------------------------------------------------------+ + * 2 | IP Address1 #2 | + * +---------------------------------------------------------------+ + * | ... | + * +---------------------------------------------------------------+ + * 16 | IP Address4 #4 | + * +---------------------------------------------------------------+ + */ +struct nfp_flower_cmsg_tun_ipv6_addr { + rte_be32_t count; + uint8_t ipv6_addr[NFP_FL_IPV6_ADDRS_MAX * 16]; +}; + /* * NFP_FLOWER_CMSG_TYPE_FLOW_STATS * Bit 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 @@ -802,6 +825,7 @@ int nfp_flower_cmsg_tun_neigh_v4_rule(struct nfp_app_fw_flower *app_fw_flower, int nfp_flower_cmsg_tun_neigh_v6_rule(struct nfp_app_fw_flower *app_fw_flower, struct nfp_flower_cmsg_tun_neigh_v6 *payload); int nfp_flower_cmsg_tun_off_v4(struct nfp_app_fw_flower *app_fw_flower); +int nfp_flower_cmsg_tun_off_v6(struct nfp_app_fw_flower *app_fw_flower); int nfp_flower_cmsg_pre_tunnel_rule(struct nfp_app_fw_flower *app_fw_flower, struct nfp_fl_rule_metadata *nfp_flow_meta, uint16_t mac_idx, Checking patch doc/guides/nics/features/nfp.ini... error: while searching for: set_tp_dst = Y set_tp_src = Y set_ttl = Y vxlan_encap = Y error: patch failed: doc/guides/nics/features/nfp.ini:57 Checking patch drivers/net/nfp/nfp_flow.c... error: drivers/net/nfp/nfp_flow.c: does not exist in index Applying patch doc/guides/nics/features/nfp.ini with 1 reject... Rejected hunk #1. diff a/doc/guides/nics/features/nfp.ini b/doc/guides/nics/features/nfp.ini (rejected hunks) @@ -57,4 +57,5 @@ set_mac_src = Y set_tp_dst = Y set_tp_src = Y set_ttl = Y +vxlan_decap = Y vxlan_encap = Y Checking patch drivers/net/nfp/nfp_flow.c... error: drivers/net/nfp/nfp_flow.c: does not exist in index Checking patch doc/guides/nics/features/nfp.ini... error: while searching for: of_push_vlan = Y of_set_vlan_pcp = Y of_set_vlan_vid = Y port_id = Y set_ipv4_dscp = Y set_ipv4_dst = Y error: patch failed: doc/guides/nics/features/nfp.ini:45 Checking patch drivers/net/nfp/nfp_flow.c... error: drivers/net/nfp/nfp_flow.c: does not exist in index Applying patch doc/guides/nics/features/nfp.ini with 1 reject... Rejected hunk #1. diff a/doc/guides/nics/features/nfp.ini b/doc/guides/nics/features/nfp.ini (rejected hunks) @@ -45,6 +45,7 @@ of_pop_vlan = Y of_push_vlan = Y of_set_vlan_pcp = Y of_set_vlan_vid = Y +raw_encap = Y port_id = Y set_ipv4_dscp = Y set_ipv4_dst = Y Checking patch drivers/net/nfp/nfp_flow.c... error: drivers/net/nfp/nfp_flow.c: does not exist in index Checking patch doc/guides/nics/features/nfp.ini... error: while searching for: [rte_flow items] eth = Y ipv4 = Y ipv6 = Y port_id = Y error: patch failed: doc/guides/nics/features/nfp.ini:28 Checking patch drivers/net/nfp/nfp_flow.c... error: drivers/net/nfp/nfp_flow.c: does not exist in index Applying patch doc/guides/nics/features/nfp.ini with 1 reject... Rejected hunk #1. diff a/doc/guides/nics/features/nfp.ini b/doc/guides/nics/features/nfp.ini (rejected hunks) @@ -28,6 +28,7 @@ Usage doc = Y [rte_flow items] eth = Y +geneve = Y ipv4 = Y ipv6 = Y port_id = Y Checking patch drivers/net/nfp/nfp_flow.c... error: drivers/net/nfp/nfp_flow.c: does not exist in index Checking patch doc/guides/nics/features/nfp.ini... error: while searching for: of_push_vlan = Y of_set_vlan_pcp = Y of_set_vlan_vid = Y raw_encap = Y port_id = Y set_ipv4_dscp = Y error: patch failed: doc/guides/nics/features/nfp.ini:46 Checking patch drivers/net/nfp/nfp_flow.c... error: drivers/net/nfp/nfp_flow.c: does not exist in index Applying patch doc/guides/nics/features/nfp.ini with 1 reject... Rejected hunk #1. diff a/doc/guides/nics/features/nfp.ini b/doc/guides/nics/features/nfp.ini (rejected hunks) @@ -46,6 +46,7 @@ of_pop_vlan = Y of_push_vlan = Y of_set_vlan_pcp = Y of_set_vlan_vid = Y +raw_decap = Y raw_encap = Y port_id = Y set_ipv4_dscp = Y Checking patch drivers/net/nfp/nfp_flow.c... error: drivers/net/nfp/nfp_flow.c: does not exist in index Checking patch drivers/net/nfp/nfp_flow.c... error: drivers/net/nfp/nfp_flow.c: does not exist in index Checking patch drivers/net/nfp/nfp_flow.c... error: drivers/net/nfp/nfp_flow.c: does not exist in index Checking patch drivers/net/nfp/flower/nfp_flower_cmsg.h... error: while searching for: rte_be32_t tun_id; }; struct nfp_fl_act_head { uint8_t jump_id; uint8_t len_lw; error: patch failed: drivers/net/nfp/flower/nfp_flower_cmsg.h:575 Checking patch drivers/net/nfp/nfp_flow.c... error: drivers/net/nfp/nfp_flow.c: does not exist in index Checking patch drivers/net/nfp/nfp_flow.h... error: drivers/net/nfp/nfp_flow.h: does not exist in index Applying patch drivers/net/nfp/flower/nfp_flower_cmsg.h with 1 reject... Rejected hunk #1. diff a/drivers/net/nfp/flower/nfp_flower_cmsg.h b/drivers/net/nfp/flower/nfp_flower_cmsg.h (rejected hunks) @@ -575,6 +575,35 @@ struct nfp_flower_ipv6_udp_tun { rte_be32_t tun_id; }; +/* + * Flow Frame GRE TUNNEL --> Tunnel details (6W/24B) + * ----------------------------------------------------------------- + * 3 2 1 + * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv4_addr_src | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv4_addr_dst | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | tun_flags | tos | ttl | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | Reserved | Ethertype | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | Key | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | Reserved | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ +struct nfp_flower_ipv4_gre_tun { + struct nfp_flower_tun_ipv4 ipv4; + rte_be16_t tun_flags; + struct nfp_flower_tun_ip_ext ip_ext; + rte_be16_t reserved1; + rte_be16_t ethertype; + rte_be32_t tun_key; + rte_be32_t reserved2; +}; + struct nfp_fl_act_head { uint8_t jump_id; uint8_t len_lw; Checking patch drivers/net/nfp/flower/nfp_flower_cmsg.h... error: while searching for: rte_be32_t reserved2; }; struct nfp_fl_act_head { uint8_t jump_id; uint8_t len_lw; error: patch failed: drivers/net/nfp/flower/nfp_flower_cmsg.h:604 Checking patch drivers/net/nfp/nfp_flow.c... error: drivers/net/nfp/nfp_flow.c: does not exist in index Applying patch drivers/net/nfp/flower/nfp_flower_cmsg.h with 1 reject... Rejected hunk #1. diff a/drivers/net/nfp/flower/nfp_flower_cmsg.h b/drivers/net/nfp/flower/nfp_flower_cmsg.h (rejected hunks) @@ -604,6 +604,47 @@ struct nfp_flower_ipv4_gre_tun { rte_be32_t reserved2; }; +/* + * Flow Frame GRE TUNNEL V6 --> Tunnel details (12W/48B) + * ----------------------------------------------------------------- + * 3 2 1 + * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv6_addr_src, 31 - 0 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv6_addr_src, 63 - 32 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv6_addr_src, 95 - 64 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv6_addr_src, 127 - 96 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv6_addr_dst, 31 - 0 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv6_addr_dst, 63 - 32 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv6_addr_dst, 95 - 64 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv6_addr_dst, 127 - 96 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | tun_flags | tos | ttl | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | Reserved | Ethertype | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | Key | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | Reserved | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ +struct nfp_flower_ipv6_gre_tun { + struct nfp_flower_tun_ipv6 ipv6; + rte_be16_t tun_flags; + struct nfp_flower_tun_ip_ext ip_ext; + rte_be16_t reserved1; + rte_be16_t ethertype; + rte_be32_t tun_key; + rte_be32_t reserved2; +}; + struct nfp_fl_act_head { uint8_t jump_id; uint8_t len_lw; Checking patch doc/guides/nics/features/nfp.ini... error: while searching for: [rte_flow items] eth = Y geneve = Y ipv4 = Y ipv6 = Y port_id = Y error: patch failed: doc/guides/nics/features/nfp.ini:29 Checking patch drivers/net/nfp/nfp_flow.c... error: drivers/net/nfp/nfp_flow.c: does not exist in index Applying patch doc/guides/nics/features/nfp.ini with 1 reject... Rejected hunk #1. diff a/doc/guides/nics/features/nfp.ini b/doc/guides/nics/features/nfp.ini (rejected hunks) @@ -29,6 +29,8 @@ Usage doc = Y [rte_flow items] eth = Y geneve = Y +gre = Y +gre_key = Y ipv4 = Y ipv6 = Y port_id = Y Checking patch drivers/net/nfp/nfp_flow.c... error: drivers/net/nfp/nfp_flow.c: does not exist in index Checking patch drivers/net/nfp/nfp_flow.c... error: drivers/net/nfp/nfp_flow.c: does not exist in index Checking patch drivers/net/nfp/nfp_flow.c... error: drivers/net/nfp/nfp_flow.c: does not exist in index Checking patch drivers/net/nfp/flower/nfp_flower.c... Hunk #1 succeeded at 1072 (offset -2 lines). Hunk #2 succeeded at 1109 (offset -8 lines). Checking patch drivers/net/nfp/flower/nfp_flower.h... error: while searching for: #include "../nfp_common.h" /* * Flower fallback and ctrl path always adds and removes * 8 bytes of prepended data. Tx descriptors must point error: patch failed: drivers/net/nfp/flower/nfp_flower.h:8 error: while searching for: /* service id of ctrl vnic service */ uint32_t ctrl_vnic_id; struct nfp_flow_priv *flow_priv; }; int nfp_init_app_fw_flower(struct nfp_pf_dev *pf_dev); int nfp_secondary_init_app_fw_flower(struct nfp_cpp *cpp); uint16_t nfp_flower_pf_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, error: patch failed: drivers/net/nfp/flower/nfp_flower.h:57 Checking patch drivers/net/nfp/flower/nfp_flower_cmsg.c... error: drivers/net/nfp/flower/nfp_flower_cmsg.c: does not match index Checking patch drivers/net/nfp/flower/nfp_flower_cmsg.h... error: while searching for: rte_be32_t port_id; }; /* * NFP_FLOWER_CMSG_TYPE_TUN_NEIGH_V4 * Bit 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 error: patch failed: drivers/net/nfp/flower/nfp_flower_cmsg.h:135 error: while searching for: rte_be32_t dst_ipv4; rte_be32_t src_ipv4; struct nfp_flower_tun_neigh common; }; /* error: patch failed: drivers/net/nfp/flower/nfp_flower_cmsg.h:157 error: while searching for: uint8_t dst_ipv6[16]; uint8_t src_ipv6[16]; struct nfp_flower_tun_neigh common; }; #define NFP_TUN_PRE_TUN_RULE_DEL (1 << 0) error: patch failed: drivers/net/nfp/flower/nfp_flower_cmsg.h:193 Checking patch drivers/net/nfp/nfp_flow.c... error: drivers/net/nfp/nfp_flow.c: does not exist in index Applied patch drivers/net/nfp/flower/nfp_flower.c cleanly. Applying patch drivers/net/nfp/flower/nfp_flower.h with 2 rejects... Rejected hunk #1. Rejected hunk #2. Applying patch drivers/net/nfp/flower/nfp_flower_cmsg.h with 3 rejects... Rejected hunk #1. Rejected hunk #2. Rejected hunk #3. diff a/drivers/net/nfp/flower/nfp_flower.h b/drivers/net/nfp/flower/nfp_flower.h (rejected hunks) @@ -8,6 +8,21 @@ #include "../nfp_common.h" +/* Extra features bitmap. */ +#define NFP_FL_FEATS_GENEVE RTE_BIT64(0) +#define NFP_FL_NBI_MTU_SETTING RTE_BIT64(1) +#define NFP_FL_FEATS_GENEVE_OPT RTE_BIT64(2) +#define NFP_FL_FEATS_VLAN_PCP RTE_BIT64(3) +#define NFP_FL_FEATS_VF_RLIM RTE_BIT64(4) +#define NFP_FL_FEATS_FLOW_MOD RTE_BIT64(5) +#define NFP_FL_FEATS_PRE_TUN_RULES RTE_BIT64(6) +#define NFP_FL_FEATS_IPV6_TUN RTE_BIT64(7) +#define NFP_FL_FEATS_VLAN_QINQ RTE_BIT64(8) +#define NFP_FL_FEATS_QOS_PPS RTE_BIT64(9) +#define NFP_FL_FEATS_QOS_METER RTE_BIT64(10) +#define NFP_FL_FEATS_DECAP_V2 RTE_BIT64(11) +#define NFP_FL_FEATS_HOST_ACK RTE_BIT64(31) + /* * Flower fallback and ctrl path always adds and removes * 8 bytes of prepended data. Tx descriptors must point @@ -57,9 +72,18 @@ struct nfp_app_fw_flower { /* service id of ctrl vnic service */ uint32_t ctrl_vnic_id; + /* Flower extra features */ + uint64_t ext_features; + struct nfp_flow_priv *flow_priv; }; +static inline bool +nfp_flower_support_decap_v2(const struct nfp_app_fw_flower *app_fw_flower) +{ + return app_fw_flower->ext_features & NFP_FL_FEATS_DECAP_V2; +} + int nfp_init_app_fw_flower(struct nfp_pf_dev *pf_dev); int nfp_secondary_init_app_fw_flower(struct nfp_cpp *cpp); uint16_t nfp_flower_pf_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, diff a/drivers/net/nfp/flower/nfp_flower_cmsg.h b/drivers/net/nfp/flower/nfp_flower_cmsg.h (rejected hunks) @@ -135,6 +135,21 @@ struct nfp_flower_tun_neigh { rte_be32_t port_id; }; +/* + * Bit 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 + * -----\ 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +---------------------------------------------------------------+ + * 0 | VLAN_TPID | VLAN_ID | + * +---------------------------------------------------------------+ + * 1 | HOST_CTX | + * +---------------------------------------------------------------+ + */ +struct nfp_flower_tun_neigh_ext { + rte_be16_t vlan_tpid; + rte_be16_t vlan_tci; + rte_be32_t host_ctx; +}; + /* * NFP_FLOWER_CMSG_TYPE_TUN_NEIGH_V4 * Bit 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 @@ -157,6 +172,7 @@ struct nfp_flower_cmsg_tun_neigh_v4 { rte_be32_t dst_ipv4; rte_be32_t src_ipv4; struct nfp_flower_tun_neigh common; + struct nfp_flower_tun_neigh_ext ext; }; /* @@ -193,6 +209,7 @@ struct nfp_flower_cmsg_tun_neigh_v6 { uint8_t dst_ipv6[16]; uint8_t src_ipv6[16]; struct nfp_flower_tun_neigh common; + struct nfp_flower_tun_neigh_ext ext; }; #define NFP_TUN_PRE_TUN_RULE_DEL (1 << 0) https://lab.dpdk.org/results/dashboard/patchsets/24175/ UNH-IOL DPDK Community Lab