在串口下添加set和get命令(修改Linux内核代码)

来源:互联网 发布:java通过http下载文件 编辑:程序博客网 时间:2024/06/03 03:47

第一步:

    在Truck/drivers/wlan/lmac/ath_dev/if_athioctl.h文件中添加以下代码:

#define ATH_IOCTL_GET_AP_TIMEFAIR           (SIOCIWFIRSTPRIV+19)

#define ATH_IOCTL_SET_AP_TIMEFAIR           (SIOCIWFIRSTPRIV+20)

 

第二步:

   在Truck/drivers/wlan/os/linux/src/ath_iw_handler.c文件中添加以下代码:

 

1. static const iw_handler ath_iw_priv_handlers[]数组中添加函数指针,保证在调用的时候能够准确的调用到该函数。

 

  (iw_handler) ath_iw_get_timefair,               /* SIOCWFIRSTPRIV+16 */

  (iw_handler) ath_iw_set_timefair,               /* SIOCWFIRSTPRIV+17 */

 

 

2. 在文件中添加对ath_iw_get_timefair函数和ath_iw_set_timefair函数的实现。

 

static int ath_iw_set_timefair(struct net_device *dev, struct iw_request_info *info, void *w, char *extra)

{

    u_int32_t *ic_set_num = (u_int32_t *) extra;

    struct ath_softc_net80211 *scn = ath_netdev_priv(dev);

    struct ieee80211com *ic = &scn->sc_ic;

 

    /* if ic_set_num != 0/1,there is no use for settimefair command */

    if( *ic_set_num == 0 || *ic_set_num == 1)

    {

        ic->timefair = *ic_set_num;

    }

 

    return 0;

}

 

static int ath_iw_get_timefair(struct net_device *dev, struct iw_request_info *info, void *w, char *extra)

{

    char *buf = (char *)extra;

    struct iw_point *wri = (struct iw_point *)w;

    struct ath_softc_net80211 *scn = ath_netdev_priv(dev); 

    struct ieee80211com *ic = &scn->sc_ic;

    char temp[2] = {0};   //防止显示错误,保证只能显示一个字符,解决'/0'问题。

 

    sprintf(temp,"%d",ic->timefair);

    memcpy(buf,temp,strlen(temp)+1);

    wri->length = strlen(buf);

    return 0;

}

 

第三步:

Truck/drivers/wlan/umac/include/ieee80211_var.h文件中ieee80211com结构体中添加对应的成员timefair

 

第四步:

Truck/drivers/wlan/os/linux/src/ieee80211_aponly.c文件中调用该参数:

 

/* add by wudi start, 2015/11/20 */

    /* time fair priority */

    if ( 1 == ni->ni_ic->timefair )

    {

        rate = ni->ni_ic->ic_node_getrate(ni, IEEE80211_RATE_TX);

        time_fair_set_priority(skb, rate);

    }

/* add by wudi end, 2015/11/20 */


操作命令:iwconfig  wifi0/wifi1 settimefair 0/1    //设置进入时间公平的开关

                    iwconfig  wifi0/wifi1 gettimefair          //获取进入时间公平的参数

 

我们不仅可以在串口下设定参数,同时也可通过页面进行设置参数:

 http://192.168.1.1/x_myset2.cgi?type=objOperate&action=edit&id=OID_LoadBalance&value=<OID_LoadBalance>Enable=1</OID_LoadBalance>

 

其中红色的字体标记的需要你自己设置的参数,OID_LoadBalance参数需要在Truck/platform/userspace/privute/libs/cms_core/mdm_objectidnametable.c文件中查找对应的参数。其余单数根据自己的命令进行给定。


0 0