net/virtio: add parameter to enable vectorized path
[dpdk.git] / drivers / net / qede / base / ecore_vfpf_if.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright (c) 2016 - 2018 Cavium Inc.
3  * All rights reserved.
4  * www.cavium.com
5  */
6
7 #ifndef __ECORE_VF_PF_IF_H__
8 #define __ECORE_VF_PF_IF_H__
9
10 /* @@@ TBD MichalK this should be HSI? */
11 #define T_ETH_INDIRECTION_TABLE_SIZE 128
12 #define T_ETH_RSS_KEY_SIZE 10 /* @@@ TBD this should be HSI? */
13
14 /***********************************************
15  *
16  * Common definitions for all HVs
17  *
18  **/
19 struct vf_pf_resc_request {
20         u8 num_rxqs;
21         u8 num_txqs;
22         u8 num_sbs;
23         u8 num_mac_filters;
24         u8 num_vlan_filters;
25         u8 num_mc_filters; /* No limit  so superfluous */
26         u8 num_cids;
27         u8 padding;
28 };
29
30 struct hw_sb_info {
31         u16 hw_sb_id;    /* aka absolute igu id, used to ack the sb */
32         u8 sb_qid;      /* used to update DHC for sb */
33         u8 padding[5];
34 };
35
36 /***********************************************
37  *
38  * HW VF-PF channel definitions
39  *
40  * A.K.A VF-PF mailbox
41  *
42  **/
43 #define TLV_BUFFER_SIZE         1024
44
45 /* vf pf channel tlvs */
46 /* general tlv header (used for both vf->pf request and pf->vf response) */
47 struct channel_tlv {
48         u16 type;
49         u16 length;
50 };
51
52 /* header of first vf->pf tlv carries the offset used to calculate response
53  * buffer address
54  */
55 struct vfpf_first_tlv {
56         struct channel_tlv tl;
57         u32 padding;
58         u64 reply_address;
59 };
60
61 /* header of pf->vf tlvs, carries the status of handling the request */
62 struct pfvf_tlv {
63         struct channel_tlv tl;
64         u8 status;
65         u8 padding[3];
66 };
67
68 /* response tlv used for most tlvs */
69 struct pfvf_def_resp_tlv {
70         struct pfvf_tlv hdr;
71 };
72
73 /* used to terminate and pad a tlv list */
74 struct channel_list_end_tlv {
75         struct channel_tlv tl;
76         u8 padding[4];
77 };
78
79 /* Acquire */
80 struct vfpf_acquire_tlv {
81         struct vfpf_first_tlv first_tlv;
82
83         struct vf_pf_vfdev_info {
84 #ifndef LINUX_REMOVE
85         /* First bit was used on 8.7.x and 8.8.x versions, which had different
86          * FWs used but with the same faspath HSI. As this was prior to the
87          * fastpath versioning, wanted to have ability to override fw matching
88          * and allow them to interact.
89          */
90 #endif
91 /* VF pre-FP hsi version */
92 #define VFPF_ACQUIRE_CAP_PRE_FP_HSI     (1 << 0)
93 #define VFPF_ACQUIRE_CAP_100G           (1 << 1) /* VF can support 100g */
94
95         /* A requirement for supporting multi-Tx queues on a single queue-zone,
96          * VF would pass qids as additional information whenever passing queue
97          * references.
98          * TODO - due to the CID limitations in Bar0, VFs currently don't pass
99          * this, and use the legacy CID scheme.
100          */
101 #define VFPF_ACQUIRE_CAP_QUEUE_QIDS     (1 << 2)
102
103         /* The VF is using the physical bar. While this is mostly internal
104          * to the VF, might affect the number of CIDs supported assuming
105          * QUEUE_QIDS is set.
106          */
107 #define VFPF_ACQUIRE_CAP_PHYSICAL_BAR   (1 << 3)
108                 u64 capabilities;
109                 u8 fw_major;
110                 u8 fw_minor;
111                 u8 fw_revision;
112                 u8 fw_engineering;
113                 u32 driver_version;
114                 u16 opaque_fid; /* ME register value */
115                 u8 os_type; /* VFPF_ACQUIRE_OS_* value */
116                 u8 eth_fp_hsi_major;
117                 u8 eth_fp_hsi_minor;
118                 u8 padding[3];
119         } vfdev_info;
120
121         struct vf_pf_resc_request resc_request;
122
123         u64 bulletin_addr;
124         u32 bulletin_size;
125         u32 padding;
126 };
127
128 /* receive side scaling tlv */
129 struct vfpf_vport_update_rss_tlv {
130         struct channel_tlv      tl;
131
132         u8 update_rss_flags;
133         #define VFPF_UPDATE_RSS_CONFIG_FLAG       (1 << 0)
134         #define VFPF_UPDATE_RSS_CAPS_FLAG         (1 << 1)
135         #define VFPF_UPDATE_RSS_IND_TABLE_FLAG    (1 << 2)
136         #define VFPF_UPDATE_RSS_KEY_FLAG          (1 << 3)
137
138         u8 rss_enable;
139         u8 rss_caps;
140         u8 rss_table_size_log; /* The table size is 2 ^ rss_table_size_log */
141         u16 rss_ind_table[T_ETH_INDIRECTION_TABLE_SIZE];
142         u32 rss_key[T_ETH_RSS_KEY_SIZE];
143 };
144
145 struct pfvf_storm_stats {
146         u32 address;
147         u32 len;
148 };
149
150 struct pfvf_stats_info {
151         struct pfvf_storm_stats mstats;
152         struct pfvf_storm_stats pstats;
153         struct pfvf_storm_stats tstats;
154         struct pfvf_storm_stats ustats;
155 };
156
157 /* acquire response tlv - carries the allocated resources */
158 struct pfvf_acquire_resp_tlv {
159         struct pfvf_tlv hdr;
160
161         struct pf_vf_pfdev_info {
162                 u32 chip_num;
163                 u32 mfw_ver;
164
165                 u16 fw_major;
166                 u16 fw_minor;
167                 u16 fw_rev;
168                 u16 fw_eng;
169
170                 u64 capabilities;
171 #define PFVF_ACQUIRE_CAP_DEFAULT_UNTAGGED       (1 << 0)
172 #define PFVF_ACQUIRE_CAP_100G                   (1 << 1) /* If set, 100g PF */
173 /* There are old PF versions where the PF might mistakenly override the sanity
174  * mechanism [version-based] and allow a VF that can't be supported to pass
175  * the acquisition phase.
176  * To overcome this, PFs now indicate that they're past that point and the new
177  * VFs would fail probe on the older PFs that fail to do so.
178  */
179 #ifndef LINUX_REMOVE
180 /* Said bug was in quest/serpens; Can't be certain no official release included
181  * the bug since the fix arrived very late in the programs.
182  */
183 #endif
184 #define PFVF_ACQUIRE_CAP_POST_FW_OVERRIDE       (1 << 2)
185
186         /* PF expects queues to be received with additional qids */
187 #define PFVF_ACQUIRE_CAP_QUEUE_QIDS             (1 << 3)
188
189                 u16 db_size;
190                 u8  indices_per_sb;
191                 u8 os_type;
192
193                 /* These should match the PF's ecore_dev values */
194                 u16 chip_rev;
195                 u8 dev_type;
196
197                 /* Doorbell bar size configured in HW: log(size) or 0 */
198                 u8 bar_size;
199
200                 struct pfvf_stats_info stats_info;
201
202                 u8 port_mac[ETH_ALEN];
203
204                 /* It's possible PF had to configure an older fastpath HSI
205                  * [in case VF is newer than PF]. This is communicated back
206                  * to the VF. It can also be used in case of error due to
207                  * non-matching versions to shed light in VF about failure.
208                  */
209                 u8 major_fp_hsi;
210                 u8 minor_fp_hsi;
211         } pfdev_info;
212
213         struct pf_vf_resc {
214                 /* in case of status NO_RESOURCE in message hdr, pf will fill
215                  * this struct with suggested amount of resources for next
216                  * acquire request
217                  */
218                 #define PFVF_MAX_QUEUES_PER_VF         16
219                 #define PFVF_MAX_SBS_PER_VF            16
220                 struct hw_sb_info hw_sbs[PFVF_MAX_SBS_PER_VF];
221                 u8      hw_qid[PFVF_MAX_QUEUES_PER_VF];
222                 u8      cid[PFVF_MAX_QUEUES_PER_VF];
223
224                 u8      num_rxqs;
225                 u8      num_txqs;
226                 u8      num_sbs;
227                 u8      num_mac_filters;
228                 u8      num_vlan_filters;
229                 u8      num_mc_filters;
230                 u8      num_cids;
231                 u8      padding;
232         } resc;
233
234         u32 bulletin_size;
235         u32 padding;
236 };
237
238 struct pfvf_start_queue_resp_tlv {
239         struct pfvf_tlv hdr;
240         u32 offset; /* offset to consumer/producer of queue */
241         u8 padding[4];
242 };
243
244 /* Extended queue information - additional index for reference inside qzone.
245  * If commmunicated between VF/PF, each TLV relating to queues should be
246  * extended by one such [or have a future base TLV that already contains info].
247  */
248 struct vfpf_qid_tlv {
249         struct channel_tlv      tl;
250         u8                      qid;
251         u8                      padding[3];
252 };
253
254 /* Soft FLR req */
255 struct vfpf_soft_flr_tlv {
256         struct vfpf_first_tlv first_tlv;
257         u32 reserved1;
258         u32 reserved2;
259 };
260
261 /* Setup Queue */
262 struct vfpf_start_rxq_tlv {
263         struct vfpf_first_tlv   first_tlv;
264
265         /* physical addresses */
266         u64             rxq_addr;
267         u64             deprecated_sge_addr;
268         u64             cqe_pbl_addr;
269
270         u16                     cqe_pbl_size;
271         u16                     hw_sb;
272         u16                     rx_qid;
273         u16                     hc_rate; /* desired interrupts per sec. */
274
275         u16                     bd_max_bytes;
276         u16                     stat_id;
277         u8                      sb_index;
278         u8                      padding[3];
279
280 };
281
282 struct vfpf_start_txq_tlv {
283         struct vfpf_first_tlv   first_tlv;
284
285         /* physical addresses */
286         u64             pbl_addr;
287         u16                     pbl_size;
288         u16                     stat_id;
289         u16                     tx_qid;
290         u16                     hw_sb;
291
292         u32                     flags; /* VFPF_QUEUE_FLG_X flags */
293         u16                     hc_rate; /* desired interrupts per sec. */
294         u8                      sb_index;
295         u8                      padding[3];
296 };
297
298 /* Stop RX Queue */
299 struct vfpf_stop_rxqs_tlv {
300         struct vfpf_first_tlv   first_tlv;
301
302         u16                     rx_qid;
303
304         /* While the API supports multiple Rx-queues on a single TLV
305          * message, in practice older VFs always used it as one [ecore].
306          * And there are PFs [starting with the CHANNEL_TLV_QID] which
307          * would start assuming this is always a '1'. So in practice this
308          * field should be considered deprecated and *Always* set to '1'.
309          */
310         u8                      num_rxqs;
311
312         u8                      cqe_completion;
313         u8                      padding[4];
314 };
315
316 /* Stop TX Queues */
317 struct vfpf_stop_txqs_tlv {
318         struct vfpf_first_tlv   first_tlv;
319
320         u16                     tx_qid;
321
322         /* While the API supports multiple Tx-queues on a single TLV
323          * message, in practice older VFs always used it as one [ecore].
324          * And there are PFs [starting with the CHANNEL_TLV_QID] which
325          * would start assuming this is always a '1'. So in practice this
326          * field should be considered deprecated and *Always* set to '1'.
327          */
328         u8                      num_txqs;
329         u8                      padding[5];
330 };
331
332 struct vfpf_update_rxq_tlv {
333         struct vfpf_first_tlv   first_tlv;
334
335         u64             deprecated_sge_addr[PFVF_MAX_QUEUES_PER_VF];
336
337         u16                     rx_qid;
338         u8                      num_rxqs;
339         u8                      flags;
340         #define VFPF_RXQ_UPD_INIT_SGE_DEPRECATE_FLAG    (1 << 0)
341         #define VFPF_RXQ_UPD_COMPLETE_CQE_FLAG          (1 << 1)
342         #define VFPF_RXQ_UPD_COMPLETE_EVENT_FLAG        (1 << 2)
343
344         u8                      padding[4];
345 };
346
347 /* Set Queue Filters */
348 struct vfpf_q_mac_vlan_filter {
349         u32 flags;
350         #define VFPF_Q_FILTER_DEST_MAC_VALID    0x01
351         #define VFPF_Q_FILTER_VLAN_TAG_VALID    0x02
352         #define VFPF_Q_FILTER_SET_MAC           0x100   /* set/clear */
353
354         u8  mac[ETH_ALEN];
355         u16 vlan_tag;
356
357         u8      padding[4];
358 };
359
360 /* Start a vport */
361 struct vfpf_vport_start_tlv {
362         struct vfpf_first_tlv   first_tlv;
363
364         u64             sb_addr[PFVF_MAX_SBS_PER_VF];
365
366         u32                     tpa_mode;
367         u16                     dep1;
368         u16                     mtu;
369
370         u8                      vport_id;
371         u8                      inner_vlan_removal;
372
373         u8                      only_untagged;
374         u8                      max_buffers_per_cqe;
375
376         u8                      padding[4];
377 };
378
379 /* Extended tlvs - need to add rss, mcast, accept mode tlvs */
380 struct vfpf_vport_update_activate_tlv {
381         struct channel_tlv      tl;
382         u8                      update_rx;
383         u8                      update_tx;
384         u8                      active_rx;
385         u8                      active_tx;
386 };
387
388 struct vfpf_vport_update_tx_switch_tlv {
389         struct channel_tlv      tl;
390         u8                      tx_switching;
391         u8                      padding[3];
392 };
393
394 struct vfpf_vport_update_vlan_strip_tlv {
395         struct channel_tlv      tl;
396         u8                      remove_vlan;
397         u8                      padding[3];
398 };
399
400 struct vfpf_vport_update_mcast_bin_tlv {
401         struct channel_tlv      tl;
402         u8                      padding[4];
403
404         /* This was a mistake; There are only 256 approx bins,
405          * and in HSI they're divided into 32-bit values.
406          * As old VFs used to set-bit to the values on its side,
407          * the upper half of the array is never expected to contain any data.
408          */
409         u64             bins[4];
410         u64             obsolete_bins[4];
411 };
412
413 struct vfpf_vport_update_accept_param_tlv {
414         struct channel_tlv tl;
415         u8      update_rx_mode;
416         u8      update_tx_mode;
417         u8      rx_accept_filter;
418         u8      tx_accept_filter;
419 };
420
421 struct vfpf_vport_update_accept_any_vlan_tlv {
422         struct channel_tlv tl;
423         u8 update_accept_any_vlan_flg;
424         u8 accept_any_vlan;
425
426         u8 padding[2];
427 };
428
429 struct vfpf_vport_update_sge_tpa_tlv {
430         struct channel_tlv      tl;
431
432         u16                     sge_tpa_flags;
433         #define VFPF_TPA_IPV4_EN_FLAG        (1 << 0)
434         #define VFPF_TPA_IPV6_EN_FLAG        (1 << 1)
435         #define VFPF_TPA_PKT_SPLIT_FLAG      (1 << 2)
436         #define VFPF_TPA_HDR_DATA_SPLIT_FLAG (1 << 3)
437         #define VFPF_TPA_GRO_CONSIST_FLAG    (1 << 4)
438         #define VFPF_TPA_TUNN_IPV4_EN_FLAG   (1 << 5)
439         #define VFPF_TPA_TUNN_IPV6_EN_FLAG   (1 << 6)
440
441         u8                      update_sge_tpa_flags;
442         #define VFPF_UPDATE_SGE_DEPRECATED_FLAG    (1 << 0)
443         #define VFPF_UPDATE_TPA_EN_FLAG    (1 << 1)
444         #define VFPF_UPDATE_TPA_PARAM_FLAG (1 << 2)
445
446         u8                      max_buffers_per_cqe;
447
448         u16                     deprecated_sge_buff_size;
449         u16                     tpa_max_size;
450         u16                     tpa_min_size_to_start;
451         u16                     tpa_min_size_to_cont;
452
453         u8                      tpa_max_aggs_num;
454         u8                      padding[7];
455
456 };
457
458 /* Primary tlv as a header for various extended tlvs for
459  * various functionalities in vport update ramrod.
460  */
461 struct vfpf_vport_update_tlv {
462         struct vfpf_first_tlv first_tlv;
463 };
464
465 struct vfpf_ucast_filter_tlv {
466         struct vfpf_first_tlv   first_tlv;
467
468         u8                      opcode;
469         u8                      type;
470
471         u8                      mac[ETH_ALEN];
472
473         u16                     vlan;
474         u16                     padding[3];
475 };
476
477 /* tunnel update param tlv */
478 struct vfpf_update_tunn_param_tlv {
479         struct vfpf_first_tlv   first_tlv;
480
481         u8                      tun_mode_update_mask;
482         u8                      tunn_mode;
483         u8                      update_tun_cls;
484         u8                      vxlan_clss;
485         u8                      l2gre_clss;
486         u8                      ipgre_clss;
487         u8                      l2geneve_clss;
488         u8                      ipgeneve_clss;
489         u8                      update_geneve_port;
490         u8                      update_vxlan_port;
491         u16                     geneve_port;
492         u16                     vxlan_port;
493         u8                      padding[2];
494 };
495
496 struct pfvf_update_tunn_param_tlv {
497         struct pfvf_tlv hdr;
498
499         u16                     tunn_feature_mask;
500         u8                      vxlan_mode;
501         u8                      l2geneve_mode;
502         u8                      ipgeneve_mode;
503         u8                      l2gre_mode;
504         u8                      ipgre_mode;
505         u8                      vxlan_clss;
506         u8                      l2gre_clss;
507         u8                      ipgre_clss;
508         u8                      l2geneve_clss;
509         u8                      ipgeneve_clss;
510         u16                     vxlan_udp_port;
511         u16                     geneve_udp_port;
512 };
513
514 struct tlv_buffer_size {
515         u8 tlv_buffer[TLV_BUFFER_SIZE];
516 };
517
518 struct vfpf_update_coalesce {
519         struct vfpf_first_tlv first_tlv;
520         u16 rx_coal;
521         u16 tx_coal;
522         u16 qid;
523         u8 padding[2];
524 };
525
526 struct vfpf_read_coal_req_tlv {
527         struct vfpf_first_tlv first_tlv;
528         u16 qid;
529         u8 is_rx;
530         u8 padding[5];
531 };
532
533 struct pfvf_read_coal_resp_tlv {
534         struct pfvf_tlv hdr;
535         u16 coal;
536         u8 padding[6];
537 };
538
539 struct vfpf_bulletin_update_mac_tlv {
540         struct vfpf_first_tlv first_tlv;
541         u8 mac[ETH_ALEN];
542         u8 padding[2];
543 };
544
545 struct vfpf_update_mtu_tlv {
546         struct vfpf_first_tlv first_tlv;
547         u16 mtu;
548         u8 padding[6];
549 };
550
551 union vfpf_tlvs {
552         struct vfpf_first_tlv                   first_tlv;
553         struct vfpf_acquire_tlv                 acquire;
554         struct vfpf_start_rxq_tlv               start_rxq;
555         struct vfpf_start_txq_tlv               start_txq;
556         struct vfpf_stop_rxqs_tlv               stop_rxqs;
557         struct vfpf_stop_txqs_tlv               stop_txqs;
558         struct vfpf_update_rxq_tlv              update_rxq;
559         struct vfpf_vport_start_tlv             start_vport;
560         struct vfpf_vport_update_tlv            vport_update;
561         struct vfpf_ucast_filter_tlv            ucast_filter;
562         struct vfpf_update_tunn_param_tlv       tunn_param_update;
563         struct vfpf_update_coalesce             update_coalesce;
564         struct vfpf_read_coal_req_tlv           read_coal_req;
565         struct vfpf_bulletin_update_mac_tlv     bulletin_update_mac;
566         struct vfpf_update_mtu_tlv              update_mtu;
567         struct vfpf_soft_flr_tlv                soft_flr;
568         struct tlv_buffer_size                  tlv_buf_size;
569 };
570
571 union pfvf_tlvs {
572         struct pfvf_def_resp_tlv                default_resp;
573         struct pfvf_acquire_resp_tlv            acquire_resp;
574         struct tlv_buffer_size                  tlv_buf_size;
575         struct pfvf_start_queue_resp_tlv        queue_start;
576         struct pfvf_update_tunn_param_tlv       tunn_param_resp;
577         struct pfvf_read_coal_resp_tlv          read_coal_resp;
578 };
579
580 /* This is a structure which is allocated in the VF, which the PF may update
581  * when it deems it necessary to do so. The bulletin board is sampled
582  * periodically by the VF. A copy per VF is maintained in the PF (to prevent
583  * loss of data upon multiple updates (or the need for read modify write)).
584  */
585 enum ecore_bulletin_bit {
586         /* Alert the VF that a forced MAC was set by the PF */
587         MAC_ADDR_FORCED = 0,
588
589         /* The VF should not access the vfpf channel */
590         VFPF_CHANNEL_INVALID = 1,
591
592         /* Alert the VF that a forced VLAN was set by the PF */
593         VLAN_ADDR_FORCED = 2,
594
595         /* Indicate that `default_only_untagged' contains actual data */
596         VFPF_BULLETIN_UNTAGGED_DEFAULT = 3,
597         VFPF_BULLETIN_UNTAGGED_DEFAULT_FORCED = 4,
598
599         /* Alert the VF that suggested mac was sent by the PF.
600          * MAC_ADDR will be disabled in case MAC_ADDR_FORCED is set
601          */
602         VFPF_BULLETIN_MAC_ADDR = 5
603 };
604
605 struct ecore_bulletin_content {
606         /* crc of structure to ensure is not in mid-update */
607         u32 crc;
608
609         u32 version;
610
611         /* bitmap indicating which fields hold valid values */
612         u64 valid_bitmap;
613
614         /* used for MAC_ADDR or MAC_ADDR_FORCED */
615         u8 mac[ETH_ALEN];
616
617         /* If valid, 1 => only untagged Rx if no vlan is configured */
618         u8 default_only_untagged;
619         u8 padding;
620
621         /* The following is a 'copy' of ecore_mcp_link_state,
622          * ecore_mcp_link_params and ecore_mcp_link_capabilities. Since it's
623          * possible the structs will increase further along the road we cannot
624          * have it here; Instead we need to have all of its fields.
625          */
626         u8 req_autoneg;
627         u8 req_autoneg_pause;
628         u8 req_forced_rx;
629         u8 req_forced_tx;
630         u8 padding2[4];
631
632         u32 req_adv_speed;
633         u32 req_forced_speed;
634         u32 req_loopback;
635         u32 padding3;
636
637         u8 link_up;
638         u8 full_duplex;
639         u8 autoneg;
640         u8 autoneg_complete;
641         u8 parallel_detection;
642         u8 pfc_enabled;
643         u8 partner_tx_flow_ctrl_en;
644         u8 partner_rx_flow_ctrl_en;
645
646         u8 partner_adv_pause;
647         u8 sfp_tx_fault;
648         u16 vxlan_udp_port;
649         u16 geneve_udp_port;
650         u8 padding4[2];
651
652         u32 speed;
653         u32 partner_adv_speed;
654
655         u32 capability_speed;
656
657         /* Forced vlan */
658         u16 pvid;
659         u16 padding5;
660 };
661
662 struct ecore_bulletin {
663         dma_addr_t phys;
664         struct ecore_bulletin_content *p_virt;
665         u32 size;
666 };
667
668 enum {
669 /*!!!!! Make sure to update STRINGS structure accordingly !!!!!*/
670
671         CHANNEL_TLV_NONE, /* ends tlv sequence */
672         CHANNEL_TLV_ACQUIRE,
673         CHANNEL_TLV_VPORT_START,
674         CHANNEL_TLV_VPORT_UPDATE,
675         CHANNEL_TLV_VPORT_TEARDOWN,
676         CHANNEL_TLV_START_RXQ,
677         CHANNEL_TLV_START_TXQ,
678         CHANNEL_TLV_STOP_RXQS,
679         CHANNEL_TLV_STOP_TXQS,
680         CHANNEL_TLV_UPDATE_RXQ,
681         CHANNEL_TLV_INT_CLEANUP,
682         CHANNEL_TLV_CLOSE,
683         CHANNEL_TLV_RELEASE,
684         CHANNEL_TLV_LIST_END,
685         CHANNEL_TLV_UCAST_FILTER,
686         CHANNEL_TLV_VPORT_UPDATE_ACTIVATE,
687         CHANNEL_TLV_VPORT_UPDATE_TX_SWITCH,
688         CHANNEL_TLV_VPORT_UPDATE_VLAN_STRIP,
689         CHANNEL_TLV_VPORT_UPDATE_MCAST,
690         CHANNEL_TLV_VPORT_UPDATE_ACCEPT_PARAM,
691         CHANNEL_TLV_VPORT_UPDATE_RSS,
692         CHANNEL_TLV_VPORT_UPDATE_ACCEPT_ANY_VLAN,
693         CHANNEL_TLV_VPORT_UPDATE_SGE_TPA,
694         CHANNEL_TLV_UPDATE_TUNN_PARAM,
695         CHANNEL_TLV_COALESCE_UPDATE,
696         CHANNEL_TLV_QID,
697         CHANNEL_TLV_COALESCE_READ,
698         CHANNEL_TLV_BULLETIN_UPDATE_MAC,
699         CHANNEL_TLV_UPDATE_MTU,
700         CHANNEL_TLV_RDMA_ACQUIRE,
701         CHANNEL_TLV_RDMA_START,
702         CHANNEL_TLV_RDMA_STOP,
703         CHANNEL_TLV_RDMA_ADD_USER,
704         CHANNEL_TLV_RDMA_REMOVE_USER,
705         CHANNEL_TLV_RDMA_QUERY_COUNTERS,
706         CHANNEL_TLV_RDMA_ALLOC_TID,
707         CHANNEL_TLV_RDMA_REGISTER_TID,
708         CHANNEL_TLV_RDMA_DEREGISTER_TID,
709         CHANNEL_TLV_RDMA_FREE_TID,
710         CHANNEL_TLV_RDMA_CREATE_CQ,
711         CHANNEL_TLV_RDMA_RESIZE_CQ,
712         CHANNEL_TLV_RDMA_DESTROY_CQ,
713         CHANNEL_TLV_RDMA_CREATE_QP,
714         CHANNEL_TLV_RDMA_MODIFY_QP,
715         CHANNEL_TLV_RDMA_QUERY_QP,
716         CHANNEL_TLV_RDMA_DESTROY_QP,
717         CHANNEL_TLV_RDMA_QUERY_PORT,
718         CHANNEL_TLV_RDMA_QUERY_DEVICE,
719         CHANNEL_TLV_RDMA_IWARP_CONNECT,
720         CHANNEL_TLV_RDMA_IWARP_ACCEPT,
721         CHANNEL_TLV_RDMA_IWARP_CREATE_LISTEN,
722         CHANNEL_TLV_RDMA_IWARP_DESTROY_LISTEN,
723         CHANNEL_TLV_RDMA_IWARP_PAUSE_LISTEN,
724         CHANNEL_TLV_RDMA_IWARP_REJECT,
725         CHANNEL_TLV_RDMA_IWARP_SEND_RTR,
726         CHANNEL_TLV_ESTABLISH_LL2_CONN,
727         CHANNEL_TLV_TERMINATE_LL2_CONN,
728         CHANNEL_TLV_ASYNC_EVENT,
729         CHANNEL_TLV_RDMA_CREATE_SRQ,
730         CHANNEL_TLV_RDMA_MODIFY_SRQ,
731         CHANNEL_TLV_RDMA_DESTROY_SRQ,
732         CHANNEL_TLV_SOFT_FLR,
733         CHANNEL_TLV_MAX,
734
735         /* Required for iterating over vport-update tlvs.
736          * Will break in case non-sequential vport-update tlvs.
737          */
738         CHANNEL_TLV_VPORT_UPDATE_MAX = CHANNEL_TLV_VPORT_UPDATE_SGE_TPA + 1,
739
740 /*!!!!! Make sure to update STRINGS structure accordingly !!!!!*/
741 };
742 extern const char *qede_ecore_channel_tlvs_string[];
743
744 #endif /* __ECORE_VF_PF_IF_H__ */