[PATCH] libertas: split wext for eth and msh
Dan Williams
dcbw at redhat.com
Sun Apr 29 16:57:31 EDT 2007
On Sun, 2007-04-29 at 16:47 -0400, Dan Williams wrote:
> On Fri, 2007-04-27 at 18:03 -0700, Luis Carlos Cobo Rus wrote:
> > Separate wireless handlers of mshX and ethX. ethX remains as before.
> >
> > For mshX, it has been disabled set/get essid, wap and set mode. Get mode always
> > returns "Repeater" and by now we use the Nickname to show if the mesh is active
> > ("Mesh") or not (empty). The rest remains as before.
>
> Tabs got replaced with spaces... please resend
I lied, applied, thanks.
> Dan
>
> > ---
> > drivers/net/wireless/libertas/main.c | 2 +-
> > drivers/net/wireless/libertas/wext.c | 104 +++++++++++++++++++++++++++++++
> > drivers/net/wireless/libertas/wext.h | 1 +
> > 3 files changed, 106 insertions(+), 1 deletions(-)
> >
> > diff --git a/drivers/net/wireless/libertas/main.c
> > b/drivers/net/wireless/libertas/main.c
> > index 4d9d54d..3bc9cb7 100644
> > --- a/drivers/net/wireless/libertas/main.c
> > +++ b/drivers/net/wireless/libertas/main.c
> > @@ -916,7 +916,7 @@ int libertas_add_mesh(wlan_private *priv, struct
> > device *dev)
> > SET_NETDEV_DEV(priv->mesh_dev, dev);
> >
> > #ifdef WIRELESS_EXT
> > - mesh_dev->wireless_handlers = (struct iw_handler_def *)&libertas_handler_def;
> > + mesh_dev->wireless_handlers = (struct iw_handler_def *)&mesh_handler_def;
> > #endif
> > #define NETIF_F_DYNALLOC 16
> >
> > diff --git a/drivers/net/wireless/libertas/wext.c
> > b/drivers/net/wireless/libertas/wext.c
> > index fc84c85..4f3e99e 100644
> > --- a/drivers/net/wireless/libertas/wext.c
> > +++ b/drivers/net/wireless/libertas/wext.c
> > @@ -373,6 +373,30 @@ static int wlan_get_nick(struct net_device *dev,
> > struct iw_request_info *info,
> > return 0;
> > }
> >
> > +static int mesh_get_nick(struct net_device *dev, struct iw_request_info *info,
> > + struct iw_point *dwrq, char *extra)
> > +{
> > + wlan_private *priv = dev->priv;
> > + wlan_adapter *adapter = priv->adapter;
> > +
> > + lbs_deb_enter(LBS_DEB_WEXT);
> > +
> > + /* Use nickname to indicate that mesh is on */
> > +
> > + if (adapter->connect_status == libertas_connected) {
> > + strncpy(extra, "Mesh", 12);
> > + extra[12] = '\0';
> > + dwrq->length = strlen(extra) + 1;
> > + }
> > +
> > + else {
> > + extra[0] = '\0';
> > + dwrq->length = 1 ;
> > + }
> > +
> > + lbs_deb_leave(LBS_DEB_WEXT);
> > + return 0;
> > +}
> > static int wlan_set_rts(struct net_device *dev, struct iw_request_info *info,
> > struct iw_param *vwrq, char *extra)
> > {
> > @@ -493,6 +517,18 @@ static int wlan_get_mode(struct net_device *dev,
> > return 0;
> > }
> >
> > +static int mesh_wlan_get_mode(struct net_device *dev,
> > + struct iw_request_info *info, u32 * uwrq,
> > + char *extra)
> > +{
> > + lbs_deb_enter(LBS_DEB_WEXT);
> > +
> > + *uwrq = IW_MODE_REPEAT ;
> > +
> > + lbs_deb_leave(LBS_DEB_WEXT);
> > + return 0;
> > +}
> > +
> > static int wlan_get_txpow(struct net_device *dev,
> > struct iw_request_info *info,
> > struct iw_param *vwrq, char *extra)
> > @@ -2622,6 +2658,63 @@ static const iw_handler wlan_handler[] = {
> > (iw_handler) NULL, /* SIOCSIWPMKSA */
> > };
> >
> > +static const iw_handler mesh_wlan_handler[] = {
> > + (iw_handler) NULL, /* SIOCSIWCOMMIT */
> > + (iw_handler) wlan_get_name, /* SIOCGIWNAME */
> > + (iw_handler) NULL, /* SIOCSIWNWID */
> > + (iw_handler) NULL, /* SIOCGIWNWID */
> > + (iw_handler) wlan_set_freq, /* SIOCSIWFREQ */
> > + (iw_handler) wlan_get_freq, /* SIOCGIWFREQ */
> > + (iw_handler) NULL, /* SIOCSIWMODE */
> > + (iw_handler) mesh_wlan_get_mode, /* SIOCGIWMODE */
> > + (iw_handler) NULL, /* SIOCSIWSENS */
> > + (iw_handler) NULL, /* SIOCGIWSENS */
> > + (iw_handler) NULL, /* SIOCSIWRANGE */
> > + (iw_handler) wlan_get_range, /* SIOCGIWRANGE */
> > + (iw_handler) NULL, /* SIOCSIWPRIV */
> > + (iw_handler) NULL, /* SIOCGIWPRIV */
> > + (iw_handler) NULL, /* SIOCSIWSTATS */
> > + (iw_handler) NULL, /* SIOCGIWSTATS */
> > + iw_handler_set_spy, /* SIOCSIWSPY */
> > + iw_handler_get_spy, /* SIOCGIWSPY */
> > + iw_handler_set_thrspy, /* SIOCSIWTHRSPY */
> > + iw_handler_get_thrspy, /* SIOCGIWTHRSPY */
> > + (iw_handler) NULL, /* SIOCSIWAP */
> > + (iw_handler) NULL, /* SIOCGIWAP */
> > + (iw_handler) NULL, /* SIOCSIWMLME */
> > + (iw_handler) NULL, /* SIOCGIWAPLIST - deprecated */
> > + (iw_handler) libertas_set_scan, /* SIOCSIWSCAN */
> > + (iw_handler) libertas_get_scan, /* SIOCGIWSCAN */
> > + (iw_handler) NULL, /* SIOCSIWESSID */
> > + (iw_handler) NULL, /* SIOCGIWESSID */
> > + (iw_handler) NULL, /* SIOCSIWNICKN */
> > + (iw_handler) mesh_get_nick, /* SIOCGIWNICKN */
> > + (iw_handler) NULL, /* -- hole -- */
> > + (iw_handler) NULL, /* -- hole -- */
> > + (iw_handler) wlan_set_rate, /* SIOCSIWRATE */
> > + (iw_handler) wlan_get_rate, /* SIOCGIWRATE */
> > + (iw_handler) wlan_set_rts, /* SIOCSIWRTS */
> > + (iw_handler) wlan_get_rts, /* SIOCGIWRTS */
> > + (iw_handler) wlan_set_frag, /* SIOCSIWFRAG */
> > + (iw_handler) wlan_get_frag, /* SIOCGIWFRAG */
> > + (iw_handler) wlan_set_txpow, /* SIOCSIWTXPOW */
> > + (iw_handler) wlan_get_txpow, /* SIOCGIWTXPOW */
> > + (iw_handler) wlan_set_retry, /* SIOCSIWRETRY */
> > + (iw_handler) wlan_get_retry, /* SIOCGIWRETRY */
> > + (iw_handler) wlan_set_encode, /* SIOCSIWENCODE */
> > + (iw_handler) wlan_get_encode, /* SIOCGIWENCODE */
> > + (iw_handler) wlan_set_power, /* SIOCSIWPOWER */
> > + (iw_handler) wlan_get_power, /* SIOCGIWPOWER */
> > + (iw_handler) NULL, /* -- hole -- */
> > + (iw_handler) NULL, /* -- hole -- */
> > + (iw_handler) wlan_set_genie, /* SIOCSIWGENIE */
> > + (iw_handler) wlan_get_genie, /* SIOCGIWGENIE */
> > + (iw_handler) wlan_set_auth, /* SIOCSIWAUTH */
> > + (iw_handler) wlan_get_auth, /* SIOCGIWAUTH */
> > + (iw_handler) wlan_set_encodeext,/* SIOCSIWENCODEEXT */
> > + (iw_handler) wlan_get_encodeext,/* SIOCGIWENCODEEXT */
> > + (iw_handler) NULL, /* SIOCSIWPMKSA */
> > +};
> > struct iw_handler_def libertas_handler_def = {
> > .num_standard = sizeof(wlan_handler) / sizeof(iw_handler),
> > .num_private = sizeof(wlan_private_handler) / sizeof(iw_handler),
> > @@ -2632,3 +2725,14 @@ struct iw_handler_def libertas_handler_def = {
> > .private_args = (struct iw_priv_args *)wlan_private_args,
> > .get_wireless_stats = wlan_get_wireless_stats,
> > };
> > +
> > +struct iw_handler_def mesh_handler_def = {
> > + .num_standard = sizeof(mesh_wlan_handler) / sizeof(iw_handler),
> > + .num_private = sizeof(wlan_private_handler) / sizeof(iw_handler),
> > + .num_private_args = sizeof(wlan_private_args) /
> > + sizeof(struct iw_priv_args),
> > + .standard = (iw_handler *) mesh_wlan_handler,
> > + .private = (iw_handler *) wlan_private_handler,
> > + .private_args = (struct iw_priv_args *)wlan_private_args,
> > + .get_wireless_stats = wlan_get_wireless_stats,
> > +};
> > diff --git a/drivers/net/wireless/libertas/wext.h
> > b/drivers/net/wireless/libertas/wext.h
> > index f786586..fdac44a 100644
> > --- a/drivers/net/wireless/libertas/wext.h
> > +++ b/drivers/net/wireless/libertas/wext.h
> > @@ -143,6 +143,7 @@ struct wlan_ioctl_regrdwr {
> > };
> >
> > extern struct iw_handler_def libertas_handler_def;
> > +extern struct iw_handler_def mesh_handler_def;
> > int libertas_do_ioctl(struct net_device *dev, struct ifreq *req, int i);
> > int wlan_radio_ioctl(wlan_private * priv, u8 option);
> >
> > --
> > 1.4.4.2
> >
>
>
> _______________________________________________
> libertas-dev mailing list
> libertas-dev at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/libertas-dev
More information about the libertas-dev
mailing list