Ticket #91 (closed enhancement: fixed)

Opened 4 years ago

Last modified 1 year ago

AP to AP wds support implemented

Reported by: rudger@hopling.com Assigned to:
Priority: major Milestone:
Component: madwifi: other Version:
Keywords: Cc:
Patch is attached: 1 Pending:

Description

Adding "true WDS" implementation.

Added ioctl's to set and delete a WDS peer address to an interface (iwpriv <interface> wds_add <macaddress in form (xx:xx:xx:xx:xx:xx)>

For devices created as WDS device the code driver will send all data with address 4 header to the given peer WDS mac-address.

The code for the receive side of the WDS link is already inplace.

Attachments

true_wds.diff (9.8 kB) - added by rudger@hopling.com on 10/31/05 13:50:54.
Diff for the WDS implementation enhancement (diffed against revision nr 1234).

Change History

10/31/05 13:50:54 changed by rudger@hopling.com

  • attachment true_wds.diff added.

Diff for the WDS implementation enhancement (diffed against revision nr 1234).

10/31/05 16:20:47 changed by mrenzmann

Thanks, that looks interesting.

From the past discussion (which I tried to digest earlier this year when the WDS branch was created, see http://article.gmane.org/gmane.linux.drivers.madwifi.devel/722 section "Where do we want to go from here?") it seems to be the best to have one virtual network interface per WDS link. This way, the kernel's bridging code could take care of MAC learning and stuff. In the posting above I talk about changes that are needed for the 802.11 stack so that more than one interface for the driver - I think this should be there now, thanks to the VAP support that has been added in the new codebase.

10/31/05 16:32:41 changed by rudger@hopling.com

Indeed due to the vap interface created by the wlanconfig there is a device per wds link. So the normal linux bridge is able to handle the traffic.

So to create a wds link you should:

wlanconfig ath0 create wlandev wifi0 wlanmode ap wlanconfig ath1 create wlandev wifi0 wlanmode wds iwconfig ath0 essid "Normal atheros AP" channel 1 iwpriv ath1 wds_add <mac of the peer wds ap> iwpriv ath1 wds 1 ifconfig ath1 up <---- Is the only strange thing not yet found bring up wds first ifconfig ath0 up brctl addbr br0 brctl addif br0 ath1 brctl addif br0 ath0 ifconfig br0 up

This does the trick. (Should have added this in the first ticket description!)

About bringing up the interfaces, when i bring up the AP device before the first WDS link. I get the message about the beacon queue got stucked, which will reset the device over and over again!

11/01/05 22:23:57 changed by br1

  • status changed from new to closed.
  • resolution set to fixed.

hey - thanks! added!

11/02/05 09:07:20 changed by mrenzmann

Thanks for your explanation. I've filed two new tickets as result:

  • #105 (UserDocs/WDSBridge needs to be updated)
  • #106 (regarding the "beacon queue got stuck")

It would be great if you could add some more information to #106.

02/01/06 12:13:56 changed by kelmo

  • patch_attached set to 1.

01/30/07 08:34:28 changed by anonymous

Does this support allow for true interoperability with WRT54G wds mode, or older hostap prism WDS code?

I tried the latest branch of code today (madwifi) and it does not work with any legacy AP's from what I can tell for AP to AP bridging using WDS. Does anyone know what the problem is? I have been reading madwifi threads all day and it is hard to tell what the true WDS status is.

09/06/07 20:22:48 changed by hasan@digitalpath.net

This patch was applied to the Atheros Driver 5.1.0 but I couldn't get the devices to link up. Has anyone been able to get it to work with the latest code?

I am trying to get the new driver work with the old driver supporting WDS bridging.

Thanks!

(follow-up: ↓ 9 ) 03/09/09 04:10:19 changed by anonymous

me too, nothing works :(

(in reply to: ↑ 8 ; follow-up: ↓ 10 ) 03/09/09 19:21:27 changed by hasan@xxxxxx.net

Replying to anonymous:

me too, nothing works :(

Make sure, that the tree you're building has that WDS patch in ieee80211_proto.c in the function ieee80211_newstate(...);

(in reply to: ↑ 9 ) 03/09/09 20:25:42 changed by anonymous

Replying to hasan@xxxxxx.net:

Replying to anonymous:

me too, nothing works :(

Make sure, that the tree you're building has that WDS patch in ieee80211_proto.c in the function ieee80211_newstate(...);

i am building against r3314 which comes with openwrt, there are a bunch of patches doodling with that file :/

I just want WDS with my atheros cards.. i really don't want to put my old broadcom crap in there and use the closed source binary drivers - but with that crap, wds works *shrug*

Here is what i do:

# ap1 wlanconfig ath0 create wlandev wifi0 wlanmode ap iwconfig ath0 channel 6 essid myapssid iwpriv ath0 wds 1 ifconfig ath0 up iwpriv ath0 wds_add 00:80:48:5E:5F:E2 ifconfig ath0.wds0 172.25.32.5 netmask 255.255.255.0

# ap2 wlanconfig ath0 create wlandev wifi0 wlanmode ap iwconfig ath0 channel 6 essid myapssid iwpriv ath0 wds 1 ifconfig ath0 up iwpriv ath0 wds_add 00:80:48:5E:63:23 ifconfig ath0.wds0 172.25.32.6 netmask 255.255.255.0

also trying the stuff from the wiki under 'WDSBridge' doesn't get my link pinging. i tried everything i found on google and the wiki.

is this a general issue?

03/09/09 21:09:04 changed by hasan@xxxxxx.net

I have not tried r3314 but but instead of iwpriv ath0 wds_add 00:80:48:5E:63:23 try iwpriv ath0.wds0 wds_add 00:80:48:5E:63:23. Enable wds on the WDS VAP as well and run iwconfig to check if your radio links up after you bring up the interfaces.

(follow-up: ↓ 13 ) 03/10/09 06:24:53 changed by anonymous

ath0.wds0 gets created through wds_add on ath0, therefore i don't know how that should work ;)

(in reply to: ↑ 12 ) 03/10/09 18:51:24 changed by hasan@xxxxxx.net

Replying to anonymous:

ath0.wds0 gets created through wds_add on ath0, therefore i don't know how that should work ;)

I see, so that has been changed. Well, from what I understand after a netdev has been registered, and a WDS VAP has been created, a respective node also needs to be created. This happens during the VAP INIT state in ieee80211_newstate and that's where an ibss is also created. After that node has been created, you have network layer connectivity. At least that's how I had my code working.


Add/Change #91 (AP to AP wds support implemented)