Signed-off-by: Marek Belisko <[email protected]>
---
drivers/staging/ft1000/ft1000-usb/ft1000_usb.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c b/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
index 99e3339..b7c4602 100644
--- a/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
+++ b/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
@@ -64,7 +64,7 @@ static int ft1000_probe(struct usb_interface *interface,
int i, ret = 0, size;
struct ft1000_device *ft1000dev;
- struct ft1000_info *pft1000info;
+ struct ft1000_info *pft1000info = NULL;
const struct firmware *dsp_fw;
ft1000dev = kmalloc(sizeof(struct ft1000_device), GFP_KERNEL);
--
1.7.1
This patch remove lot of code for character device. This
interface was used for getting network informations and
statistics which is currently exported via /proc filesystem.
Signed-off-by: Marek Belisko <[email protected]>
---
drivers/staging/ft1000/ft1000-usb/ft1000_chdev.c | 817 ----------------------
drivers/staging/ft1000/ft1000-usb/ft1000_hw.c | 4 -
drivers/staging/ft1000/ft1000-usb/ft1000_usb.c | 1 -
drivers/staging/ft1000/ft1000-usb/ft1000_usb.h | 2 -
4 files changed, 0 insertions(+), 824 deletions(-)
diff --git a/drivers/staging/ft1000/ft1000-usb/ft1000_chdev.c b/drivers/staging/ft1000/ft1000-usb/ft1000_chdev.c
index 197b3fb..0275a08 100644
--- a/drivers/staging/ft1000/ft1000-usb/ft1000_chdev.c
+++ b/drivers/staging/ft1000/ft1000-usb/ft1000_chdev.c
@@ -41,18 +41,9 @@
#include "ft1000_usb.h"
//#include "ft1000_ioctl.h"
-static int ft1000_flarion_cnt = 0;
-
//need to looking usage of ft1000Handle
-static int ft1000_ChOpen (struct inode *Inode, struct file *File);
-static unsigned int ft1000_ChPoll(struct file *file, poll_table *wait);
-static long ft1000_ChIoctl(struct file *File, unsigned int Command,
- unsigned long Argument);
-static int ft1000_ChRelease (struct inode *Inode, struct file *File);
-
// Global pointer to device object
-static struct ft1000_device *pdevobj[MAX_NUM_CARDS + 2];
//static devfs_handle_t ft1000Handle[MAX_NUM_CARDS];
// List to free receive command buffer pool
@@ -66,100 +57,6 @@ int numofmsgbuf = 0;
// Global variable to indicate that all provisioning data is sent to DSP
//bool fProvComplete;
-//
-// Table of entry-point routines for char device
-//
-static struct file_operations ft1000fops =
-{
- .unlocked_ioctl = ft1000_ChIoctl,
- .poll = ft1000_ChPoll,
- .open = ft1000_ChOpen,
- .release = ft1000_ChRelease,
- .llseek = no_llseek,
-};
-
-
-
-
-//---------------------------------------------------------------------------
-// Function: exec_mknod
-//
-// Parameters:
-//
-// Returns:
-//
-// Description:
-//
-// Notes:
-//
-//---------------------------------------------------------------------------
-static int exec_mknod (void *pdata)
-{
- struct ft1000_info *info;
- char mjnum[4];
- char minornum[4];
- char temp[32];
- int retcode;
-// int i; //aelias [-] reason : unused variable
- char *envp[] = { "HOME=/", "PATH=/usr/bin:/bin", NULL };
- char *argv[]={"-m 666",temp,"c",mjnum,minornum,NULL};
-
- info = pdata;
- DEBUG("ft1000_chdev:exec_mknod is called with major number = %d\n", info->DeviceMajor);
- sprintf(temp, "%s%s", "/dev/", info->DeviceName) ;
- sprintf(mjnum, "%d", info->DeviceMajor);
- sprintf(minornum, "%d", info->CardNumber);
-
- //char *argv[]={"mknod","-m 666",temp,"c",mjnum,minornum,NULL};
-// char *argv[]={"-m 666",temp,"c",mjnum,minornum,NULL};
-
- //for (i=0; i<7;i++)
- // DEBUG("argv[%d]=%s\n", i, argv[i]);
-
-
- retcode = call_usermodehelper ("/bin/mknod", argv, envp, 1);
- if (retcode) {
- DEBUG("ft1000_chdev:exec_mknod failed to make the node: retcode = %d\n", retcode);
- }
-
-
-
- return retcode;
-
-}
-
-//---------------------------------------------------------------------------
-// Function: rm_mknod
-//
-// Description: This module removes the FT1000 device file
-//
-//---------------------------------------------------------------------------
-static int rm_mknod (void *pdata)
-{
-
- struct ft1000_info *info;
- //char *argv[4]={"rm", "-f", "/dev/FT1000", NULL};
- int retcode;
- char temp[32];
- char *argv[]={"rm", "-f", temp, NULL};
-
- info = (struct ft1000_info *)pdata;
- DEBUG("ft1000_chdev:rm_mknod is called for device %s\n", info->DeviceName);
- sprintf(temp, "%s%s", "/dev/", info->DeviceName) ;
-
-// char *argv[]={"rm", "-f", temp, NULL};
-
- retcode = call_usermodehelper ("/bin/rm", argv, NULL, 1);
- if (retcode) {
- DEBUG("ft1000_chdev:rm_mknod failed to remove the node: retcode = %d\n", retcode);
- }
- else
- DEBUG("ft1000_chdev:rm_mknod done!\n");
-
-
- return retcode;
-
-}
//---------------------------------------------------------------------------
// Function: ft1000_get_buffer
//
@@ -195,8 +92,6 @@ struct dpram_blk *ft1000_get_buffer(struct list_head *bufflist)
}
-
-
//---------------------------------------------------------------------------
// Function: ft1000_free_buffer
//
@@ -221,715 +116,3 @@ void ft1000_free_buffer(struct dpram_blk *pdpram_blk, struct list_head *plist)
spin_unlock_irqrestore(&free_buff_lock, flags);
}
-//---------------------------------------------------------------------------
-// Function: ft1000_CreateDevice
-//
-// Parameters: dev - pointer to adapter object
-//
-// Returns: 0 if successful
-//
-// Description: Creates a private char device.
-//
-// Notes: Only called by init_module().
-//
-//---------------------------------------------------------------------------
-int ft1000_CreateDevice(struct ft1000_device *dev)
-{
- struct ft1000_info *info = netdev_priv(dev->net);
- int result;
- int i;
- pid_t pid;
-
- // make a new device name
- sprintf(info->DeviceName, "%s%d", "FT100", info->CardNumber);
-
- // Delete any existing FT1000 node
- pid = kernel_thread (rm_mknod,(void *)info, 0);
- msleep(1000);
-
- DEBUG("ft1000_CreateDevice: number of instance = %d\n", ft1000_flarion_cnt);
- DEBUG("DeviceCreated = %x\n", info->DeviceCreated);
-
- //save the device info to global array
- pdevobj[info->CardNumber] = dev;
-
- DEBUG("ft1000_CreateDevice: ******SAVED pdevobj[%d]=%p\n", info->CardNumber, pdevobj[info->CardNumber]); //aelias [+] reason:up
-
- if (info->DeviceCreated)
- {
- DEBUG("ft1000_CreateDevice: \"%s\" already registered\n", info->DeviceName);
- return -EIO;
- }
-
-
- // register the device
- DEBUG("ft1000_CreateDevice: \"%s\" device registration\n", info->DeviceName);
- info->DeviceMajor = 0;
-
- result = register_chrdev(info->DeviceMajor, info->DeviceName, &ft1000fops);
- if (result < 0)
- {
- DEBUG("ft1000_CreateDevice: unable to get major %d\n", info->DeviceMajor);
- return result;
- }
-
- DEBUG("ft1000_CreateDevice: registered char device \"%s\"\n", info->DeviceName);
-
- // save a dynamic device major number
- if (info->DeviceMajor == 0)
- {
- info->DeviceMajor = result;
- DEBUG("ft1000_PcdCreateDevice: device major = %d\n", info->DeviceMajor);
- }
-
- // Create a thread to call user mode app to mknod
- pid = kernel_thread (exec_mknod, (void *)info, 0);
-
- // initialize application information
-
-// if (ft1000_flarion_cnt == 0) {
-//
-// DEBUG("Initialize free_buff_lock and freercvpool\n");
-// spin_lock_init(&free_buff_lock);
-//
-// // initialize a list of buffers to be use for queuing up receive command data
-// INIT_LIST_HEAD (&freercvpool);
-//
-// // create list of free buffers
-// for (i=0; i<NUM_OF_FREE_BUFFERS; i++) {
-// // Get memory for DPRAM_DATA link list
-// pdpram_blk = kmalloc ( sizeof(struct dpram_blk), GFP_KERNEL );
-// // Get a block of memory to store command data
-// pdpram_blk->pbuffer = kmalloc ( MAX_CMD_SQSIZE, GFP_KERNEL );
-// // link provisioning data
-// list_add_tail (&pdpram_blk->list, &freercvpool);
-// }
-// numofmsgbuf = NUM_OF_FREE_BUFFERS;
-// }
-
-
- // initialize application information
- info->appcnt = 0;
- for (i=0; i<MAX_NUM_APP; i++) {
- info->app_info[i].nTxMsg = 0;
- info->app_info[i].nRxMsg = 0;
- info->app_info[i].nTxMsgReject = 0;
- info->app_info[i].nRxMsgMiss = 0;
- info->app_info[i].fileobject = NULL;
- info->app_info[i].app_id = i+1;
- info->app_info[i].DspBCMsgFlag = 0;
- info->app_info[i].NumOfMsg = 0;
- init_waitqueue_head(&info->app_info[i].wait_dpram_msg);
- INIT_LIST_HEAD (&info->app_info[i].app_sqlist);
- }
-
-
-
-
-// ft1000Handle[info->CardNumber] = devfs_register(NULL, info->DeviceName, DEVFS_FL_AUTO_DEVNUM, 0, 0,
-// S_IFCHR | S_IRUGO | S_IWUGO, &ft1000fops, NULL);
-
-
- info->DeviceCreated = TRUE;
- ft1000_flarion_cnt++;
-
- return result;
-}
-
-//---------------------------------------------------------------------------
-// Function: ft1000_DestroyDeviceDEBUG
-//
-// Parameters: dev - pointer to adapter object
-//
-// Description: Destroys a private char device.
-//
-// Notes: Only called by cleanup_module().
-//
-//---------------------------------------------------------------------------
-void ft1000_DestroyDevice(struct net_device *dev)
-{
- struct ft1000_info *info = netdev_priv(dev);
- int result = 0;
- pid_t pid;
- int i;
- struct dpram_blk *pdpram_blk;
- struct dpram_blk *ptr;
-
- DEBUG("ft1000_chdev:ft1000_DestroyDevice called\n");
-
-
-
- if (info->DeviceCreated)
- {
- ft1000_flarion_cnt--;
- unregister_chrdev(info->DeviceMajor, info->DeviceName);
- DEBUG("ft1000_DestroyDevice: unregistered device \"%s\", result = %d\n",
- info->DeviceName, result);
-
- pid = kernel_thread (rm_mknod, (void *)info, 0);
-
- // Make sure we free any memory reserve for slow Queue
- for (i=0; i<MAX_NUM_APP; i++) {
- while (list_empty(&info->app_info[i].app_sqlist) == 0) {
- pdpram_blk = list_entry(info->app_info[i].app_sqlist.next, struct dpram_blk, list);
- list_del(&pdpram_blk->list);
- ft1000_free_buffer(pdpram_blk, &freercvpool);
-
- }
- wake_up_interruptible(&info->app_info[i].wait_dpram_msg);
- }
-
- // Remove buffer allocated for receive command data
- if (ft1000_flarion_cnt == 0) {
- while (list_empty(&freercvpool) == 0) {
- ptr = list_entry(freercvpool.next, struct dpram_blk, list);
- list_del(&ptr->list);
- kfree(ptr->pbuffer);
- kfree(ptr);
- }
- }
-
-// devfs_unregister(ft1000Handle[info->CardNumber]);
-
- info->DeviceCreated = FALSE;
-
- pdevobj[info->CardNumber] = NULL;
- }
-
-
-}
-
-//---------------------------------------------------------------------------
-// Function: ft1000_ChOpen
-//
-// Parameters:
-//
-// Description:
-//
-// Notes:
-//
-//---------------------------------------------------------------------------
-static int ft1000_ChOpen (struct inode *Inode, struct file *File)
-{
- struct ft1000_info *info;
- int i,num;
-
- DEBUG("ft1000_ChOpen called\n");
- num = (MINOR(Inode->i_rdev) & 0xf);
- DEBUG("ft1000_ChOpen: minor number=%d\n", num);
-
- for (i=0; i<5; i++)
- DEBUG("pdevobj[%d]=%p\n", i, pdevobj[i]); //aelias [+] reason: down
-
- if ( pdevobj[num] != NULL )
- //info = (struct ft1000_info *)(pdevobj[num]->net->priv);
- info = (struct ft1000_info *)netdev_priv(pdevobj[num]->net);
- else
- {
- DEBUG("ft1000_ChOpen: can not find device object %d\n", num);
- return -1;
- }
-
- DEBUG("f_owner = %p number of application = %d\n", (&File->f_owner), info->appcnt );
-
- // Check if maximum number of application exceeded
- if (info->appcnt > MAX_NUM_APP) {
- DEBUG("Maximum number of application exceeded\n");
- return -EACCES;
- }
-
- // Search for available application info block
- for (i=0; i<MAX_NUM_APP; i++) {
- if ( (info->app_info[i].fileobject == NULL) ) {
- break;
- }
- }
-
- // Fail due to lack of application info block
- if (i == MAX_NUM_APP) {
- DEBUG("Could not find an application info block\n");
- return -EACCES;
- }
-
- info->appcnt++;
- info->app_info[i].fileobject = &File->f_owner;
- info->app_info[i].nTxMsg = 0;
- info->app_info[i].nRxMsg = 0;
- info->app_info[i].nTxMsgReject = 0;
- info->app_info[i].nRxMsgMiss = 0;
-
- File->private_data = pdevobj[num]->net;
-
- nonseekable_open(Inode, File);
- return 0;
-}
-
-
-//---------------------------------------------------------------------------
-// Function: ft1000_ChPoll
-//
-// Parameters:
-//
-// Description:
-//
-// Notes:
-//
-//---------------------------------------------------------------------------
-
-static unsigned int ft1000_ChPoll(struct file *file, poll_table *wait)
-{
- struct net_device *dev = file->private_data;
- struct ft1000_info *info;
- int i;
-
- //DEBUG("ft1000_ChPoll called\n");
- if (ft1000_flarion_cnt == 0) {
- DEBUG("FT1000:ft1000_ChPoll called when ft1000_flarion_cnt is zero\n");
- return (-EBADF);
- }
-
- info = (struct ft1000_info *) netdev_priv(dev);
-
- // Search for matching file object
- for (i=0; i<MAX_NUM_APP; i++) {
- if ( info->app_info[i].fileobject == &file->f_owner) {
- //DEBUG("FT1000:ft1000_ChIoctl: Message is for AppId = %d\n", info->app_info[i].app_id);
- break;
- }
- }
-
- // Could not find application info block
- if (i == MAX_NUM_APP) {
- DEBUG("FT1000:ft1000_ChIoctl:Could not find application info block\n");
- return ( -EACCES );
- }
-
- if (list_empty(&info->app_info[i].app_sqlist) == 0) {
- DEBUG("FT1000:ft1000_ChPoll:Message detected in slow queue\n");
- return(POLLIN | POLLRDNORM | POLLPRI);
- }
-
- poll_wait (file, &info->app_info[i].wait_dpram_msg, wait);
- //DEBUG("FT1000:ft1000_ChPoll:Polling for data from DSP\n");
-
- return (0);
-}
-
-//---------------------------------------------------------------------------
-// Function: ft1000_ChIoctl
-//
-// Parameters:
-//
-// Description:
-//
-// Notes:
-//
-//---------------------------------------------------------------------------
-static long ft1000_ChIoctl (struct file *File, unsigned int Command,
- unsigned long Argument)
-{
- void __user *argp = (void __user *)Argument;
- struct net_device *dev;
- struct ft1000_info *info;
- struct ft1000_device *ft1000dev;
- int result=0;
- int cmd;
- int i;
- u16 tempword;
- unsigned long flags;
- struct timeval tv;
- IOCTL_GET_VER get_ver_data;
- IOCTL_GET_DSP_STAT get_stat_data;
- u8 ConnectionMsg[] = {0x00,0x44,0x10,0x20,0x80,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x93,0x64,
- 0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x0a,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x02,0x37,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x01,0x00,0x01,0x7f,0x00,
- 0x00,0x01,0x00,0x00};
-
- unsigned short ledStat=0;
- unsigned short conStat=0;
-
- //DEBUG("ft1000_ChIoctl called\n");
-
- if (ft1000_flarion_cnt == 0) {
- DEBUG("FT1000:ft1000_ChIoctl called when ft1000_flarion_cnt is zero\n");
- return (-EBADF);
- }
-
- //DEBUG("FT1000:ft1000_ChIoctl:Command = 0x%x Argument = 0x%8x\n", Command, (u32)Argument);
-
- dev = File->private_data;
- info = (struct ft1000_info *) netdev_priv(dev);
- ft1000dev = info->pFt1000Dev;
- cmd = _IOC_NR(Command);
- //DEBUG("FT1000:ft1000_ChIoctl:cmd = 0x%x\n", cmd);
-
- // process the command
- switch (cmd) {
- case IOCTL_REGISTER_CMD:
- DEBUG("FT1000:ft1000_ChIoctl: IOCTL_FT1000_REGISTER called\n");
- result = get_user(tempword, (__u16 __user*)argp);
- if (result) {
- DEBUG("result = %d failed to get_user\n", result);
- break;
- }
- if (tempword == DSPBCMSGID) {
- // Search for matching file object
- for (i=0; i<MAX_NUM_APP; i++) {
- if ( info->app_info[i].fileobject == &File->f_owner) {
- info->app_info[i].DspBCMsgFlag = 1;
- DEBUG("FT1000:ft1000_ChIoctl:Registered for broadcast messages\n");
- break;
- }
- }
- }
- break;
-
- case IOCTL_GET_VER_CMD:
- DEBUG("FT1000:ft1000_ChIoctl: IOCTL_FT1000_GET_VER called\n");
-
- get_ver_data.drv_ver = FT1000_DRV_VER;
-
- if (copy_to_user(argp, &get_ver_data, sizeof(get_ver_data)) ) {
- DEBUG("FT1000:ft1000_ChIoctl: copy fault occurred\n");
- result = -EFAULT;
- break;
- }
-
- DEBUG("FT1000:ft1000_ChIoctl:driver version = 0x%x\n",(unsigned int)get_ver_data.drv_ver);
-
- break;
- case IOCTL_CONNECT:
- // Connect Message
- DEBUG("FT1000:ft1000_ChIoctl: IOCTL_FT1000_CONNECT\n");
- ConnectionMsg[79] = 0xfc;
- CardSendCommand(ft1000dev, (unsigned short *)ConnectionMsg, 0x4c);
-
- break;
- case IOCTL_DISCONNECT:
- // Disconnect Message
- DEBUG("FT1000:ft1000_ChIoctl: IOCTL_FT1000_DISCONNECT\n");
- ConnectionMsg[79] = 0xfd;
- CardSendCommand(ft1000dev, (unsigned short *)ConnectionMsg, 0x4c);
- break;
- case IOCTL_GET_DSP_STAT_CMD:
- //DEBUG("FT1000:ft1000_ChIoctl: IOCTL_FT1000_GET_DSP_STAT called\n");
- memset(&get_stat_data, 0, sizeof(get_stat_data));
- memcpy(get_stat_data.DspVer, info->DspVer, DSPVERSZ);
- memcpy(get_stat_data.HwSerNum, info->HwSerNum, HWSERNUMSZ);
- memcpy(get_stat_data.Sku, info->Sku, SKUSZ);
- memcpy(get_stat_data.eui64, info->eui64, EUISZ);
-
- if (info->ProgConStat != 0xFF) {
- ft1000_read_dpram16(ft1000dev, FT1000_MAG_DSP_LED, (u8 *)&ledStat, FT1000_MAG_DSP_LED_INDX);
- get_stat_data.LedStat = ntohs(ledStat);
- DEBUG("FT1000:ft1000_ChIoctl: LedStat = 0x%x\n", get_stat_data.LedStat);
- ft1000_read_dpram16(ft1000dev, FT1000_MAG_DSP_CON_STATE, (u8 *)&conStat, FT1000_MAG_DSP_CON_STATE_INDX);
- get_stat_data.ConStat = ntohs(conStat);
- DEBUG("FT1000:ft1000_ChIoctl: ConStat = 0x%x\n", get_stat_data.ConStat);
- }
- else {
- get_stat_data.ConStat = 0x0f;
- }
-
-
- get_stat_data.nTxPkts = info->stats.tx_packets;
- get_stat_data.nRxPkts = info->stats.rx_packets;
- get_stat_data.nTxBytes = info->stats.tx_bytes;
- get_stat_data.nRxBytes = info->stats.rx_bytes;
- do_gettimeofday ( &tv );
- get_stat_data.ConTm = (u32)(tv.tv_sec - info->ConTm);
- DEBUG("Connection Time = %d\n", (int)get_stat_data.ConTm);
- if (copy_to_user(argp, &get_stat_data, sizeof(get_stat_data)) ) {
- DEBUG("FT1000:ft1000_ChIoctl: copy fault occurred\n");
- result = -EFAULT;
- break;
- }
- DEBUG("ft1000_chioctl: GET_DSP_STAT succeed\n");
- break;
- case IOCTL_SET_DPRAM_CMD:
- {
- IOCTL_DPRAM_BLK *dpram_data;
- //IOCTL_DPRAM_COMMAND dpram_command;
- u16 qtype;
- u16 msgsz;
- struct pseudo_hdr *ppseudo_hdr;
- u16 *pmsg;
- u16 total_len;
- u16 app_index;
- u16 status;
-
- //DEBUG("FT1000:ft1000_ChIoctl: IOCTL_FT1000_SET_DPRAM called\n");
-
-
- if (ft1000_flarion_cnt == 0) {
- return (-EBADF);
- }
-
- if (info->DrvMsgPend) {
- return (-ENOTTY);
- }
-
- if ( (info->DspAsicReset) || (info->fProvComplete == 0) ) {
- return (-EACCES);
- }
-
- info->fAppMsgPend = 1;
-
- if (info->CardReady) {
-
- //DEBUG("FT1000:ft1000_ChIoctl: try to SET_DPRAM \n");
-
- // Get the length field to see how many bytes to copy
- result = get_user(msgsz, (__u16 __user *)argp);
- msgsz = ntohs (msgsz);
- //DEBUG("FT1000:ft1000_ChIoctl: length of message = %d\n", msgsz);
-
- if (msgsz > MAX_CMD_SQSIZE) {
- DEBUG("FT1000:ft1000_ChIoctl: bad message length = %d\n", msgsz);
- result = -EINVAL;
- break;
- }
-
- result = -ENOMEM;
- dpram_data = kmalloc(msgsz + 2, GFP_KERNEL);
- if (!dpram_data)
- break;
-
- //if ( copy_from_user(&(dpram_command.dpram_blk), (PIOCTL_DPRAM_BLK)Argument, msgsz+2) ) {
- if ( copy_from_user(&dpram_data, argp, msgsz+2) ) {
- DEBUG("FT1000:ft1000_ChIoctl: copy fault occurred\n");
- result = -EFAULT;
- }
- else {
-#if 0
- // whc - for debugging only
- ptr = (char *)&dpram_data;
- for (i=0; i<msgsz; i++) {
- DEBUG(1,"FT1000:ft1000_ChIoctl: data %d = 0x%x\n", i, *ptr++);
- }
-#endif
- // Check if this message came from a registered application
- for (i=0; i<MAX_NUM_APP; i++) {
- if ( info->app_info[i].fileobject == &File->f_owner) {
- break;
- }
- }
- if (i==MAX_NUM_APP) {
- DEBUG("FT1000:No matching application fileobject\n");
- result = -EINVAL;
- kfree(dpram_data);
- break;
- }
- app_index = i;
-
- // Check message qtype type which is the lower byte within qos_class
- //qtype = ntohs(dpram_command.dpram_blk.pseudohdr.qos_class) & 0xff;
- qtype = ntohs(dpram_data->pseudohdr.qos_class) & 0xff;
- //DEBUG("FT1000_ft1000_ChIoctl: qtype = %d\n", qtype);
- if (qtype) {
- }
- else {
- // Put message into Slow Queue
- // Only put a message into the DPRAM if msg doorbell is available
- status = ft1000_read_register(ft1000dev, &tempword, FT1000_REG_DOORBELL);
- //DEBUG("FT1000_ft1000_ChIoctl: READ REGISTER tempword=%x\n", tempword);
- if (tempword & FT1000_DB_DPRAM_TX) {
- // Suspend for 2ms and try again due to DSP doorbell busy
- mdelay(2);
- status = ft1000_read_register(ft1000dev, &tempword, FT1000_REG_DOORBELL);
- if (tempword & FT1000_DB_DPRAM_TX) {
- // Suspend for 1ms and try again due to DSP doorbell busy
- mdelay(1);
- status = ft1000_read_register(ft1000dev, &tempword, FT1000_REG_DOORBELL);
- if (tempword & FT1000_DB_DPRAM_TX) {
- status = ft1000_read_register(ft1000dev, &tempword, FT1000_REG_DOORBELL);
- if (tempword & FT1000_DB_DPRAM_TX) {
- // Suspend for 3ms and try again due to DSP doorbell busy
- mdelay(3);
- status = ft1000_read_register(ft1000dev, &tempword, FT1000_REG_DOORBELL);
- if (tempword & FT1000_DB_DPRAM_TX) {
- DEBUG("FT1000:ft1000_ChIoctl:Doorbell not available\n");
- result = -ENOTTY;
- kfree(dpram_data);
- break;
- }
- }
- }
- }
- }
-
- //DEBUG("FT1000_ft1000_ChIoctl: finished reading register\n");
-
- // Make sure we are within the limits of the slow queue memory limitation
- if ( (msgsz < MAX_CMD_SQSIZE) && (msgsz > PSEUDOSZ) ) {
- // Need to put sequence number plus new checksum for message
- //pmsg = (u16 *)&dpram_command.dpram_blk.pseudohdr;
- pmsg = (u16 *)&dpram_data->pseudohdr;
- ppseudo_hdr = (struct pseudo_hdr *)pmsg;
- total_len = msgsz+2;
- if (total_len & 0x1) {
- total_len++;
- }
-
- // Insert slow queue sequence number
- ppseudo_hdr->seq_num = info->squeseqnum++;
- ppseudo_hdr->portsrc = info->app_info[app_index].app_id;
- // Calculate new checksum
- ppseudo_hdr->checksum = *pmsg++;
- //DEBUG("checksum = 0x%x\n", ppseudo_hdr->checksum);
- for (i=1; i<7; i++) {
- ppseudo_hdr->checksum ^= *pmsg++;
- //DEBUG("checksum = 0x%x\n", ppseudo_hdr->checksum);
- }
- pmsg++;
- ppseudo_hdr = (struct pseudo_hdr *)pmsg;
-#if 0
- ptr = dpram_data;
- DEBUG("FT1000:ft1000_ChIoctl: Command Send\n");
- for (i=0; i<total_len; i++) {
- DEBUG("FT1000:ft1000_ChIoctl: data %d = 0x%x\n", i, *ptr++);
- }
-#endif
- //dpram_command.extra = 0;
-
- //CardSendCommand(ft1000dev,(unsigned char*)&dpram_command,total_len+2);
- CardSendCommand(ft1000dev,(unsigned short*)dpram_data,total_len+2);
-
-
- info->app_info[app_index].nTxMsg++;
- }
- else {
- result = -EINVAL;
- }
- }
- }
- }
- else {
- DEBUG("FT1000:ft1000_ChIoctl: Card not ready take messages\n");
- result = -EACCES;
- }
- kfree(dpram_data);
-
- }
- break;
- case IOCTL_GET_DPRAM_CMD:
- {
- struct dpram_blk *pdpram_blk;
- IOCTL_DPRAM_BLK __user *pioctl_dpram;
- int msglen;
-
- //DEBUG("FT1000:ft1000_ChIoctl: IOCTL_FT1000_GET_DPRAM called\n");
-
- if (ft1000_flarion_cnt == 0) {
- return (-EBADF);
- }
-
- // Search for matching file object
- for (i=0; i<MAX_NUM_APP; i++) {
- if ( info->app_info[i].fileobject == &File->f_owner) {
- //DEBUG("FT1000:ft1000_ChIoctl: Message is for AppId = %d\n", info->app_info[i].app_id);
- break;
- }
- }
-
- // Could not find application info block
- if (i == MAX_NUM_APP) {
- DEBUG("FT1000:ft1000_ChIoctl:Could not find application info block\n");
- result = -EBADF;
- break;
- }
-
- result = 0;
- pioctl_dpram = argp;
- if (list_empty(&info->app_info[i].app_sqlist) == 0) {
- //DEBUG("FT1000:ft1000_ChIoctl:Message detected in slow queue\n");
- spin_lock_irqsave(&free_buff_lock, flags);
- pdpram_blk = list_entry(info->app_info[i].app_sqlist.next, struct dpram_blk, list);
- list_del(&pdpram_blk->list);
- info->app_info[i].NumOfMsg--;
- //DEBUG("FT1000:ft1000_ChIoctl:NumOfMsg for app %d = %d\n", i, info->app_info[i].NumOfMsg);
- spin_unlock_irqrestore(&free_buff_lock, flags);
- msglen = ntohs(*(u16 *)pdpram_blk->pbuffer) + PSEUDOSZ;
- result = get_user(msglen, &pioctl_dpram->total_len);
- if (result)
- break;
- msglen = htons(msglen);
- //DEBUG("FT1000:ft1000_ChIoctl:msg length = %x\n", msglen);
- if(copy_to_user (&pioctl_dpram->pseudohdr, pdpram_blk->pbuffer, msglen))
- {
- DEBUG("FT1000:ft1000_ChIoctl: copy fault occurred\n");
- result = -EFAULT;
- break;
- }
-
- ft1000_free_buffer(pdpram_blk, &freercvpool);
- result = msglen;
- }
- //DEBUG("FT1000:ft1000_ChIoctl: IOCTL_FT1000_GET_DPRAM no message\n");
- }
- break;
-
- default:
- DEBUG("FT1000:ft1000_ChIoctl:unknown command: 0x%x\n", Command);
- result = -ENOTTY;
- break;
- }
- info->fAppMsgPend = 0;
- return result;
-}
-
-//---------------------------------------------------------------------------
-// Function: ft1000_ChRelease
-//
-// Parameters:
-//
-// Description:
-//
-// Notes:
-//
-//---------------------------------------------------------------------------
-static int ft1000_ChRelease (struct inode *Inode, struct file *File)
-{
- struct ft1000_info *info;
- struct net_device *dev;
- int i;
- struct dpram_blk *pdpram_blk;
-
- DEBUG("ft1000_ChRelease called\n");
-
- dev = File->private_data;
- info = (struct ft1000_info *) netdev_priv(dev);
-
- if (ft1000_flarion_cnt == 0) {
- info->appcnt--;
- return (-EBADF);
- }
-
- // Search for matching file object
- for (i=0; i<MAX_NUM_APP; i++) {
- if ( info->app_info[i].fileobject == &File->f_owner) {
- //DEBUG("FT1000:ft1000_ChIoctl: Message is for AppId = %d\n", info->app_info[i].app_id);
- break;
- }
- }
-
- if (i==MAX_NUM_APP)
- return 0;
-
- while (list_empty(&info->app_info[i].app_sqlist) == 0) {
- DEBUG("Remove and free memory queue up on slow queue\n");
- pdpram_blk = list_entry(info->app_info[i].app_sqlist.next, struct dpram_blk, list);
- list_del(&pdpram_blk->list);
- ft1000_free_buffer(pdpram_blk, &freercvpool);
- }
-
- // initialize application information
- info->appcnt--;
- DEBUG("ft1000_chdev:%s:appcnt = %d\n", __FUNCTION__, info->appcnt);
- info->app_info[i].fileobject = NULL;
-
- return 0;
-}
-
diff --git a/drivers/staging/ft1000/ft1000-usb/ft1000_hw.c b/drivers/staging/ft1000/ft1000-usb/ft1000_hw.c
index b41884e..62db2a3 100644
--- a/drivers/staging/ft1000/ft1000-usb/ft1000_hw.c
+++ b/drivers/staging/ft1000/ft1000-usb/ft1000_hw.c
@@ -950,10 +950,6 @@ int reg_ft1000_netdev(struct ft1000_device *ft1000dev, struct usb_interface *int
return rc;
}
-
- //Create character device, implemented by Jim
- ft1000_CreateDevice(ft1000dev);
-
DEBUG ("reg_ft1000_netdev returned\n");
pInfo->CardReady = 1;
diff --git a/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c b/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
index b7c4602..f20acd1 100644
--- a/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
+++ b/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
@@ -231,7 +231,6 @@ static void ft1000_disconnect(struct usb_interface *interface)
if (pft1000info->pFt1000Dev->net) {
DEBUG("ft1000_disconnect: destroy char driver\n");
- ft1000_DestroyDevice(pft1000info->pFt1000Dev->net);
unregister_netdev(pft1000info->pFt1000Dev->net);
DEBUG
("ft1000_disconnect: network device unregisterd\n");
diff --git a/drivers/staging/ft1000/ft1000-usb/ft1000_usb.h b/drivers/staging/ft1000/ft1000-usb/ft1000_usb.h
index a07db26..4375994 100644
--- a/drivers/staging/ft1000/ft1000-usb/ft1000_usb.h
+++ b/drivers/staging/ft1000/ft1000-usb/ft1000_usb.h
@@ -572,8 +572,6 @@ u16 scram_dnldr(struct ft1000_device *ft1000dev, void *pFileStart, u32 FileLeng
extern struct list_head freercvpool;
extern spinlock_t free_buff_lock; // lock to arbitrate free buffer list for receive command data
-int ft1000_CreateDevice(struct ft1000_device *dev);
-void ft1000_DestroyDevice(struct net_device *dev);
extern void CardSendCommand(struct ft1000_device *ft1000dev, void *ptempbuffer, int size);
struct dpram_blk *ft1000_get_buffer(struct list_head *bufflist);
--
1.7.1
This variables was used mainly for char device and char device
was removed so remove also unused variables.
Signed-off-by: Marek Belisko <[email protected]>
---
drivers/staging/ft1000/ft1000-usb/ft1000_hw.c | 1 -
drivers/staging/ft1000/ft1000-usb/ft1000_usb.h | 2 --
2 files changed, 0 insertions(+), 3 deletions(-)
diff --git a/drivers/staging/ft1000/ft1000-usb/ft1000_hw.c b/drivers/staging/ft1000/ft1000-usb/ft1000_hw.c
index 62db2a3..62d4068 100644
--- a/drivers/staging/ft1000/ft1000-usb/ft1000_hw.c
+++ b/drivers/staging/ft1000/ft1000-usb/ft1000_hw.c
@@ -834,7 +834,6 @@ u16 init_ft1000_netdev(struct ft1000_device *ft1000dev)
pInfo->ft1000_reset = ft1000_reset;
pInfo->mediastate = 0;
pInfo->fifo_cnt = 0;
- pInfo->DeviceCreated = FALSE;
pInfo->DeviceMajor = 0;
pInfo->CurrentInterruptEnableMask = ISR_DEFAULT_MASK;
pInfo->InterruptsEnabled = FALSE;
diff --git a/drivers/staging/ft1000/ft1000-usb/ft1000_usb.h b/drivers/staging/ft1000/ft1000-usb/ft1000_usb.h
index 4375994..804f20e 100644
--- a/drivers/staging/ft1000/ft1000-usb/ft1000_usb.h
+++ b/drivers/staging/ft1000/ft1000-usb/ft1000_usb.h
@@ -502,7 +502,6 @@ struct ft1000_info {
int DSPResetNum;
int NumIOCTLBufs;
int IOCTLBufLvl;
- int DeviceCreated;
int CardReady;
int NetDevRegDone;
u8 CardNumber;
@@ -532,7 +531,6 @@ struct ft1000_info {
u16 ConStat; //mbelian
u16 ProgConStat;
struct list_head prov_list;
- int appcnt;
struct app_info_block app_info[MAX_NUM_APP];
u16 DSPInfoBlklen;
u16 DrvMsgPend;
--
1.7.1
On Wed, 10 Nov 2010 11:15:26 +0100 Marek Belisko wrote:
> Signed-off-by: Marek Belisko <[email protected]>
> ---
> drivers/staging/ft1000/ft1000-usb/ft1000_usb.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
a. always include the warning or error message that the patch fixes
b. (quoting from another email yesterday:)
so in your analysis of this compiler warning, was the warning correct & justified,
or was it false? I.e., is the init to NULL needed?
If it was false, could we just silence the warning by using:
struct ft1000_info *unitialized_var(pft1000info);
plus #include <linux/compiler.h> ?
> diff --git a/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c b/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
> index 99e3339..b7c4602 100644
> --- a/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
> +++ b/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
> @@ -64,7 +64,7 @@ static int ft1000_probe(struct usb_interface *interface,
> int i, ret = 0, size;
>
> struct ft1000_device *ft1000dev;
> - struct ft1000_info *pft1000info;
> + struct ft1000_info *pft1000info = NULL;
> const struct firmware *dsp_fw;
>
> ft1000dev = kmalloc(sizeof(struct ft1000_device), GFP_KERNEL);
> --
---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
On Wed, Nov 10, 2010 at 11:15:27AM +0100, Marek Belisko wrote:
> This patch remove lot of code for character device. This
> interface was used for getting network informations and
> statistics which is currently exported via /proc filesystem.
>
> Signed-off-by: Marek Belisko <[email protected]>
This patch does not apply :(
thanks,
greg k-h
On Wed, Nov 10, 2010 at 11:15:26AM +0100, Marek Belisko wrote:
> Signed-off-by: Marek Belisko <[email protected]>
Care to resend this series as the second one didn't apply, and this one
needs a better change log entry?
thanks,
greg k-h
Hi Randy,
On Wed, Nov 10, 2010 at 5:38 PM, Randy Dunlap <[email protected]> wrote:
> On Wed, 10 Nov 2010 11:15:26 +0100 Marek Belisko wrote:
>
>> Signed-off-by: Marek Belisko <[email protected]>
>> ---
>> drivers/staging/ft1000/ft1000-usb/ft1000_usb.c | 2 +-
>> 1 files changed, 1 insertions(+), 1 deletions(-)
>
>
> a. always include the warning or error message that the patch fixes
>
> b. (quoting from another email yesterday:)
>
> so in your analysis of this compiler warning, was the warning correct & justified,
> or was it false? I.e., is the init to NULL needed?
After code analysis NULL assignment is necessary. Function have
multiple goto statements
and pointer is assigned after some goto are placed. In one of
statements at the end of function
there is kthread stopping which use pft1000info pointer (this part
isn't applicable if pft1000info isn't initialized).
Hopefully this is what compiler complain about (could return with some
goto statement but pft1000info isn't initialized but
used). This warning was introduced when make common return point for
some error states.
>
> If it was false, could we just silence the warning by using:
>
> struct ft1000_info *unitialized_var(pft1000info);
>
> plus #include <linux/compiler.h> ?
>
>
>> diff --git a/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c b/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
>> index 99e3339..b7c4602 100644
>> --- a/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
>> +++ b/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
>> @@ -64,7 +64,7 @@ static int ft1000_probe(struct usb_interface *interface,
>> int i, ret = 0, size;
>>
>> struct ft1000_device *ft1000dev;
>> - struct ft1000_info *pft1000info;
>> + struct ft1000_info *pft1000info = NULL;
>> const struct firmware *dsp_fw;
>>
>> ft1000dev = kmalloc(sizeof(struct ft1000_device), GFP_KERNEL);
>> --
>
>
> ---
> ~Randy
> *** Remember to use Documentation/SubmitChecklist when testing your code ***
>
thanks,
marek
--
as simple and primitive as possible
-------------------------------------------------
Marek Belisko - OPEN-NANDRA
Freelance Developer
Ruska Nova Ves 219 | Presov, 08005 Slovak Republic
Tel: +421 915 052 184
skype: marekwhite
icq: 290551086
web: http://open-nandra.com
On Fri, 12 Nov 2010 10:57:19 +0100 Belisko Marek wrote:
> Hi Randy,
>
> On Wed, Nov 10, 2010 at 5:38 PM, Randy Dunlap <[email protected]> wrote:
> > On Wed, 10 Nov 2010 11:15:26 +0100 Marek Belisko wrote:
> >
> >> Signed-off-by: Marek Belisko <[email protected]>
> >> ---
> >> ?drivers/staging/ft1000/ft1000-usb/ft1000_usb.c | ? ?2 +-
> >> ?1 files changed, 1 insertions(+), 1 deletions(-)
> >
> >
> > a. ?always include the warning or error message that the patch fixes
> >
> > b. ?(quoting from another email yesterday:)
> >
> > so in your analysis of this compiler warning, was the warning correct & justified,
> > or was it false? ?I.e., is the init to NULL needed?
> After code analysis NULL assignment is necessary. Function have
> multiple goto statements
> and pointer is assigned after some goto are placed. In one of
> statements at the end of function
> there is kthread stopping which use pft1000info pointer (this part
> isn't applicable if pft1000info isn't initialized).
> Hopefully this is what compiler complain about (could return with some
> goto statement but pft1000info isn't initialized but
> used). This warning was introduced when make common return point for
> some error states.
Thanks for checking and reporting on that.
Sorry, but I disagree. Greg can do whatever he wants to do with the patch.
> > If it was false, could we just silence the warning by using:
> >
> > ? ? ? ?struct ft1000_info *unitialized_var(pft1000info);
> >
> > plus #include <linux/compiler.h> ?
> >
> >
> >> diff --git a/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c b/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
> >> index 99e3339..b7c4602 100644
> >> --- a/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
> >> +++ b/drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
> >> @@ -64,7 +64,7 @@ static int ft1000_probe(struct usb_interface *interface,
> >> ? ? ? int i, ret = 0, size;
> >>
> >> ? ? ? struct ft1000_device *ft1000dev;
> >> - ? ? struct ft1000_info *pft1000info;
> >> + ? ? struct ft1000_info *pft1000info = NULL;
> >> ? ? ? const struct firmware *dsp_fw;
> >>
> >> ? ? ? ft1000dev = kmalloc(sizeof(struct ft1000_device), GFP_KERNEL);
> >> --
> >
> >
> > ---
>
> thanks,
>
> marek
---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
Hi Greg,
On Thu, Nov 11, 2010 at 1:26 AM, Greg KH <[email protected]> wrote:
> On Wed, Nov 10, 2010 at 11:15:27AM +0100, Marek Belisko wrote:
>> This patch remove lot of code for character device. This
>> interface was used for getting network informations and
>> statistics which is currently exported via /proc filesystem.
>>
>> Signed-off-by: Marek Belisko <[email protected]>
>
> This patch does not apply :(
I'm trying to resend but need to wait till linux-next will sync with
linus kernel.
In mainline there is a patch (61241d97db02559bd83d21ffa783ab327945b925) which
is not in linux-next.
I try to apply patch for mainline but it failed. I'll fix and resend then.
Hopefully this is correct if not forgive me ;)
>
> thanks,
>
> greg k-h
>
thanks,
marek
--
as simple and primitive as possible
-------------------------------------------------
Marek Belisko - OPEN-NANDRA
Freelance Developer
Ruska Nova Ves 219 | Presov, 08005 Slovak Republic
Tel: +421 915 052 184
skype: marekwhite
icq: 290551086
web: http://open-nandra.com
On Sat, Nov 13, 2010 at 08:05:40PM +0100, Belisko Marek wrote:
> Hi Greg,
>
> On Thu, Nov 11, 2010 at 1:26 AM, Greg KH <[email protected]> wrote:
> > On Wed, Nov 10, 2010 at 11:15:27AM +0100, Marek Belisko wrote:
> >> This patch remove lot of code for character device. This
> >> interface was used for getting network informations and
> >> statistics which is currently exported via /proc filesystem.
> >>
> >> Signed-off-by: Marek Belisko <[email protected]>
> >
> > This patch does not apply :(
> I'm trying to resend but need to wait till linux-next will sync with
> linus kernel.
> In mainline there is a patch (61241d97db02559bd83d21ffa783ab327945b925) which
> is not in linux-next.
>
> I try to apply patch for mainline but it failed. I'll fix and resend then.
> Hopefully this is correct if not forgive me ;)
Everything should be synced up now, please resync and resend.
thanks,
greg k-h
Hi Greg,
On Tue, Nov 16, 2010 at 8:36 PM, Greg KH <[email protected]> wrote:
> On Sat, Nov 13, 2010 at 08:05:40PM +0100, Belisko Marek wrote:
>> Hi Greg,
>>
>> On Thu, Nov 11, 2010 at 1:26 AM, Greg KH <[email protected]> wrote:
>> > On Wed, Nov 10, 2010 at 11:15:27AM +0100, Marek Belisko wrote:
>> >> This patch remove lot of code for character device. This
>> >> interface was used for getting network informations and
>> >> statistics which is currently exported via /proc filesystem.
>> >>
>> >> Signed-off-by: Marek Belisko <[email protected]>
>> >
>> > This patch does not apply :(
>> I'm trying to resend but need to wait till linux-next will sync with
>> linus kernel.
>> In mainline there is a patch (61241d97db02559bd83d21ffa783ab327945b925) which
>> is not in linux-next.
>>
>> I try to apply patch for mainline but it failed. I'll fix and resend then.
>> Hopefully this is correct if not forgive me ;)
>
> Everything should be synced up now, please resync and resend.
I'll change my mind and from this patch series I'll resend just 1/3 patch.
Patch 2/3 (followed by 3/3) is maybe not correct because it completely
remove access to
device from user space through /dev interface (used for debugging and testing).
My first idea was just remove it completely because we have a device which just
connect to network and don't need to have some debug interface.
Anyway I'll change creation of device in kernel via kernel threads
which is not from my
point of view correct.
>
> thanks,
>
> greg k-h
>
thanks,
marek
--
as simple and primitive as possible
-------------------------------------------------
Marek Belisko - OPEN-NANDRA
Freelance Developer
Ruska Nova Ves 219 | Presov, 08005 Slovak Republic
Tel: +421 915 052 184
skype: marekwhite
icq: 290551086
web: http://open-nandra.com
On Thu, Nov 18, 2010 at 09:43:00AM +0100, Belisko Marek wrote:
> Hi Greg,
>
> On Tue, Nov 16, 2010 at 8:36 PM, Greg KH <[email protected]> wrote:
> > On Sat, Nov 13, 2010 at 08:05:40PM +0100, Belisko Marek wrote:
> >> Hi Greg,
> >>
> >> On Thu, Nov 11, 2010 at 1:26 AM, Greg KH <[email protected]> wrote:
> >> > On Wed, Nov 10, 2010 at 11:15:27AM +0100, Marek Belisko wrote:
> >> >> This patch remove lot of code for character device. This
> >> >> interface was used for getting network informations and
> >> >> statistics which is currently exported via /proc filesystem.
> >> >>
> >> >> Signed-off-by: Marek Belisko <[email protected]>
> >> >
> >> > This patch does not apply :(
> >> I'm trying to resend but need to wait till linux-next will sync with
> >> linus kernel.
> >> In mainline there is a patch (61241d97db02559bd83d21ffa783ab327945b925) which
> >> is not in linux-next.
> >>
> >> I try to apply patch for mainline but it failed. I'll fix and resend then.
> >> Hopefully this is correct if not forgive me ;)
> >
> > Everything should be synced up now, please resync and resend.
> I'll change my mind and from this patch series I'll resend just 1/3 patch.
> Patch 2/3 (followed by 3/3) is maybe not correct because it completely
> remove access to
> device from user space through /dev interface (used for debugging and testing).
>
> My first idea was just remove it completely because we have a device which just
> connect to network and don't need to have some debug interface.
Yes, that sounds correct. Use debugfs if you need/want a debug
interface to the driver.
thanks,
greg k-h