OpenWrt – Rev 1

Subversion Repositories:
Rev:
--- a/tn7dsl.c
+++ b/tn7dsl.c
@@ -209,7 +209,7 @@ led_reg_t ledreg[2];
 static struct led_funcs ledreg[2];
 #endif
 
-#define DEV_DSLMOD       CTL_UNNUMBERED
+#define DEV_DSLMOD     0
 #define MAX_STR_SIZE     256
 #define DSL_MOD_SIZE     256
 
@@ -350,8 +350,8 @@ static void tn7dsl_chng_modulation(void*
 static unsigned int tn7dsl_set_modulation(void* data, int flag);
 static void tn7dsl_ctrl_fineGain(int value);
 static void tn7dsl_set_fineGainValue(int value);
-static int dslmod_sysctl (ctl_table * ctl, int write, struct file *filp,
-                          void *buffer, size_t * lenp);
+static int dslmod_sysctl (ctl_table * ctl, int write, void *buffer,
+                          size_t * lenp, loff_t *ppos);
 static void tn7dsl_register_dslss_led(void);
 void tn7dsl_dslmod_sysctl_register(void);
 void tn7dsl_dslmod_sysctl_unregister(void);
@@ -3582,8 +3582,8 @@ unsigned int tn7dsl_get_memory(unsigned
 
 
 
-static int dslmod_sysctl(ctl_table *ctl, int write, struct file * filp,
-      void *buffer, size_t *lenp)
+static int dslmod_sysctl(ctl_table *ctl, int write, void *buffer,
+      size_t *lenp, loff_t *ppos)
 {
   char *ptr;
   int ret, len = 0;
@@ -3595,7 +3595,7 @@ static int dslmod_sysctl(ctl_table *ctl,
   char mod_req[16] = { '\t' };
   char fst_byt;
 
-  if (!*lenp || (filp->f_pos && !write))
+  if (!*lenp || (*ppos && !write))
   {
     *lenp = 0;
     return 0;
@@ -3605,9 +3605,9 @@ static int dslmod_sysctl(ctl_table *ctl,
    */
   if(write)
     {
-    ret = proc_dostring(ctl, write, filp, buffer, lenp, 0);
+    ret = proc_dostring(ctl, write, buffer, lenp, ppos);
 
-    switch (ctl->ctl_name)
+    switch ((long)ctl->extra2)
       {
       case DEV_DSLMOD:
       ptr = strpbrk(info, " \t");
@@ -3691,14 +3691,21 @@ static int dslmod_sysctl(ctl_table *ctl,
   else
     {
     len += sprintf(info+len, mod_req);
-    ret = proc_dostring(ctl, write, filp, buffer, lenp, 0);
+    ret = proc_dostring(ctl, write, buffer, lenp, ppos);
     }
   return ret;
 }
 
 
 ctl_table dslmod_table[] = {
-  {DEV_DSLMOD, "dslmod", info, DSL_MOD_SIZE, 0644, NULL, NULL, &dslmod_sysctl, &sysctl_string}
+       {
+               .procname               = "dslmod",
+               .data                   = info,
+               .maxlen                 = DSL_MOD_SIZE,
+               .mode                   = 0644,
+               .proc_handler   = &dslmod_sysctl,
+               .extra2                 = (void *)DEV_DSLMOD,
+       }
   ,
   {0}
   };
@@ -3706,7 +3713,12 @@ ctl_table dslmod_table[] = {
 /* Make sure that /proc/sys/dev is there */
 ctl_table dslmod_root_table[] = {
 #ifdef CONFIG_PROC_FS
-  {CTL_DEV, "dev", NULL, 0, 0555, dslmod_table}
+       {
+               .procname               = "dev",
+               .maxlen                 = 0,
+               .mode                   = 0555,
+               .child                  = dslmod_table,
+       }
   ,
 #endif /* CONFIG_PROC_FS */
   {0}