3 typedefunsigned char UCHAR
; 5 /****** IEEE 802.11 constants ************************************************/ 7 /* Frame control 1 bit fields */ 8 #define PROTOCOL_VER 0x00 10 #define ASSOC_REQ_TYPE 0x00 11 #define ASSOC_RESP_TYPE 0x10 12 #define REASSOC_REQ_TYPE 0x20 13 #define REASSOC_RESP_TYPE 0x30 14 #define NULL_MSG_TYPE 0x48 15 #define BEACON_TYPE 0x80 16 #define DISASSOC_TYPE 0xA0 17 #define PSPOLL_TYPE 0xA4 18 #define AUTHENTIC_TYPE 0xB0 19 #define DEAUTHENTIC_TYPE 0xC0 20 /* Frame control 2 bit fields */ 21 #define FC2_TO_DS 0x01 22 #define FC2_FROM_DS 0x02 23 #define FC2_MORE_FRAG 0x04 24 #define FC2_RETRY 0x08 26 #define FC2_MORE_DATA 0x20 28 #define FC2_ORDER 0x80 29 /*****************************************************************************/ 30 /* 802.11 element ID's and lengths */ 31 #define C_BP_CAPABILITY_ESS 0x01 32 #define C_BP_CAPABILITY_IBSS 0x02 33 #define C_BP_CAPABILITY_CF_POLLABLE 0x04 34 #define C_BP_CAPABILITY_CF_POLL_REQUEST 0x08 35 #define C_BP_CAPABILITY_PRIVACY 0x10 37 #define C_ESSID_ELEMENT_ID 0 38 #define C_ESSID_ELEMENT_MAX_LENGTH 32 40 #define C_SUPPORTED_RATES_ELEMENT_ID 1 41 #define C_SUPPORTED_RATES_ELEMENT_LENGTH 2 43 #define C_FH_PARAM_SET_ELEMENT_ID 2 44 #define C_FH_PARAM_SET_ELEMENT_LNGTH 5 46 #define C_CF_PARAM_SET_ELEMENT_ID 4 47 #define C_CF_PARAM_SET_ELEMENT_LNGTH 6 49 #define C_TIM_ELEMENT_ID 5 50 #define C_TIM_BITMAP_LENGTH 251 51 #define C_TIM_BMCAST_BIT 0x01 53 #define C_IBSS_ELEMENT_ID 6 54 #define C_IBSS_ELEMENT_LENGTH 2 56 #define C_JAPAN_CALL_SIGN_ELEMENT_ID 51 57 #define C_JAPAN_CALL_SIGN_ELEMENT_LNGTH 12 59 #define C_DISASSOC_REASON_CODE_LEN 2 60 #define C_DISASSOC_REASON_CODE_DEFAULT 8 63 #define C_NUM_SUPPORTED_RATES 8 64 /****** IEEE 802.11 mac header for type data packets *************************/ 70 UCHAR addr_1
[ADDRLEN
]; 71 UCHAR addr_2
[ADDRLEN
]; 72 UCHAR addr_3
[ADDRLEN
]; 73 UCHAR seq_frag_num
[2]; 74 /* UCHAR addr_4[ADDRLEN]; *//* only present for AP to AP (TO DS and FROM DS */ 76 /****** IEEE 802.11 frame element structures *********************************/ 81 UCHAR text
[C_ESSID_ELEMENT_MAX_LENGTH
]; 89 struct freq_hop_element
104 UCHAR bitmap_control
; 105 UCHAR tim
[C_TIM_BITMAP_LENGTH
]; 111 UCHAR atim_window
[2]; 113 struct japan_call_sign_element
119 /****** Beacon message structures ********************************************/ 120 /* .elements is a large lump of max size because elements are variable size */ 124 UCHAR beacon_intvl
[2]; 126 UCHAR elements
[sizeof(struct essid_element
) 127 +sizeof(struct rates_element
) 128 +sizeof(struct freq_hop_element
) 129 +sizeof(struct japan_call_sign_element
) 130 +sizeof(struct tim_element
)]; 135 UCHAR beacon_intvl
[2]; 137 UCHAR elements
[sizeof(struct essid_element
) 138 +sizeof(struct rates_element
) 139 +sizeof(struct freq_hop_element
) 140 +sizeof(struct japan_call_sign_element
) 141 +sizeof(struct ibss_element
)]; 143 /*****************************************************************************/ 144 /*****************************************************************************/ 147 /* #define C_MAC_HDR_2_WEP 0x40 */ 148 /* TX/RX CCS constants */ 149 #define TX_HEADER_LENGTH 0x1C 150 #define RX_MAC_HEADER_LENGTH 0x18 151 #define TX_AUTHENTICATE_LENGTH (TX_HEADER_LENGTH + 6) 152 #define TX_AUTHENTICATE_LENGTH_MSB (TX_AUTHENTICATE_LENGTH >> 8) 153 #define TX_AUTHENTICATE_LENGTH_LSB (TX_AUTHENTICATE_LENGTH & 0xff) 162 #define PASSIVE_SCAN 1 163 #define ACTIVE_SCAN 1 178 /* Hop pattern lengths */ 179 #define USA_HOP_MOD 79 180 #define EUROPE_HOP_MOD 79 181 #define JAPAN_HOP_MOD 23 182 #define KOREA_HOP_MOD 23 183 #define SPAIN_HOP_MOD 27 184 #define FRANCE_HOP_MOD 35 185 #define ISRAEL_HOP_MOD 35 186 #define AUSTRALIA_HOP_MOD 47 187 #define JAPAN_TEST_HOP_MOD 23 189 #define ESSID_SIZE 32 190 /**********************************************************************/ 191 /* CIS Register Constants */ 192 #define CIS_OFFSET 0x0f00 193 /* Configuration Option Register (0x0F00) */ 194 #define COR_OFFSET 0x00 195 #define COR_SOFT_RESET 0x80 196 #define COR_LEVEL_IRQ 0x40 197 #define COR_CONFIG_NUM 0x01 198 #define COR_DEFAULT (COR_LEVEL_IRQ | COR_CONFIG_NUM) 200 /* Card Configuration and Status Register (0x0F01) */ 201 #define CCSR_OFFSET 0x01 202 #define CCSR_HOST_INTR_PENDING 0x01 203 #define CCSR_POWER_DOWN 0x04 205 /* HCS Interrupt Register (0x0F05) */ 206 #define HCS_INTR_OFFSET 0x05 207 /* #define HCS_INTR_OFFSET 0x0A */ 208 #define HCS_INTR_CLEAR 0x00 210 /* ECF Interrupt Register (0x0F06) */ 211 #define ECF_INTR_OFFSET 0x06 212 /* #define ECF_INTR_OFFSET 0x0C */ 213 #define ECF_INTR_SET 0x01 215 /* Authorization Register 0 (0x0F08) */ 216 #define AUTH_0_ON 0x57 218 /* Authorization Register 1 (0x0F09) */ 219 #define AUTH_1_ON 0x82 221 /* Program Mode Register (0x0F0A) */ 226 /* PC Test Mode Register (0x0F0B) */ 227 #define PC_TEST_MODE 0x08 229 /* Frequency Control Word (0x0F10) */ 230 /* Range 0x02 - 0xA6 */ 232 /* Test Mode Control 1-4 (0x0F14 - 0x0F17) */ 234 /**********************************************************************/ 236 /* Shared RAM Area */ 237 #define SCB_BASE 0x0000 238 #define STATUS_BASE 0x0100 239 #define HOST_TO_ECF_BASE 0x0200 240 #define ECF_TO_HOST_BASE 0x0300 241 #define CCS_BASE 0x0400 242 #define RCS_BASE 0x0800 243 #define INFRA_TIM_BASE 0x0C00 244 #define SSID_LIST_BASE 0x0D00 245 #define TX_BUF_BASE 0x1000 246 #define RX_BUF_BASE 0x8000 248 #define NUMBER_OF_CCS 64 249 #define NUMBER_OF_RCS 64 250 /*#define NUMBER_OF_TX_CCS 14 */ 251 #define NUMBER_OF_TX_CCS 14 253 #define TX_BUF_SIZE (2048 - sizeof(struct tx_msg)) 254 #define RX_BUFF_END 0x3FFF 255 /* Values for buffer_status */ 256 #define CCS_BUFFER_FREE 0 257 #define CCS_BUFFER_BUSY 1 258 #define CCS_COMMAND_COMPLETE 2 259 #define CCS_COMMAND_FAILED 3 262 #define CCS_DOWNLOAD_STARTUP_PARAMS 1 263 #define CCS_UPDATE_PARAMS 2 264 #define CCS_REPORT_PARAMS 3 265 #define CCS_UPDATE_MULTICAST_LIST 4 266 #define CCS_UPDATE_POWER_SAVINGS_MODE 5 267 #define CCS_START_NETWORK 6 268 #define CCS_JOIN_NETWORK 7 269 #define CCS_START_ASSOCIATION 8 270 #define CCS_TX_REQUEST 9 271 #define CCS_TEST_MEMORY 0xa 272 #define CCS_SHUTDOWN 0xb 273 #define CCS_DUMP_MEMORY 0xc 274 #define CCS_START_TIMER 0xe 275 #define CCS_LAST_CMD CCS_START_TIMER 277 /* Values for link field */ 278 #define CCS_END_LIST 0xff 280 /* values for buffer_status field */ 281 #define RCS_BUFFER_FREE 0 282 #define RCS_BUFFER_BUSY 1 283 #define RCS_COMPLETE 2 285 #define RCS_BUFFER_RELEASE 0xFF 287 /* values for interrupt_id field */ 288 #define PROCESS_RX_PACKET 0x80/* */ 289 #define REJOIN_NET_COMPLETE 0x81/* RCS ID: Rejoin Net Complete */ 290 #define ROAMING_INITIATED 0x82/* RCS ID: Roaming Initiated */ 291 #define JAPAN_CALL_SIGN_RXD 0x83/* RCS ID: New Japan Call Sign */ 293 /*****************************************************************************/ 294 /* Memory types for dump memory command */ 296 #define C_MEM_XDATA 1 298 #define C_MEM_IDATA 3 300 /*** Return values for hw_xmit **********/ 302 #define XMIT_MSG_BAD (-1) 303 #define XMIT_NO_CCS (-2) 304 #define XMIT_NO_INTR (-3) 305 #define XMIT_NEED_AUTH (-4) 307 /*** Values for card status */ 308 #define CARD_INSERTED (0) 310 #define CARD_AWAITING_PARAM (1) 311 #define CARD_INIT_ERROR (11) 313 #define CARD_DL_PARAM (2) 314 #define CARD_DL_PARAM_ERROR (12) 316 #define CARD_DOING_ACQ (3) 318 #define CARD_ACQ_COMPLETE (4) 319 #define CARD_ACQ_FAILED (14) 321 #define CARD_AUTH_COMPLETE (5) 322 #define CARD_AUTH_REFUSED (15) 324 #define CARD_ASSOC_COMPLETE (6) 325 #define CARD_ASSOC_FAILED (16) 327 /*** Values for authentication_state */ 328 #define UNAUTHENTICATED (0) 329 #define AWAITING_RESPONSE (1) 330 #define AUTHENTICATED (2) 331 #define NEED_TO_AUTH (3) 333 /*** Values for authentication type */ 334 #define OPEN_AUTH_REQUEST (1) 335 #define OPEN_AUTH_RESPONSE (2) 338 /***********************************************************************/ 339 /* Parameter passing structure for update/report parameter CCS's */ 342 unsigned char object_length
; 345 #define OBJID_network_type 0 346 #define OBJID_acting_as_ap_status 1 347 #define OBJID_current_ess_id 2 348 #define OBJID_scanning_mode 3 349 #define OBJID_power_mgt_state 4 350 #define OBJID_mac_address 5 351 #define OBJID_frag_threshold 6 352 #define OBJID_hop_time 7 353 #define OBJID_beacon_period 8 354 #define OBJID_dtim_period 9 355 #define OBJID_retry_max 10 356 #define OBJID_ack_timeout 11 357 #define OBJID_sifs 12 358 #define OBJID_difs 13 359 #define OBJID_pifs 14 360 #define OBJID_rts_threshold 15 361 #define OBJID_scan_dwell_time 16 362 #define OBJID_max_scan_dwell_time 17 363 #define OBJID_assoc_resp_timeout 18 364 #define OBJID_adhoc_scan_cycle_max 19 365 #define OBJID_infra_scan_cycle_max 20 366 #define OBJID_infra_super_cycle_max 21 367 #define OBJID_promiscuous_mode 22 368 #define OBJID_unique_word 23 369 #define OBJID_slot_time 24 370 #define OBJID_roaming_low_snr 25 371 #define OBJID_low_snr_count_thresh 26 372 #define OBJID_infra_missed_bcn 27 373 #define OBJID_adhoc_missed_bcn 28 374 #define OBJID_curr_country_code 29 375 #define OBJID_hop_pattern 30 376 #define OBJID_reserved 31 377 #define OBJID_cw_max_msb 32 378 #define OBJID_cw_min_msb 33 379 #define OBJID_noise_filter_gain 34 380 #define OBJID_noise_limit_offset 35 381 #define OBJID_det_rssi_thresh_offset 36 382 #define OBJID_med_busy_thresh_offset 37 383 #define OBJID_det_sync_thresh 38 384 #define OBJID_test_mode 39 385 #define OBJID_test_min_chan_num 40 386 #define OBJID_test_max_chan_num 41 387 #define OBJID_allow_bcast_ID_prbrsp 42 388 #define OBJID_privacy_must_start 43 389 #define OBJID_privacy_can_join 44 390 #define OBJID_basic_rate_set 45 392 /**** Configuration/Status/Control Area ***************************/ 393 /* System Control Block (SCB) Area 394 * Located at Shared RAM offset 0 401 /****** Status area at Shared RAM offset 0x0100 ******************************/ 403 UCHAR mrx_overflow_for_host
;/* 0=ECF may write, 1=host may write*/ 404 UCHAR mrx_checksum_error_for_host
;/* 0=ECF may write, 1=host may write*/ 405 UCHAR rx_hec_error_for_host
;/* 0=ECF may write, 1=host may write*/ 407 short mrx_overflow
;/* ECF increments on rx overflow */ 408 short mrx_checksum_error
;/* ECF increments on rx CRC error */ 409 short rx_hec_error
;/* ECF incs on mac header CRC error */ 410 UCHAR rxnoise
;/* Average RSL measurement */ 413 /****** Host-to-ECF Data Area at Shared RAM offset 0x200 *********************/ 414 struct host_to_ecf_area
{ 418 /****** ECF-to-Host Data Area at Shared RAM offset 0x0300 ********************/ 419 struct startup_res_518
{ 421 UCHAR station_addr
[ADDRLEN
]; 422 UCHAR calc_prog_chksum
; 423 UCHAR calc_cis_chksum
; 425 UCHAR japan_call_sign
[12]; 428 struct startup_res_6
{ 430 UCHAR station_addr
[ADDRLEN
]; 433 UCHAR japan_call_sign
[12]; 434 UCHAR calc_prog_chksum
; 435 UCHAR calc_cis_chksum
; 436 UCHAR firmware_version
[3]; 441 struct start_join_net_params
{ 443 UCHAR ssid
[ESSID_SIZE
]; 445 UCHAR privacy_can_join
; 448 /****** Command Control Structure area at Shared ram offset 0x0400 ***********/ 449 /* Structures for command specific parameters (ccs.var) */ 450 struct update_param_cmd
{ 452 UCHAR number_objects
; 455 struct report_param_cmd
{ 457 UCHAR number_objects
; 461 struct start_network_cmd
{ 463 UCHAR bssid
[ADDRLEN
]; 465 UCHAR net_default_tx_rate
; 468 struct join_network_cmd
{ 470 UCHAR bssid
[ADDRLEN
]; 472 UCHAR net_default_tx_rate
; 475 struct tx_requested_cmd
{ 477 UCHAR tx_data_ptr
[2]; 478 UCHAR tx_data_length
[2]; 479 UCHAR host_reserved
[2]; 486 struct tx_requested_cmd_4
{ 488 UCHAR tx_data_ptr
[2]; 489 UCHAR tx_data_length
[2]; 490 UCHAR dest_addr
[ADDRLEN
]; 495 struct memory_dump_cmd
{ 500 struct update_association_cmd
{ 504 struct start_timer_cmd
{ 509 UCHAR buffer_status
;/* 0 = buffer free, 1 = buffer busy */ 510 /* 2 = command complete, 3 = failed */ 511 UCHAR cmd
;/* command to ECF */ 512 UCHAR link
;/* link to next CCS, FF=end of list */ 513 /* command specific parameters */ 516 struct update_param_cmd update_param
; 517 struct report_param_cmd report_param
; 520 struct start_network_cmd start_network
; 521 struct join_network_cmd join_network
; 522 struct tx_requested_cmd tx_request
; 523 struct memory_dump_cmd memory_dump
; 524 struct update_association_cmd update_assoc
; 525 struct start_timer_cmd start_timer
; 529 /*****************************************************************************/ 530 /* Transmit buffer structures */ 531 struct tib_structure
{ 537 UCHAR frags_remaining
; 540 UCHAR csma_tx_cntrl_2
; 541 UCHAR sifs_tx_cntrl_2
; 542 UCHAR tx_dma_addr_1
[2]; 543 UCHAR tx_dma_addr_2
[2]; 544 UCHAR var_dur_2mhz
[2]; 545 UCHAR var_dur_1mhz
[2]; 546 UCHAR max_dur_2mhz
[2]; 547 UCHAR max_dur_1mhz
[2]; 549 UCHAR max_frag_len
[2]; 563 struct mac_header mac
; 568 struct tib_structure tib
; 569 struct phy_header phy
; 570 struct mac_header mac
; 574 /****** ECF Receive Control Stucture (RCS) Area at Shared RAM offset 0x0800 */ 575 /* Structures for command specific parameters (rcs.var) */ 576 struct rx_packet_cmd
{ 577 UCHAR rx_data_ptr
[2]; 578 UCHAR rx_data_length
[2]; 580 UCHAR next_frag_rcs_index
; 581 UCHAR totalpacketlength
[2]; 583 struct rejoin_net_cmplt_cmd
{ 585 UCHAR bssid
[ADDRLEN
]; 587 struct japan_call_sign_rxd
{ 588 UCHAR rxd_call_sign
[8]; 596 /* command specific parameters */ 599 struct rx_packet_cmd rx_packet
; 600 struct rejoin_net_cmplt_cmd rejoin_net_complete
; 601 struct japan_call_sign_rxd japan_call_sign
; 605 /****** Startup parameter structures for both versions of firmware ***********/ 606 struct b4_startup_params
{ 607 UCHAR a_network_type
;/* C_ADHOC, C_INFRA */ 608 UCHAR a_acting_as_ap_status
;/* C_TYPE_STA, C_TYPE_AP */ 609 UCHAR a_current_ess_id
[ESSID_SIZE
];/* Null terminated unless 32 long */ 610 UCHAR a_scanning_mode
;/* passive 0, active 1 */ 611 UCHAR a_power_mgt_state
;/* CAM 0, */ 612 UCHAR a_mac_addr
[ADDRLEN
];/* */ 613 UCHAR a_frag_threshold
[2];/* 512 */ 614 UCHAR a_hop_time
[2];/* 16k * 2**n, n=0-4 in Kus */ 615 UCHAR a_beacon_period
[2];/* n * a_hop_time in Kus */ 616 UCHAR a_dtim_period
;/* in beacons */ 617 UCHAR a_retry_max
;/* */ 618 UCHAR a_ack_timeout
;/* */ 622 UCHAR a_rts_threshold
[2];/* */ 623 UCHAR a_scan_dwell_time
[2];/* */ 624 UCHAR a_max_scan_dwell_time
[2];/* */ 625 UCHAR a_assoc_resp_timeout_thresh
;/* */ 626 UCHAR a_adhoc_scan_cycle_max
;/* */ 627 UCHAR a_infra_scan_cycle_max
;/* */ 628 UCHAR a_infra_super_scan_cycle_max
;/* */ 629 UCHAR a_promiscuous_mode
;/* */ 630 UCHAR a_unique_word
[2];/* */ 631 UCHAR a_slot_time
;/* */ 632 UCHAR a_roaming_low_snr_thresh
;/* */ 633 UCHAR a_low_snr_count_thresh
;/* */ 634 UCHAR a_infra_missed_bcn_thresh
;/* */ 635 UCHAR a_adhoc_missed_bcn_thresh
;/* */ 636 UCHAR a_curr_country_code
;/* C_USA */ 637 UCHAR a_hop_pattern
;/* */ 638 UCHAR a_hop_pattern_length
;/* */ 639 /* b4 - b5 differences start here */ 642 UCHAR a_noise_filter_gain
;/* */ 643 UCHAR a_noise_limit_offset
;/* */ 644 UCHAR a_det_rssi_thresh_offset
;/* */ 645 UCHAR a_med_busy_thresh_offset
;/* */ 646 UCHAR a_det_sync_thresh
;/* */ 647 UCHAR a_test_mode
;/* */ 648 UCHAR a_test_min_chan_num
;/* */ 649 UCHAR a_test_max_chan_num
;/* */ 650 UCHAR a_rx_tx_delay
;/* */ 651 UCHAR a_current_bss_id
[ADDRLEN
];/* */ 652 UCHAR a_hop_set
;/* */ 654 struct b5_startup_params
{ 655 UCHAR a_network_type
;/* C_ADHOC, C_INFRA */ 656 UCHAR a_acting_as_ap_status
;/* C_TYPE_STA, C_TYPE_AP */ 657 UCHAR a_current_ess_id
[ESSID_SIZE
];/* Null terminated unless 32 long */ 658 UCHAR a_scanning_mode
;/* passive 0, active 1 */ 659 UCHAR a_power_mgt_state
;/* CAM 0, */ 660 UCHAR a_mac_addr
[ADDRLEN
];/* */ 661 UCHAR a_frag_threshold
[2];/* 512 */ 662 UCHAR a_hop_time
[2];/* 16k * 2**n, n=0-4 in Kus */ 663 UCHAR a_beacon_period
[2];/* n * a_hop_time in Kus */ 664 UCHAR a_dtim_period
;/* in beacons */ 665 UCHAR a_retry_max
;/* 4 */ 666 UCHAR a_ack_timeout
;/* */ 670 UCHAR a_rts_threshold
[2];/* */ 671 UCHAR a_scan_dwell_time
[2];/* */ 672 UCHAR a_max_scan_dwell_time
[2];/* */ 673 UCHAR a_assoc_resp_timeout_thresh
;/* */ 674 UCHAR a_adhoc_scan_cycle_max
;/* */ 675 UCHAR a_infra_scan_cycle_max
;/* */ 676 UCHAR a_infra_super_scan_cycle_max
;/* */ 677 UCHAR a_promiscuous_mode
;/* */ 678 UCHAR a_unique_word
[2];/* */ 679 UCHAR a_slot_time
;/* */ 680 UCHAR a_roaming_low_snr_thresh
;/* */ 681 UCHAR a_low_snr_count_thresh
;/* */ 682 UCHAR a_infra_missed_bcn_thresh
;/* */ 683 UCHAR a_adhoc_missed_bcn_thresh
;/* */ 684 UCHAR a_curr_country_code
;/* C_USA */ 685 UCHAR a_hop_pattern
;/* */ 686 UCHAR a_hop_pattern_length
;/* */ 687 /* b4 - b5 differences start here */ 688 UCHAR a_cw_max
[2];/* */ 689 UCHAR a_cw_min
[2];/* */ 690 UCHAR a_noise_filter_gain
;/* */ 691 UCHAR a_noise_limit_offset
;/* */ 692 UCHAR a_det_rssi_thresh_offset
;/* */ 693 UCHAR a_med_busy_thresh_offset
;/* */ 694 UCHAR a_det_sync_thresh
;/* */ 695 UCHAR a_test_mode
;/* */ 696 UCHAR a_test_min_chan_num
;/* */ 697 UCHAR a_test_max_chan_num
;/* */ 698 UCHAR a_allow_bcast_SSID_probe_rsp
; 699 UCHAR a_privacy_must_start
; 700 UCHAR a_privacy_can_join
; 701 UCHAR a_basic_rate_set
[8]; 704 /*****************************************************************************/ 705 #define RAY_IOCG_PARMS (SIOCDEVPRIVATE) 706 #define RAY_IOCS_PARMS (SIOCDEVPRIVATE + 1) 707 #define RAY_DO_CMD (SIOCDEVPRIVATE + 2) 709 /****** ethernet <-> 802.11 translation **************************************/ 710 typedefstruct snaphdr_t
719 #define BRIDGE_ENCAP 0xf80000 720 #define RFC1042_ENCAP 0 721 #define SNAP_ID 0x0003aaaa 722 #define RAY_IPX_TYPE 0x8137 723 #define APPLEARP_TYPE 0x80f3 724 /*****************************************************************************/ 725 #endif/* #ifndef RAYLINK_H */