1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18#ifndef __BFI_MS_H__
19#define __BFI_MS_H__
20
21#include "bfi.h"
22#include "bfa_fc.h"
23#include "bfa_defs_svc.h"
24
25#pragma pack(1)
26
27enum bfi_iocfc_h2i_msgs {
28 BFI_IOCFC_H2I_CFG_REQ = 1,
29 BFI_IOCFC_H2I_SET_INTR_REQ = 2,
30 BFI_IOCFC_H2I_UPDATEQ_REQ = 3,
31 BFI_IOCFC_H2I_FAA_QUERY_REQ = 4,
32 BFI_IOCFC_H2I_ADDR_REQ = 5,
33};
34
35enum bfi_iocfc_i2h_msgs {
36 BFI_IOCFC_I2H_CFG_REPLY = BFA_I2HM(1),
37 BFI_IOCFC_I2H_UPDATEQ_RSP = BFA_I2HM(3),
38 BFI_IOCFC_I2H_FAA_QUERY_RSP = BFA_I2HM(4),
39 BFI_IOCFC_I2H_ADDR_MSG = BFA_I2HM(5),
40};
41
42struct bfi_iocfc_cfg_s {
43 u8 num_cqs;
44 u8 sense_buf_len;
45 u16 rsvd_1;
46 u32 endian_sig;
47 u8 rsvd_2;
48 u8 single_msix_vec;
49 u8 rsvd[2];
50 __be16 num_ioim_reqs;
51 __be16 num_fwtio_reqs;
52
53
54
55
56
57
58 union bfi_addr_u req_cq_ba[BFI_IOC_MAX_CQS];
59 union bfi_addr_u req_shadow_ci[BFI_IOC_MAX_CQS];
60 __be16 req_cq_elems[BFI_IOC_MAX_CQS];
61 union bfi_addr_u rsp_cq_ba[BFI_IOC_MAX_CQS];
62 union bfi_addr_u rsp_shadow_pi[BFI_IOC_MAX_CQS];
63 __be16 rsp_cq_elems[BFI_IOC_MAX_CQS];
64
65 union bfi_addr_u stats_addr;
66 union bfi_addr_u cfgrsp_addr;
67 union bfi_addr_u ioim_snsbase[BFI_IOIM_SNSBUF_SEGS];
68
69 struct bfa_iocfc_intr_attr_s intr_attr;
70};
71
72
73
74
75
76struct bfi_iocfc_bootwwns {
77 wwn_t wwn[BFA_BOOT_BOOTLUN_MAX];
78 u8 nwwns;
79 u8 rsvd[7];
80};
81
82
83
84
85struct bfi_iocfc_qreg_s {
86 u32 cpe_q_ci_off[BFI_IOC_MAX_CQS];
87 u32 cpe_q_pi_off[BFI_IOC_MAX_CQS];
88 u32 cpe_qctl_off[BFI_IOC_MAX_CQS];
89 u32 rme_q_ci_off[BFI_IOC_MAX_CQS];
90 u32 rme_q_pi_off[BFI_IOC_MAX_CQS];
91 u32 rme_qctl_off[BFI_IOC_MAX_CQS];
92 u8 hw_qid[BFI_IOC_MAX_CQS];
93};
94
95struct bfi_iocfc_cfgrsp_s {
96 struct bfa_iocfc_fwcfg_s fwcfg;
97 struct bfa_iocfc_intr_attr_s intr_attr;
98 struct bfi_iocfc_bootwwns bootwwns;
99 struct bfi_pbc_s pbc_cfg;
100 struct bfi_iocfc_qreg_s qreg;
101};
102
103
104
105
106struct bfi_iocfc_cfg_req_s {
107 struct bfi_mhdr_s mh;
108 union bfi_addr_u ioc_cfg_dma_addr;
109};
110
111
112
113
114
115struct bfi_iocfc_cfg_reply_s {
116 struct bfi_mhdr_s mh;
117 u8 cfg_success;
118 u8 lpu_bm;
119 u8 rsvd[2];
120};
121
122
123
124
125
126struct bfi_iocfc_set_intr_req_s {
127 struct bfi_mhdr_s mh;
128 u8 coalesce;
129 u8 rsvd[3];
130 __be16 delay;
131 __be16 latency;
132};
133
134
135
136
137
138struct bfi_iocfc_updateq_req_s {
139 struct bfi_mhdr_s mh;
140 u32 reqq_ba;
141 u32 rspq_ba;
142 u32 reqq_sci;
143 u32 rspq_spi;
144};
145
146
147
148
149
150struct bfi_iocfc_updateq_rsp_s {
151 struct bfi_mhdr_s mh;
152 u8 status;
153 u8 rsvd[3];
154};
155
156
157
158
159
160union bfi_iocfc_h2i_msg_u {
161 struct bfi_mhdr_s mh;
162 struct bfi_iocfc_cfg_req_s cfg_req;
163 struct bfi_iocfc_updateq_req_s updateq_req;
164 u32 mboxmsg[BFI_IOC_MSGSZ];
165};
166
167
168
169
170
171union bfi_iocfc_i2h_msg_u {
172 struct bfi_mhdr_s mh;
173 struct bfi_iocfc_cfg_reply_s cfg_reply;
174 struct bfi_iocfc_updateq_rsp_s updateq_rsp;
175 u32 mboxmsg[BFI_IOC_MSGSZ];
176};
177
178
179
180
181struct bfi_faa_en_dis_s {
182 struct bfi_mhdr_s mh;
183};
184
185struct bfi_faa_addr_msg_s {
186 struct bfi_mhdr_s mh;
187 u8 rsvd[4];
188 wwn_t pwwn;
189 wwn_t nwwn;
190};
191
192
193
194
195struct bfi_faa_query_s {
196 struct bfi_mhdr_s mh;
197 u8 faa_status;
198 u8 addr_source;
199 u8 rsvd[2];
200 wwn_t faa;
201};
202
203
204
205
206struct bfi_faa_en_dis_rsp_s {
207 struct bfi_mhdr_s mh;
208 u8 status;
209 u8 rsvd[3];
210};
211
212
213
214
215#define bfi_faa_query_rsp_t struct bfi_faa_query_s
216
217enum bfi_fcport_h2i {
218 BFI_FCPORT_H2I_ENABLE_REQ = (1),
219 BFI_FCPORT_H2I_DISABLE_REQ = (2),
220 BFI_FCPORT_H2I_SET_SVC_PARAMS_REQ = (3),
221 BFI_FCPORT_H2I_STATS_GET_REQ = (4),
222 BFI_FCPORT_H2I_STATS_CLEAR_REQ = (5),
223};
224
225
226enum bfi_fcport_i2h {
227 BFI_FCPORT_I2H_ENABLE_RSP = BFA_I2HM(1),
228 BFI_FCPORT_I2H_DISABLE_RSP = BFA_I2HM(2),
229 BFI_FCPORT_I2H_SET_SVC_PARAMS_RSP = BFA_I2HM(3),
230 BFI_FCPORT_I2H_STATS_GET_RSP = BFA_I2HM(4),
231 BFI_FCPORT_I2H_STATS_CLEAR_RSP = BFA_I2HM(5),
232 BFI_FCPORT_I2H_EVENT = BFA_I2HM(6),
233 BFI_FCPORT_I2H_TRUNK_SCN = BFA_I2HM(7),
234 BFI_FCPORT_I2H_ENABLE_AEN = BFA_I2HM(8),
235 BFI_FCPORT_I2H_DISABLE_AEN = BFA_I2HM(9),
236};
237
238
239
240
241
242struct bfi_fcport_req_s {
243 struct bfi_mhdr_s mh;
244 u32 msgtag;
245};
246
247
248
249
250struct bfi_fcport_rsp_s {
251 struct bfi_mhdr_s mh;
252 u8 status;
253 u8 rsvd[3];
254 struct bfa_port_cfg_s port_cfg;
255 u32 msgtag;
256};
257
258
259
260
261struct bfi_fcport_enable_req_s {
262 struct bfi_mhdr_s mh;
263 u32 rsvd1;
264 wwn_t nwwn;
265 wwn_t pwwn;
266 struct bfa_port_cfg_s port_cfg;
267 union bfi_addr_u stats_dma_addr;
268 u32 msgtag;
269 u8 use_flash_cfg;
270 u8 rsvd2[3];
271};
272
273
274
275
276struct bfi_fcport_set_svc_params_req_s {
277 struct bfi_mhdr_s mh;
278 __be16 tx_bbcredit;
279 u8 rsvd[2];
280};
281
282
283
284
285struct bfi_fcport_event_s {
286 struct bfi_mhdr_s mh;
287 struct bfa_port_link_s link_state;
288};
289
290
291
292
293struct bfi_fcport_trunk_link_s {
294 wwn_t trunk_wwn;
295 u8 fctl;
296 u8 state;
297 u8 speed;
298 u8 rsvd;
299 __be32 deskew;
300};
301
302#define BFI_FCPORT_MAX_LINKS 2
303struct bfi_fcport_trunk_scn_s {
304 struct bfi_mhdr_s mh;
305 u8 trunk_state;
306 u8 trunk_speed;
307 u8 rsvd_a[2];
308 struct bfi_fcport_trunk_link_s tlink[BFI_FCPORT_MAX_LINKS];
309};
310
311
312
313
314union bfi_fcport_h2i_msg_u {
315 struct bfi_mhdr_s *mhdr;
316 struct bfi_fcport_enable_req_s *penable;
317 struct bfi_fcport_req_s *pdisable;
318 struct bfi_fcport_set_svc_params_req_s *psetsvcparams;
319 struct bfi_fcport_req_s *pstatsget;
320 struct bfi_fcport_req_s *pstatsclear;
321};
322
323
324
325
326union bfi_fcport_i2h_msg_u {
327 struct bfi_msg_s *msg;
328 struct bfi_fcport_rsp_s *penable_rsp;
329 struct bfi_fcport_rsp_s *pdisable_rsp;
330 struct bfi_fcport_rsp_s *psetsvcparams_rsp;
331 struct bfi_fcport_rsp_s *pstatsget_rsp;
332 struct bfi_fcport_rsp_s *pstatsclear_rsp;
333 struct bfi_fcport_event_s *event;
334 struct bfi_fcport_trunk_scn_s *trunk_scn;
335};
336
337enum bfi_fcxp_h2i {
338 BFI_FCXP_H2I_SEND_REQ = 1,
339};
340
341enum bfi_fcxp_i2h {
342 BFI_FCXP_I2H_SEND_RSP = BFA_I2HM(1),
343};
344
345#define BFA_FCXP_MAX_SGES 2
346
347
348
349
350struct bfi_fcxp_send_req_s {
351 struct bfi_mhdr_s mh;
352 __be16 fcxp_tag;
353 __be16 max_frmsz;
354 __be16 vf_id;
355 u16 rport_fw_hndl;
356 u8 class;
357 u8 rsp_timeout;
358 u8 cts;
359 u8 lp_fwtag;
360 struct fchs_s fchs;
361 __be32 req_len;
362 __be32 rsp_maxlen;
363 struct bfi_alen_s req_alen;
364 struct bfi_alen_s rsp_alen;
365};
366
367
368
369
370struct bfi_fcxp_send_rsp_s {
371 struct bfi_mhdr_s mh;
372 __be16 fcxp_tag;
373 u8 req_status;
374 u8 rsvd;
375 __be32 rsp_len;
376 __be32 residue_len;
377 struct fchs_s fchs;
378};
379
380enum bfi_uf_h2i {
381 BFI_UF_H2I_BUF_POST = 1,
382};
383
384enum bfi_uf_i2h {
385 BFI_UF_I2H_FRM_RCVD = BFA_I2HM(1),
386};
387
388#define BFA_UF_MAX_SGES 2
389
390struct bfi_uf_buf_post_s {
391 struct bfi_mhdr_s mh;
392 u16 buf_tag;
393 __be16 buf_len;
394 struct bfi_alen_s alen;
395};
396
397struct bfi_uf_frm_rcvd_s {
398 struct bfi_mhdr_s mh;
399 u16 buf_tag;
400 u16 rsvd;
401 u16 frm_len;
402 u16 xfr_len;
403};
404
405enum bfi_lps_h2i_msgs {
406 BFI_LPS_H2I_LOGIN_REQ = 1,
407 BFI_LPS_H2I_LOGOUT_REQ = 2,
408 BFI_LPS_H2I_N2N_PID_REQ = 3,
409};
410
411enum bfi_lps_i2h_msgs {
412 BFI_LPS_I2H_LOGIN_RSP = BFA_I2HM(1),
413 BFI_LPS_I2H_LOGOUT_RSP = BFA_I2HM(2),
414 BFI_LPS_I2H_CVL_EVENT = BFA_I2HM(3),
415};
416
417struct bfi_lps_login_req_s {
418 struct bfi_mhdr_s mh;
419 u8 bfa_tag;
420 u8 alpa;
421 __be16 pdu_size;
422 wwn_t pwwn;
423 wwn_t nwwn;
424 u8 fdisc;
425 u8 auth_en;
426 u8 lps_role;
427 u8 bb_scn;
428 u32 vvl_flag;
429};
430
431struct bfi_lps_login_rsp_s {
432 struct bfi_mhdr_s mh;
433 u8 fw_tag;
434 u8 status;
435 u8 lsrjt_rsn;
436 u8 lsrjt_expl;
437 wwn_t port_name;
438 wwn_t node_name;
439 __be16 bb_credit;
440 u8 f_port;
441 u8 npiv_en;
442 u32 lp_pid:24;
443 u32 auth_req:8;
444 mac_t lp_mac;
445 mac_t fcf_mac;
446 u8 ext_status;
447 u8 brcd_switch;
448 u8 bfa_tag;
449 u8 rsvd;
450};
451
452struct bfi_lps_logout_req_s {
453 struct bfi_mhdr_s mh;
454 u8 fw_tag;
455 u8 rsvd[3];
456 wwn_t port_name;
457};
458
459struct bfi_lps_logout_rsp_s {
460 struct bfi_mhdr_s mh;
461 u8 bfa_tag;
462 u8 status;
463 u8 rsvd[2];
464};
465
466struct bfi_lps_cvl_event_s {
467 struct bfi_mhdr_s mh;
468 u8 bfa_tag;
469 u8 rsvd[3];
470};
471
472struct bfi_lps_n2n_pid_req_s {
473 struct bfi_mhdr_s mh;
474 u8 fw_tag;
475 u32 lp_pid:24;
476};
477
478union bfi_lps_h2i_msg_u {
479 struct bfi_mhdr_s *msg;
480 struct bfi_lps_login_req_s *login_req;
481 struct bfi_lps_logout_req_s *logout_req;
482 struct bfi_lps_n2n_pid_req_s *n2n_pid_req;
483};
484
485union bfi_lps_i2h_msg_u {
486 struct bfi_msg_s *msg;
487 struct bfi_lps_login_rsp_s *login_rsp;
488 struct bfi_lps_logout_rsp_s *logout_rsp;
489 struct bfi_lps_cvl_event_s *cvl_event;
490};
491
492enum bfi_rport_h2i_msgs {
493 BFI_RPORT_H2I_CREATE_REQ = 1,
494 BFI_RPORT_H2I_DELETE_REQ = 2,
495 BFI_RPORT_H2I_SET_SPEED_REQ = 3,
496};
497
498enum bfi_rport_i2h_msgs {
499 BFI_RPORT_I2H_CREATE_RSP = BFA_I2HM(1),
500 BFI_RPORT_I2H_DELETE_RSP = BFA_I2HM(2),
501 BFI_RPORT_I2H_QOS_SCN = BFA_I2HM(3),
502 BFI_RPORT_I2H_LIP_SCN_ONLINE = BFA_I2HM(4),
503 BFI_RPORT_I2H_LIP_SCN_OFFLINE = BFA_I2HM(5),
504 BFI_RPORT_I2H_NO_DEV = BFA_I2HM(6),
505};
506
507struct bfi_rport_create_req_s {
508 struct bfi_mhdr_s mh;
509 u16 bfa_handle;
510 __be16 max_frmsz;
511 u32 pid:24,
512 lp_fwtag:8;
513 u32 local_pid:24,
514 cisc:8;
515 u8 fc_class;
516 u8 vf_en;
517 u16 vf_id;
518};
519
520struct bfi_rport_create_rsp_s {
521 struct bfi_mhdr_s mh;
522 u8 status;
523 u8 rsvd[3];
524 u16 bfa_handle;
525 u16 fw_handle;
526 struct bfa_rport_qos_attr_s qos_attr;
527};
528
529struct bfa_rport_speed_req_s {
530 struct bfi_mhdr_s mh;
531 u16 fw_handle;
532 u8 speed;
533 u8 rsvd;
534};
535
536struct bfi_rport_delete_req_s {
537 struct bfi_mhdr_s mh;
538 u16 fw_handle;
539 u16 rsvd;
540};
541
542struct bfi_rport_delete_rsp_s {
543 struct bfi_mhdr_s mh;
544 u16 bfa_handle;
545 u8 status;
546 u8 rsvd;
547};
548
549struct bfi_rport_qos_scn_s {
550 struct bfi_mhdr_s mh;
551 u16 bfa_handle;
552 u16 rsvd;
553 struct bfa_rport_qos_attr_s old_qos_attr;
554 struct bfa_rport_qos_attr_s new_qos_attr;
555};
556
557struct bfi_rport_lip_scn_s {
558 struct bfi_mhdr_s mh;
559 u16 bfa_handle;
560 u8 status;
561 u8 rsvd;
562 struct bfa_fcport_loop_info_s loop_info;
563};
564
565union bfi_rport_h2i_msg_u {
566 struct bfi_msg_s *msg;
567 struct bfi_rport_create_req_s *create_req;
568 struct bfi_rport_delete_req_s *delete_req;
569 struct bfi_rport_speed_req_s *speed_req;
570};
571
572union bfi_rport_i2h_msg_u {
573 struct bfi_msg_s *msg;
574 struct bfi_rport_create_rsp_s *create_rsp;
575 struct bfi_rport_delete_rsp_s *delete_rsp;
576 struct bfi_rport_qos_scn_s *qos_scn_evt;
577 struct bfi_rport_lip_scn_s *lip_scn;
578};
579
580
581
582
583
584enum bfi_itn_h2i {
585 BFI_ITN_H2I_CREATE_REQ = 1,
586 BFI_ITN_H2I_DELETE_REQ = 2,
587};
588
589enum bfi_itn_i2h {
590 BFI_ITN_I2H_CREATE_RSP = BFA_I2HM(1),
591 BFI_ITN_I2H_DELETE_RSP = BFA_I2HM(2),
592 BFI_ITN_I2H_SLER_EVENT = BFA_I2HM(3),
593};
594
595struct bfi_itn_create_req_s {
596 struct bfi_mhdr_s mh;
597 u16 fw_handle;
598 u8 class;
599 u8 seq_rec;
600 u8 msg_no;
601 u8 role;
602};
603
604struct bfi_itn_create_rsp_s {
605 struct bfi_mhdr_s mh;
606 u16 bfa_handle;
607 u8 status;
608 u8 seq_id;
609};
610
611struct bfi_itn_delete_req_s {
612 struct bfi_mhdr_s mh;
613 u16 fw_handle;
614 u8 seq_id;
615 u8 rsvd;
616};
617
618struct bfi_itn_delete_rsp_s {
619 struct bfi_mhdr_s mh;
620 u16 bfa_handle;
621 u8 status;
622 u8 seq_id;
623};
624
625struct bfi_itn_sler_event_s {
626 struct bfi_mhdr_s mh;
627 u16 bfa_handle;
628 u16 rsvd;
629};
630
631union bfi_itn_h2i_msg_u {
632 struct bfi_itn_create_req_s *create_req;
633 struct bfi_itn_delete_req_s *delete_req;
634 struct bfi_msg_s *msg;
635};
636
637union bfi_itn_i2h_msg_u {
638 struct bfi_itn_create_rsp_s *create_rsp;
639 struct bfi_itn_delete_rsp_s *delete_rsp;
640 struct bfi_itn_sler_event_s *sler_event;
641 struct bfi_msg_s *msg;
642};
643
644
645
646
647
648enum bfi_ioim_h2i {
649 BFI_IOIM_H2I_IOABORT_REQ = 1,
650 BFI_IOIM_H2I_IOCLEANUP_REQ = 2,
651};
652
653enum bfi_ioim_i2h {
654 BFI_IOIM_I2H_IO_RSP = BFA_I2HM(1),
655 BFI_IOIM_I2H_IOABORT_RSP = BFA_I2HM(2),
656};
657
658
659
660
661struct bfi_ioim_dif_s {
662 u32 dif_info[4];
663};
664
665
666
667
668
669
670
671
672
673
674struct bfi_ioim_req_s {
675 struct bfi_mhdr_s mh;
676 __be16 io_tag;
677 u16 rport_hdl;
678 struct fcp_cmnd_s cmnd;
679
680
681
682
683
684 struct bfi_sge_s sges[BFI_SGE_INLINE_MAX];
685 u8 io_timeout;
686 u8 dif_en;
687 u8 rsvd_a[2];
688 struct bfi_ioim_dif_s dif;
689};
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764enum bfi_ioim_status {
765 BFI_IOIM_STS_OK = 0,
766 BFI_IOIM_STS_HOST_ABORTED = 1,
767 BFI_IOIM_STS_ABORTED = 2,
768 BFI_IOIM_STS_TIMEDOUT = 3,
769 BFI_IOIM_STS_RES_FREE = 4,
770 BFI_IOIM_STS_SQER_NEEDED = 5,
771 BFI_IOIM_STS_PROTO_ERR = 6,
772 BFI_IOIM_STS_UTAG = 7,
773 BFI_IOIM_STS_PATHTOV = 8,
774};
775
776
777
778
779struct bfi_ioim_rsp_s {
780 struct bfi_mhdr_s mh;
781 __be16 io_tag;
782 u16 bfa_rport_hndl;
783 u8 io_status;
784 u8 reuse_io_tag;
785 u16 abort_tag;
786 u8 scsi_status;
787 u8 sns_len;
788 u8 resid_flags;
789 u8 rsvd_a;
790 __be32 residue;
791 u32 rsvd_b[3];
792};
793
794struct bfi_ioim_abort_req_s {
795 struct bfi_mhdr_s mh;
796 __be16 io_tag;
797 u16 abort_tag;
798};
799
800
801
802
803
804enum bfi_tskim_h2i {
805 BFI_TSKIM_H2I_TM_REQ = 1,
806 BFI_TSKIM_H2I_ABORT_REQ = 2,
807};
808
809enum bfi_tskim_i2h {
810 BFI_TSKIM_I2H_TM_RSP = BFA_I2HM(1),
811};
812
813struct bfi_tskim_req_s {
814 struct bfi_mhdr_s mh;
815 __be16 tsk_tag;
816 u16 itn_fhdl;
817 struct scsi_lun lun;
818 u8 tm_flags;
819 u8 t_secs;
820 u8 rsvd[2];
821};
822
823struct bfi_tskim_abortreq_s {
824 struct bfi_mhdr_s mh;
825 __be16 tsk_tag;
826 u16 rsvd;
827};
828
829enum bfi_tskim_status {
830
831
832
833
834 BFI_TSKIM_STS_OK = 0,
835 BFI_TSKIM_STS_NOT_SUPP = 4,
836 BFI_TSKIM_STS_FAILED = 5,
837
838
839
840
841 BFI_TSKIM_STS_TIMEOUT = 10,
842 BFI_TSKIM_STS_ABORTED = 11,
843 BFI_TSKIM_STS_UTAG = 12,
844};
845
846struct bfi_tskim_rsp_s {
847 struct bfi_mhdr_s mh;
848 __be16 tsk_tag;
849 u8 tsk_status;
850 u8 rsvd;
851};
852
853#pragma pack()
854
855
856
857
858enum {
859 BFI_MSIX_CPE_QMIN_CB = 0,
860 BFI_MSIX_CPE_QMAX_CB = 7,
861 BFI_MSIX_RME_QMIN_CB = 8,
862 BFI_MSIX_RME_QMAX_CB = 15,
863 BFI_MSIX_CB_MAX = 22,
864};
865
866
867
868
869enum {
870 BFI_MSIX_LPU_ERR_CT = 0,
871 BFI_MSIX_CPE_QMIN_CT = 1,
872 BFI_MSIX_CPE_QMAX_CT = 4,
873 BFI_MSIX_RME_QMIN_CT = 5,
874 BFI_MSIX_RME_QMAX_CT = 8,
875 BFI_MSIX_CT_MAX = 9,
876};
877
878#endif
879