Loading drivers/staging/wlan-ng/p80211req.c +97 −102 Original line number Diff line number Diff line Loading @@ -50,9 +50,6 @@ * -------------------------------------------------------------------- */ /*================================================================*/ /* System Includes */ #include <linux/module.h> #include <linux/kernel.h> #include <linux/sched.h> Loading @@ -67,9 +64,6 @@ #include "wlan_compat.h" /*================================================================*/ /* Project Includes */ #include "p80211types.h" #include "p80211hdr.h" #include "p80211mgmt.h" Loading @@ -81,15 +75,10 @@ #include "p80211metastruct.h" #include "p80211req.h" /*================================================================*/ /* Local Function Declarations */ static void p80211req_handlemsg(wlandevice_t *wlandev, p80211msg_t *msg); static int p80211req_mibset_mibget(wlandevice_t *wlandev, p80211msg_dot11req_mibget_t *mib_msg, int isget); /*================================================================*/ /* Function Definitions */ static int p80211req_mibset_mibget(wlandevice_t *wlandev, p80211msg_dot11req_mibget_t *mib_msg, int isget); /*---------------------------------------------------------------- * p80211req_dorequest Loading @@ -113,8 +102,7 @@ int p80211req_dorequest( wlandevice_t *wlandev, u8 *msgbuf) p80211msg_t *msg = (p80211msg_t *) msgbuf; /* Check to make sure the MSD is running */ if ( !((wlandev->msdstate == WLAN_MSD_HWPRESENT && if (!((wlandev->msdstate == WLAN_MSD_HWPRESENT && msg->msgcode == DIDmsg_lnxreq_ifstate) || wlandev->msdstate == WLAN_MSD_RUNNING || wlandev->msdstate == WLAN_MSD_FWLOAD)) { Loading @@ -122,16 +110,16 @@ int p80211req_dorequest( wlandevice_t *wlandev, u8 *msgbuf) } /* Check Permissions */ if (!capable(CAP_NET_ADMIN) && (msg->msgcode != DIDmsg_dot11req_mibget)) { printk(KERN_ERR "%s: only dot11req_mibget allowed for non-root.\n", wlandev->name); if (!capable(CAP_NET_ADMIN) && (msg->msgcode != DIDmsg_dot11req_mibget)) { printk(KERN_ERR "%s: only dot11req_mibget allowed for non-root.\n", wlandev->name); return -EPERM; } /* Check for busy status */ if ( test_and_set_bit(1, &(wlandev->request_pending))) { if (test_and_set_bit(1, &(wlandev->request_pending))) return -EBUSY; } /* Allow p80211 to look at msg and handle if desired. */ /* So far, all p80211 msgs are immediate, no waitq/timer necessary */ Loading Loading @@ -169,8 +157,10 @@ static void p80211req_handlemsg( wlandevice_t *wlandev, p80211msg_t *msg) switch (msg->msgcode) { case DIDmsg_lnxreq_hostwep:{ p80211msg_lnxreq_hostwep_t *req = (p80211msg_lnxreq_hostwep_t*) msg; wlandev->hostwep &= ~(HOSTWEP_DECRYPT|HOSTWEP_ENCRYPT); p80211msg_lnxreq_hostwep_t *req = (p80211msg_lnxreq_hostwep_t *) msg; wlandev->hostwep &= ~(HOSTWEP_DECRYPT | HOSTWEP_ENCRYPT); if (req->decrypt.data == P80211ENUM_truth_true) wlandev->hostwep |= HOSTWEP_DECRYPT; if (req->encrypt.data == P80211ENUM_truth_true) Loading @@ -181,11 +171,11 @@ static void p80211req_handlemsg( wlandevice_t *wlandev, p80211msg_t *msg) case DIDmsg_dot11req_mibget: case DIDmsg_dot11req_mibset:{ int isget = (msg->msgcode == DIDmsg_dot11req_mibget); p80211msg_dot11req_mibget_t *mib_msg = (p80211msg_dot11req_mibget_t *) msg; p80211msg_dot11req_mibget_t *mib_msg = (p80211msg_dot11req_mibget_t *) msg; p80211req_mibset_mibget(wlandev, mib_msg, isget); } default: // XXX do nothing! ; } /* switch msg->msgcode */ Loading Loading @@ -225,11 +215,13 @@ static int p80211req_mibset_mibget(wlandevice_t *wlandev, u32 *data = (u32 *) mibitem->data; if (isget) { *data = wlandev->hostwep & HOSTWEP_DEFAULTKEY_MASK; *data = wlandev->hostwep & HOSTWEP_DEFAULTKEY_MASK; } else { wlandev->hostwep &= ~(HOSTWEP_DEFAULTKEY_MASK); wlandev->hostwep |= (*data & HOSTWEP_DEFAULTKEY_MASK); wlandev->hostwep |= (*data & HOSTWEP_DEFAULTKEY_MASK); } break; } Loading @@ -244,7 +236,8 @@ static int p80211req_mibset_mibget(wlandevice_t *wlandev, } else { wlandev->hostwep &= ~(HOSTWEP_PRIVACYINVOKED); if (*data == P80211ENUM_truth_true) wlandev->hostwep |= HOSTWEP_PRIVACYINVOKED; wlandev->hostwep |= HOSTWEP_PRIVACYINVOKED; } break; } Loading @@ -252,19 +245,21 @@ static int p80211req_mibset_mibget(wlandevice_t *wlandev, u32 *data = (u32 *) mibitem->data; if (isget) { if (wlandev->hostwep & HOSTWEP_EXCLUDEUNENCRYPTED) if (wlandev-> hostwep & HOSTWEP_EXCLUDEUNENCRYPTED) *data = P80211ENUM_truth_true; else *data = P80211ENUM_truth_false; } else { wlandev->hostwep &= ~(HOSTWEP_EXCLUDEUNENCRYPTED); wlandev->hostwep &= ~(HOSTWEP_EXCLUDEUNENCRYPTED); if (*data == P80211ENUM_truth_true) wlandev->hostwep |= HOSTWEP_EXCLUDEUNENCRYPTED; wlandev->hostwep |= HOSTWEP_EXCLUDEUNENCRYPTED; } break; } default: // XXXX do nothing! ; } Loading Loading
drivers/staging/wlan-ng/p80211req.c +97 −102 Original line number Diff line number Diff line Loading @@ -50,9 +50,6 @@ * -------------------------------------------------------------------- */ /*================================================================*/ /* System Includes */ #include <linux/module.h> #include <linux/kernel.h> #include <linux/sched.h> Loading @@ -67,9 +64,6 @@ #include "wlan_compat.h" /*================================================================*/ /* Project Includes */ #include "p80211types.h" #include "p80211hdr.h" #include "p80211mgmt.h" Loading @@ -81,15 +75,10 @@ #include "p80211metastruct.h" #include "p80211req.h" /*================================================================*/ /* Local Function Declarations */ static void p80211req_handlemsg(wlandevice_t *wlandev, p80211msg_t *msg); static int p80211req_mibset_mibget(wlandevice_t *wlandev, p80211msg_dot11req_mibget_t *mib_msg, int isget); /*================================================================*/ /* Function Definitions */ static int p80211req_mibset_mibget(wlandevice_t *wlandev, p80211msg_dot11req_mibget_t *mib_msg, int isget); /*---------------------------------------------------------------- * p80211req_dorequest Loading @@ -113,8 +102,7 @@ int p80211req_dorequest( wlandevice_t *wlandev, u8 *msgbuf) p80211msg_t *msg = (p80211msg_t *) msgbuf; /* Check to make sure the MSD is running */ if ( !((wlandev->msdstate == WLAN_MSD_HWPRESENT && if (!((wlandev->msdstate == WLAN_MSD_HWPRESENT && msg->msgcode == DIDmsg_lnxreq_ifstate) || wlandev->msdstate == WLAN_MSD_RUNNING || wlandev->msdstate == WLAN_MSD_FWLOAD)) { Loading @@ -122,16 +110,16 @@ int p80211req_dorequest( wlandevice_t *wlandev, u8 *msgbuf) } /* Check Permissions */ if (!capable(CAP_NET_ADMIN) && (msg->msgcode != DIDmsg_dot11req_mibget)) { printk(KERN_ERR "%s: only dot11req_mibget allowed for non-root.\n", wlandev->name); if (!capable(CAP_NET_ADMIN) && (msg->msgcode != DIDmsg_dot11req_mibget)) { printk(KERN_ERR "%s: only dot11req_mibget allowed for non-root.\n", wlandev->name); return -EPERM; } /* Check for busy status */ if ( test_and_set_bit(1, &(wlandev->request_pending))) { if (test_and_set_bit(1, &(wlandev->request_pending))) return -EBUSY; } /* Allow p80211 to look at msg and handle if desired. */ /* So far, all p80211 msgs are immediate, no waitq/timer necessary */ Loading Loading @@ -169,8 +157,10 @@ static void p80211req_handlemsg( wlandevice_t *wlandev, p80211msg_t *msg) switch (msg->msgcode) { case DIDmsg_lnxreq_hostwep:{ p80211msg_lnxreq_hostwep_t *req = (p80211msg_lnxreq_hostwep_t*) msg; wlandev->hostwep &= ~(HOSTWEP_DECRYPT|HOSTWEP_ENCRYPT); p80211msg_lnxreq_hostwep_t *req = (p80211msg_lnxreq_hostwep_t *) msg; wlandev->hostwep &= ~(HOSTWEP_DECRYPT | HOSTWEP_ENCRYPT); if (req->decrypt.data == P80211ENUM_truth_true) wlandev->hostwep |= HOSTWEP_DECRYPT; if (req->encrypt.data == P80211ENUM_truth_true) Loading @@ -181,11 +171,11 @@ static void p80211req_handlemsg( wlandevice_t *wlandev, p80211msg_t *msg) case DIDmsg_dot11req_mibget: case DIDmsg_dot11req_mibset:{ int isget = (msg->msgcode == DIDmsg_dot11req_mibget); p80211msg_dot11req_mibget_t *mib_msg = (p80211msg_dot11req_mibget_t *) msg; p80211msg_dot11req_mibget_t *mib_msg = (p80211msg_dot11req_mibget_t *) msg; p80211req_mibset_mibget(wlandev, mib_msg, isget); } default: // XXX do nothing! ; } /* switch msg->msgcode */ Loading Loading @@ -225,11 +215,13 @@ static int p80211req_mibset_mibget(wlandevice_t *wlandev, u32 *data = (u32 *) mibitem->data; if (isget) { *data = wlandev->hostwep & HOSTWEP_DEFAULTKEY_MASK; *data = wlandev->hostwep & HOSTWEP_DEFAULTKEY_MASK; } else { wlandev->hostwep &= ~(HOSTWEP_DEFAULTKEY_MASK); wlandev->hostwep |= (*data & HOSTWEP_DEFAULTKEY_MASK); wlandev->hostwep |= (*data & HOSTWEP_DEFAULTKEY_MASK); } break; } Loading @@ -244,7 +236,8 @@ static int p80211req_mibset_mibget(wlandevice_t *wlandev, } else { wlandev->hostwep &= ~(HOSTWEP_PRIVACYINVOKED); if (*data == P80211ENUM_truth_true) wlandev->hostwep |= HOSTWEP_PRIVACYINVOKED; wlandev->hostwep |= HOSTWEP_PRIVACYINVOKED; } break; } Loading @@ -252,19 +245,21 @@ static int p80211req_mibset_mibget(wlandevice_t *wlandev, u32 *data = (u32 *) mibitem->data; if (isget) { if (wlandev->hostwep & HOSTWEP_EXCLUDEUNENCRYPTED) if (wlandev-> hostwep & HOSTWEP_EXCLUDEUNENCRYPTED) *data = P80211ENUM_truth_true; else *data = P80211ENUM_truth_false; } else { wlandev->hostwep &= ~(HOSTWEP_EXCLUDEUNENCRYPTED); wlandev->hostwep &= ~(HOSTWEP_EXCLUDEUNENCRYPTED); if (*data == P80211ENUM_truth_true) wlandev->hostwep |= HOSTWEP_EXCLUDEUNENCRYPTED; wlandev->hostwep |= HOSTWEP_EXCLUDEUNENCRYPTED; } break; } default: // XXXX do nothing! ; } Loading