X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fiavf%2Fiavf_fdir.c;h=b63aaca91df89a1e541d7c573fb95cf054ba1aa4;hb=627b3c5a39eb5c5461bdf0f0013817c34be98944;hp=ca72d457fd2fb9b5453fbd37c96bb3ea1f41fd1c;hpb=8cd9b090b46056e15aa3b533cb94c0f1b9ecad79;p=dpdk.git diff --git a/drivers/net/iavf/iavf_fdir.c b/drivers/net/iavf/iavf_fdir.c index ca72d457fd..b63aaca91d 100644 --- a/drivers/net/iavf/iavf_fdir.c +++ b/drivers/net/iavf/iavf_fdir.c @@ -57,7 +57,7 @@ IAVF_INSET_IPV6_HOP_LIMIT) #define IAVF_FDIR_INSET_ETH_IPV6_FRAG_EXT (\ - IAVF_INSET_IPV6_ID) + IAVF_FDIR_INSET_ETH_IPV6 | IAVF_INSET_IPV6_ID) #define IAVF_FDIR_INSET_ETH_IPV6_UDP (\ IAVF_INSET_IPV6_SRC | IAVF_INSET_IPV6_DST | \ @@ -431,7 +431,7 @@ iavf_fdir_parse_action_qregion(struct iavf_adapter *ad, } } - if (rss->queue[rss->queue_num - 1] >= ad->eth_dev->data->nb_rx_queues) { + if (rss->queue[rss->queue_num - 1] >= ad->dev_data->nb_rx_queues) { rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ACTION, act, "Invalid queue region indexes."); @@ -511,7 +511,7 @@ iavf_fdir_parse_action(struct iavf_adapter *ad, filter_action->act_conf.queue.index = act_q->index; if (filter_action->act_conf.queue.index >= - ad->eth_dev->data->nb_rx_queues) { + ad->dev_data->nb_rx_queues) { rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ACTION, actions, "Invalid queue for FDIR."); @@ -1161,17 +1161,28 @@ iavf_fdir_parse_pattern(__rte_unused struct iavf_adapter *ad, if (!gtp_psc_spec) VIRTCHNL_SET_PROTO_HDR_TYPE(hdr, GTPU_EH); - else if ((gtp_psc_mask->qfi) && !(gtp_psc_mask->pdu_type)) + else if ((gtp_psc_mask->hdr.qfi) && + !(gtp_psc_mask->hdr.type)) VIRTCHNL_SET_PROTO_HDR_TYPE(hdr, GTPU_EH); - else if (gtp_psc_spec->pdu_type == IAVF_GTPU_EH_UPLINK) + else if (gtp_psc_spec->hdr.type == IAVF_GTPU_EH_UPLINK) VIRTCHNL_SET_PROTO_HDR_TYPE(hdr, GTPU_EH_PDU_UP); - else if (gtp_psc_spec->pdu_type == IAVF_GTPU_EH_DWLINK) + else if (gtp_psc_spec->hdr.type == IAVF_GTPU_EH_DWLINK) VIRTCHNL_SET_PROTO_HDR_TYPE(hdr, GTPU_EH_PDU_DWN); if (gtp_psc_spec && gtp_psc_mask) { - if (gtp_psc_mask->qfi == UINT8_MAX) { + if (gtp_psc_mask->hdr.qfi == 0x3F) { input_set |= IAVF_INSET_GTPU_QFI; - VIRTCHNL_ADD_PROTO_HDR_FIELD_BIT(hdr, GTPU_EH, QFI); + if (!gtp_psc_mask->hdr.type) + VIRTCHNL_ADD_PROTO_HDR_FIELD_BIT(hdr, + GTPU_EH, QFI); + else if (gtp_psc_spec->hdr.type == + IAVF_GTPU_EH_UPLINK) + VIRTCHNL_ADD_PROTO_HDR_FIELD_BIT(hdr, + GTPU_UP, QFI); + else if (gtp_psc_spec->hdr.type == + IAVF_GTPU_EH_DWLINK) + VIRTCHNL_ADD_PROTO_HDR_FIELD_BIT(hdr, + GTPU_DWN, QFI); } rte_memcpy(hdr->buffer, gtp_psc_spec,