Search Linux Wireless

Airgo MIMO Wireless card mac80211 driver (unfinished)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 7/19/07, Johannes Berg <johannes@xxxxxxxxxxxxxxxx> wrote:
Hi,


It might be useful for you to put all your current code into a git tree
and publish that to linux-wireless@xxxxxxxxxxxxxxx so other people can
take a look too :)


First of all, the code is far away be finished and full of bugs,  We
can't success control the RX and TX yet.
For I just have a git tree in local machine, and it can't be access
from Internet, So, is there any place that can be used to put the code
or I have to apply a domain and build a server for it?

That said,

> Jeff write the RX&TX  packet Description  as Be order at
> http://airgo.wdwconsulting.net/mymoin/PacketStructures,

Don't have that right now, am offline.

It is online now.


Well, if the packet was actually sent with your code then the hardware
is most likely operating in little endian mode. It would, incidentally,
be extremely confusing if the hardware worked in big endian mode, the
802.11 specs are quite suited for processing with a little-endian
processor.

In that case, you should write the struct as:
struct agnx_desc  {
  __le32 frag;
  __le32 address;
} __attribute__((__packed__));

and use, following my example above:

desc->frag = cpu_to_le32(le32_to_cpu(desc->frag) | FRAG_OWNER))


Thanks for all your suggestions and fixes, I'll fix it later.
Because the code is big , so I attach it in this mail. (Be attention,
it is far from finished and has tons of bugs). And thank Jeff William
for his hard work of reverse engineer of this card. You can find more
info about the SPCS from his website
http://airgo.wdwconsulting.net/mymoin

BTW, I find a problem in the file ieee80211.c it locals in the
function "static int __ieee80211_tx()", I think the if (i ==
tx->u.tx.num_extra_frag)  is ineffective, because 'i' always lower
than tx->u.tx.num_extra_frag. I guess maybe it should be if (i ==
(tx->u.tx.num_extra_frag - 1)), below is the patch, CMIIW.

BR
LiYanBo

diff --git a/net/mac80211/ieee80211.c b/net/mac80211/ieee80211.c
index fcad801..48c51bf 100644
--- a/net/mac80211/ieee80211.c
+++ b/net/mac80211/ieee80211.c
@@ -1406,7 +1406,7 @@ static int __ieee80211_tx(struct ieee80211_local
*local, struct sk_buff *
                               continue;
                       if (__ieee80211_queue_stopped(local, control->queue))
                               return IEEE80211_TX_FRAG_AGAIN;
-                       if (i == tx->u.tx.num_extra_frag) {
+                       if (i == (tx->u.tx.num_extra_frag - 1)) {
                               control->tx_rate = tx->u.tx.last_frag_hwrate;
                               control->rate = tx->u.tx.last_frag_rate;
                               if (tx->u.tx.probe_last_frag)

Attachment: agnx_19_7_2007.patch.bz2
Description: BZip2 compressed data


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux