From owner-freebsd-stable@FreeBSD.ORG Fri Sep 10 10:36:54 2010 Return-Path: Delivered-To: freebsd-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 58A8A106566B for ; Fri, 10 Sep 2010 10:36:54 +0000 (UTC) (envelope-from beezarliu@yahoo.com.cn) Received: from nm23-vm0.bullet.mail.ac4.yahoo.com (nm23-vm0.bullet.mail.ac4.yahoo.com [98.139.53.220]) by mx1.freebsd.org (Postfix) with SMTP id B97458FC12 for ; Fri, 10 Sep 2010 10:36:53 +0000 (UTC) Received: from [98.139.52.196] by nm23.bullet.mail.ac4.yahoo.com with NNFMP; 10 Sep 2010 10:24:08 -0000 Received: from [74.6.228.36] by tm9.bullet.mail.ac4.yahoo.com with NNFMP; 10 Sep 2010 10:24:08 -0000 Received: from [127.0.0.1] by smtp105.mail.ac4.yahoo.com with NNFMP; 10 Sep 2010 10:24:08 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com.cn; s=s1024; t=1284114248; bh=cJWmRM2QiHBl9uobpIg2CYaBf5p2pfR1oAXweh7j0OE=; h=X-Yahoo-Newman-Id:Received:X-Yahoo-SMTP:X-YMail-OSG:X-Yahoo-Newman-Property:Date:From:To:Cc:Subject:Message-ID:X-mailer:Mime-Version:Content-Type; b=2BuDUpf3W7+v3h5xZiwGOyD6v6BE4FbzeF1W4p4uNcSpcRykLjMDGmUOpNNGoUjBorBeBJVU18L+H3/agU/Wjyuxg+96va3mNN5ZTvpLSezaC1wq1PA4buun6v9UGSl/M2t3zx1UgAIvhNPujarnEAk7LtsxIsE1pRmCsLXyGXE= X-Yahoo-Newman-Id: 548180.61002.bm@smtp105.mail.ac4.yahoo.com Received: from china (beezarliu@124.207.251.123 with login) by smtp105.mail.ac4.yahoo.com with SMTP; 10 Sep 2010 03:24:06 -0700 PDT X-Yahoo-SMTP: YP5UPy2swBBHZGZlvbmOrntlD3fotw-- X-YMail-OSG: .t5xC94VM1kGZlUN4eODpXZi26uqcv3Id0IDA6dqPDORmza uhncWwdAWoSbXdn7f71OJqoTjuhNr63KuG8jQNY9di325OxYEdex5pk1bpbO Q7F1f0bhXout.Mf74PzKzj4.7XOqrsOW.tZKMS0.avOH34Pa77z09O__uw6J ALl1mAiZ7B6UprXWpP72gmeDlL7Im8CJBNmhNWaX0n3XPY0rLGF3DWSnKfnR 4fjseGt1XNaxabAn._Ag3ruwRb.lp X-Yahoo-Newman-Property: ymail-3 Date: Fri, 10 Sep 2010 18:24:04 +0800 From: "beezarliu" To: "freebsd-stable" Message-ID: <201009101823570620798@yahoo.com.cn> X-mailer: Foxmail 6, 10, 201, 20 [cn] Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=====001_Dragon734515843444_=====" X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: Jack Vogel Subject: e1000 receive queue handling X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Sep 2010 10:36:54 -0000 This is a multi-part message in MIME format. --=====001_Dragon734515843444_===== Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: 7bit Hi, I found em's receiving queue handling will have the following problems if system mbuf is used up. 1. NIC will hang because receive ring's tail pointer will not be updated (in em_rxeof). 2. "ifconfig up/down" may cause system panic because em_setup_receive_ring will free already-freed mbufs. So I made some changes: 1. NIC's recieve ring's head/tail pointer is updated according to rxr's next_to_check/next_to_refresh. So, on the position of next_to_refresh, no need to fill free mbuf because datasheet says "When the head pointer(s) is equal to the tail pointer(s), the queue(s) is empty. Hardware stops storing packets in system memory until software advances the tail pointer(s), making more receive buffers available." And (next_to_refresh + 1) % num_rx_desc == next_to_check means ring queue is full. 2. no need to reallocate the mbufs on receive queue when em re-initialize. 3. The mbufs on the queue are also freed according to these two indexs. 4. If ring queue is empty, em_refresh_mbufs is also called even if it doesn't handle any packet. Any comment? Thanks 2010-09-10 beezarliu --=====001_Dragon734515843444_===== Content-Type: application/octet-stream; name="if_em.c.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="if_em.c.patch" SW5kZXg6IGlmX2VtLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gaWZfZW0uYwkocmV2aXNpb24gMjEyNDA1KQor KysgaWZfZW0uYwkod29ya2luZyBjb3B5KQpAQCAtMzY3MSwxMSArMzY3MSwxMyBAQAogCWJ1c19k bWFfc2VnbWVudF90CXNlZ3NbMV07CiAJYnVzX2RtYW1hcF90CQltYXA7CiAJc3RydWN0IGVtX2J1 ZmZlcgkqcnhidWY7Ci0JaW50CQkJaSwgZXJyb3IsIG5zZWdzLCBjbGVhbmVkOworCWludAkJCWks IGosIGVycm9yLCBuc2VncywgY2xlYW5lZDsKIAotCWkgPSByeHItPm5leHRfdG9fcmVmcmVzaDsK KwlpID0gaiA9IHJ4ci0+bmV4dF90b19yZWZyZXNoOwogCWNsZWFuZWQgPSAtMTsKLQl3aGlsZSAo aSAhPSBsaW1pdCkgeworCWlmICgrK2ogPT0gYWRhcHRlci0+bnVtX3J4X2Rlc2MpCisJCWogPSAw OworCXdoaWxlIChqICE9IGxpbWl0KSB7CiAJCW0gPSBtX2dldGNsKE1fRE9OVFdBSVQsIE1UX0RB VEEsIE1fUEtUSERSKTsKIAkJaWYgKG0gPT0gTlVMTCkKIAkJCWdvdG8gdXBkYXRlOwpAQCAtMzcx MSw5ICszNzEzLDEwIEBACiAJCXJ4ci0+cnhfYmFzZVtpXS5idWZmZXJfYWRkciA9IGh0b2xlNjQo c2Vnc1swXS5kc19hZGRyKTsKIAogCQljbGVhbmVkID0gaTsKKwkJaSA9IGo7CiAJCS8qIENhbGN1 bGF0ZSBuZXh0IGluZGV4ICovCi0JCWlmICgrK2kgPT0gYWRhcHRlci0+bnVtX3J4X2Rlc2MpCi0J CQlpID0gMDsKKwkJaWYgKCsraiA9PSBhZGFwdGVyLT5udW1fcnhfZGVzYykKKwkJCWogPSAwOwog CQkvKiBUaGlzIGlzIHRoZSB3b3JrIG1hcmtlciBmb3IgcmVmcmVzaCAqLwogCQlyeHItPm5leHRf dG9fcmVmcmVzaCA9IGk7CiAJfQpAQCAtMzcyMiw3ICszNzI1LDcgQEAKIAkgICAgQlVTX0RNQVNZ TkNfUFJFUkVBRCB8IEJVU19ETUFTWU5DX1BSRVdSSVRFKTsKIAlpZiAoY2xlYW5lZCAhPSAtMSkg LyogVXBkYXRlIHRhaWwgaW5kZXggKi8KIAkJRTEwMDBfV1JJVEVfUkVHKCZhZGFwdGVyLT5odywK LQkJICAgIEUxMDAwX1JEVChyeHItPm1lKSwgY2xlYW5lZCk7CisJCSAgICBFMTAwMF9SRFQocnhy LT5tZSksIHJ4ci0+bmV4dF90b19yZWZyZXNoKTsKIAogCXJldHVybjsKIH0KQEAgLTM4MDksMzIg KzM4MTIsMjIgQEAKIAlzdHJ1Y3QJYWRhcHRlciAJKmFkYXB0ZXIgPSByeHItPmFkYXB0ZXI7CiAJ c3RydWN0IGVtX2J1ZmZlcgkqcnhidWY7CiAJYnVzX2RtYV9zZWdtZW50X3QJc2VnWzFdOwotCWlu dAkJCXJzaXplLCBuc2VncywgZXJyb3I7CisJaW50CQkJaSwgaiwgbnNlZ3MsIGVycm9yOwogCiAK IAkvKiBDbGVhciB0aGUgcmluZyBjb250ZW50cyAqLwogCUVNX1JYX0xPQ0socnhyKTsKLQlyc2l6 ZSA9IHJvdW5kdXAyKGFkYXB0ZXItPm51bV9yeF9kZXNjICoKLQkgICAgc2l6ZW9mKHN0cnVjdCBl MTAwMF9yeF9kZXNjKSwgRU1fREJBX0FMSUdOKTsKLQliemVybygodm9pZCAqKXJ4ci0+cnhfYmFz ZSwgcnNpemUpOwotCi0JLyoKLQkqKiBGcmVlIGN1cnJlbnQgUlggYnVmZmVyIHN0cnVjdHMgYW5k IHRoZWlyIG1idWZzCi0JKi8KLQlmb3IgKGludCBpID0gMDsgaSA8IGFkYXB0ZXItPm51bV9yeF9k ZXNjOyBpKyspIHsKLQkJcnhidWYgPSAmcnhyLT5yeF9idWZmZXJzW2ldOwotCQlpZiAocnhidWYt Pm1faGVhZCAhPSBOVUxMKSB7Ci0JCQlidXNfZG1hbWFwX3N5bmMocnhyLT5yeHRhZywgcnhidWYt Pm1hcCwKLQkJCSAgICBCVVNfRE1BU1lOQ19QT1NUUkVBRCk7Ci0JCQlidXNfZG1hbWFwX3VubG9h ZChyeHItPnJ4dGFnLCByeGJ1Zi0+bWFwKTsKLQkJCW1fZnJlZW0ocnhidWYtPm1faGVhZCk7Ci0J CX0KKwlmb3IgKGkgPSAwOyBpIDwgYWRhcHRlci0+bnVtX3J4X2Rlc2M7IGkrKykgeworCQlzdHJ1 Y3QgZTEwMDBfcnhfZGVzYyogY3VyOworCQljdXIgPSAmcnhyLT5yeF9iYXNlW2ldOworCQljdXIt PnN0YXR1cyA9IDA7CiAJfQogCi0JLyogTm93IHJlcGxlbmlzaCB0aGUgbWJ1ZnMgKi8KLQlmb3Ig KGludCBqID0gMDsgaiAhPSBhZGFwdGVyLT5udW1fcnhfZGVzYzsgKytqKSB7Ci0KLQkJcnhidWYg PSAmcnhyLT5yeF9idWZmZXJzW2pdOworCWkgPSBqID0gcnhyLT5uZXh0X3RvX3JlZnJlc2g7CisJ aWYgKCsraiA9PSBhZGFwdGVyLT5udW1fcnhfZGVzYykKKwkJaiA9IDA7CisJd2hpbGUoaiAhPSBy eHItPm5leHRfdG9fY2hlY2spIHsKKwkJcnhidWYgPSAmcnhyLT5yeF9idWZmZXJzW2ldOwogCQly eGJ1Zi0+bV9oZWFkID0gbV9nZXRjbChNX0RPTlRXQUlULCBNVF9EQVRBLCBNX1BLVEhEUik7CiAJ CWlmIChyeGJ1Zi0+bV9oZWFkID09IE5VTEwpCiAJCQlwYW5pYygiUlggcmluZyBoZHIgaW5pdGlh bGl6YXRpb24gZmFpbGVkIVxuIik7CkBAIC0zODUyLDEzICszODQ1LDE0IEBACiAJCSAgICByeGJ1 Zi0+bWFwLCBCVVNfRE1BU1lOQ19QUkVSRUFEKTsKIAogCQkvKiBVcGRhdGUgZGVzY3JpcHRvciAq LwotCQlyeHItPnJ4X2Jhc2Vbal0uYnVmZmVyX2FkZHIgPSBodG9sZTY0KHNlZ1swXS5kc19hZGRy KTsKKwkJcnhyLT5yeF9iYXNlW2ldLmJ1ZmZlcl9hZGRyID0gaHRvbGU2NChzZWdbMF0uZHNfYWRk cik7CisJCWkgPSBqOworCQlpZiAoKytqID09IGFkYXB0ZXItPm51bV9yeF9kZXNjKQorCQkJaiA9 IDA7CiAJfQogCi0KIAkvKiBTZXR1cCBvdXIgZGVzY3JpcHRvciBpbmRpY2VzICovCi0JcnhyLT5u ZXh0X3RvX2NoZWNrID0gMDsKLQlyeHItPm5leHRfdG9fcmVmcmVzaCA9IDA7CisJcnhyLT5uZXh0 X3RvX3JlZnJlc2ggPSBpOwogCiAJYnVzX2RtYW1hcF9zeW5jKHJ4ci0+cnhkbWEuZG1hX3RhZywg cnhyLT5yeGRtYS5kbWFfbWFwLAogCSAgICBCVVNfRE1BU1lOQ19QUkVSRUFEIHwgQlVTX0RNQVNZ TkNfUFJFV1JJVEUpOwpAQCAtMzkzOCw2ICszOTMyLDcgQEAKIHsKIAlzdHJ1Y3QgYWRhcHRlcgkJ KmFkYXB0ZXIgPSByeHItPmFkYXB0ZXI7CiAJc3RydWN0IGVtX2J1ZmZlcgkqcnhidWYgPSBOVUxM OworCWludCAJCQlpOwogCiAJSU5JVF9ERUJVR09VVCgiZnJlZV9yZWNlaXZlX2J1ZmZlcnM6IGJl Z2luIik7CiAKQEAgLTM5NDcsNyArMzk0Miw4IEBACiAJfQogCiAJaWYgKHJ4ci0+cnhfYnVmZmVy cyAhPSBOVUxMKSB7Ci0JCWZvciAoaW50IGkgPSAwOyBpIDwgYWRhcHRlci0+bnVtX3J4X2Rlc2M7 IGkrKykgeworCQlpID0gcnhyLT5uZXh0X3RvX2NoZWNrOworCQl3aGlsZShpICE9IHJ4ci0+bmV4 dF90b19yZWZyZXNoKSB7CiAJCQlyeGJ1ZiA9ICZyeHItPnJ4X2J1ZmZlcnNbaV07CiAJCQlpZiAo cnhidWYtPm1hcCAhPSBOVUxMKSB7CiAJCQkJYnVzX2RtYW1hcF9zeW5jKHJ4ci0+cnh0YWcsIHJ4 YnVmLT5tYXAsCkBAIC0zOTU5LDYgKzM5NTUsOCBAQAogCQkJCW1fZnJlZW0ocnhidWYtPm1faGVh ZCk7CiAJCQkJcnhidWYtPm1faGVhZCA9IE5VTEw7CiAJCQl9CisJCQlpZiAoKytpID09IGFkYXB0 ZXItPm51bV9yeF9kZXNjKQorCQkJCWkgPSAwOwkJCQogCQl9CiAJCWZyZWUocnhyLT5yeF9idWZm ZXJzLCBNX0RFVkJVRik7CiAJCXJ4ci0+cnhfYnVmZmVycyA9IE5VTEw7CkBAIC00MDQ0LDggKzQw NDIsOCBAQAogCQlFMTAwMF9XUklURV9SRUcoaHcsIEUxMDAwX1JEQkFIKGkpLCAodTMyKShidXNf YWRkciA+PiAzMikpOwogCQlFMTAwMF9XUklURV9SRUcoaHcsIEUxMDAwX1JEQkFMKGkpLCAodTMy KWJ1c19hZGRyKTsKIAkJLyogU2V0dXAgdGhlIEhlYWQgYW5kIFRhaWwgRGVzY3JpcHRvciBQb2lu dGVycyAqLwotCQlFMTAwMF9XUklURV9SRUcoaHcsIEUxMDAwX1JESChpKSwgMCk7Ci0JCUUxMDAw X1dSSVRFX1JFRyhodywgRTEwMDBfUkRUKGkpLCBhZGFwdGVyLT5udW1fcnhfZGVzYyAtIDEpOwor CQlFMTAwMF9XUklURV9SRUcoaHcsIEUxMDAwX1JESChpKSwgcnhyLT5uZXh0X3RvX2NoZWNrKTsK KwkJRTEwMDBfV1JJVEVfUkVHKGh3LCBFMTAwMF9SRFQoaSksIHJ4ci0+bmV4dF90b19yZWZyZXNo KTsKIAl9CiAKIAkvKiBTZXR1cCB0aGUgUmVjZWl2ZSBDb250cm9sIFJlZ2lzdGVyICovCkBAIC00 MjA2LDcgKzQyMDQsNyBAQAogCX0KIAogCS8qIENhdGNoIGFueSByZW1haW5pbmcgcmVmcmVzaCB3 b3JrICovCi0JaWYgKHByb2Nlc3NlZCAhPSAwKSB7CisJaWYgKHByb2Nlc3NlZCAhPSAwIHx8IGkg PT0gcnhyLT5uZXh0X3RvX3JlZnJlc2gpIHsKIAkJZW1fcmVmcmVzaF9tYnVmcyhyeHIsIGkpOwog CQlwcm9jZXNzZWQgPSAwOwogCX0K --=====001_Dragon734515843444_=====-- __________________________________________________ ¸Ï¿ì×¢²áÑÅ»¢³¬´óÈÝÁ¿Ãâ·ÑÓÊÏä? http://cn.mail.yahoo.com