⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sm_drv_sysfs_umac.c

📁 cx3110 drivers for linux 2.6 (基于SPI)
💻 C
字号:
/* * src/sm_drv_sysfs_umac.c * * * Copyright (C) 2004, 2005, 2006 Nokia Corporation * Author: Samuel Ortiz <samuel.ortiz@nokia.com> * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * */#include <linux/platform_device.h>#include "sm_drv.h"#include "sm_drv_ioctl.h"#include "sm_drv_pda.h"#include "sm_drv_sysfs.h"unsigned int driver_type = SM_DRIVER_TYPE_UMAC;static ssize_t sm_drv_show_signal_quality(struct device *dev, struct device_attribute *attr, char *buf){	struct net_device * net_dev;	struct net_local *lp;	uint32_t quality, noise_floor;	struct obj_bss bss;		net_dev = (struct net_device *)dev_get_drvdata(dev);	lp = net_dev->priv;		sm_drv_oid_get(net_dev, DOT11_OID_NOISEFLOOR, (void*)&noise_floor, sizeof(uint32_t));		/* copy this MAC to the bss */	bss.ext = lp->ext;	memcpy(bss.address, lp->ap_mac_address, ETH_ALEN);		/* now ask for the corresponding bss */	sm_drv_oid_get(net_dev, DOT11_OID_BSSFIND, (void *)&bss, sizeof(struct obj_bss));		/* report the rssi and use it to calculate	 *  link quality through a signal-noise	 *  ratio 	 */	quality = bss.rssi - noise_floor;		printk("Quality: %d\n", quality);	return sprintf(buf, "%d\n", quality);}static ssize_t sm_drv_show_rssi(struct device *dev, struct device_attribute *attr, char *buf){	struct net_device * net_dev;	struct net_local *lp;	uint32_t rssi, noise_floor;	struct obj_bss bss;		net_dev = (struct net_device *)dev_get_drvdata(dev);	lp = net_dev->priv;		sm_drv_oid_get(net_dev, DOT11_OID_NOISEFLOOR, (void*)&noise_floor, sizeof(uint32_t));		/* copy this MAC to the bss */	bss.ext = lp->ext;	memcpy(bss.address, lp->ap_mac_address, ETH_ALEN);		/* now ask for the corresponding bss */	sm_drv_oid_get(net_dev, DOT11_OID_BSSFIND, (void *)&bss, sizeof(struct obj_bss));		/* report the rssi and use it to calculate	 *  link quality through a signal-noise	 *  ratio 	 */	rssi = bss.rssi;		return sprintf(buf, "%d\n", rssi);}static ssize_t sm_drv_store_psm(struct device *dev, struct device_attribute *attr, const char *buf, size_t count){	uint32_t psm = simple_strtol(buf, NULL, 0);		if (psm < DOT11_PSM_ACTIVE || 	    psm > DOT11_PSM_POWERSAVE)		return 0;		if (sm_drv_oid_set((struct net_device *)dev_get_drvdata(dev), 			   DOT11_OID_PSM, (void *)&psm, sizeof(uint32_t)) < 0)		return 0;		return count;}static ssize_t sm_drv_show_psm(struct device *dev, struct device_attribute *attr, char *buf){	uint32_t psm;	if (sm_drv_oid_get((struct net_device *)dev_get_drvdata(dev), 			   DOT11_OID_PSM, (void *)&psm, sizeof(uint32_t)) < 0)		return 0;				return sprintf(buf, "%d\n", psm);}static DEVICE_ATTR(psm, S_IRUGO | S_IWUGO, sm_drv_show_psm, sm_drv_store_psm);static DEVICE_ATTR(signal_quality, S_IRUGO | S_IWUSR, sm_drv_show_signal_quality, NULL);static DEVICE_ATTR(rssi, S_IRUGO | S_IWUSR, sm_drv_show_rssi, NULL);extern struct platform_device wlan_omap_device;int sm_drv_sysfs_umac_create_files(void){	device_create_file(&(wlan_omap_device.dev), &dev_attr_psm);	device_create_file(&(wlan_omap_device.dev), &dev_attr_signal_quality);	device_create_file(&(wlan_omap_device.dev), &dev_attr_rssi);			return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -