1 /******************************************************************************
3 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of version 2 of the GNU General Public License as
7 * published by the Free Software Foundation.
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14 * You should have received a copy of the GNU General Public License along with
15 * this program; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
19 ******************************************************************************/
20 #define _RTW_IOCTL_RTL_C_
22 #include <drv_types.h>
24 #ifdef CONFIG_MP_INCLUDED
25 #include <rtw_mp_ioctl.h>
28 struct oid_obj_priv oid_rtl_seg_01_01[] =
30 {1, &oid_null_function}, //0x80
31 {1, &oid_null_function}, //0x81
32 {1, &oid_null_function}, //0x82
33 {1, &oid_null_function}, //0x83//OID_RT_SET_SNIFFER_MODE
34 {1, &oid_rt_get_signal_quality_hdl}, //0x84
35 {1, &oid_rt_get_small_packet_crc_hdl}, //0x85
36 {1, &oid_rt_get_middle_packet_crc_hdl}, //0x86
37 {1, &oid_rt_get_large_packet_crc_hdl}, //0x87
38 {1, &oid_rt_get_tx_retry_hdl}, //0x88
39 {1, &oid_rt_get_rx_retry_hdl}, //0x89
40 {1, &oid_rt_pro_set_fw_dig_state_hdl}, //0x8A
41 {1, &oid_rt_pro_set_fw_ra_state_hdl} , //0x8B
42 {1, &oid_null_function}, //0x8C
43 {1, &oid_null_function}, //0x8D
44 {1, &oid_null_function}, //0x8E
45 {1, &oid_null_function}, //0x8F
46 {1, &oid_rt_get_rx_total_packet_hdl}, //0x90
47 {1, &oid_rt_get_tx_beacon_ok_hdl}, //0x91
48 {1, &oid_rt_get_tx_beacon_err_hdl}, //0x92
49 {1, &oid_rt_get_rx_icv_err_hdl}, //0x93
50 {1, &oid_rt_set_encryption_algorithm_hdl}, //0x94
51 {1, &oid_null_function}, //0x95
52 {1, &oid_rt_get_preamble_mode_hdl}, //0x96
53 {1, &oid_null_function}, //0x97
54 {1, &oid_rt_get_ap_ip_hdl}, //0x98
55 {1, &oid_rt_get_channelplan_hdl}, //0x99
56 {1, &oid_rt_set_preamble_mode_hdl}, //0x9A
57 {1, &oid_rt_set_bcn_intvl_hdl}, //0x9B
58 {1, &oid_null_function}, //0x9C
59 {1, &oid_rt_dedicate_probe_hdl}, //0x9D
60 {1, &oid_null_function}, //0x9E
61 {1, &oid_null_function}, //0x9F
62 {1, &oid_null_function}, //0xA0
63 {1, &oid_null_function}, //0xA1
64 {1, &oid_null_function}, //0xA2
65 {1, &oid_null_function}, //0xA3
66 {1, &oid_null_function}, //0xA4
67 {1, &oid_null_function}, //0xA5
68 {1, &oid_null_function}, //0xA6
69 {1, &oid_rt_get_total_tx_bytes_hdl}, //0xA7
70 {1, &oid_rt_get_total_rx_bytes_hdl}, //0xA8
71 {1, &oid_rt_current_tx_power_level_hdl}, //0xA9
72 {1, &oid_rt_get_enc_key_mismatch_count_hdl}, //0xAA
73 {1, &oid_rt_get_enc_key_match_count_hdl}, //0xAB
74 {1, &oid_rt_get_channel_hdl}, //0xAC
75 {1, &oid_rt_set_channelplan_hdl}, //0xAD
76 {1, &oid_rt_get_hardware_radio_off_hdl}, //0xAE
77 {1, &oid_null_function}, //0xAF
78 {1, &oid_null_function}, //0xB0
79 {1, &oid_null_function}, //0xB1
80 {1, &oid_null_function}, //0xB2
81 {1, &oid_null_function}, //0xB3
82 {1, &oid_rt_get_key_mismatch_hdl}, //0xB4
83 {1, &oid_null_function}, //0xB5
84 {1, &oid_null_function}, //0xB6
85 {1, &oid_null_function}, //0xB7
86 {1, &oid_null_function}, //0xB8
87 {1, &oid_null_function}, //0xB9
88 {1, &oid_null_function}, //0xBA
89 {1, &oid_rt_supported_wireless_mode_hdl}, //0xBB
90 {1, &oid_rt_get_channel_list_hdl}, //0xBC
91 {1, &oid_rt_get_scan_in_progress_hdl}, //0xBD
92 {1, &oid_null_function}, //0xBE
93 {1, &oid_null_function}, //0xBF
94 {1, &oid_null_function}, //0xC0
95 {1, &oid_rt_forced_data_rate_hdl}, //0xC1
96 {1, &oid_rt_wireless_mode_for_scan_list_hdl}, //0xC2
97 {1, &oid_rt_get_bss_wireless_mode_hdl}, //0xC3
98 {1, &oid_rt_scan_with_magic_packet_hdl}, //0xC4
99 {1, &oid_null_function}, //0xC5
100 {1, &oid_null_function}, //0xC6
101 {1, &oid_null_function}, //0xC7
102 {1, &oid_null_function}, //0xC8
103 {1, &oid_null_function}, //0xC9
104 {1, &oid_null_function}, //0xCA
105 {1, &oid_null_function}, //0xCB
106 {1, &oid_null_function}, //0xCC
107 {1, &oid_null_function}, //0xCD
108 {1, &oid_null_function}, //0xCE
109 {1, &oid_null_function}, //0xCF
113 struct oid_obj_priv oid_rtl_seg_01_03[] =
115 {1, &oid_rt_ap_get_associated_station_list_hdl}, //0x00
116 {1, &oid_null_function}, //0x01
117 {1, &oid_rt_ap_switch_into_ap_mode_hdl}, //0x02
118 {1, &oid_null_function}, //0x03
119 {1, &oid_rt_ap_supported_hdl}, //0x04
120 {1, &oid_rt_ap_set_passphrase_hdl}, //0x05
124 struct oid_obj_priv oid_rtl_seg_01_11[] =
126 {1, &oid_null_function}, //0xC0 OID_RT_PRO_RX_FILTER
127 {1, &oid_null_function}, //0xC1 OID_CE_USB_WRITE_REGISTRY
128 {1, &oid_null_function}, //0xC2 OID_CE_USB_READ_REGISTRY
129 {1, &oid_null_function}, //0xC3 OID_RT_PRO_SET_INITIAL_GAIN
130 {1, &oid_null_function}, //0xC4 OID_RT_PRO_SET_BB_RF_STANDBY_MODE
131 {1, &oid_null_function}, //0xC5 OID_RT_PRO_SET_BB_RF_SHUTDOWN_MODE
132 {1, &oid_null_function}, //0xC6 OID_RT_PRO_SET_TX_CHARGE_PUMP
133 {1, &oid_null_function}, //0xC7 OID_RT_PRO_SET_RX_CHARGE_PUMP
134 {1, &oid_rt_pro_rf_write_registry_hdl}, //0xC8
135 {1, &oid_rt_pro_rf_read_registry_hdl}, //0xC9
136 {1, &oid_null_function} //0xCA OID_RT_PRO_QUERY_RF_TYPE
140 struct oid_obj_priv oid_rtl_seg_03_00[] =
142 {1, &oid_null_function}, //0x00
143 {1, &oid_rt_get_connect_state_hdl}, //0x01
144 {1, &oid_null_function}, //0x02
145 {1, &oid_null_function}, //0x03
146 {1, &oid_rt_set_default_key_id_hdl}, //0x04
152 //************** oid_rtl_seg_01_01 section start **************
154 NDIS_STATUS oid_rt_pro_set_fw_dig_state_hdl(struct oid_par_priv* poid_par_priv)
156 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
158 PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context);
163 if(poid_par_priv->type_of_oid != SET_OID)
165 status = NDIS_STATUS_NOT_ACCEPTED;
169 _irqlevel_changed_(&oldirql,LOWER);
170 if(poid_par_priv->information_buf_len >= sizeof(struct setdig_parm))
172 //DEBUG_ERR(("===> oid_rt_pro_set_fw_dig_state_hdl. type:0x%02x.\n",*((unsigned char*)poid_par_priv->information_buf )));
173 if(!rtw_setfwdig_cmd(Adapter,*((unsigned char*)poid_par_priv->information_buf )))
175 status = NDIS_STATUS_NOT_ACCEPTED;
180 status = NDIS_STATUS_NOT_ACCEPTED;
182 _irqlevel_changed_(&oldirql,RAISE);
187 //-----------------------------------------------------------------------------
188 NDIS_STATUS oid_rt_pro_set_fw_ra_state_hdl(struct oid_par_priv* poid_par_priv)
191 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
193 PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context);
197 if(poid_par_priv->type_of_oid != SET_OID)
199 status = NDIS_STATUS_NOT_ACCEPTED;
204 _irqlevel_changed_(&oldirql,LOWER);
206 if(poid_par_priv->information_buf_len >= sizeof(struct setra_parm))
208 //DEBUG_ERR(("===> oid_rt_pro_set_fw_ra_state_hdl. type:0x%02x.\n",*((unsigned char*)poid_par_priv->information_buf )));
209 if(!rtw_setfwra_cmd(Adapter,*((unsigned char*)poid_par_priv->information_buf )))
211 status = NDIS_STATUS_NOT_ACCEPTED;
216 status = NDIS_STATUS_NOT_ACCEPTED;
218 _irqlevel_changed_(&oldirql,RAISE);
223 //-----------------------------------------------------------------------------
224 NDIS_STATUS oid_rt_get_signal_quality_hdl(struct oid_par_priv* poid_par_priv)
226 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
227 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
229 //DEBUG_ERR(("<**********************oid_rt_get_signal_quality_hdl \n"));
230 if(poid_par_priv->type_of_oid != QUERY_OID)
232 status = NDIS_STATUS_NOT_ACCEPTED;
237 if(pMgntInfo->mAssoc || pMgntInfo->mIbss)
239 ulInfo = pAdapter->RxStats.SignalQuality;
240 *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
244 ulInfo = 0xffffffff; // It stands for -1 in 4-byte integer.
252 //------------------------------------------------------------------------------
254 NDIS_STATUS oid_rt_get_small_packet_crc_hdl(struct oid_par_priv* poid_par_priv)
256 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
257 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
259 if(poid_par_priv->type_of_oid != QUERY_OID)
261 status = NDIS_STATUS_NOT_ACCEPTED;
265 if(poid_par_priv->information_buf_len >= sizeof(ULONG) )
267 *(ULONG *)poid_par_priv->information_buf = padapter->recvpriv.rx_smallpacket_crcerr;
268 *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
272 status = NDIS_STATUS_INVALID_LENGTH;
277 //------------------------------------------------------------------------------
278 NDIS_STATUS oid_rt_get_middle_packet_crc_hdl(struct oid_par_priv* poid_par_priv)
280 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
281 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
283 if(poid_par_priv->type_of_oid != QUERY_OID)
285 status = NDIS_STATUS_NOT_ACCEPTED;
289 if(poid_par_priv->information_buf_len >= sizeof(ULONG) )
291 *(ULONG *)poid_par_priv->information_buf = padapter->recvpriv.rx_middlepacket_crcerr;
292 *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
296 status = NDIS_STATUS_INVALID_LENGTH;
302 //------------------------------------------------------------------------------
303 NDIS_STATUS oid_rt_get_large_packet_crc_hdl(struct oid_par_priv* poid_par_priv)
305 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
306 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
308 if(poid_par_priv->type_of_oid != QUERY_OID)
310 status = NDIS_STATUS_NOT_ACCEPTED;
314 if(poid_par_priv->information_buf_len >= sizeof(ULONG) )
316 *(ULONG *)poid_par_priv->information_buf = padapter->recvpriv.rx_largepacket_crcerr;
317 *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
321 status = NDIS_STATUS_INVALID_LENGTH;
328 //------------------------------------------------------------------------------
329 NDIS_STATUS oid_rt_get_tx_retry_hdl(struct oid_par_priv* poid_par_priv)
331 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
332 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
334 if(poid_par_priv->type_of_oid != QUERY_OID)
336 status = NDIS_STATUS_NOT_ACCEPTED;
342 NDIS_STATUS oid_rt_get_rx_retry_hdl(struct oid_par_priv* poid_par_priv)
344 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
345 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
347 if(poid_par_priv->type_of_oid != QUERY_OID)
349 status = NDIS_STATUS_NOT_ACCEPTED;
352 *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
355 //------------------------------------------------------------------------------
356 NDIS_STATUS oid_rt_get_rx_total_packet_hdl(struct oid_par_priv* poid_par_priv)
358 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
359 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
361 if(poid_par_priv->type_of_oid != QUERY_OID)
363 status = NDIS_STATUS_NOT_ACCEPTED;
366 if(poid_par_priv->information_buf_len >= sizeof(ULONG) )
368 *(u64 *)poid_par_priv->information_buf = padapter->recvpriv.rx_pkts + padapter->recvpriv.rx_drop;
369 *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
373 status = NDIS_STATUS_INVALID_LENGTH;
379 //------------------------------------------------------------------------------
380 NDIS_STATUS oid_rt_get_tx_beacon_ok_hdl(struct oid_par_priv* poid_par_priv)
382 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
383 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
385 if(poid_par_priv->type_of_oid != QUERY_OID)
387 status = NDIS_STATUS_NOT_ACCEPTED;
393 NDIS_STATUS oid_rt_get_tx_beacon_err_hdl(struct oid_par_priv* poid_par_priv)
395 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
396 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
398 if(poid_par_priv->type_of_oid != QUERY_OID)
400 status = NDIS_STATUS_NOT_ACCEPTED;
406 //------------------------------------------------------------------------------
407 NDIS_STATUS oid_rt_get_rx_icv_err_hdl(struct oid_par_priv* poid_par_priv)
409 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
410 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
412 if(poid_par_priv->type_of_oid != QUERY_OID)
414 status = NDIS_STATUS_NOT_ACCEPTED;
417 if(poid_par_priv->information_buf_len>= sizeof(u32))
419 //_rtw_memcpy(*(uint *)poid_par_priv->information_buf,padapter->recvpriv.rx_icv_err,sizeof(u32));
420 *(uint *)poid_par_priv->information_buf = padapter->recvpriv.rx_icv_err;
421 *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
425 status = NDIS_STATUS_INVALID_LENGTH ;
431 //------------------------------------------------------------------------------
432 NDIS_STATUS oid_rt_set_encryption_algorithm_hdl(struct oid_par_priv* poid_par_priv)
434 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
435 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
437 if(poid_par_priv->type_of_oid != SET_OID)
439 status = NDIS_STATUS_NOT_ACCEPTED;
445 //------------------------------------------------------------------------------
446 NDIS_STATUS oid_rt_get_preamble_mode_hdl(struct oid_par_priv* poid_par_priv)
448 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
449 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
450 ULONG preamblemode = 0 ;
452 if(poid_par_priv->type_of_oid != QUERY_OID)
454 status = NDIS_STATUS_NOT_ACCEPTED;
457 if(poid_par_priv->information_buf_len>= sizeof(ULONG))
459 if(padapter->registrypriv.preamble == PREAMBLE_LONG)
461 else if (padapter->registrypriv.preamble == PREAMBLE_AUTO)
463 else if (padapter->registrypriv.preamble == PREAMBLE_SHORT)
467 *(ULONG *)poid_par_priv->information_buf = preamblemode ;
468 *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
472 status = NDIS_STATUS_INVALID_LENGTH ;
476 //------------------------------------------------------------------------------
477 NDIS_STATUS oid_rt_get_ap_ip_hdl(struct oid_par_priv* poid_par_priv)
479 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
480 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
482 if(poid_par_priv->type_of_oid != QUERY_OID)
484 status = NDIS_STATUS_NOT_ACCEPTED;
491 NDIS_STATUS oid_rt_get_channelplan_hdl(struct oid_par_priv* poid_par_priv)
493 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
494 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
495 struct eeprom_priv* peeprompriv = &padapter->eeprompriv;
497 if(poid_par_priv->type_of_oid != QUERY_OID)
499 status = NDIS_STATUS_NOT_ACCEPTED;
502 *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
503 *(u16 *)poid_par_priv->information_buf = peeprompriv->channel_plan ;
507 NDIS_STATUS oid_rt_set_channelplan_hdl(struct oid_par_priv* poid_par_priv)
509 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
510 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
511 struct eeprom_priv* peeprompriv = &padapter->eeprompriv;
513 if(poid_par_priv->type_of_oid != SET_OID)
515 status = NDIS_STATUS_NOT_ACCEPTED;
519 peeprompriv->channel_plan = *(u16 *)poid_par_priv->information_buf ;
523 //------------------------------------------------------------------------------
524 NDIS_STATUS oid_rt_set_preamble_mode_hdl(struct oid_par_priv* poid_par_priv)
526 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
527 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
528 ULONG preamblemode = 0;
529 if(poid_par_priv->type_of_oid != SET_OID)
531 status = NDIS_STATUS_NOT_ACCEPTED;
535 if(poid_par_priv->information_buf_len>= sizeof(ULONG))
537 preamblemode = *(ULONG *)poid_par_priv->information_buf ;
538 if( preamblemode == 0)
539 padapter->registrypriv.preamble = PREAMBLE_LONG;
540 else if (preamblemode==1 )
541 padapter->registrypriv.preamble = PREAMBLE_AUTO;
542 else if ( preamblemode==2 )
543 padapter->registrypriv.preamble = PREAMBLE_SHORT;
545 *(ULONG *)poid_par_priv->information_buf = preamblemode ;
546 *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
550 status = NDIS_STATUS_INVALID_LENGTH ;
555 //------------------------------------------------------------------------------
556 NDIS_STATUS oid_rt_set_bcn_intvl_hdl(struct oid_par_priv* poid_par_priv)
558 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
559 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
561 if(poid_par_priv->type_of_oid != SET_OID)
563 status = NDIS_STATUS_NOT_ACCEPTED;
569 NDIS_STATUS oid_rt_dedicate_probe_hdl(struct oid_par_priv* poid_par_priv)
571 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
572 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
576 //------------------------------------------------------------------------------
577 NDIS_STATUS oid_rt_get_total_tx_bytes_hdl(struct oid_par_priv* poid_par_priv)
579 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
580 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
582 if(poid_par_priv->type_of_oid != QUERY_OID)
584 status = NDIS_STATUS_NOT_ACCEPTED;
587 if(poid_par_priv->information_buf_len>= sizeof(ULONG))
589 *(u64 *)poid_par_priv->information_buf = padapter->xmitpriv.tx_bytes;
590 *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
594 status = NDIS_STATUS_INVALID_LENGTH ;
600 //------------------------------------------------------------------------------
601 NDIS_STATUS oid_rt_get_total_rx_bytes_hdl(struct oid_par_priv* poid_par_priv)
603 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
604 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
606 if(poid_par_priv->type_of_oid != QUERY_OID)
608 status = NDIS_STATUS_NOT_ACCEPTED;
611 if(poid_par_priv->information_buf_len>= sizeof(ULONG))
613 //_rtw_memcpy(*(uint *)poid_par_priv->information_buf,padapter->recvpriv.rx_icv_err,sizeof(u32));
614 *(u64 *)poid_par_priv->information_buf = padapter->recvpriv.rx_bytes;
615 *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
619 status = NDIS_STATUS_INVALID_LENGTH ;
623 //------------------------------------------------------------------------------
624 NDIS_STATUS oid_rt_current_tx_power_level_hdl(struct oid_par_priv* poid_par_priv)
626 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
627 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
631 NDIS_STATUS oid_rt_get_enc_key_mismatch_count_hdl(struct oid_par_priv* poid_par_priv)
633 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
634 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
636 if(poid_par_priv->type_of_oid != QUERY_OID)
638 status = NDIS_STATUS_NOT_ACCEPTED;
644 NDIS_STATUS oid_rt_get_enc_key_match_count_hdl(struct oid_par_priv* poid_par_priv)
646 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
647 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
649 if(poid_par_priv->type_of_oid != QUERY_OID)
651 status = NDIS_STATUS_NOT_ACCEPTED;
657 NDIS_STATUS oid_rt_get_channel_hdl(struct oid_par_priv* poid_par_priv)
659 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
660 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
661 struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
662 NDIS_802_11_CONFIGURATION *pnic_Config;
667 if(poid_par_priv->type_of_oid != QUERY_OID)
669 status = NDIS_STATUS_NOT_ACCEPTED;
673 if ( (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) ||
674 (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == _TRUE))
675 pnic_Config = &pmlmepriv->cur_network.network.Configuration;
677 pnic_Config = &padapter->registrypriv.dev_network.Configuration;
679 channelnum = pnic_Config->DSConfig;
680 *(ULONG *)poid_par_priv->information_buf = channelnum;
682 *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
690 NDIS_STATUS oid_rt_get_hardware_radio_off_hdl(struct oid_par_priv* poid_par_priv)
692 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
693 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
695 if(poid_par_priv->type_of_oid != QUERY_OID)
697 status = NDIS_STATUS_NOT_ACCEPTED;
703 NDIS_STATUS oid_rt_get_key_mismatch_hdl(struct oid_par_priv* poid_par_priv)
705 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
706 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
708 if(poid_par_priv->type_of_oid != QUERY_OID)
710 status = NDIS_STATUS_NOT_ACCEPTED;
716 NDIS_STATUS oid_rt_supported_wireless_mode_hdl(struct oid_par_priv* poid_par_priv)
718 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
719 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
721 //DEBUG_ERR(("<**********************oid_rt_supported_wireless_mode_hdl \n"));
722 if(poid_par_priv->type_of_oid != QUERY_OID)
724 status = NDIS_STATUS_NOT_ACCEPTED;
727 if(poid_par_priv->information_buf_len >= sizeof(ULONG)){
728 ulInfo |= 0x0100; //WIRELESS_MODE_B
729 ulInfo |= 0x0200; //WIRELESS_MODE_G
730 ulInfo |= 0x0400; //WIRELESS_MODE_A
732 *(ULONG *) poid_par_priv->information_buf = ulInfo;
733 //DEBUG_ERR(("<===oid_rt_supported_wireless_mode %x\n",ulInfo));
734 *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
737 status = NDIS_STATUS_INVALID_LENGTH;
742 NDIS_STATUS oid_rt_get_channel_list_hdl(struct oid_par_priv* poid_par_priv)
744 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
745 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
747 if(poid_par_priv->type_of_oid != QUERY_OID)
749 status = NDIS_STATUS_NOT_ACCEPTED;
755 NDIS_STATUS oid_rt_get_scan_in_progress_hdl(struct oid_par_priv* poid_par_priv)
757 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
758 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
760 if(poid_par_priv->type_of_oid != QUERY_OID)
762 status = NDIS_STATUS_NOT_ACCEPTED;
770 NDIS_STATUS oid_rt_forced_data_rate_hdl(struct oid_par_priv* poid_par_priv)
772 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
773 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
777 NDIS_STATUS oid_rt_wireless_mode_for_scan_list_hdl(struct oid_par_priv* poid_par_priv)
779 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
780 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
784 NDIS_STATUS oid_rt_get_bss_wireless_mode_hdl(struct oid_par_priv* poid_par_priv)
786 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
787 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
789 if(poid_par_priv->type_of_oid != QUERY_OID)
791 status = NDIS_STATUS_NOT_ACCEPTED;
798 NDIS_STATUS oid_rt_scan_with_magic_packet_hdl(struct oid_par_priv* poid_par_priv)
800 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
801 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
805 //************** oid_rtl_seg_01_01 section end **************
807 //************** oid_rtl_seg_01_03 section start **************
808 NDIS_STATUS oid_rt_ap_get_associated_station_list_hdl(struct oid_par_priv* poid_par_priv)
810 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
811 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
813 if(poid_par_priv->type_of_oid != QUERY_OID)
815 status = NDIS_STATUS_NOT_ACCEPTED;
821 NDIS_STATUS oid_rt_ap_switch_into_ap_mode_hdl(struct oid_par_priv* poid_par_priv)
823 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
824 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
828 NDIS_STATUS oid_rt_ap_supported_hdl(struct oid_par_priv* poid_par_priv)
830 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
831 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
835 NDIS_STATUS oid_rt_ap_set_passphrase_hdl(struct oid_par_priv* poid_par_priv)
837 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
838 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
840 if(poid_par_priv->type_of_oid != SET_OID)
842 status = NDIS_STATUS_NOT_ACCEPTED;
849 //************** oid_rtl_seg_01_03 section end **************
851 //**************** oid_rtl_seg_01_11 section start ****************
852 NDIS_STATUS oid_rt_pro_rf_write_registry_hdl(struct oid_par_priv* poid_par_priv)
854 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
855 PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context);
858 //DEBUG_ERR(("<**********************oid_rt_pro_rf_write_registry_hdl \n"));
859 if(poid_par_priv->type_of_oid != SET_OID) //QUERY_OID
861 status = NDIS_STATUS_NOT_ACCEPTED;
865 _irqlevel_changed_(&oldirql,LOWER);
866 if(poid_par_priv->information_buf_len== (sizeof(unsigned long)*3))
868 //RegOffsetValue - The offset of RF register to write.
869 //RegDataWidth - The data width of RF register to write.
870 //RegDataValue - The value to write.
871 //RegOffsetValue = *((unsigned long*)InformationBuffer);
872 //RegDataWidth = *((unsigned long*)InformationBuffer+1);
873 //RegDataValue = *((unsigned long*)InformationBuffer+2);
874 if(!rtw_setrfreg_cmd(Adapter,
875 *(unsigned char*)poid_par_priv->information_buf,
876 (unsigned long)(*((unsigned long*)poid_par_priv->information_buf+2))))
878 status = NDIS_STATUS_NOT_ACCEPTED;
883 status = NDIS_STATUS_INVALID_LENGTH;
885 _irqlevel_changed_(&oldirql,RAISE);
891 //------------------------------------------------------------------------------
892 NDIS_STATUS oid_rt_pro_rf_read_registry_hdl(struct oid_par_priv* poid_par_priv)
894 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
896 PADAPTER Adapter = (PADAPTER)(poid_par_priv->adapter_context);
900 //DEBUG_ERR(("<**********************oid_rt_pro_rf_read_registry_hdl \n"));
901 if(poid_par_priv->type_of_oid != SET_OID) //QUERY_OID
903 status = NDIS_STATUS_NOT_ACCEPTED;
907 _irqlevel_changed_(&oldirql,LOWER);
908 if(poid_par_priv->information_buf_len== (sizeof(unsigned long)*3))
910 if(Adapter->mppriv.act_in_progress == _TRUE)
912 status = NDIS_STATUS_NOT_ACCEPTED;
917 Adapter->mppriv.act_in_progress = _TRUE;
918 Adapter->mppriv.workparam.bcompleted= _FALSE;
919 Adapter->mppriv.workparam.act_type = MPT_READ_RF;
920 Adapter->mppriv.workparam.io_offset = *(unsigned long*)poid_par_priv->information_buf;
921 Adapter->mppriv.workparam.io_value = 0xcccccccc;
923 //RegOffsetValue - The offset of RF register to read.
924 //RegDataWidth - The data width of RF register to read.
925 //RegDataValue - The value to read.
926 //RegOffsetValue = *((unsigned long*)InformationBuffer);
927 //RegDataWidth = *((unsigned long*)InformationBuffer+1);
928 //RegDataValue = *((unsigned long*)InformationBuffer+2);
929 if(!rtw_getrfreg_cmd(Adapter,
930 *(unsigned char*)poid_par_priv->information_buf,
931 (unsigned char*)&Adapter->mppriv.workparam.io_value))
933 status = NDIS_STATUS_NOT_ACCEPTED;
940 status = NDIS_STATUS_INVALID_LENGTH;
942 _irqlevel_changed_(&oldirql,RAISE);
948 //**************** oid_rtl_seg_01_11 section end****************
951 //************** oid_rtl_seg_03_00 section start **************
952 enum _CONNECT_STATE_{
959 NDIS_STATUS oid_rt_get_connect_state_hdl(struct oid_par_priv* poid_par_priv)
961 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
962 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
964 struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
968 if(poid_par_priv->type_of_oid != QUERY_OID)
970 status = NDIS_STATUS_NOT_ACCEPTED;
974 // nStatus==0 CheckingStatus
975 // nStatus==1 Associated
976 // nStatus==2 AdHocMode
977 // nStatus==3 NotAssociated
979 if(check_fwstate(pmlmepriv, _FW_UNDER_LINKING) == _TRUE)
980 ulInfo = CHECKINGSTATUS;
981 else if(check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE)
983 else if(check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)== _TRUE)
986 ulInfo = NOTASSOCIATED ;
988 *(ULONG *)poid_par_priv->information_buf = ulInfo;
989 *poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
992 // Rearrange the order to let the UI still shows connection when scan is in progress
993 RT_TRACE(COMP_OID_QUERY, DBG_LOUD, ("===> Query OID_RT_GET_CONNECT_STATE.\n"));
994 if(pMgntInfo->mAssoc)
996 else if(pMgntInfo->mIbss)
998 else if(pMgntInfo->bScanInProgress)
1002 ulInfoLen = sizeof(ULONG);
1003 RT_TRACE(COMP_OID_QUERY, DBG_LOUD, ("<=== Query OID_RT_GET_CONNECT_STATE: %d\n", ulInfo));
1009 NDIS_STATUS oid_rt_set_default_key_id_hdl(struct oid_par_priv* poid_par_priv)
1011 NDIS_STATUS status = NDIS_STATUS_SUCCESS;
1012 PADAPTER padapter = (PADAPTER)(poid_par_priv->adapter_context);
1014 if(poid_par_priv->type_of_oid != SET_OID)
1016 status = NDIS_STATUS_NOT_ACCEPTED;
1022 //************** oid_rtl_seg_03_00 section end **************