]> git.droids-corp.org - dpdk.git/blobdiff - drivers/net/iavf/iavf_fdir.c
net/iavf: fix GTP-U extension flow
[dpdk.git] / drivers / net / iavf / iavf_fdir.c
index f236260502199d05935b7ef6bb2a07ef1f28fdf5..4789d46ab2ddecbf44d7b68b4869f37a7bf24efa 100644 (file)
@@ -1300,8 +1300,22 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad,
                                                                                 GTPU_DWN, QFI);
                                }
 
-                               rte_memcpy(hdr->buffer, gtp_psc_spec,
-                                       sizeof(*gtp_psc_spec));
+                               /*
+                                * New structure to fix gap between kernel driver and
+                                * rte_gtp_psc_generic_hdr.
+                                */
+                               struct iavf_gtp_psc_spec_hdr {
+                                       uint8_t len;
+                                       uint8_t qfi:6;
+                                       uint8_t type:4;
+                                       uint8_t next;
+                               } psc;
+                               psc.len = gtp_psc_spec->hdr.ext_hdr_len;
+                               psc.qfi = gtp_psc_spec->hdr.qfi;
+                               psc.type = gtp_psc_spec->hdr.type;
+                               psc.next = 0;
+                               rte_memcpy(hdr->buffer, &psc,
+                                       sizeof(struct iavf_gtp_psc_spec_hdr));
                        }
 
                        hdrs->count = ++layer;