i40e: fix SCTP flow director
[dpdk.git] / drivers / net / i40e / i40e_fdir.c
index 66e5961..8208273 100644 (file)
@@ -822,6 +822,15 @@ i40e_fdir_construct_pkt(struct i40e_pf *pf,
                sctp = (struct sctp_hdr *)(raw_pkt + sizeof(struct ether_hdr) +
                                           sizeof(struct ipv4_hdr));
                payload = (unsigned char *)sctp + sizeof(struct sctp_hdr);
+#ifdef RTE_NEXT_ABI
+               /*
+                * The source and destination fields in the transmitted packet
+                * need to be presented in a reversed order with respect
+                * to the expected received packets.
+                */
+               sctp->src_port = fdir_input->flow.sctp4_flow.dst_port;
+               sctp->dst_port = fdir_input->flow.sctp4_flow.src_port;
+#endif
                sctp->tag = fdir_input->flow.sctp4_flow.verify_tag;
                break;
 
@@ -864,6 +873,15 @@ i40e_fdir_construct_pkt(struct i40e_pf *pf,
                sctp = (struct sctp_hdr *)(raw_pkt + sizeof(struct ether_hdr) +
                                           sizeof(struct ipv6_hdr));
                payload = (unsigned char *)sctp + sizeof(struct sctp_hdr);
+#ifdef RTE_NEXT_ABI
+               /*
+                * The source and destination fields in the transmitted packet
+                * need to be presented in a reversed order with respect
+                * to the expected received packets.
+                */
+               sctp->src_port = fdir_input->flow.sctp6_flow.dst_port;
+               sctp->dst_port = fdir_input->flow.sctp6_flow.src_port;
+#endif
                sctp->tag = fdir_input->flow.sctp6_flow.verify_tag;
                break;