4 * Copyright(c) Broadcom Limited.
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
11 * * Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * * Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in
15 * the documentation and/or other materials provided with the
17 * * Neither the name of Broadcom Corporation nor the names of its
18 * contributors may be used to endorse or promote products derived
19 * from this software without specific prior written permission.
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 #ifndef _HSI_STRUCT_DEF_EXTERNAL_H_
35 #define _HSI_STRUCT_DEF_EXTERNAL_H_
37 /* HW Resource Manager Specification 1.2.0 */
38 #define HWRM_VERSION_MAJOR 1
39 #define HWRM_VERSION_MINOR 2
40 #define HWRM_VERSION_UPDATE 0
43 * Following is the signature for HWRM message field that indicates not
44 * applicable (All F's). Need to cast it the size of the field if needed.
46 #define HWRM_MAX_REQ_LEN (128) /* hwrm_func_buf_rgtr */
47 #define HWRM_MAX_RESP_LEN (176) /* hwrm_func_qstats */
48 #define HWRM_RESP_VALID_KEY 1 /* valid key for HWRM response */
53 #define HWRM_VER_GET (UINT32_C(0x0))
54 #define HWRM_FUNC_QCAPS (UINT32_C(0x15))
55 #define HWRM_QUEUE_QPORTCFG (UINT32_C(0x30))
58 * Note: The Hardware Resource Manager (HWRM) manages various hardware resources
59 * inside the chip. The HWRM is implemented in firmware, and runs on embedded
60 * processors inside the chip. This firmware is vital part of the chip's
61 * hardware. The chip can not be used by driver without it.
64 /* Input (16 bytes) */
67 * This value indicates what type of request this is. The format for the
68 * rest of the command is determined by this field.
73 * This value indicates the what completion ring the request will be
74 * optionally completed on. If the value is -1, then no CR completion
75 * will be generated. Any other value must be a valid CR ring_id value
80 /* This value indicates the command sequence number. */
84 * Target ID of this command. 0x0 - 0xFFF8 - Used for function ids
85 * 0xFFF8 - 0xFFFE - Reserved for internal processors 0xFFFF - HWRM
90 * This is the host address where the response will be written when the
91 * request is complete. This area must be 16B aligned and must be
92 * cleared to zero before the request is made.
95 } __attribute__((packed));
97 /* Output (8 bytes) */
100 * Pass/Fail or error type Note: receiver to verify the in parameters,
101 * and fail the call with an error when appropriate
105 /* This field returns the type of original request. */
108 /* This field provides original sequence number of the command. */
112 * This field is the length of the response in bytes. The last byte of
113 * the response is a valid flag that will read as '1' when the command
114 * has been completely written to memory.
117 } __attribute__((packed));
119 /* hwrm_func_qcaps */
121 * Description: This command returns capabilities of a function. The input FID
122 * value is used to indicate what function is being queried. This allows a
123 * physical function driver to query virtual functions that are children of the
124 * physical function. The output FID value is needed to configure Rings and
125 * MSI-X vectors so their DMA operations appear correctly on the PCI bus.
128 /* Input (24 bytes) */
129 struct hwrm_func_qcaps_input {
131 * This value indicates what type of request this is. The format for the
132 * rest of the command is determined by this field.
137 * This value indicates the what completion ring the request will be
138 * optionally completed on. If the value is -1, then no CR completion
139 * will be generated. Any other value must be a valid CR ring_id value
144 /* This value indicates the command sequence number. */
148 * Target ID of this command. 0x0 - 0xFFF8 - Used for function ids
149 * 0xFFF8 - 0xFFFE - Reserved for internal processors 0xFFFF - HWRM
154 * This is the host address where the response will be written when the
155 * request is complete. This area must be 16B aligned and must be
156 * cleared to zero before the request is made.
161 * Function ID of the function that is being queried. 0xFF... (All Fs)
162 * if the query is for the requesting function.
166 uint16_t unused_0[3];
167 } __attribute__((packed));
169 /* Output (80 bytes) */
170 struct hwrm_func_qcaps_output {
172 * Pass/Fail or error type Note: receiver to verify the in parameters,
173 * and fail the call with an error when appropriate
177 /* This field returns the type of original request. */
180 /* This field provides original sequence number of the command. */
184 * This field is the length of the response in bytes. The last byte of
185 * the response is a valid flag that will read as '1' when the command
186 * has been completely written to memory.
191 * FID value. This value is used to identify operations on the PCI bus
192 * as belonging to a particular PCI function.
197 * Port ID of port that this function is associated with. Valid only for
198 * the PF. 0xFF... (All Fs) if this function is not associated with any
199 * port. 0xFF... (All Fs) if this function is called from a VF.
203 /* If 1, then Push mode is supported on this function. */
204 #define HWRM_FUNC_QCAPS_OUTPUT_FLAGS_PUSH_MODE_SUPPORTED UINT32_C(0x1)
206 * If 1, then the global MSI-X auto-masking is enabled for the device.
208 #define HWRM_FUNC_QCAPS_OUTPUT_FLAGS_GLOBAL_MSIX_AUTOMASKING \
211 * If 1, then the Precision Time Protocol (PTP) processing is supported
212 * on this function. The HWRM should enable PTP on only a single
213 * Physical Function (PF) per port.
215 #define HWRM_FUNC_QCAPS_OUTPUT_FLAGS_PTP_SUPPORTED UINT32_C(0x4)
219 * This value is current MAC address configured for this function. A
220 * value of 00-00-00-00-00-00 indicates no MAC address is currently
223 uint8_t perm_mac_address[6];
226 * The maximum number of RSS/COS contexts that can be allocated to the
229 uint16_t max_rsscos_ctx;
232 * The maximum number of completion rings that can be allocated to the
235 uint16_t max_cmpl_rings;
238 * The maximum number of transmit rings that can be allocated to the
241 uint16_t max_tx_rings;
244 * The maximum number of receive rings that can be allocated to the
247 uint16_t max_rx_rings;
250 * The maximum number of L2 contexts that can be allocated to the
253 uint16_t max_l2_ctxs;
255 /* The maximum number of VNICs that can be allocated to the function. */
259 * The identifier for the first VF enabled on a PF. This is valid only
260 * on the PF with SR-IOV enabled. 0xFF... (All Fs) if this command is
261 * called on a PF with SR-IOV disabled or on a VF.
263 uint16_t first_vf_id;
266 * The maximum number of VFs that can be allocated to the function. This
267 * is valid only on the PF with SR-IOV enabled. 0xFF... (All Fs) if this
268 * command is called on a PF with SR-IOV disabled or on a VF.
273 * The maximum number of statistic contexts that can be allocated to the
276 uint16_t max_stat_ctx;
279 * The maximum number of Encapsulation records that can be offloaded by
282 uint32_t max_encap_records;
285 * The maximum number of decapsulation records that can be offloaded by
288 uint32_t max_decap_records;
291 * The maximum number of Exact Match (EM) flows that can be offloaded by
292 * this function on the TX side.
294 uint32_t max_tx_em_flows;
297 * The maximum number of Wildcard Match (WM) flows that can be offloaded
298 * by this function on the TX side.
300 uint32_t max_tx_wm_flows;
303 * The maximum number of Exact Match (EM) flows that can be offloaded by
304 * this function on the RX side.
306 uint32_t max_rx_em_flows;
309 * The maximum number of Wildcard Match (WM) flows that can be offloaded
310 * by this function on the RX side.
312 uint32_t max_rx_wm_flows;
315 * The maximum number of multicast filters that can be supported by this
316 * function on the RX side.
318 uint32_t max_mcast_filters;
321 * The maximum value of flow_id that can be supported in completion
324 uint32_t max_flow_id;
327 * The maximum number of HW ring groups that can be supported on this
330 uint32_t max_hw_ring_grps;
337 * This field is used in Output records to indicate that the output is
338 * completely written to RAM. This field should be read as '1' to
339 * indicate that the output has been completely written. When writing a
340 * command completion or response to an internal processor, the order of
341 * writes has to be such that this field is written last.
344 } __attribute__((packed));
348 * Description: This function is called by a driver to determine the HWRM
349 * interface version supported by the HWRM firmware, the version of HWRM
350 * firmware implementation, the name of HWRM firmware, the versions of other
351 * embedded firmwares, and the names of other embedded firmwares, etc. Any
352 * interface or firmware version with major = 0, minor = 0, and update = 0 shall
353 * be considered an invalid version.
356 /* Input (24 bytes) */
357 struct hwrm_ver_get_input {
359 * This value indicates what type of request this is. The format for the
360 * rest of the command is determined by this field.
365 * This value indicates the what completion ring the request will be
366 * optionally completed on. If the value is -1, then no CR completion
367 * will be generated. Any other value must be a valid CR ring_id value
372 /* This value indicates the command sequence number. */
376 * Target ID of this command. 0x0 - 0xFFF8 - Used for function ids
377 * 0xFFF8 - 0xFFFE - Reserved for internal processors 0xFFFF - HWRM
382 * This is the host address where the response will be written when the
383 * request is complete. This area must be 16B aligned and must be
384 * cleared to zero before the request is made.
389 * This field represents the major version of HWRM interface
390 * specification supported by the driver HWRM implementation. The
391 * interface major version is intended to change only when non backward
392 * compatible changes are made to the HWRM interface specification.
394 uint8_t hwrm_intf_maj;
397 * This field represents the minor version of HWRM interface
398 * specification supported by the driver HWRM implementation. A change
399 * in interface minor version is used to reflect significant backward
400 * compatible modification to HWRM interface specification. This can be
401 * due to addition or removal of functionality. HWRM interface
402 * specifications with the same major version but different minor
403 * versions are compatible.
405 uint8_t hwrm_intf_min;
408 * This field represents the update version of HWRM interface
409 * specification supported by the driver HWRM implementation. The
410 * interface update version is used to reflect minor changes or bug
411 * fixes to a released HWRM interface specification.
413 uint8_t hwrm_intf_upd;
416 } __attribute__((packed));
418 /* Output (128 bytes) */
419 struct hwrm_ver_get_output {
421 * Pass/Fail or error type Note: receiver to verify the in parameters,
422 * and fail the call with an error when appropriate
426 /* This field returns the type of original request. */
429 /* This field provides original sequence number of the command. */
433 * This field is the length of the response in bytes. The last byte of
434 * the response is a valid flag that will read as '1' when the command
435 * has been completely written to memory.
440 * This field represents the major version of HWRM interface
441 * specification supported by the HWRM implementation. The interface
442 * major version is intended to change only when non backward compatible
443 * changes are made to the HWRM interface specification. A HWRM
444 * implementation that is compliant with this specification shall
445 * provide value of 1 in this field.
447 uint8_t hwrm_intf_maj;
450 * This field represents the minor version of HWRM interface
451 * specification supported by the HWRM implementation. A change in
452 * interface minor version is used to reflect significant backward
453 * compatible modification to HWRM interface specification. This can be
454 * due to addition or removal of functionality. HWRM interface
455 * specifications with the same major version but different minor
456 * versions are compatible. A HWRM implementation that is compliant with
457 * this specification shall provide value of 0 in this field.
459 uint8_t hwrm_intf_min;
462 * This field represents the update version of HWRM interface
463 * specification supported by the HWRM implementation. The interface
464 * update version is used to reflect minor changes or bug fixes to a
465 * released HWRM interface specification. A HWRM implementation that is
466 * compliant with this specification shall provide value of 1 in this
469 uint8_t hwrm_intf_upd;
471 uint8_t hwrm_intf_rsvd;
474 * This field represents the major version of HWRM firmware. A change in
475 * firmware major version represents a major firmware release.
480 * This field represents the minor version of HWRM firmware. A change in
481 * firmware minor version represents significant firmware functionality
487 * This field represents the build version of HWRM firmware. A change in
488 * firmware build version represents bug fixes to a released firmware.
493 * This field is a reserved field. This field can be used to represent
494 * firmware branches or customer specific releases tied to a specific
495 * (major,minor,update) version of the HWRM firmware.
497 uint8_t hwrm_fw_rsvd;
500 * This field represents the major version of mgmt firmware. A change in
501 * major version represents a major release.
506 * This field represents the minor version of mgmt firmware. A change in
507 * minor version represents significant functionality changes.
512 * This field represents the build version of mgmt firmware. A change in
513 * update version represents bug fixes.
518 * This field is a reserved field. This field can be used to represent
519 * firmware branches or customer specific releases tied to a specific
520 * (major,minor,update) version
522 uint8_t mgmt_fw_rsvd;
525 * This field represents the major version of network control firmware.
526 * A change in major version represents a major release.
528 uint8_t netctrl_fw_maj;
531 * This field represents the minor version of network control firmware.
532 * A change in minor version represents significant functionality
535 uint8_t netctrl_fw_min;
538 * This field represents the build version of network control firmware.
539 * A change in update version represents bug fixes.
541 uint8_t netctrl_fw_bld;
544 * This field is a reserved field. This field can be used to represent
545 * firmware branches or customer specific releases tied to a specific
546 * (major,minor,update) version
548 uint8_t netctrl_fw_rsvd;
551 * This field is reserved for future use. The responder should set it to
552 * 0. The requester should ignore this field.
557 * This field represents the major version of RoCE firmware. A change in
558 * major version represents a major release.
563 * This field represents the minor version of RoCE firmware. A change in
564 * minor version represents significant functionality changes.
569 * This field represents the build version of RoCE firmware. A change in
570 * update version represents bug fixes.
575 * This field is a reserved field. This field can be used to represent
576 * firmware branches or customer specific releases tied to a specific
577 * (major,minor,update) version
579 uint8_t roce_fw_rsvd;
582 * This field represents the name of HWRM FW (ASCII chars without NULL
585 char hwrm_fw_name[16];
588 * This field represents the name of mgmt FW (ASCII chars without NULL
591 char mgmt_fw_name[16];
594 * This field represents the name of network control firmware (ASCII
595 * chars without NULL at the end).
597 char netctrl_fw_name[16];
600 * This field is reserved for future use. The responder should set it to
601 * 0. The requester should ignore this field.
603 uint32_t reserved2[4];
606 * This field represents the name of RoCE FW (ASCII chars without NULL
609 char roce_fw_name[16];
611 /* This field returns the chip number. */
614 /* This field returns the revision of chip. */
617 /* This field returns the chip metal number. */
620 /* This field returns the bond id of the chip. */
621 uint8_t chip_bond_id;
624 * This value indicates the type of platform used for chip
628 #define HWRM_VER_GET_OUTPUT_CHIP_PLATFORM_TYPE_ASIC \
630 /* FPGA platform of the chip. */
631 #define HWRM_VER_GET_OUTPUT_CHIP_PLATFORM_TYPE_FPGA \
633 /* Palladium platform of the chip. */
634 #define HWRM_VER_GET_OUTPUT_CHIP_PLATFORM_TYPE_PALLADIUM \
636 uint8_t chip_platform_type;
639 * This field returns the maximum value of request window that is
640 * supported by the HWRM. The request window is mapped into device
641 * address space using MMIO.
643 uint16_t max_req_win_len;
646 * This field returns the maximum value of response buffer in bytes. If
647 * a request specifies the response buffer length that is greater than
648 * this value, then the HWRM should fail it. The value of this field
649 * shall be 4KB or more.
651 uint16_t max_resp_len;
654 * This field returns the default request timeout value in milliseconds.
656 uint16_t def_req_timeout;
663 * This field is used in Output records to indicate that the output is
664 * completely written to RAM. This field should be read as '1' to
665 * indicate that the output has been completely written. When writing a
666 * command completion or response to an internal processor, the order of
667 * writes has to be such that this field is written last.
670 } __attribute__((packed));
672 /* hwrm_queue_qportcfg */
674 * Description: This function is called by a driver to query queue configuration
675 * of a port. # The HWRM shall at least advertise one queue with lossy service
676 * profile. # The driver shall use this command to query queue ids before
677 * configuring or using any queues. # If a service profile is not set for a
678 * queue, then the driver shall not use that queue without configuring a service
679 * profile for it. # If the driver is not allowed to configure service profiles,
680 * then the driver shall only use queues for which service profiles are pre-
684 /* Input (24 bytes) */
685 struct hwrm_queue_qportcfg_input {
687 * This value indicates what type of request this is. The format for the
688 * rest of the command is determined by this field.
693 * This value indicates the what completion ring the request will be
694 * optionally completed on. If the value is -1, then no CR completion
695 * will be generated. Any other value must be a valid CR ring_id value
700 /* This value indicates the command sequence number. */
704 * Target ID of this command. 0x0 - 0xFFF8 - Used for function ids
705 * 0xFFF8 - 0xFFFE - Reserved for internal processors 0xFFFF - HWRM
710 * This is the host address where the response will be written when the
711 * request is complete. This area must be 16B aligned and must be
712 * cleared to zero before the request is made.
717 * Enumeration denoting the RX, TX type of the resource. This
718 * enumeration is used for resources that are similar for both TX and RX
721 #define HWRM_QUEUE_QPORTCFG_INPUT_FLAGS_PATH \
724 #define HWRM_QUEUE_QPORTCFG_INPUT_FLAGS_PATH_TX \
727 #define HWRM_QUEUE_QPORTCFG_INPUT_FLAGS_PATH_RX \
729 #define HWRM_QUEUE_QPORTCFG_INPUT_FLAGS_PATH_LAST \
730 HWRM_QUEUE_QPORTCFG_INPUT_FLAGS_PATH_RX
734 * Port ID of port for which the queue configuration is being queried.
735 * This field is only required when sent by IPC.
740 } __attribute__((packed));
742 /* Output (32 bytes) */
743 struct hwrm_queue_qportcfg_output {
745 * Pass/Fail or error type Note: receiver to verify the in parameters,
746 * and fail the call with an error when appropriate
750 /* This field returns the type of original request. */
753 /* This field provides original sequence number of the command. */
757 * This field is the length of the response in bytes. The last byte of
758 * the response is a valid flag that will read as '1' when the command
759 * has been completely written to memory.
763 /* The maximum number of queues that can be configured. */
764 uint8_t max_configurable_queues;
766 /* The maximum number of lossless queues that can be configured. */
767 uint8_t max_configurable_lossless_queues;
770 * 0 - Not allowed. Non-zero - Allowed. If this value is non-zero, then
771 * the HWRM shall allow the host SW driver to configure queues using
774 uint8_t queue_cfg_allowed;
777 * 0 - Not allowed. Non-zero - Allowed If this value is non-zero, then
778 * the HWRM shall allow the host SW driver to configure queue buffers
779 * using hwrm_queue_buffers_cfg.
781 uint8_t queue_buffers_cfg_allowed;
784 * 0 - Not allowed. Non-zero - Allowed If this value is non-zero, then
785 * the HWRM shall allow the host SW driver to configure PFC using
786 * hwrm_queue_pfcenable_cfg.
788 uint8_t queue_pfcenable_cfg_allowed;
791 * 0 - Not allowed. Non-zero - Allowed If this value is non-zero, then
792 * the HWRM shall allow the host SW driver to configure Priority to CoS
793 * mapping using hwrm_queue_pri2cos_cfg.
795 uint8_t queue_pri2cos_cfg_allowed;
798 * 0 - Not allowed. Non-zero - Allowed If this value is non-zero, then
799 * the HWRM shall allow the host SW driver to configure CoS Bandwidth
800 * configuration using hwrm_queue_cos2bw_cfg.
802 uint8_t queue_cos2bw_cfg_allowed;
804 /* ID of CoS Queue 0. FF - Invalid id */
807 /* This value is applicable to CoS queues only. */
808 /* Lossy (best-effort) */
809 #define HWRM_QUEUE_QPORTCFG_OUTPUT_QUEUE_ID0_SERVICE_PROFILE_LOSSY \
812 #define HWRM_QUEUE_QPORTCFG_OUTPUT_QUEUE_ID0_SERVICE_PROFILE_LOSSLESS \
815 * Set to 0xFF... (All Fs) if there is no service profile
818 #define HWRM_QUEUE_QPORTCFG_OUTPUT_QUEUE_ID0_SERVICE_PROFILE_UNKNOWN \
819 (UINT32_C(0xff) << 0)
820 uint8_t queue_id0_service_profile;
822 /* ID of CoS Queue 1. FF - Invalid id */
824 /* This value is applicable to CoS queues only. */
825 /* Lossy (best-effort) */
826 #define HWRM_QUEUE_QPORTCFG_OUTPUT_QUEUE_ID1_SERVICE_PROFILE_LOSSY \
829 #define HWRM_QUEUE_QPORTCFG_OUTPUT_QUEUE_ID1_SERVICE_PROFILE_LOSSLESS \
832 * Set to 0xFF... (All Fs) if there is no service profile
835 #define HWRM_QUEUE_QPORTCFG_OUTPUT_QUEUE_ID1_SERVICE_PROFILE_UNKNOWN \
836 (UINT32_C(0xff) << 0)
837 uint8_t queue_id1_service_profile;
839 /* ID of CoS Queue 2. FF - Invalid id */
841 /* This value is applicable to CoS queues only. */
842 /* Lossy (best-effort) */
843 #define HWRM_QUEUE_QPORTCFG_OUTPUT_QUEUE_ID2_SERVICE_PROFILE_LOSSY \
846 #define HWRM_QUEUE_QPORTCFG_OUTPUT_QUEUE_ID2_SERVICE_PROFILE_LOSSLESS \
849 * Set to 0xFF... (All Fs) if there is no service profile
852 #define HWRM_QUEUE_QPORTCFG_OUTPUT_QUEUE_ID2_SERVICE_PROFILE_UNKNOWN \
853 (UINT32_C(0xff) << 0)
854 uint8_t queue_id2_service_profile;
856 /* ID of CoS Queue 3. FF - Invalid id */
859 /* This value is applicable to CoS queues only. */
860 /* Lossy (best-effort) */
861 #define HWRM_QUEUE_QPORTCFG_OUTPUT_QUEUE_ID3_SERVICE_PROFILE_LOSSY \
864 #define HWRM_QUEUE_QPORTCFG_OUTPUT_QUEUE_ID3_SERVICE_PROFILE_LOSSLESS \
867 * Set to 0xFF... (All Fs) if there is no service profile
870 #define HWRM_QUEUE_QPORTCFG_OUTPUT_QUEUE_ID3_SERVICE_PROFILE_UNKNOWN \
871 (UINT32_C(0xff) << 0)
872 uint8_t queue_id3_service_profile;
874 /* ID of CoS Queue 4. FF - Invalid id */
876 /* This value is applicable to CoS queues only. */
877 /* Lossy (best-effort) */
878 #define HWRM_QUEUE_QPORTCFG_OUTPUT_QUEUE_ID4_SERVICE_PROFILE_LOSSY \
881 #define HWRM_QUEUE_QPORTCFG_OUTPUT_QUEUE_ID4_SERVICE_PROFILE_LOSSLESS \
884 * Set to 0xFF... (All Fs) if there is no service profile
887 #define HWRM_QUEUE_QPORTCFG_OUTPUT_QUEUE_ID4_SERVICE_PROFILE_UNKNOWN \
888 (UINT32_C(0xff) << 0)
889 uint8_t queue_id4_service_profile;
891 /* ID of CoS Queue 5. FF - Invalid id */
894 /* This value is applicable to CoS queues only. */
895 /* Lossy (best-effort) */
896 #define HWRM_QUEUE_QPORTCFG_OUTPUT_QUEUE_ID5_SERVICE_PROFILE_LOSSY \
899 #define HWRM_QUEUE_QPORTCFG_OUTPUT_QUEUE_ID5_SERVICE_PROFILE_LOSSLESS \
902 * Set to 0xFF... (All Fs) if there is no service profile
905 #define HWRM_QUEUE_QPORTCFG_OUTPUT_QUEUE_ID5_SERVICE_PROFILE_UNKNOWN \
906 (UINT32_C(0xff) << 0)
907 uint8_t queue_id5_service_profile;
909 /* ID of CoS Queue 6. FF - Invalid id */
910 uint8_t queue_id6_service_profile;
911 /* This value is applicable to CoS queues only. */
912 /* Lossy (best-effort) */
913 #define HWRM_QUEUE_QPORTCFG_OUTPUT_QUEUE_ID6_SERVICE_PROFILE_LOSSY \
916 #define HWRM_QUEUE_QPORTCFG_OUTPUT_QUEUE_ID6_SERVICE_PROFILE_LOSSLESS \
919 * Set to 0xFF... (All Fs) if there is no service profile
922 #define HWRM_QUEUE_QPORTCFG_OUTPUT_QUEUE_ID6_SERVICE_PROFILE_UNKNOWN \
923 (UINT32_C(0xff) << 0)
926 /* ID of CoS Queue 7. FF - Invalid id */
929 /* This value is applicable to CoS queues only. */
930 /* Lossy (best-effort) */
931 #define HWRM_QUEUE_QPORTCFG_OUTPUT_QUEUE_ID7_SERVICE_PROFILE_LOSSY \
934 #define HWRM_QUEUE_QPORTCFG_OUTPUT_QUEUE_ID7_SERVICE_PROFILE_LOSSLESS \
937 * Set to 0xFF... (All Fs) if there is no service profile
940 #define HWRM_QUEUE_QPORTCFG_OUTPUT_QUEUE_ID7_SERVICE_PROFILE_UNKNOWN \
941 (UINT32_C(0xff) << 0)
942 uint8_t queue_id7_service_profile;
945 * This field is used in Output records to indicate that the output is
946 * completely written to RAM. This field should be read as '1' to
947 * indicate that the output has been completely written. When writing a
948 * command completion or response to an internal processor, the order of
949 * writes has to be such that this field is written last.
952 } __attribute__((packed));