forked from luck/tmp_suning_uos_patched
Staging: rt3090: remove private debugging ioctls
This makes rt3090 match other Ralink drivers. Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
8b44a41e34
commit
ee8e96c041
@ -679,18 +679,6 @@ typedef struct _NDIS_802_11_CAPABILITY
|
||||
#define RT_PRIV_IOCTL (SIOCIWFIRSTPRIV + 0x01) // Sync. with AP for wsc upnp daemon
|
||||
#define RTPRIV_IOCTL_SET (SIOCIWFIRSTPRIV + 0x02)
|
||||
|
||||
#ifdef DBG
|
||||
#define RTPRIV_IOCTL_BBP (SIOCIWFIRSTPRIV + 0x03)
|
||||
#define RTPRIV_IOCTL_MAC (SIOCIWFIRSTPRIV + 0x05)
|
||||
|
||||
#ifdef RTMP_RF_RW_SUPPORT
|
||||
// TODO: shiang, Need to reassign the oid number. ArchTeam use (SIOCIWFIRSTPRIV + 0x19) for this oid
|
||||
#define RTPRIV_IOCTL_RF (SIOCIWFIRSTPRIV + 0x13) // edit by johnli, fix read rf register problem
|
||||
#endif // RTMP_RF_RW_SUPPORT //
|
||||
|
||||
#define RTPRIV_IOCTL_E2P (SIOCIWFIRSTPRIV + 0x07)
|
||||
#endif // DBG //
|
||||
|
||||
#ifdef RALINK_ATE
|
||||
#ifdef RALINK_28xx_QA
|
||||
#define RTPRIV_IOCTL_ATE (SIOCIWFIRSTPRIV + 0x08)
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user