/* * Print info for /proc/net/wireless (print all entries) * This is a clone of /proc/net/dev (just above) */ int dev_get_wireless_info(char * buffer, char ** start, off_t offset, int length, int dummy) { int len = 0; off_t begin = 0; off_t pos = 0; int size; struct device * dev; size = sprintf(buffer, "Inter-|sta| Quality | Discarded packets\n" " face |tus|link level noise| nwid crypt misc\n"); pos+=size; len+=size; for(dev = dev_base; dev != NULL; dev = dev->next) { size = sprintf_wireless_stats(buffer+len, dev); len+=size; pos=begin+len; if(pos < offset) { len=0; begin=pos; } if(pos > offset + length) break; } *start = buffer + (offset - begin); /* Start of wanted data */ len -= (offset - begin); /* Start slop */ if(len > length) len = length; /* Ending slop */ return len; }
/* * Print info for /proc/net/wireless (print all entries) */ int dev_get_wireless_info(char * buffer, char **start, off_t offset, int length) { int len = 0; off_t begin = 0; off_t pos = 0; int size; struct net_device * dev; size = sprintf(buffer, "Inter-| sta-| Quality | Discarded packets | Missed | WE\n" " face | tus | link level noise | nwid crypt frag retry misc | beacon | %d\n", WIRELESS_EXT); pos += size; len += size; read_lock(&dev_base_lock); for (dev = dev_base; dev != NULL; dev = dev->next) { size = sprintf_wireless_stats(buffer + len, dev); len += size; pos = begin + len; if (pos < offset) { len = 0; begin = pos; } if (pos > offset + length) break; } read_unlock(&dev_base_lock); *start = buffer + (offset - begin); /* Start of wanted data */ len -= (offset - begin); /* Start slop */ if (len > length) len = length; /* Ending slop */ if (len < 0) len = 0; return len; }