From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michael Wu Subject: zd1211 ported to Devicescape stack Date: Sat, 2 Dec 2006 03:16:46 -0500 Message-ID: <200612020316.50965.flamingice@sourmilk.net> Mime-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart1593011.3nNHSLAyYX"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Cc: Ulrich Kunitz , netdev@vger.kernel.org, John Linville , "Luis Rodriguez" Return-path: Received: from server8.tchmachines.com ([216.180.241.250]:19669 "EHLO server8.tchmachines.com") by vger.kernel.org with ESMTP id S1162829AbWLBIRJ (ORCPT ); Sat, 2 Dec 2006 03:17:09 -0500 To: Daniel Drake Sender: netdev-owner@vger.kernel.org List-Id: netdev.vger.kernel.org --nextPart1593011.3nNHSLAyYX Content-Type: multipart/mixed; boundary="Boundary-01=_uZTcFlsdzqke9Zc" Content-Transfer-Encoding: 7bit Content-Disposition: inline --Boundary-01=_uZTcFlsdzqke9Zc Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Hi, I have finished a port of the zd1211 driver to the Devicescape 802.11 stac= k.=20 Due to the size of the patch, the patch that copies the zd1211 directory to= =20 the d80211 directory has been omitted, but can be found at my git repo.=20 (git://git.kernel.org/pub/scm/linux/kernel/git/mwu/d80211-drivers.git up) T= he=20 two other patches relevant to porting the driver are bzip2ed and attached d= ue=20 to size concerns. This port works fairly well in STA mode, with adhoc and monitor modes to co= me=20 in the future. I tried to minimize changes to the structure of the driver a= nd=20 code whenever possible to make it easier to port patches from the softmac=20 based zd1211 driver to this driver. However: - The original driver does not seem to check if a frame has been successfu= lly=20 TXed (as in RXed an ACK), so the port does not properly report to the stack= =20 whether or not a TX succeeded. -Because d80211 does not have complete regulatory domains support yet, the= =20 associated code was trimmed to the bare minimum of reading the region code.= =20 It should be a trivial patch to add regulatory domains support once the=20 infrastructure is in place in d80211. - d80211 doesn't tell us the size of the next fragment, so that part of th= e=20 hardware TX header isn't set anymore. This might be fixed in the future. - The LED link status isn't too reliable - I haven't found a way to reliab= ly=20 tell if the upper layer thinks it is associated, and I don't know how to us= e=20 the LED api. Not too worried about this issue though. I will push this to wireless-dev soon if there are no major problems. Thanks, =2DMichael Wu --Boundary-01=_uZTcFlsdzqke9Zc Content-Type: application/x-bzip2; name="zd1211-kconfig.bz2" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="zd1211-kconfig.bz2" QlpoOTFBWSZTWYaFqpoABixfgGGwVW//93/v3vS////0UAT7ZvK207BuzdO5oGEohNIammmTTGiP SaBtCPUxA0ZAAAaMglTVMJtJ6NJ6TUaepkeoyAABkaAYQaAASJEU/RJ5JPaU03qm0woANGmjQBo0 DQAAcNNMEMhppkZMIBpoAwmjTJgAQNBJICAE0ZAmlG00nqeoA8mkeKD1A8oGnhJWr7oLhoKQNwpT HDiYP7T1V+YPHWevm5MeHwVfM9sViiyTruK0SpJpZpURsTFtXZQjcwNy0IjJEShwLZ+QvFhEeglt QYIaUdAxsaDfaBEmyC1zD9H40u4Ly3ybNIbwWUMdXiinTeMehH2z9NanPuEmHVUircrTPY9xw4hz nAazZt1aAlW21s7iOLK223Voxy71i4m7XDiueL0zwyyPuaFsZ60P2apeUOfy1clUGnOv31ardDFA aWm6MIsUyMqtj4Q8uT++OcrEOE6605m0sPA4Jdp6knoLztQRv7z53TEjkz7PIPFWkBexSCRAxcYM ckscNzIc4Mc5AvmmA8krHCH+wtcHXaXBIYX1xPQt3PEcNdTkHVC5NBnxcdBZVLJK6isOiy2uf1zY hZBhmoY3MFbG3VE5QxtpjRnQLxUGMYxjHSSBTNqBdbhKnqY8ZkA9qBF22QTzkHcMBx8jM4EGuto7 CQI8JzmtMQMAz30QgtLS5EllhQ21DQ2iEwBpJpgHBk+E6fndLyssu6dNEYUCuOvHxBbB6OOo+a2v BTYKltCQneoeKTOjEUhgEEJw/HE4Z3bm4uLTGOPB1PRs0BSB7DgdgiB86GWRj3d55+HKbQh+himJ bkf47obqQXeYIeOZGYcTrGVARnSRQx4mgfzH4E0yDv1Pz80WVIILxQZFZ0gQGFIjhXLXSWX0iKge wyDAibNdVDIK+km4rcO2gvywDEIb9WrIysrI6d6GCYKTjlkuaiCWtNbbGNt/VQLcNzj5ijDBtlWc cmjvnCk2KwCbFfu+VR5UXMdJbBPWdWH8h0MScrMqPOzLFS58jZ4FXt0Pe2lB+fMHp0deM/p3aMUU JR1lHYegEK+wZ4FpVvHUMuHwSDCEKqTUgTSBYWynfQjEN1qPqCBnMhXJsG+2DUOGEVhp3dSVpmRO Q5yfqyTqylafB6E8fSO+1Y4t1sgKbRCRVMBSpZlOcF58NkhcQSQgVmGDyuGCVpSVwJTyecYXYXop mwiTUxdTrZEI2kij0wf0Z96AVtKGQNNvpG/MkdAoFc+KC1VVFCKElcO4TI+nHRF2cBalI5aTAjQQ vUmIJIY3X8oWYZtMiqQwLNlYJWKUU1hKkGckLkQbNfxnECohePGhveWDhEGTISZb5xgr6KSwdrnS xcWDVQTkQMgLEX1aEC1FlEI2goyMzIsYhIDSMLRYGzaMn0lpEKTBCIuPhlnn6y6v3929LZttVpfs qyzDwuKR4Nc7c9ElUJKo3IqmxakKZJQ0fe5Aqym5/QAQdo/opeMqwaA/jMHD0C3IExXd9E51xDh+ 5UJJ9ac4r4QDY+IhMMW1sOzHsUIuKJylGnKm839RhwD/pUsQA3EbML0hOLwD1qleo3IFVIOPHtH9 OVtngX94XHy3cT8GHpDBYVUVNOlh/i7kinChIQ0LVTQ= --Boundary-01=_uZTcFlsdzqke9Zc Content-Type: application/x-bzip2; name="zd1211-port-to-d80211.bz2" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="zd1211-port-to-d80211.bz2" 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 --Boundary-01=_uZTcFlsdzqke9Zc-- --nextPart1593011.3nNHSLAyYX Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2 (GNU/Linux) iD8DBQBFcTZyT3Oqt9AH4aERAs7TAJ40nMStHXy+LwzOYssHDq2BMinEBQCggWnV kpp6pxgRnlpbiLJemEnFxSI= =iYbc -----END PGP SIGNATURE----- --nextPart1593011.3nNHSLAyYX--