i40e: fix SCTP flow director
authorJingjing Wu <jingjing.wu@intel.com>
Tue, 7 Jul 2015 07:58:31 +0000 (15:58 +0800)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Sun, 19 Jul 2015 23:13:17 +0000 (01:13 +0200)
Due to the NIC's firmware update, the input set of sctp flow is changed
to source IP, destination IP, source port, destination port and
Verification-Tag. This patch adds the sport and dport in the programming
packet of flow director.

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
Tested-by: Marvin Liu <yong.liu@intel.com>
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;