DPDK  17.05.2
rte_pmd_i40e.h
Go to the documentation of this file.
1 /*-
2  * BSD LICENSE
3  *
4  * Copyright (c) 2017 Intel Corporation. All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  *
10  * * Redistributions of source code must retain the above copyright
11  * notice, this list of conditions and the following disclaimer.
12  * * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in
14  * the documentation and/or other materials provided with the
15  * distribution.
16  * * Neither the name of Intel Corporation nor the names of its
17  * contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 
33 #ifndef _PMD_I40E_H_
34 #define _PMD_I40E_H_
35 
45 #include <rte_ethdev.h>
46 
55 };
56 
61  uint16_t vfid;
62  uint16_t msg_type;
63  uint16_t retval;
64  void *msg;
65  uint16_t msglen;
66 };
67 
72  RTE_PMD_I40E_PKG_OP_UNDEFINED = 0,
74  RTE_PMD_I40E_PKG_OP_MAX = 32
75 };
76 
77 #define RTE_PMD_I40E_DDP_NAME_SIZE 32
78 
84  uint8_t major;
85  uint8_t minor;
86  uint8_t update;
87  uint8_t draft;
88 };
89 
94  uint32_t track_id;
95  struct rte_pmd_i40e_ddp_version version;
96  uint8_t owner;
97  uint8_t reserved[7];
98  uint8_t name[RTE_PMD_I40E_DDP_NAME_SIZE];
99 };
100 
105  uint32_t p_count;
106  struct rte_pmd_i40e_profile_info p_info[1];
107 };
108 
114 #define RTE_PMD_I40E_PTYPE_USER_DEFINE_MASK 0x80000000
115 
116 struct rte_pmd_i40e_ptype_mapping {
117  uint16_t hw_ptype;
118  uint32_t sw_ptype;
119 };
120 
133 int rte_pmd_i40e_ping_vfs(uint8_t port, uint16_t vf);
134 
151  uint16_t vf_id,
152  uint8_t on);
153 
170  uint16_t vf_id,
171  uint8_t on);
172 
187  uint8_t on);
188 
205  uint16_t vf_id,
206  uint8_t on);
207 
224  uint16_t vf_id,
225  uint8_t on);
226 
247 int rte_pmd_i40e_set_vf_mac_addr(uint8_t port, uint16_t vf_id,
248  struct ether_addr *mac_addr);
249 
266 int
267 rte_pmd_i40e_set_vf_vlan_stripq(uint8_t port, uint16_t vf, uint8_t on);
268 
285 int rte_pmd_i40e_set_vf_vlan_insert(uint8_t port, uint16_t vf_id,
286  uint16_t vlan_id);
287 
304 int rte_pmd_i40e_set_vf_broadcast(uint8_t port, uint16_t vf_id,
305  uint8_t on);
306 
323 int rte_pmd_i40e_set_vf_vlan_tag(uint8_t port, uint16_t vf_id, uint8_t on);
324 
344 int rte_pmd_i40e_set_vf_vlan_filter(uint8_t port, uint16_t vlan_id,
345  uint64_t vf_mask, uint8_t on);
346 
369 int rte_pmd_i40e_get_vf_stats(uint8_t port,
370  uint16_t vf_id,
371  struct rte_eth_stats *stats);
372 
386  uint16_t vf_id);
387 
410 int rte_pmd_i40e_set_vf_max_bw(uint8_t port,
411  uint16_t vf_id,
412  uint32_t bw);
413 
436  uint16_t vf_id,
437  uint8_t tc_num,
438  uint8_t *bw_weight);
439 
461  uint16_t vf_id,
462  uint8_t tc_no,
463  uint32_t bw);
464 
478 int rte_pmd_i40e_set_tc_strict_prio(uint8_t port, uint8_t tc_map);
479 
497 int rte_pmd_i40e_process_ddp_package(uint8_t port, uint8_t *buff,
498  uint32_t size,
499  enum rte_pmd_i40e_package_op op);
500 
514 int rte_pmd_i40e_get_ddp_list(uint8_t port, uint8_t *buff, uint32_t size);
515 
534  uint8_t port,
535  struct rte_pmd_i40e_ptype_mapping *mapping_items,
536  uint16_t count,
537  uint8_t exclusive);
538 
547 
565  uint8_t port,
566  struct rte_pmd_i40e_ptype_mapping *mapping_items,
567  uint16_t size,
568  uint16_t *count,
569  uint8_t valid_only);
570 
586  uint32_t target,
587  uint8_t mask,
588  uint32_t pkt_type);
589 
590 #endif /* _PMD_I40E_H_ */