亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1973 | 回復(fù): 3
打印 上一主題 下一主題

linux網(wǎng)卡驅(qū)動(dòng) 速率不穩(wěn)定 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2016-08-09 14:53 |只看該作者 |倒序?yàn)g覽

菜鳥一枚,剛開始學(xué)習(xí)linux驅(qū)動(dòng)編寫,最近因工作需要,寫了一個(gè)虛擬的網(wǎng)卡驅(qū)動(dòng),要求能夠達(dá)到千兆網(wǎng)卡的速度。
驅(qū)動(dòng)編寫好調(diào)試時(shí),發(fā)現(xiàn)在運(yùn)行一段時(shí)間后,速度就會(huì)變慢,最快時(shí)可達(dá)120M字節(jié),最低時(shí)
只有幾十K字節(jié),波動(dòng)特別大,研究了很久,沒發(fā)現(xiàn)問題,哪位大神遇到過同樣的問題,請不吝指教。
現(xiàn)在貼出部分代碼:

從協(xié)議棧取到數(shù)據(jù),通過我們自己的途徑發(fā)送出去:
static netdev_tx_t hba_net_tx (struct sk_buff *skb, struct net_device *dev)
{
int len = 0;
int ret = 0;
char *data , shortpkt[ETH_ZLEN];
HBA_NET_PRIV *net_priv = netdev_priv(dev);
unsigned long flags;
unsigned int did;


data = skb->data;
len = skb->len;


/*如果幀長小于以太網(wǎng)幀最小長度,補(bǔ)0*/
if(len < ETH_ZLEN)
{
    memset(shortpkt, 0, ETH_ZLEN);
    memcpy(shortpkt, skb->data, skb->len);
    len = ETH_ZLEN;
    data = shortpkt;
}

dev->trans_start = jiffies;

    //通過我們的途徑發(fā)送到目的地(不是硬件)
    ret = SendMsg( data, len);  

    /*發(fā)送包統(tǒng)計(jì)*/
    if(ret == 0)
    {
        dev->stats.tx_packets ++;
        dev->stats.tx_bytes += len;
    }
    else
    {
        dev->stats.tx_errors ++;
        dev->stats.tx_dropped ++;
    }
}

dev_kfree_skb_any(skb);

return 0;
}

從對(duì)端經(jīng)過我們的途徑收到數(shù)據(jù)后,遞交給協(xié)議棧:
int hba_net_rx(unsigned char *data, unsigned int len, struct net_device *dev)
{
struct sk_buff *skb = NULL;
/*分配套接字緩沖區(qū)*/
skb = dev_alloc_skb(len + 2);
if(skb == NULL)
{
    printk("%s:memory is not sufficient, rcvd packet dropped.\n", dev->name);
    dev->stats.rx_dropped++;
    return -1;
}
skb_reserve(skb, 2);

skb->dev = dev;

memcpy(skb_put(skb, len), data, len);

skb->protocol = eth_type_trans(skb, dev);

/*接收包統(tǒng)計(jì)*/
dev->stats.rx_packets ++;
dev->stats.rx_bytes += len;

netif_rx(skb);

return 0;
}



經(jīng)過測試,我們的收發(fā)途徑都是沒有什么問題的,最高可以達(dá)到150M Byte的速率。
加上這個(gè)驅(qū)動(dòng)后,發(fā)現(xiàn)即便我應(yīng)用層只發(fā)10M byte的速度,但是依舊不穩(wěn)定,不知道什么原因。
所以我覺得主要問題在網(wǎng)卡驅(qū)動(dòng)這一塊,但是這塊確實(shí)沒什么代碼的,求大神指導(dǎo)。
因?yàn)榈谝淮伍_發(fā)網(wǎng)卡驅(qū)動(dòng),沒有什么調(diào)試經(jīng)驗(yàn),我想單向調(diào)試,就是測速,不知道有沒有什么辦法。
求大神指導(dǎo),急急急!

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2016-08-09 14:54 |只看該作者
回復(fù) 1# 精益技術(shù)

自己頂一下,急急急,求指導(dǎo)
   

論壇徽章:
13
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-06-29 06:20:00每日論壇發(fā)貼之星
日期:2016-08-14 06:20:00操作系統(tǒng)版塊每日發(fā)帖之星
日期:2016-08-14 06:20:00每日論壇發(fā)貼之星
日期:2016-08-13 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-08-13 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-08-13 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-08-13 06:20:00每日論壇發(fā)貼之星
日期:2016-08-12 06:20:00數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-08-12 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-08-12 06:20:00操作系統(tǒng)版塊每日發(fā)帖之星
日期:2016-08-12 06:20:00綜合交流區(qū)版塊每日發(fā)帖之星
日期:2016-08-09 06:20:00
3 [報(bào)告]
發(fā)表于 2016-08-09 22:20 |只看該作者
把手冊好好讀讀,再看linux怎么實(shí)現(xiàn)的。

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2016-09-18 14:35 來自手機(jī) |只看該作者
karma303 發(fā)表于 2016-08-09 22:20
把手冊好好讀讀,再看linux怎么實(shí)現(xiàn)的。

你好 請問是哪一個(gè)手冊?小弟最近也在搞這個(gè) 但是是半路接手的
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP