Commit 9dd8eff3 authored by Roland Vossen's avatar Roland Vossen Committed by Greg Kroah-Hartman

staging: brcm80211: separated public from private ioctl functions

net_device ioctl handler was called both by the OS as by the driver
itself. Split the ioctl handler into two functions to make code paths
more clear.
Reviewed-by: default avatarArend van Spriel <arend@broadcom.com>
Reviewed-by: default avatarFranky Lin <frankyl@broadcom.com>
Signed-off-by: default avatarRoland Vossen <rvossen@broadcom.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 7a447be3
...@@ -715,6 +715,8 @@ extern struct brcmf_pub *brcmf_attach(struct brcmf_bus *bus, ...@@ -715,6 +715,8 @@ extern struct brcmf_pub *brcmf_attach(struct brcmf_bus *bus,
extern int brcmf_net_attach(struct brcmf_pub *drvr, int idx); extern int brcmf_net_attach(struct brcmf_pub *drvr, int idx);
extern int brcmf_netdev_wait_pend8021x(struct net_device *dev); extern int brcmf_netdev_wait_pend8021x(struct net_device *dev);
extern int brcmf_netdev_ioctl_priv(struct net_device *net, struct ifreq *ifr);
/* Indication from bus module regarding removal/absence of dongle */ /* Indication from bus module regarding removal/absence of dongle */
extern void brcmf_detach(struct brcmf_pub *drvr); extern void brcmf_detach(struct brcmf_pub *drvr);
......
...@@ -950,13 +950,7 @@ static int brcmf_netdev_ioctl_entry(struct net_device *net, struct ifreq *ifr, ...@@ -950,13 +950,7 @@ static int brcmf_netdev_ioctl_entry(struct net_device *net, struct ifreq *ifr,
int cmd) int cmd)
{ {
struct brcmf_info *drvr_priv = *(struct brcmf_info **) netdev_priv(net); struct brcmf_info *drvr_priv = *(struct brcmf_info **) netdev_priv(net);
struct brcmf_c_ioctl ioc;
int bcmerror = 0;
int buflen = 0;
void *buf = NULL;
uint driver = 0;
int ifidx; int ifidx;
bool is_set_key_cmd;
ifidx = brcmf_net2idx(drvr_priv, net); ifidx = brcmf_net2idx(drvr_priv, net);
brcmf_dbg(TRACE, "ifidx %d, cmd 0x%04x\n", ifidx, cmd); brcmf_dbg(TRACE, "ifidx %d, cmd 0x%04x\n", ifidx, cmd);
...@@ -967,8 +961,22 @@ static int brcmf_netdev_ioctl_entry(struct net_device *net, struct ifreq *ifr, ...@@ -967,8 +961,22 @@ static int brcmf_netdev_ioctl_entry(struct net_device *net, struct ifreq *ifr,
if (cmd == SIOCETHTOOL) if (cmd == SIOCETHTOOL)
return brcmf_ethtool(drvr_priv, ifr->ifr_data); return brcmf_ethtool(drvr_priv, ifr->ifr_data);
if (cmd != SIOCDEVPRIVATE) return -EOPNOTSUPP;
return -EOPNOTSUPP; }
/* called only from within this driver, handles cmd == SIOCDEVPRIVATE */
int brcmf_netdev_ioctl_priv(struct net_device *net, struct ifreq *ifr)
{
struct brcmf_c_ioctl ioc;
int bcmerror = 0;
int buflen = 0;
void *buf = NULL;
uint driver = 0;
bool is_set_key_cmd;
struct brcmf_info *drvr_priv = *(struct brcmf_info **) netdev_priv(net);
int ifidx;
ifidx = brcmf_net2idx(drvr_priv, net);
memset(&ioc, 0, sizeof(ioc)); memset(&ioc, 0, sizeof(ioc));
......
...@@ -286,7 +286,7 @@ brcmf_dev_ioctl(struct net_device *dev, u32 cmd, void *arg, u32 len) ...@@ -286,7 +286,7 @@ brcmf_dev_ioctl(struct net_device *dev, u32 cmd, void *arg, u32 len)
fs = get_fs(); fs = get_fs();
set_fs(get_ds()); set_fs(get_ds());
err = dev->netdev_ops->ndo_do_ioctl(dev, &ifr, SIOCDEVPRIVATE); err = brcmf_netdev_ioctl_priv(dev, &ifr);
set_fs(fs); set_fs(fs);
return err; return err;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment