libertas: separate mesh connectivity from that of the main interface
The transmit and receive traffic as soon as the mesh interface is brought up. Test case 1: Bring up only the mesh interface and ping. No need for any iwconfig commands on the main interface. $ ifconfig msh0 192.168.5.3 $ iwconfig msh0 channel X $ ping 192.168.5.2 If ping succeeds, PASS Test case 2: Associate with the main interface, and turn off AP. Mesh interface should not lose connectivity. $ iwconfig eth0 mode managed essid "my_ssid" $ ifconfig msh0 192.168.5.3 $ ping 192.168.5.2 <turn off access point> If ping continues uninterrupted, PASS This feature requires firmware version 5.110.19.p0 or newer, available here: http://dev.laptop.org/pub/firmware/libertas/ Signed-off-by: Ashish Shukla <ashishs@marvell.com> Signed-off-by: Javier Cardona <javier@cozybit.com> Signed-off-by: Dan Williams <dcbw@redhat.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
committed by
David S. Miller
parent
798fbfec9c
commit
01d77d8d47
@ -154,7 +154,8 @@ static void copy_active_data_rates(lbs_adapter *adapter, u8 *rates)
|
||||
{
|
||||
lbs_deb_enter(LBS_DEB_WEXT);
|
||||
|
||||
if (adapter->connect_status != LBS_CONNECTED)
|
||||
if ((adapter->connect_status != LBS_CONNECTED) &&
|
||||
(adapter->mesh_connect_status != LBS_CONNECTED))
|
||||
memcpy(rates, lbs_bg_rates, MAX_RATES);
|
||||
else
|
||||
memcpy(rates, adapter->curbssparams.rates, MAX_RATES);
|
||||
@ -274,7 +275,7 @@ static int mesh_get_nick(struct net_device *dev, struct iw_request_info *info,
|
||||
|
||||
/* Use nickname to indicate that mesh is on */
|
||||
|
||||
if (adapter->connect_status == LBS_CONNECTED) {
|
||||
if (adapter->mesh_connect_status == LBS_CONNECTED) {
|
||||
strncpy(extra, "Mesh", 12);
|
||||
extra[12] = '\0';
|
||||
dwrq->length = strlen(extra);
|
||||
@ -589,7 +590,8 @@ static int lbs_get_range(struct net_device *dev, struct iw_request_info *info,
|
||||
|
||||
range->num_frequency = 0;
|
||||
if (priv->adapter->enable11d &&
|
||||
adapter->connect_status == LBS_CONNECTED) {
|
||||
(adapter->connect_status == LBS_CONNECTED ||
|
||||
adapter->mesh_connect_status == LBS_CONNECTED)) {
|
||||
u8 chan_no;
|
||||
u8 band;
|
||||
|
||||
@ -827,7 +829,8 @@ static struct iw_statistics *lbs_get_wireless_stats(struct net_device *dev)
|
||||
priv->wstats.status = adapter->mode;
|
||||
|
||||
/* If we're not associated, all quality values are meaningless */
|
||||
if (adapter->connect_status != LBS_CONNECTED)
|
||||
if ((adapter->connect_status != LBS_CONNECTED) &&
|
||||
(adapter->mesh_connect_status != LBS_CONNECTED))
|
||||
goto out;
|
||||
|
||||
/* Quality by RSSI */
|
||||
|
Reference in New Issue
Block a user