Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 17 Sep 2002 15:48:47 +0200 (CEST)
From:      Harti Brandt <brandt@fokus.gmd.de>
To:        Bruce Evans <bde@zeta.org.au>
Cc:        Don Lewis <dl-freebsd@catspoiler.org>, <brandt@fokus.gmd.de>, <phk@critter.freebsd.dk>, <archie@dellroad.org>, <joe@FreeBSD.org>, <obrien@FreeBSD.org>, <cvs-committers@FreeBSD.org>, <cvs-all@FreeBSD.org>
Subject:   Re: cvs commit: src/sys/kern kern_timeout.c 
Message-ID:  <20020917153943.X812-200000@beagle.fokus.gmd.de>
In-Reply-To: <20020917233828.H11067-100000@gamplex.bde.org>

next in thread | previous in thread | raw e-mail | index | archive | help
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

--0-288387960-1032270527=:812
Content-Type: TEXT/PLAIN; charset=US-ASCII

On Tue, 17 Sep 2002, Bruce Evans wrote:

BE>On Tue, 17 Sep 2002, Don Lewis wrote:
BE>
BE>> On 17 Sep, Harti Brandt wrote:
BE>> ....
BE>> > (1) replaced all calls to DELAY(1) with a bus_space_read_4() on a card
BE>> > address. Because there are 184 DELAY(1) calls in each xl_mii_readreg each
BE>> > of which takes a mean of 8.5usecs this cuts down the overall time from
BE>> > 1.8msec to around 320usecs.
BE>>
BE>> I think we're probably ok here.  The standard says the minimum high and
BE>> low times for the clock signal are 160ns, with a minimum clock period of
BE>> 400ns.  If I do the math correctly, your scheme wiggles something about
BE>> every 1.7us.
BE>
BE>Maybe the total time can be reduced a lot more by using the minimum delays
BE>specified by the standard (using nanodelay(9unimplemented)).  You would
BE>find out if there is hardware that doesn't comply with the standard :-).

I have reduced the time to around 240usec per readreg and 950usec per
xl_status_update by removing the delays altogether. This is possible,
because the macros used to toggle the bits first do a read to the address
and then only a write. The delay introduced by this read is enough it
seems. The time could be reduced further (if we had nanodelay()) by not
reading the registers, but by using nanodelay() and writes. This is
possible because we always know what we have in the register so there is
no point in reading it.

I can reduce the time to 100usec per readreg by not writing the 32bit
sync preamble. The PHY normally should signal this ability in a bit in the
BMSR. Mine doesn't, but works without preamble (a comment in the linux
driver suggests that all except some very old cards work without
preamble).

See attached diffs.

harti
-- 
harti brandt, http://www.fokus.gmd.de/research/cc/cats/employees/hartmut.brandt/private
              brandt@fokus.gmd.de, brandt@fokus.fhg.de


--0-288387960-1032270527=:812
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="if_xl.diff"
Content-Transfer-Encoding: BASE64
Content-ID: <20020917154847.J812@beagle.fokus.gmd.de>
Content-Description: 
Content-Disposition: attachment; filename="if_xl.diff"

