Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 258516
b: refs/heads/master
c: d931998
h: refs/heads/master
v: v3
  • Loading branch information
Daniel Drake authored and John W. Linville committed Jul 20, 2011
1 parent 9c2163f commit 44f3f94
Show file tree
Hide file tree
Showing 6 changed files with 12 additions and 26 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 3db4f989384c90f5f6be14e88c19732bfb0ac331
refs/heads/master: d931998669c3e0e917bd9983880f3498c27de0af
2 changes: 0 additions & 2 deletions trunk/drivers/net/wireless/libertas/dev.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,7 @@ struct lbs_private {
/* Mesh */
struct net_device *mesh_dev; /* Virtual device */
#ifdef CONFIG_LIBERTAS_MESH
u32 mesh_connect_status;
struct lbs_mesh_stats mstats;
int mesh_open;
uint16_t mesh_tlv;
u8 mesh_ssid[IEEE80211_MAX_SSID_LEN + 1];
u8 mesh_ssid_len;
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/net/wireless/libertas/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -511,7 +511,7 @@ static int lbs_thread(void *data)
if (priv->connect_status == LBS_CONNECTED)
netif_wake_queue(priv->dev);
if (priv->mesh_dev &&
lbs_mesh_connected(priv))
netif_running(priv->mesh_dev))
netif_wake_queue(priv->mesh_dev);
}
}
Expand Down
23 changes: 9 additions & 14 deletions trunk/drivers/net/wireless/libertas/mesh.c
Original file line number Diff line number Diff line change
Expand Up @@ -269,17 +269,11 @@ static ssize_t lbs_mesh_set(struct device *dev,
{
struct lbs_private *priv = to_net_dev(dev)->ml_priv;
int enable;
int ret, action = CMD_ACT_MESH_CONFIG_STOP;

sscanf(buf, "%x", &enable);
enable = !!enable;
if (enable == !!priv->mesh_dev)
return count;
if (enable)
action = CMD_ACT_MESH_CONFIG_START;
ret = lbs_mesh_config(priv, action, priv->channel);
if (ret)
return ret;

if (enable)
lbs_add_mesh(priv);
Expand Down Expand Up @@ -822,8 +816,6 @@ int lbs_init_mesh(struct lbs_private *priv)

lbs_deb_enter(LBS_DEB_MESH);

priv->mesh_connect_status = LBS_DISCONNECTED;

/* Determine mesh_fw_ver from fwrelease and fwcapinfo */
/* 5.0.16p0 9.0.0.p0 is known to NOT support any mesh */
/* 5.110.22 have mesh command with 0xa3 command id */
Expand Down Expand Up @@ -863,6 +855,8 @@ int lbs_init_mesh(struct lbs_private *priv)
priv->mesh_tlv = 0;
}

/* Stop meshing until interface is brought up */
lbs_mesh_config(priv, CMD_ACT_MESH_CONFIG_STOP, priv->channel);

if (priv->mesh_tlv) {
sprintf(priv->mesh_ssid, "mesh");
Expand Down Expand Up @@ -909,10 +903,9 @@ static int lbs_mesh_stop(struct net_device *dev)
struct lbs_private *priv = dev->ml_priv;

lbs_deb_enter(LBS_DEB_MESH);
spin_lock_irq(&priv->driver_lock);
lbs_mesh_config(priv, CMD_ACT_MESH_CONFIG_STOP, priv->channel);

priv->mesh_open = 0;
priv->mesh_connect_status = LBS_DISCONNECTED;
spin_lock_irq(&priv->driver_lock);

netif_stop_queue(dev);
netif_carrier_off(dev);
Expand Down Expand Up @@ -942,18 +935,20 @@ static int lbs_mesh_dev_open(struct net_device *dev)

if (priv->wdev->iftype == NL80211_IFTYPE_MONITOR) {
ret = -EBUSY;
spin_unlock_irq(&priv->driver_lock);
goto out;
}

priv->mesh_open = 1;
priv->mesh_connect_status = LBS_CONNECTED;
netif_carrier_on(dev);

if (!priv->tx_pending_len)
netif_wake_queue(dev);
out:

spin_unlock_irq(&priv->driver_lock);

ret = lbs_mesh_config(priv, CMD_ACT_MESH_CONFIG_START, priv->channel);

out:
lbs_deb_leave_args(LBS_DEB_NET, "ret %d", ret);
return ret;
}
Expand Down
7 changes: 0 additions & 7 deletions trunk/drivers/net/wireless/libertas/mesh.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,11 +63,6 @@ void lbs_mesh_ethtool_get_strings(struct net_device *dev,
uint32_t stringset, uint8_t *s);


/* Accessors */

#define lbs_mesh_open(priv) (priv->mesh_open)
#define lbs_mesh_connected(priv) (priv->mesh_connect_status == LBS_CONNECTED)

#else

#define lbs_init_mesh(priv)
Expand All @@ -77,8 +72,6 @@ void lbs_mesh_ethtool_get_strings(struct net_device *dev,
#define lbs_mesh_set_dev(priv, dev, rxpd) (dev)
#define lbs_mesh_set_txpd(priv, dev, txpd)
#define lbs_mesh_config(priv, enable, chan)
#define lbs_mesh_open(priv) (0)
#define lbs_mesh_connected(priv) (0)

#endif

Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/net/wireless/libertas/tx.c
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ void lbs_send_tx_feedback(struct lbs_private *priv, u32 try_count)
if (priv->connect_status == LBS_CONNECTED)
netif_wake_queue(priv->dev);

if (priv->mesh_dev && lbs_mesh_connected(priv))
if (priv->mesh_dev && netif_running(priv->mesh_dev))
netif_wake_queue(priv->mesh_dev);
}
EXPORT_SYMBOL_GPL(lbs_send_tx_feedback);

0 comments on commit 44f3f94

Please sign in to comment.