mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-02 10:46:50 +07:00
Staging: rtxxx0: remove private debugging ioctls
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
c338d4d73e
commit
a59601e4e7
@ -627,13 +627,6 @@ typedef struct _NDIS_802_11_CAPABILITY
|
||||
#define RT_PRIV_IOCTL_EXT (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)
|
||||
#define RTPRIV_IOCTL_RF (SIOCIWFIRSTPRIV + 0x13)
|
||||
#define RTPRIV_IOCTL_E2P (SIOCIWFIRSTPRIV + 0x07)
|
||||
#endif
|
||||
|
||||
#define RTPRIV_IOCTL_STATISTICS (SIOCIWFIRSTPRIV + 0x09)
|
||||
#define RTPRIV_IOCTL_ADD_PMKID_CACHE (SIOCIWFIRSTPRIV + 0x0A)
|
||||
#define RTPRIV_IOCTL_RADIUS_DATA (SIOCIWFIRSTPRIV + 0x0C)
|
||||
|
@ -93,23 +93,6 @@ struct iw_priv_args privtab[] = {
|
||||
#endif
|
||||
/* --- 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 RT30xx
|
||||
{ RTPRIV_IOCTL_RF,
|
||||
IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK,
|
||||
"rf"},
|
||||
#endif // RT30xx //
|
||||
{ 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"},
|
||||
@ -173,29 +156,6 @@ INT Set_Wpa_Support(
|
||||
IN PRTMP_ADAPTER pAd,
|
||||
IN PUCHAR arg);
|
||||
|
||||
#ifdef DBG
|
||||
#if !defined(RT2860) && !defined(RT30xx)
|
||||
VOID RTMPIoctlBBP(
|
||||
IN PRTMP_ADAPTER pAdapter,
|
||||
IN struct iwreq *wrq);
|
||||
#endif
|
||||
|
||||
VOID RTMPIoctlMAC(
|
||||
IN PRTMP_ADAPTER pAdapter,
|
||||
IN struct iwreq *wrq);
|
||||
|
||||
VOID RTMPIoctlE2PROM(
|
||||
IN PRTMP_ADAPTER pAdapter,
|
||||
IN struct iwreq *wrq);
|
||||
|
||||
#ifdef RT30xx
|
||||
VOID RTMPIoctlRF(
|
||||
IN PRTMP_ADAPTER pAdapter,
|
||||
IN struct iwreq *wrq);
|
||||
#endif // RT30xx //
|
||||
#endif // DBG //
|
||||
|
||||
|
||||
NDIS_STATUS RTMPWPANoneAddKeyProc(
|
||||
IN PRTMP_ADAPTER pAd,
|
||||
IN PVOID pBuf);
|
||||
@ -2543,138 +2503,6 @@ int rt_ioctl_siwpmksa(struct net_device *dev,
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef DBG
|
||||
static int
|
||||
rt_private_ioctl_bbp(struct net_device *dev, struct iw_request_info *info,
|
||||
struct iw_point *wrq, char *extra)
|
||||
{
|
||||
CHAR *this_char;
|
||||
CHAR *value = NULL;
|
||||
UCHAR regBBP = 0;
|
||||
UINT32 bbpId;
|
||||
UINT32 bbpValue;
|
||||
BOOLEAN bIsPrintAllBBP = FALSE;
|
||||
INT Status = 0;
|
||||
PRTMP_ADAPTER pAdapter = dev->ml_priv;
|
||||
|
||||
|
||||
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)
|
||||
{
|
||||
#ifndef RT30xx
|
||||
if (bbpId <= 136)
|
||||
#endif // RT30xx //
|
||||
#ifdef RT30xx
|
||||
if (bbpId <= 138) // edit by johnli, RF power sequence setup, add BBP R138 for ADC dynamic on/off control
|
||||
#endif // RT30xx //
|
||||
{
|
||||
{
|
||||
RTMP_BBP_IO_READ8_BY_REG_ID(pAdapter, bbpId, ®BBP);
|
||||
}
|
||||
sprintf(extra+strlen(extra), "R%02d[0x%02X]:%02X\n", bbpId, bbpId*2, 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))
|
||||
{
|
||||
#ifndef RT30xx
|
||||
if (bbpId <= 136)
|
||||
#endif // RT30xx //
|
||||
#ifdef RT30xx
|
||||
if (bbpId <= 138) // edit by johnli, RF power sequence setup, add BBP R138 for ADC dynamic on/off control
|
||||
#endif // RT30xx //
|
||||
{
|
||||
{
|
||||
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*2, 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");
|
||||
#ifndef RT30xx
|
||||
for (bbpId = 0; bbpId <= 136; bbpId++)
|
||||
#endif // RT30xx //
|
||||
#ifdef RT30xx
|
||||
for (bbpId = 0; bbpId <= 138; bbpId++) // edit by johnli, RF power sequence setup, add BBP R138 for ADC dynamic on/off control
|
||||
#endif // RT30xx //
|
||||
{
|
||||
if (strlen(extra) >= (IW_PRIV_SIZE_MASK - 10))
|
||||
break;
|
||||
RTMP_BBP_IO_READ8_BY_REG_ID(pAdapter, bbpId, ®BBP);
|
||||
#ifndef RT30xx
|
||||
sprintf(extra+strlen(extra), "R%02d[0x%02X]:%02X ", bbpId, bbpId*2, regBBP);
|
||||
if (bbpId%5 == 4)
|
||||
sprintf(extra+strlen(extra), "\n");
|
||||
#endif
|
||||
#ifdef RT30xx
|
||||
sprintf(extra+strlen(extra), "%03d = %02X\n", bbpId, regBBP); // edit by johnli, change display format
|
||||
#endif
|
||||
}
|
||||
|
||||
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)
|
||||
@ -2848,11 +2676,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 */
|
||||
@ -4911,19 +4735,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 RT30xx
|
||||
case RTPRIV_IOCTL_RF:
|
||||
RTMPIoctlRF(pAd, wrq);
|
||||
break;
|
||||
#endif // RT30xx //
|
||||
#endif // DBG //
|
||||
case SIOCETHTOOL:
|
||||
break;
|
||||
default:
|
||||
@ -5822,592 +5633,6 @@ INT Set_Wpa_Support(
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#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)
|
||||
{
|
||||
CHAR *this_char;
|
||||
CHAR *value;
|
||||
INT j = 0, k = 0;
|
||||
CHAR msg[1024];
|
||||
CHAR arg[255];
|
||||
ULONG macAddr = 0;
|
||||
UCHAR temp[16], temp2[16];
|
||||
UINT32 macValue = 0;
|
||||
INT Status;
|
||||
#ifdef RT30xx
|
||||
BOOLEAN bIsPrintAllMAC = FALSE;
|
||||
#endif
|
||||
|
||||
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
|
||||
#ifndef RT30xx
|
||||
{//Invalid parametes, so default printk all bbp
|
||||
#endif
|
||||
#ifdef RT30xx
|
||||
{//Invalid parametes, so default printk all mac
|
||||
bIsPrintAllMAC = TRUE;
|
||||
#endif
|
||||
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);
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
#ifdef RT30xx
|
||||
else
|
||||
bIsPrintAllMAC = TRUE;
|
||||
#endif
|
||||
next:
|
||||
#ifdef RT30xx
|
||||
if (bIsPrintAllMAC)
|
||||
{
|
||||
struct file *file_w;
|
||||
PCHAR 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", __func__, -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);
|
||||
}
|
||||
#endif /* RT30xx */
|
||||
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)
|
||||
{
|
||||
CHAR *this_char;
|
||||
CHAR *value;
|
||||
INT j = 0, k = 0;
|
||||
CHAR msg[1024];
|
||||
CHAR arg[255];
|
||||
USHORT eepAddr = 0;
|
||||
UCHAR temp[16], temp2[16];
|
||||
USHORT eepValue;
|
||||
int Status;
|
||||
#ifdef RT30xx
|
||||
BOOLEAN bIsPrintAllE2P = FALSE;
|
||||
#endif
|
||||
|
||||
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
|
||||
#ifdef RT30xx
|
||||
bIsPrintAllE2P = TRUE;
|
||||
#endif
|
||||
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);
|
||||
}
|
||||
}
|
||||
#ifdef RT30xx
|
||||
else
|
||||
bIsPrintAllE2P = TRUE;
|
||||
#endif
|
||||
next:
|
||||
#ifdef RT30xx
|
||||
if (bIsPrintAllE2P)
|
||||
{
|
||||
struct file *file_w;
|
||||
PCHAR 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", __func__, -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);
|
||||
}
|
||||
#endif /* RT30xx */
|
||||
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;
|
||||
CHAR 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(this_char, "%d", &(rfId)) == 1)
|
||||
{
|
||||
if (rfId <= 31)
|
||||
{
|
||||
// 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.
|
||||
// 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*2, 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(this_char, "%d", &(rfId)) == 1) && (sscanf(value, "%lx", &(rfValue)) == 1))
|
||||
{
|
||||
if (rfId <= 31)
|
||||
{
|
||||
// In RT2860 ATE mode, we do not load 8051 firmware.
|
||||
// We should access RF registers directly.
|
||||
// For RT2870 ATE mode, ATE_RF_IO_WRITE8/READ8_BY_REG_ID are redefined.
|
||||
{
|
||||
// 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*2, 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++)
|
||||
{
|
||||
// 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", __func__));
|
||||
}
|
||||
}
|
||||
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 PUCHAR arg)
|
||||
|
Loading…
Reference in New Issue
Block a user