From 8ea9781eedd97e8daa895fac40a1399055e611bb Mon Sep 17 00:00:00 2001 From: Damien Bergamini Date: Wed, 23 Nov 2005 17:32:57 +0000 Subject: Optimize PLCP length field computation for 802.11b rates. --- sys/dev/ral/if_ral.c | 9 ++++----- sys/dev/usb/if_ural.c | 9 ++++----- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/sys/dev/ral/if_ral.c b/sys/dev/ral/if_ral.c index 86e74a0854729..cb918f6c84d44 100644 --- a/sys/dev/ral/if_ral.c +++ b/sys/dev/ral/if_ral.c @@ -1703,12 +1703,11 @@ ral_setup_tx_desc(struct ral_softc *sc, struct ral_tx_desc *desc, * Long PLCP LENGTH field. * From IEEE Std 802.11b-1999, pp. 16. */ - plcp_length = (8 * len * 2) / rate; - remainder = (8 * len * 2) % rate; - if (remainder != 0) { - if (rate == 22 && (rate - remainder) / 16 != 0) + plcp_length = (16 * len + rate - 1) / rate; + if (rate == 22) { + remainder = (16 * len) % 22; + if (remainder != 0 && remainder < 7) desc->plcp_service |= RAL_PLCP_LENGEXT; - plcp_length++; } desc->plcp_length = htole16(plcp_length); } diff --git a/sys/dev/usb/if_ural.c b/sys/dev/usb/if_ural.c index 85a55cf78ba21..57230035f3b83 100644 --- a/sys/dev/usb/if_ural.c +++ b/sys/dev/usb/if_ural.c @@ -1050,12 +1050,11 @@ ural_setup_tx_desc(struct ural_softc *sc, struct ural_tx_desc *desc, * Long PLCP LENGTH field. * From IEEE Std 802.11b-1999, pp. 16. */ - plcp_length = (8 * len * 2) / rate; - remainder = (8 * len * 2) % rate; - if (remainder != 0) { - if (rate == 22 && (rate - remainder) / 16 != 0) + plcp_length = (16 * len + rate - 1) / rate; + if (rate == 22) { + remainder = (16 * len) % 22; + if (remainder != 0 && remainder < 7) desc->plcp_service |= RAL_PLCP_LENGEXT; - plcp_length++; } desc->plcp_length = htole16(plcp_length); } -- cgit v1.3