SW5kZXg6IGlmX3hsLmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBm
aWxlOiAvdXNyL25jdnMvc3JjL3N5cy9wY2kvaWZfeGwuYyx2DQpyZXRyaWV2
aW5nIHJldmlzaW9uIDEuMTA1DQpkaWZmIC11IC1yMS4xMDUgaWZfeGwuYw0K
LS0tIGlmX3hsLmMJMjQgQXVnIDIwMDIgMDA6MDI6MDMgLTAwMDAJMS4xMDUN
CisrKyBpZl94bC5jCTE2IFNlcCAyMDAyIDE0OjAwOjU1IC0wMDAwDQpAQCAt
MzU2LDYgKzM1NiwxNiBAQA0KIAlDU1JfV1JJVEVfMihzYywgWExfVzRfUEhZ
X01HTVQsCQkJXA0KIAkJQ1NSX1JFQURfMihzYywgWExfVzRfUEhZX01HTVQp
ICYgfngpDQogDQorI2RlZmluZSBNSUlfU0VUQ0xSKHgseSkJCQkJCVwNCisJ
Q1NSX1dSSVRFXzIoc2MsIFhMX1c0X1BIWV9NR01ULAkJCVwNCisJCShDU1Jf
UkVBRF8yKHNjLCBYTF9XNF9QSFlfTUdNVCkgJiB+eSkgfCB4KQ0KKw0KK3N0
YXRpYyBfX2lubGluZSB2b2lkDQoreGxfbWlpX2RlbGF5KHN0cnVjdCB4bF9z
b2Z0YyAqc2MsIHVfaW50IGFkZHIpDQorew0KKwlDU1JfUkVBRF80KHNjLCBh
ZGRyKTsNCit9DQorDQogLyoNCiAgKiBTeW5jIHRoZSBQSFlzIGJ5IHNldHRp
bmcgZGF0YSBiaXQgYW5kIHN0cm9iaW5nIHRoZSBjbG9jayAzMiB0aW1lcy4N
CiAgKi8NCkBAIC0zNzAsOSArMzgwLDkgQEANCiANCiAJZm9yIChpID0gMDsg
aSA8IDMyOyBpKyspIHsNCiAJCU1JSV9TRVQoWExfTUlJX0NMSyk7DQotCQlE
RUxBWSgxKTsNCisJCXhsX21paV9kZWxheShzYywgWExfVzRfUEhZX01HTVQp
Ow0KIAkJTUlJX0NMUihYTF9NSUlfQ0xLKTsNCi0JCURFTEFZKDEpOw0KKwkJ
eGxfbWlpX2RlbGF5KHNjLCBYTF9XNF9QSFlfTUdNVCk7DQogCX0NCiANCiAJ
cmV0dXJuOw0KQEAgLTM5MCwxOCArNDAwLDE4IEBADQogCWludAkJCWk7DQog
DQogCVhMX1NFTF9XSU4oNCk7DQotCU1JSV9DTFIoWExfTUlJX0NMSyk7DQor
CS8qIFhYWCBNSUlfQ0xSKFhMX01JSV9DTEspOyAqLw0KIA0KKwkvKiBYWFgg
Y291bGQgam9pbiB0aGUgTUlJX1NFVC9DTFIgb2YgZGF0YSB3aXRoIHRoZSBD
TFIgb2YgdGhlIGNsb2NrICovDQogCWZvciAoaSA9ICgweDEgPDwgKGNudCAt
IDEpKTsgaTsgaSA+Pj0gMSkgew0KICAgICAgICAgICAgICAgICBpZiAoYml0
cyAmIGkpIHsNCi0JCQlNSUlfU0VUKFhMX01JSV9EQVRBKTsNCisJCQlNSUlf
U0VUQ0xSKFhMX01JSV9EQVRBLCBYTF9NSUlfQ0xLKTsNCiAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsNCi0JCQlNSUlfQ0xSKFhMX01JSV9EQVRBKTsNCisJ
CQlNSUlfQ0xSKChYTF9NSUlfREFUQSB8IFhMX01JSV9DTEspKTsNCiAgICAg
ICAgICAgICAgICAgfQ0KLQkJREVMQVkoMSk7DQotCQlNSUlfQ0xSKFhMX01J
SV9DTEspOw0KLQkJREVMQVkoMSk7DQorCQl4bF9taWlfZGVsYXkoc2MsIFhM
X1c0X1BIWV9NR01UKTsNCiAJCU1JSV9TRVQoWExfTUlJX0NMSyk7DQorCQl4
bF9taWlfZGVsYXkoc2MsIFhMX1c0X1BIWV9NR01UKTsNCiAJfQ0KIH0NCiAN
CkBAIC00MzMsMTEgKzQ0Myw2IEBADQogCVhMX1NFTF9XSU4oNCk7DQogDQog
CUNTUl9XUklURV8yKHNjLCBYTF9XNF9QSFlfTUdNVCwgMCk7DQotCS8qDQot
IAkgKiBUdXJuIG9uIGRhdGEgeG1pdC4NCi0JICovDQotCU1JSV9TRVQoWExf
TUlJX0RJUik7DQotDQogCXhsX21paV9zeW5jKHNjKTsNCiANCiAJLyoNCkBA
IC00NDgsMjAgKzQ1MywyMCBAQA0KIAl4bF9taWlfc2VuZChzYywgZnJhbWUt
Pm1paV9waHlhZGRyLCA1KTsNCiAJeGxfbWlpX3NlbmQoc2MsIGZyYW1lLT5t
aWlfcmVnYWRkciwgNSk7DQogDQotCS8qIElkbGUgYml0ICovDQotCU1JSV9D
TFIoKFhMX01JSV9DTEt8WExfTUlJX0RBVEEpKTsNCi0JREVMQVkoMSk7DQot
CU1JSV9TRVQoWExfTUlJX0NMSyk7DQotCURFTEFZKDEpOw0KLQ0KIAkvKiBU
dXJuIG9mZiB4bWl0LiAqLw0KIAlNSUlfQ0xSKFhMX01JSV9ESVIpOw0KIA0K
KwkvKiB0dXJuYXJvdW5kICovDQorCU1JSV9DTFIoKFhMX01JSV9DTEt8WExf
TUlJX0RBVEEpKTsNCisJeGxfbWlpX2RlbGF5KHNjLCBYTF9XNF9QSFlfTUdN
VCk7DQorCU1JSV9TRVQoWExfTUlJX0NMSyk7DQorCXhsX21paV9kZWxheShz
YywgWExfVzRfUEhZX01HTVQpOw0KKw0KIAkvKiBDaGVjayBmb3IgYWNrICov
DQogCU1JSV9DTFIoWExfTUlJX0NMSyk7DQotCURFTEFZKDEpOw0KKwl4bF9t
aWlfZGVsYXkoc2MsIFhMX1c0X1BIWV9NR01UKTsNCiAJTUlJX1NFVChYTF9N
SUlfQ0xLKTsNCi0JREVMQVkoMSk7DQorCXhsX21paV9kZWxheShzYywgWExf
VzRfUEhZX01HTVQpOw0KIAlhY2sgPSBDU1JfUkVBRF8yKHNjLCBYTF9XNF9Q
SFlfTUdNVCkgJiBYTF9NSUlfREFUQTsNCiANCiAJLyoNCkBAIC00NzEsMzEg
KzQ3NiwyOSBAQA0KIAlpZiAoYWNrKSB7DQogCQlmb3IoaSA9IDA7IGkgPCAx
NjsgaSsrKSB7DQogCQkJTUlJX0NMUihYTF9NSUlfQ0xLKTsNCi0JCQlERUxB
WSgxKTsNCisJCQl4bF9taWlfZGVsYXkoc2MsIFhMX1c0X1BIWV9NR01UKTsN
CiAJCQlNSUlfU0VUKFhMX01JSV9DTEspOw0KLQkJCURFTEFZKDEpOw0KKwkJ
CXhsX21paV9kZWxheShzYywgWExfVzRfUEhZX01HTVQpOw0KIAkJfQ0KIAkJ
Z290byBmYWlsOw0KIAl9DQogDQogCWZvciAoaSA9IDB4ODAwMDsgaTsgaSA+
Pj0gMSkgew0KIAkJTUlJX0NMUihYTF9NSUlfQ0xLKTsNCi0JCURFTEFZKDEp
Ow0KLQkJaWYgKCFhY2spIHsNCi0JCQlpZiAoQ1NSX1JFQURfMihzYywgWExf
VzRfUEhZX01HTVQpICYgWExfTUlJX0RBVEEpDQotCQkJCWZyYW1lLT5taWlf
ZGF0YSB8PSBpOw0KLQkJCURFTEFZKDEpOw0KLQkJfQ0KKwkJeGxfbWlpX2Rl
bGF5KHNjLCBYTF9XNF9QSFlfTUdNVCk7DQorCQlpZiAoQ1NSX1JFQURfMihz
YywgWExfVzRfUEhZX01HTVQpICYgWExfTUlJX0RBVEEpDQorCQkJZnJhbWUt
Pm1paV9kYXRhIHw9IGk7DQogCQlNSUlfU0VUKFhMX01JSV9DTEspOw0KLQkJ
REVMQVkoMSk7DQorCQl4bF9taWlfZGVsYXkoc2MsIFhMX1c0X1BIWV9NR01U
KTsNCiAJfQ0KIA0KIGZhaWw6DQogDQorCS8qIElkbGUgYml0ICovDQogCU1J
SV9DTFIoWExfTUlJX0NMSyk7DQotCURFTEFZKDEpOw0KKwl4bF9taWlfZGVs
YXkoc2MsIFhMX1c0X1BIWV9NR01UKTsNCiAJTUlJX1NFVChYTF9NSUlfQ0xL
KTsNCi0JREVMQVkoMSk7DQorCXhsX21paV9kZWxheShzYywgWExfVzRfUEhZ
X01HTVQpOw0KIA0KIAlYTF9VTkxPQ0soc2MpOw0KIA0KQEAgLTU0NCw5ICs1
NDcsOSBAQA0KIA0KIAkvKiBJZGxlIGJpdC4gKi8NCiAJTUlJX1NFVChYTF9N
SUlfQ0xLKTsNCi0JREVMQVkoMSk7DQorCXhsX21paV9kZWxheShzYywgWExf
VzRfUEhZX01HTVQpOw0KIAlNSUlfQ0xSKFhMX01JSV9DTEspOw0KLQlERUxB
WSgxKTsNCisJeGxfbWlpX2RlbGF5KHNjLCBYTF9XNF9QSFlfTUdNVCk7DQog
DQogCS8qDQogCSAqIFR1cm4gb2ZmIHhtaXQuDQo=
--0-288387960-1032270527=:812--

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020917153943.X812-200000>