static int p80211wext_siwfreq(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;

	if (!wlan_wext_write) {
		err = -EOPNOTSUPP;
		goto exit;
	}

	if ((freq->e == 0) && (freq->m <= 1000))
		value = freq->m;
	else
		value = p80211_mhz_to_channel(freq->m);

	result = p80211wext_setmib(wlandev,
			     DIDmib_dot11phy_dot11PhyDSSSTable_dot11CurrentChannel,
			     value);

	if (result) {
		err = -EFAULT;
		goto exit;
	}

exit:
	return err;
}
Beispiel #2
0
static int p80211wext_siwfreq(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;

	if (!wlan_wext_write) {
		err = (-EOPNOTSUPP);
		goto exit;
	}

	msg.msgcode = DIDmsg_dot11req_mibset;
	mibitem.did = DIDmib_dot11phy_dot11PhyDSSSTable_dot11CurrentChannel;
	mibitem.status = P80211ENUM_msgitem_status_data_ok;

	if ((freq->e == 0) && (freq->m <= 1000))
		mibitem.data = freq->m;
	else
		mibitem.data = p80211_mhz_to_channel(freq->m);

	memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem));
	result = p80211req_dorequest(wlandev, (u8 *) & msg);

	if (result) {
		err = -EFAULT;
		goto exit;
	}

exit:
	return err;
}