static int p80211wext_giwfreq(netdevice_t *dev, struct iw_request_info *info, struct iw_freq *freq, char *extra) { wlandevice_t *wlandev = dev->ml_priv; int result; int err = 0; unsigned int value; result = p80211wext_getmib(wlandev, DIDmib_dot11phy_dot11PhyDSSSTable_dot11CurrentChannel, &value); if (result) { err = -EFAULT; goto exit; } if (value > NUM_CHANNELS) { err = -EFAULT; goto exit; } /* convert into frequency instead of a channel */ freq->e = 1; freq->m = p80211_channel_to_mhz(value, 0) * 100000; exit: return err; }
static int p80211wext_giwfreq(netdevice_t *dev, struct iw_request_info *info, struct iw_freq *freq, char *extra) { wlandevice_t *wlandev = dev->ml_priv; p80211item_uint32_t mibitem; p80211msg_dot11req_mibset_t msg; int result; int err = 0; msg.msgcode = DIDmsg_dot11req_mibget; mibitem.did = DIDmib_dot11phy_dot11PhyDSSSTable_dot11CurrentChannel; memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); result = p80211req_dorequest(wlandev, (u8 *) & msg); if (result) { err = -EFAULT; goto exit; } memcpy(&mibitem, &msg.mibattribute.data, sizeof(mibitem)); if (mibitem.data > NUM_CHANNELS) { err = -EFAULT; goto exit; } freq->e = 1; freq->m = p80211_channel_to_mhz(mibitem.data, 0) * 100000; exit: return err; }