|
@@ -101,23 +101,6 @@ struct iw_priv_args privtab[] = {
|
|
|
IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "adhocEntry" },
|
|
|
/* --- sub-ioctls relations --- */
|
|
|
|
|
|
-#ifdef DBG
|
|
|
-{ RTPRIV_IOCTL_BBP,
|
|
|
- IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK,
|
|
|
- "bbp"},
|
|
|
-{ RTPRIV_IOCTL_MAC,
|
|
|
- IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | 1024,
|
|
|
- "mac"},
|
|
|
-#ifdef RTMP_RF_RW_SUPPORT
|
|
|
-{ RTPRIV_IOCTL_RF,
|
|
|
- IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK,
|
|
|
- "rf"},
|
|
|
-#endif // RTMP_RF_RW_SUPPORT //
|
|
|
-{ RTPRIV_IOCTL_E2P,
|
|
|
- IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | 1024,
|
|
|
- "e2p"},
|
|
|
-#endif /* DBG */
|
|
|
-
|
|
|
{ RTPRIV_IOCTL_STATISTICS,
|
|
|
0, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK,
|
|
|
"stat"},
|
|
@@ -204,18 +187,6 @@ INT Set_Wpa_Support(
|
|
|
IN PSTRING arg);
|
|
|
#endif // WPA_SUPPLICANT_SUPPORT //
|
|
|
|
|
|
-#ifdef DBG
|
|
|
-
|
|
|
-VOID RTMPIoctlMAC(
|
|
|
- IN PRTMP_ADAPTER pAdapter,
|
|
|
- IN struct iwreq *wrq);
|
|
|
-
|
|
|
-VOID RTMPIoctlE2PROM(
|
|
|
- IN PRTMP_ADAPTER pAdapter,
|
|
|
- IN struct iwreq *wrq);
|
|
|
-#endif // DBG //
|
|
|
-
|
|
|
-
|
|
|
NDIS_STATUS RTMPWPANoneAddKeyProc(
|
|
|
IN PRTMP_ADAPTER pAd,
|
|
|
IN PVOID pBuf);
|
|
@@ -2917,142 +2888,6 @@ int rt_ioctl_siwpmksa(struct net_device *dev,
|
|
|
}
|
|
|
#endif // #if WIRELESS_EXT > 17
|
|
|
|
|
|
-#ifdef DBG
|
|
|
-static int
|
|
|
-rt_private_ioctl_bbp(struct net_device *dev, struct iw_request_info *info,
|
|
|
- struct iw_point *wrq, char *extra)
|
|
|
- {
|
|
|
- PSTRING this_char;
|
|
|
- PSTRING value = NULL;
|
|
|
- UCHAR regBBP = 0;
|
|
|
-// CHAR arg[255]={0};
|
|
|
- UINT32 bbpId;
|
|
|
- UINT32 bbpValue;
|
|
|
- BOOLEAN bIsPrintAllBBP = FALSE;
|
|
|
- INT Status = 0;
|
|
|
- PRTMP_ADAPTER pAdapter = RTMP_OS_NETDEV_GET_PRIV(dev);
|
|
|
-
|
|
|
-
|
|
|
- memset(extra, 0x00, IW_PRIV_SIZE_MASK);
|
|
|
-
|
|
|
- if (wrq->length > 1) //No parameters.
|
|
|
- {
|
|
|
- sprintf(extra, "\n");
|
|
|
-
|
|
|
- //Parsing Read or Write
|
|
|
- this_char = wrq->pointer;
|
|
|
- DBGPRINT(RT_DEBUG_TRACE, ("this_char=%s\n", this_char));
|
|
|
- if (!*this_char)
|
|
|
- goto next;
|
|
|
-
|
|
|
- if ((value = rtstrchr(this_char, '=')) != NULL)
|
|
|
- *value++ = 0;
|
|
|
-
|
|
|
- if (!value || !*value)
|
|
|
- { //Read
|
|
|
- DBGPRINT(RT_DEBUG_TRACE, ("this_char=%s, value=%s\n", this_char, value));
|
|
|
- if (sscanf(this_char, "%d", &(bbpId)) == 1)
|
|
|
- {
|
|
|
- if (bbpId <= MAX_BBP_ID)
|
|
|
- {
|
|
|
-#ifdef RALINK_ATE
|
|
|
- if (ATE_ON(pAdapter))
|
|
|
- {
|
|
|
- ATE_BBP_IO_READ8_BY_REG_ID(pAdapter, bbpId, ®BBP);
|
|
|
- }
|
|
|
- else
|
|
|
-#endif // RALINK_ATE //
|
|
|
- {
|
|
|
- RTMP_BBP_IO_READ8_BY_REG_ID(pAdapter, bbpId, ®BBP);
|
|
|
- }
|
|
|
- sprintf(extra+strlen(extra), "R%02d[0x%02X]:%02X\n", bbpId, bbpId, regBBP);
|
|
|
- wrq->length = strlen(extra) + 1; // 1: size of '\0'
|
|
|
- DBGPRINT(RT_DEBUG_TRACE, ("msg=%s\n", extra));
|
|
|
- }
|
|
|
- else
|
|
|
- {//Invalid parametes, so default printk all bbp
|
|
|
- bIsPrintAllBBP = TRUE;
|
|
|
- goto next;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- { //Invalid parametes, so default printk all bbp
|
|
|
- bIsPrintAllBBP = TRUE;
|
|
|
- goto next;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- { //Write
|
|
|
- if ((sscanf(this_char, "%d", &(bbpId)) == 1) && (sscanf(value, "%x", &(bbpValue)) == 1))
|
|
|
- {
|
|
|
- if (bbpId <= MAX_BBP_ID)
|
|
|
- {
|
|
|
-#ifdef RALINK_ATE
|
|
|
- if (ATE_ON(pAdapter))
|
|
|
- {
|
|
|
- ATE_BBP_IO_WRITE8_BY_REG_ID(pAdapter, bbpId, bbpValue);
|
|
|
- /* read it back for showing */
|
|
|
- ATE_BBP_IO_READ8_BY_REG_ID(pAdapter, bbpId, ®BBP);
|
|
|
- }
|
|
|
- else
|
|
|
-#endif // RALINK_ATE //
|
|
|
- {
|
|
|
- RTMP_BBP_IO_WRITE8_BY_REG_ID(pAdapter, bbpId, bbpValue);
|
|
|
- /* read it back for showing */
|
|
|
- RTMP_BBP_IO_READ8_BY_REG_ID(pAdapter, bbpId, ®BBP);
|
|
|
- }
|
|
|
- sprintf(extra+strlen(extra), "R%02d[0x%02X]:%02X\n", bbpId, bbpId, regBBP);
|
|
|
- wrq->length = strlen(extra) + 1; // 1: size of '\0'
|
|
|
- DBGPRINT(RT_DEBUG_TRACE, ("msg=%s\n", extra));
|
|
|
- }
|
|
|
- else
|
|
|
- {//Invalid parametes, so default printk all bbp
|
|
|
- bIsPrintAllBBP = TRUE;
|
|
|
- goto next;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- { //Invalid parametes, so default printk all bbp
|
|
|
- bIsPrintAllBBP = TRUE;
|
|
|
- goto next;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- bIsPrintAllBBP = TRUE;
|
|
|
-
|
|
|
-next:
|
|
|
- if (bIsPrintAllBBP)
|
|
|
- {
|
|
|
- memset(extra, 0x00, IW_PRIV_SIZE_MASK);
|
|
|
- sprintf(extra, "\n");
|
|
|
- for (bbpId = 0; bbpId <= MAX_BBP_ID; bbpId++)
|
|
|
- {
|
|
|
- if (strlen(extra) >= (IW_PRIV_SIZE_MASK - 20))
|
|
|
- break;
|
|
|
-#ifdef RALINK_ATE
|
|
|
- if (ATE_ON(pAdapter))
|
|
|
- {
|
|
|
- ATE_BBP_IO_READ8_BY_REG_ID(pAdapter, bbpId, ®BBP);
|
|
|
- }
|
|
|
- else
|
|
|
-#endif // RALINK_ATE //
|
|
|
- RTMP_BBP_IO_READ8_BY_REG_ID(pAdapter, bbpId, ®BBP);
|
|
|
- sprintf(extra+strlen(extra), "R%02d[0x%02X]:%02X ", bbpId, bbpId, regBBP);
|
|
|
- if (bbpId%5 == 4)
|
|
|
- sprintf(extra+strlen(extra), "%03d = %02X\n", bbpId, regBBP); // edit by johnli, change display format
|
|
|
- }
|
|
|
-
|
|
|
- wrq->length = strlen(extra) + 1; // 1: size of '\0'
|
|
|
- DBGPRINT(RT_DEBUG_TRACE, ("wrq->length = %d\n", wrq->length));
|
|
|
- }
|
|
|
-
|
|
|
- DBGPRINT(RT_DEBUG_TRACE, ("<==rt_private_ioctl_bbp\n\n"));
|
|
|
-
|
|
|
- return Status;
|
|
|
-}
|
|
|
-#endif // DBG //
|
|
|
-
|
|
|
int rt_ioctl_siwrate(struct net_device *dev,
|
|
|
struct iw_request_info *info,
|
|
|
union iwreq_data *wrqu, char *extra)
|
|
@@ -3246,11 +3081,7 @@ static const iw_handler rt_priv_handlers[] = {
|
|
|
(iw_handler) NULL, /* + 0x00 */
|
|
|
(iw_handler) NULL, /* + 0x01 */
|
|
|
(iw_handler) rt_ioctl_setparam, /* + 0x02 */
|
|
|
-#ifdef DBG
|
|
|
- (iw_handler) rt_private_ioctl_bbp, /* + 0x03 */
|
|
|
-#else
|
|
|
(iw_handler) NULL, /* + 0x03 */
|
|
|
-#endif
|
|
|
(iw_handler) NULL, /* + 0x04 */
|
|
|
(iw_handler) NULL, /* + 0x05 */
|
|
|
(iw_handler) NULL, /* + 0x06 */
|
|
@@ -5773,20 +5604,6 @@ INT rt28xx_sta_ioctl(
|
|
|
case RTPRIV_IOCTL_GSITESURVEY:
|
|
|
RTMPIoctlGetSiteSurvey(pAd, wrq);
|
|
|
break;
|
|
|
-#ifdef DBG
|
|
|
- case RTPRIV_IOCTL_MAC:
|
|
|
- RTMPIoctlMAC(pAd, wrq);
|
|
|
- break;
|
|
|
- case RTPRIV_IOCTL_E2P:
|
|
|
- RTMPIoctlE2PROM(pAd, wrq);
|
|
|
- break;
|
|
|
-#ifdef RTMP_RF_RW_SUPPORT
|
|
|
- case RTPRIV_IOCTL_RF:
|
|
|
- RTMPIoctlRF(pAd, wrq);
|
|
|
- break;
|
|
|
-#endif // RTMP_RF_RW_SUPPORT //
|
|
|
-#endif // DBG //
|
|
|
-
|
|
|
case SIOCETHTOOL:
|
|
|
break;
|
|
|
default:
|
|
@@ -6700,622 +6517,6 @@ INT Set_Wpa_Support(
|
|
|
}
|
|
|
#endif // WPA_SUPPLICANT_SUPPORT //
|
|
|
|
|
|
-#ifdef DBG
|
|
|
-/*
|
|
|
- ==========================================================================
|
|
|
- Description:
|
|
|
- Read / Write MAC
|
|
|
- Arguments:
|
|
|
- pAdapter Pointer to our adapter
|
|
|
- wrq Pointer to the ioctl argument
|
|
|
-
|
|
|
- Return Value:
|
|
|
- None
|
|
|
-
|
|
|
- Note:
|
|
|
- Usage:
|
|
|
- 1.) iwpriv ra0 mac 0 ==> read MAC where Addr=0x0
|
|
|
- 2.) iwpriv ra0 mac 0=12 ==> write MAC where Addr=0x0, value=12
|
|
|
- ==========================================================================
|
|
|
-*/
|
|
|
-VOID RTMPIoctlMAC(
|
|
|
- IN PRTMP_ADAPTER pAdapter,
|
|
|
- IN struct iwreq *wrq)
|
|
|
-{
|
|
|
- PSTRING this_char;
|
|
|
- PSTRING value;
|
|
|
- INT j = 0, k = 0;
|
|
|
- STRING msg[1024];
|
|
|
- STRING arg[255];
|
|
|
- ULONG macAddr = 0;
|
|
|
- UCHAR temp[16];
|
|
|
- STRING temp2[16];
|
|
|
- UINT32 macValue = 0;
|
|
|
- INT Status;
|
|
|
- BOOLEAN bIsPrintAllMAC = FALSE;
|
|
|
-
|
|
|
-
|
|
|
- memset(msg, 0x00, 1024);
|
|
|
- if (wrq->u.data.length > 1) //No parameters.
|
|
|
- {
|
|
|
- Status = copy_from_user(arg, wrq->u.data.pointer, (wrq->u.data.length > 255) ? 255 : wrq->u.data.length);
|
|
|
- sprintf(msg, "\n");
|
|
|
-
|
|
|
- //Parsing Read or Write
|
|
|
- this_char = arg;
|
|
|
- if (!*this_char)
|
|
|
- goto next;
|
|
|
-
|
|
|
- if ((value = rtstrchr(this_char, '=')) != NULL)
|
|
|
- *value++ = 0;
|
|
|
-
|
|
|
- if (!value || !*value)
|
|
|
- { //Read
|
|
|
- // Sanity check
|
|
|
- if(strlen(this_char) > 4)
|
|
|
- goto next;
|
|
|
-
|
|
|
- j = strlen(this_char);
|
|
|
- while(j-- > 0)
|
|
|
- {
|
|
|
- if(this_char[j] > 'f' || this_char[j] < '0')
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- // Mac Addr
|
|
|
- k = j = strlen(this_char);
|
|
|
- while(j-- > 0)
|
|
|
- {
|
|
|
- this_char[4-k+j] = this_char[j];
|
|
|
- }
|
|
|
-
|
|
|
- while(k < 4)
|
|
|
- this_char[3-k++]='0';
|
|
|
- this_char[4]='\0';
|
|
|
-
|
|
|
- if(strlen(this_char) == 4)
|
|
|
- {
|
|
|
- AtoH(this_char, temp, 2);
|
|
|
- macAddr = *temp*256 + temp[1];
|
|
|
- if (macAddr < 0xFFFF)
|
|
|
- {
|
|
|
- RTMP_IO_READ32(pAdapter, macAddr, &macValue);
|
|
|
- DBGPRINT(RT_DEBUG_TRACE, ("MacAddr=%lx, MacValue=%x\n", macAddr, macValue));
|
|
|
- sprintf(msg+strlen(msg), "[0x%08lX]:%08X ", macAddr , macValue);
|
|
|
- }
|
|
|
- else
|
|
|
- {//Invalid parametes, so default printk all mac
|
|
|
- bIsPrintAllMAC = TRUE;
|
|
|
- goto next;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- { //Write
|
|
|
- memcpy(&temp2, value, strlen(value));
|
|
|
- temp2[strlen(value)] = '\0';
|
|
|
-
|
|
|
- // Sanity check
|
|
|
- if((strlen(this_char) > 4) || strlen(temp2) > 8)
|
|
|
- goto next;
|
|
|
-
|
|
|
- j = strlen(this_char);
|
|
|
- while(j-- > 0)
|
|
|
- {
|
|
|
- if(this_char[j] > 'f' || this_char[j] < '0')
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- j = strlen(temp2);
|
|
|
- while(j-- > 0)
|
|
|
- {
|
|
|
- if(temp2[j] > 'f' || temp2[j] < '0')
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- //MAC Addr
|
|
|
- k = j = strlen(this_char);
|
|
|
- while(j-- > 0)
|
|
|
- {
|
|
|
- this_char[4-k+j] = this_char[j];
|
|
|
- }
|
|
|
-
|
|
|
- while(k < 4)
|
|
|
- this_char[3-k++]='0';
|
|
|
- this_char[4]='\0';
|
|
|
-
|
|
|
- //MAC value
|
|
|
- k = j = strlen(temp2);
|
|
|
- while(j-- > 0)
|
|
|
- {
|
|
|
- temp2[8-k+j] = temp2[j];
|
|
|
- }
|
|
|
-
|
|
|
- while(k < 8)
|
|
|
- temp2[7-k++]='0';
|
|
|
- temp2[8]='\0';
|
|
|
-
|
|
|
- {
|
|
|
- AtoH(this_char, temp, 2);
|
|
|
- macAddr = *temp*256 + temp[1];
|
|
|
-
|
|
|
- AtoH(temp2, temp, 4);
|
|
|
- macValue = *temp*256*256*256 + temp[1]*256*256 + temp[2]*256 + temp[3];
|
|
|
-
|
|
|
- // debug mode
|
|
|
- if (macAddr == (HW_DEBUG_SETTING_BASE + 4))
|
|
|
- {
|
|
|
- // 0x2bf4: byte0 non-zero: enable R17 tuning, 0: disable R17 tuning
|
|
|
- if (macValue & 0x000000ff)
|
|
|
- {
|
|
|
- pAdapter->BbpTuning.bEnable = TRUE;
|
|
|
- DBGPRINT(RT_DEBUG_TRACE,("turn on R17 tuning\n"));
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- UCHAR R66;
|
|
|
- pAdapter->BbpTuning.bEnable = FALSE;
|
|
|
- R66 = 0x26 + GET_LNA_GAIN(pAdapter);
|
|
|
-#ifdef RALINK_ATE
|
|
|
- if (ATE_ON(pAdapter))
|
|
|
- {
|
|
|
- ATE_BBP_IO_WRITE8_BY_REG_ID(pAdapter, BBP_R66, (0x26 + GET_LNA_GAIN(pAdapter)));
|
|
|
- }
|
|
|
- else
|
|
|
-#endif // RALINK_ATE //
|
|
|
-
|
|
|
- RTMP_BBP_IO_WRITE8_BY_REG_ID(pAdapter, BBP_R66, (0x26 + GET_LNA_GAIN(pAdapter)));
|
|
|
- DBGPRINT(RT_DEBUG_TRACE,("turn off R17 tuning, restore to 0x%02x\n", R66));
|
|
|
- }
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- DBGPRINT(RT_DEBUG_TRACE, ("MacAddr=%02lx, MacValue=0x%x\n", macAddr, macValue));
|
|
|
-
|
|
|
- RTMP_IO_WRITE32(pAdapter, macAddr, macValue);
|
|
|
- sprintf(msg+strlen(msg), "[0x%08lX]:%08X ", macAddr, macValue);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- bIsPrintAllMAC = TRUE;
|
|
|
-next:
|
|
|
- if (bIsPrintAllMAC)
|
|
|
- {
|
|
|
- struct file *file_w;
|
|
|
- PSTRING fileName = "MacDump.txt";
|
|
|
- mm_segment_t orig_fs;
|
|
|
-
|
|
|
- orig_fs = get_fs();
|
|
|
- set_fs(KERNEL_DS);
|
|
|
-
|
|
|
- // open file
|
|
|
- file_w = filp_open(fileName, O_WRONLY|O_CREAT, 0);
|
|
|
- if (IS_ERR(file_w))
|
|
|
- {
|
|
|
- DBGPRINT(RT_DEBUG_TRACE, ("-->2) %s: Error %ld opening %s\n", __FUNCTION__, -PTR_ERR(file_w), fileName));
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- if (file_w->f_op && file_w->f_op->write)
|
|
|
- {
|
|
|
- file_w->f_pos = 0;
|
|
|
- macAddr = 0x1000;
|
|
|
-
|
|
|
- while (macAddr <= 0x1800)
|
|
|
- {
|
|
|
- RTMP_IO_READ32(pAdapter, macAddr, &macValue);
|
|
|
- sprintf(msg, "%08lx = %08X\n", macAddr, macValue);
|
|
|
-
|
|
|
- // write data to file
|
|
|
- file_w->f_op->write(file_w, msg, strlen(msg), &file_w->f_pos);
|
|
|
-
|
|
|
- printk("%s", msg);
|
|
|
- macAddr += 4;
|
|
|
- }
|
|
|
- sprintf(msg, "\nDump all MAC values to %s\n", fileName);
|
|
|
- }
|
|
|
- filp_close(file_w, NULL);
|
|
|
- }
|
|
|
- set_fs(orig_fs);
|
|
|
- }
|
|
|
- if(strlen(msg) == 1)
|
|
|
- sprintf(msg+strlen(msg), "===>Error command format!");
|
|
|
-
|
|
|
- // Copy the information into the user buffer
|
|
|
- wrq->u.data.length = strlen(msg);
|
|
|
- Status = copy_to_user(wrq->u.data.pointer, msg, wrq->u.data.length);
|
|
|
-
|
|
|
- DBGPRINT(RT_DEBUG_TRACE, ("<==RTMPIoctlMAC\n\n"));
|
|
|
-}
|
|
|
-
|
|
|
-/*
|
|
|
- ==========================================================================
|
|
|
- Description:
|
|
|
- Read / Write E2PROM
|
|
|
- Arguments:
|
|
|
- pAdapter Pointer to our adapter
|
|
|
- wrq Pointer to the ioctl argument
|
|
|
-
|
|
|
- Return Value:
|
|
|
- None
|
|
|
-
|
|
|
- Note:
|
|
|
- Usage:
|
|
|
- 1.) iwpriv ra0 e2p 0 ==> read E2PROM where Addr=0x0
|
|
|
- 2.) iwpriv ra0 e2p 0=1234 ==> write E2PROM where Addr=0x0, value=1234
|
|
|
- ==========================================================================
|
|
|
-*/
|
|
|
-VOID RTMPIoctlE2PROM(
|
|
|
- IN PRTMP_ADAPTER pAdapter,
|
|
|
- IN struct iwreq *wrq)
|
|
|
-{
|
|
|
- PSTRING this_char;
|
|
|
- PSTRING value;
|
|
|
- INT j = 0, k = 0;
|
|
|
- STRING msg[1024];
|
|
|
- STRING arg[255];
|
|
|
- USHORT eepAddr = 0;
|
|
|
- UCHAR temp[16];
|
|
|
- STRING temp2[16];
|
|
|
- USHORT eepValue;
|
|
|
- int Status;
|
|
|
- BOOLEAN bIsPrintAllE2P = FALSE;
|
|
|
-
|
|
|
-
|
|
|
- memset(msg, 0x00, 1024);
|
|
|
- if (wrq->u.data.length > 1) //No parameters.
|
|
|
- {
|
|
|
- Status = copy_from_user(arg, wrq->u.data.pointer, (wrq->u.data.length > 255) ? 255 : wrq->u.data.length);
|
|
|
- sprintf(msg, "\n");
|
|
|
-
|
|
|
- //Parsing Read or Write
|
|
|
- this_char = arg;
|
|
|
-
|
|
|
-
|
|
|
- if (!*this_char)
|
|
|
- goto next;
|
|
|
-
|
|
|
- if ((value = rtstrchr(this_char, '=')) != NULL)
|
|
|
- *value++ = 0;
|
|
|
-
|
|
|
- if (!value || !*value)
|
|
|
- { //Read
|
|
|
-
|
|
|
- // Sanity check
|
|
|
- if(strlen(this_char) > 4)
|
|
|
- goto next;
|
|
|
-
|
|
|
- j = strlen(this_char);
|
|
|
- while(j-- > 0)
|
|
|
- {
|
|
|
- if(this_char[j] > 'f' || this_char[j] < '0')
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- // E2PROM addr
|
|
|
- k = j = strlen(this_char);
|
|
|
- while(j-- > 0)
|
|
|
- {
|
|
|
- this_char[4-k+j] = this_char[j];
|
|
|
- }
|
|
|
-
|
|
|
- while(k < 4)
|
|
|
- this_char[3-k++]='0';
|
|
|
- this_char[4]='\0';
|
|
|
-
|
|
|
- if(strlen(this_char) == 4)
|
|
|
- {
|
|
|
- AtoH(this_char, temp, 2);
|
|
|
- eepAddr = *temp*256 + temp[1];
|
|
|
- if (eepAddr < 0xFFFF)
|
|
|
- {
|
|
|
- RT28xx_EEPROM_READ16(pAdapter, eepAddr, eepValue);
|
|
|
- sprintf(msg+strlen(msg), "[0x%04X]:0x%04X ", eepAddr , eepValue);
|
|
|
- }
|
|
|
- else
|
|
|
- {//Invalid parametes, so default printk all bbp
|
|
|
- bIsPrintAllE2P = TRUE;
|
|
|
- goto next;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- { //Write
|
|
|
- memcpy(&temp2, value, strlen(value));
|
|
|
- temp2[strlen(value)] = '\0';
|
|
|
-
|
|
|
- // Sanity check
|
|
|
- if((strlen(this_char) > 4) || strlen(temp2) > 8)
|
|
|
- goto next;
|
|
|
-
|
|
|
- j = strlen(this_char);
|
|
|
- while(j-- > 0)
|
|
|
- {
|
|
|
- if(this_char[j] > 'f' || this_char[j] < '0')
|
|
|
- return;
|
|
|
- }
|
|
|
- j = strlen(temp2);
|
|
|
- while(j-- > 0)
|
|
|
- {
|
|
|
- if(temp2[j] > 'f' || temp2[j] < '0')
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- //MAC Addr
|
|
|
- k = j = strlen(this_char);
|
|
|
- while(j-- > 0)
|
|
|
- {
|
|
|
- this_char[4-k+j] = this_char[j];
|
|
|
- }
|
|
|
-
|
|
|
- while(k < 4)
|
|
|
- this_char[3-k++]='0';
|
|
|
- this_char[4]='\0';
|
|
|
-
|
|
|
- //MAC value
|
|
|
- k = j = strlen(temp2);
|
|
|
- while(j-- > 0)
|
|
|
- {
|
|
|
- temp2[4-k+j] = temp2[j];
|
|
|
- }
|
|
|
-
|
|
|
- while(k < 4)
|
|
|
- temp2[3-k++]='0';
|
|
|
- temp2[4]='\0';
|
|
|
-
|
|
|
- AtoH(this_char, temp, 2);
|
|
|
- eepAddr = *temp*256 + temp[1];
|
|
|
-
|
|
|
- AtoH(temp2, temp, 2);
|
|
|
- eepValue = *temp*256 + temp[1];
|
|
|
-
|
|
|
- RT28xx_EEPROM_WRITE16(pAdapter, eepAddr, eepValue);
|
|
|
- sprintf(msg+strlen(msg), "[0x%02X]:%02X ", eepAddr, eepValue);
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- bIsPrintAllE2P = TRUE;
|
|
|
-next:
|
|
|
- if (bIsPrintAllE2P)
|
|
|
- {
|
|
|
- struct file *file_w;
|
|
|
- PSTRING fileName = "EEPROMDump.txt";
|
|
|
- mm_segment_t orig_fs;
|
|
|
-
|
|
|
- orig_fs = get_fs();
|
|
|
- set_fs(KERNEL_DS);
|
|
|
-
|
|
|
- // open file
|
|
|
- file_w = filp_open(fileName, O_WRONLY|O_CREAT, 0);
|
|
|
- if (IS_ERR(file_w))
|
|
|
- {
|
|
|
- DBGPRINT(RT_DEBUG_TRACE, ("-->2) %s: Error %ld opening %s\n", __FUNCTION__, -PTR_ERR(file_w), fileName));
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- if (file_w->f_op && file_w->f_op->write)
|
|
|
- {
|
|
|
- file_w->f_pos = 0;
|
|
|
- eepAddr = 0x00;
|
|
|
-
|
|
|
- while (eepAddr <= 0xFE)
|
|
|
- {
|
|
|
- RT28xx_EEPROM_READ16(pAdapter, eepAddr, eepValue);
|
|
|
- sprintf(msg, "%08x = %04x\n", eepAddr , eepValue);
|
|
|
-
|
|
|
- // write data to file
|
|
|
- file_w->f_op->write(file_w, msg, strlen(msg), &file_w->f_pos);
|
|
|
-
|
|
|
- printk("%s", msg);
|
|
|
- eepAddr += 2;
|
|
|
- }
|
|
|
- sprintf(msg, "\nDump all EEPROM values to %s\n", fileName);
|
|
|
- }
|
|
|
- filp_close(file_w, NULL);
|
|
|
- }
|
|
|
- set_fs(orig_fs);
|
|
|
- }
|
|
|
- if(strlen(msg) == 1)
|
|
|
- sprintf(msg+strlen(msg), "===>Error command format!");
|
|
|
-
|
|
|
-
|
|
|
- // Copy the information into the user buffer
|
|
|
- wrq->u.data.length = strlen(msg);
|
|
|
- Status = copy_to_user(wrq->u.data.pointer, msg, wrq->u.data.length);
|
|
|
-
|
|
|
- DBGPRINT(RT_DEBUG_TRACE, ("<==RTMPIoctlE2PROM\n"));
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-#ifdef RT30xx
|
|
|
-/*
|
|
|
- ==========================================================================
|
|
|
- Description:
|
|
|
- Read / Write RF register
|
|
|
-Arguments:
|
|
|
- pAdapter Pointer to our adapter
|
|
|
- wrq Pointer to the ioctl argument
|
|
|
-
|
|
|
- Return Value:
|
|
|
- None
|
|
|
-
|
|
|
- Note:
|
|
|
- Usage:
|
|
|
- 1.) iwpriv ra0 rf ==> read all RF registers
|
|
|
- 2.) iwpriv ra0 rf 1 ==> read RF where RegID=1
|
|
|
- 3.) iwpriv ra0 rf 1=10 ==> write RF R1=0x10
|
|
|
- ==========================================================================
|
|
|
-*/
|
|
|
-VOID RTMPIoctlRF(
|
|
|
- IN PRTMP_ADAPTER pAdapter,
|
|
|
- IN struct iwreq *wrq)
|
|
|
-{
|
|
|
- CHAR *this_char;
|
|
|
- CHAR *value;
|
|
|
- UCHAR regRF = 0;
|
|
|
- STRING msg[2048];
|
|
|
- CHAR arg[255];
|
|
|
- INT rfId;
|
|
|
- LONG rfValue;
|
|
|
- int Status;
|
|
|
- BOOLEAN bIsPrintAllRF = FALSE;
|
|
|
-
|
|
|
-
|
|
|
- memset(msg, 0x00, 2048);
|
|
|
- if (wrq->u.data.length > 1) //No parameters.
|
|
|
- {
|
|
|
- Status = copy_from_user(arg, wrq->u.data.pointer, (wrq->u.data.length > 255) ? 255 : wrq->u.data.length);
|
|
|
- sprintf(msg, "\n");
|
|
|
-
|
|
|
- //Parsing Read or Write
|
|
|
- this_char = arg;
|
|
|
- if (!*this_char)
|
|
|
- goto next;
|
|
|
-
|
|
|
- if ((value = strchr(this_char, '=')) != NULL)
|
|
|
- *value++ = 0;
|
|
|
-
|
|
|
- if (!value || !*value)
|
|
|
- { //Read
|
|
|
- if (sscanf((PSTRING) this_char, "%d", &(rfId)) == 1)
|
|
|
- {
|
|
|
- if (rfId <= 31)
|
|
|
- {
|
|
|
-#ifdef RALINK_ATE
|
|
|
- /*
|
|
|
- In RT2860 ATE mode, we do not load 8051 firmware.
|
|
|
- We must access RF directly.
|
|
|
- For RT2870 ATE mode, ATE_RF_IO_WRITE8(/READ8)_BY_REG_ID are redefined.
|
|
|
- */
|
|
|
- if (ATE_ON(pAdapter))
|
|
|
- {
|
|
|
- ATE_RF_IO_READ8_BY_REG_ID(pAdapter, rfId, ®RF);
|
|
|
- }
|
|
|
- else
|
|
|
-#endif // RALINK_ATE //
|
|
|
- // according to Andy, Gary, David require.
|
|
|
- // the command rf shall read rf register directly for dubug.
|
|
|
- // BBP_IO_READ8_BY_REG_ID(pAdapter, bbpId, ®BBP);
|
|
|
- RT30xxReadRFRegister(pAdapter, rfId, ®RF);
|
|
|
-
|
|
|
- sprintf(msg+strlen(msg), "R%02d[0x%02x]:%02X ", rfId, rfId, regRF);
|
|
|
- }
|
|
|
- else
|
|
|
- {//Invalid parametes, so default printk all RF
|
|
|
- bIsPrintAllRF = TRUE;
|
|
|
- goto next;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- { //Invalid parametes, so default printk all RF
|
|
|
- bIsPrintAllRF = TRUE;
|
|
|
- goto next;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- { //Write
|
|
|
- if ((sscanf((PSTRING) this_char, "%d", &(rfId)) == 1) && (sscanf((PSTRING) value, "%lx", &(rfValue)) == 1))
|
|
|
- {
|
|
|
- if (rfId <= 31)
|
|
|
- {
|
|
|
-#ifdef RALINK_ATE
|
|
|
- /*
|
|
|
- In RT2860 ATE mode, we do not load 8051 firmware.
|
|
|
- We must access RF directly.
|
|
|
- For RT2870 ATE mode, ATE_RF_IO_WRITE8(/READ8)_BY_REG_ID are redefined.
|
|
|
- */
|
|
|
- if (ATE_ON(pAdapter))
|
|
|
- {
|
|
|
- ATE_RF_IO_READ8_BY_REG_ID(pAdapter, rfId, ®RF);
|
|
|
- ATE_RF_IO_WRITE8_BY_REG_ID(pAdapter, (UCHAR)rfId,(UCHAR) rfValue);
|
|
|
- //Read it back for showing
|
|
|
- ATE_RF_IO_READ8_BY_REG_ID(pAdapter, rfId, ®RF);
|
|
|
- sprintf(msg+strlen(msg), "R%02d[0x%02X]:%02X\n", rfId, rfId, regRF);
|
|
|
- }
|
|
|
- else
|
|
|
-#endif // RALINK_ATE //
|
|
|
- {
|
|
|
- // according to Andy, Gary, David require.
|
|
|
- // the command RF shall read/write RF register directly for dubug.
|
|
|
- //BBP_IO_READ8_BY_REG_ID(pAdapter, bbpId, ®BBP);
|
|
|
- //BBP_IO_WRITE8_BY_REG_ID(pAdapter, (UCHAR)bbpId,(UCHAR) bbpValue);
|
|
|
- RT30xxReadRFRegister(pAdapter, rfId, ®RF);
|
|
|
- RT30xxWriteRFRegister(pAdapter, (UCHAR)rfId,(UCHAR) rfValue);
|
|
|
- //Read it back for showing
|
|
|
- //BBP_IO_READ8_BY_REG_ID(pAdapter, bbpId, ®BBP);
|
|
|
- RT30xxReadRFRegister(pAdapter, rfId, ®RF);
|
|
|
- sprintf(msg+strlen(msg), "R%02d[0x%02X]:%02X\n", rfId, rfId, regRF);
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {//Invalid parametes, so default printk all RF
|
|
|
- bIsPrintAllRF = TRUE;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- { //Invalid parametes, so default printk all RF
|
|
|
- bIsPrintAllRF = TRUE;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- bIsPrintAllRF = TRUE;
|
|
|
-next:
|
|
|
- if (bIsPrintAllRF)
|
|
|
- {
|
|
|
- memset(msg, 0x00, 2048);
|
|
|
- sprintf(msg, "\n");
|
|
|
- for (rfId = 0; rfId <= 31; rfId++)
|
|
|
- {
|
|
|
-#ifdef RALINK_ATE
|
|
|
- /*
|
|
|
- In RT2860 ATE mode, we do not load 8051 firmware.
|
|
|
- We must access RF directly.
|
|
|
- For RT2870 ATE mode, ATE_RF_IO_WRITE8(/READ8)_BY_REG_ID are redefined.
|
|
|
- */
|
|
|
- if (ATE_ON(pAdapter))
|
|
|
- {
|
|
|
- ATE_RF_IO_READ8_BY_REG_ID(pAdapter, rfId, ®RF);
|
|
|
- }
|
|
|
- else
|
|
|
-#endif // RALINK_ATE //
|
|
|
-
|
|
|
- // according to Andy, Gary, David require.
|
|
|
- // the command RF shall read/write RF register directly for dubug.
|
|
|
- RT30xxReadRFRegister(pAdapter, rfId, ®RF);
|
|
|
- sprintf(msg+strlen(msg), "%03d = %02X\n", rfId, regRF);
|
|
|
- }
|
|
|
- // Copy the information into the user buffer
|
|
|
- DBGPRINT(RT_DEBUG_TRACE, ("strlen(msg)=%d\n", (UINT32)strlen(msg)));
|
|
|
- wrq->u.data.length = strlen(msg);
|
|
|
- if (copy_to_user(wrq->u.data.pointer, msg, wrq->u.data.length))
|
|
|
- {
|
|
|
- DBGPRINT(RT_DEBUG_TRACE, ("%s: copy_to_user() fail\n", __FUNCTION__));
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- if(strlen(msg) == 1)
|
|
|
- sprintf(msg+strlen(msg), "===>Error command format!");
|
|
|
-
|
|
|
- DBGPRINT(RT_DEBUG_TRACE, ("copy to user [msg=%s]\n", msg));
|
|
|
- // Copy the information into the user buffer
|
|
|
- DBGPRINT(RT_DEBUG_TRACE, ("strlen(msg) =%d\n", (UINT32)strlen(msg)));
|
|
|
-
|
|
|
- // Copy the information into the user buffer
|
|
|
- wrq->u.data.length = strlen(msg);
|
|
|
- Status = copy_to_user(wrq->u.data.pointer, msg, wrq->u.data.length);
|
|
|
- }
|
|
|
-
|
|
|
- DBGPRINT(RT_DEBUG_TRACE, ("<==RTMPIoctlRF\n\n"));
|
|
|
-}
|
|
|
-#endif // RT30xx //
|
|
|
-#endif // DBG //
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
INT Set_TGnWifiTest_Proc(
|
|
|
IN PRTMP_ADAPTER pAd,
|
|
|
IN PSTRING arg)
|