diff options
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r-- | drivers/net/wireless/libertas/assoc.c | 57 | ||||
-rw-r--r-- | drivers/net/wireless/libertas/dev.h | 6 | ||||
-rw-r--r-- | drivers/net/wireless/libertas/hostcmd.h | 16 | ||||
-rw-r--r-- | drivers/net/wireless/libertas/scan.c | 32 | ||||
-rw-r--r-- | drivers/net/wireless/libertas/types.h | 57 |
5 files changed, 70 insertions, 98 deletions
diff --git a/drivers/net/wireless/libertas/assoc.c b/drivers/net/wireless/libertas/assoc.c index a0e440cd8967..d4d1d80045e0 100644 --- a/drivers/net/wireless/libertas/assoc.c +++ b/drivers/net/wireless/libertas/assoc.c | |||
@@ -219,11 +219,10 @@ static int lbs_adhoc_join(struct lbs_private *priv, | |||
219 | memcpy(&cmd.bss.bssid, &bss->bssid, ETH_ALEN); | 219 | memcpy(&cmd.bss.bssid, &bss->bssid, ETH_ALEN); |
220 | memcpy(&cmd.bss.ssid, &bss->ssid, bss->ssid_len); | 220 | memcpy(&cmd.bss.ssid, &bss->ssid, bss->ssid_len); |
221 | 221 | ||
222 | memcpy(&cmd.bss.phyparamset, &bss->phyparamset, | 222 | memcpy(&cmd.bss.ds, &bss->phy.ds, sizeof(struct ieee_ie_ds_param_set)); |
223 | sizeof(union ieeetypes_phyparamset)); | ||
224 | 223 | ||
225 | memcpy(&cmd.bss.ssparamset, &bss->ssparamset, | 224 | memcpy(&cmd.bss.ibss, &bss->ss.ibss, |
226 | sizeof(union IEEEtypes_ssparamset)); | 225 | sizeof(struct ieee_ie_ibss_param_set)); |
227 | 226 | ||
228 | cmd.bss.capability = cpu_to_le16(bss->capability & CAPINFO_MASK); | 227 | cmd.bss.capability = cpu_to_le16(bss->capability & CAPINFO_MASK); |
229 | lbs_deb_join("ADHOC_J_CMD: tmpcap=%4X CAPINFO_MASK=%4X\n", | 228 | lbs_deb_join("ADHOC_J_CMD: tmpcap=%4X CAPINFO_MASK=%4X\n", |
@@ -260,7 +259,7 @@ static int lbs_adhoc_join(struct lbs_private *priv, | |||
260 | */ | 259 | */ |
261 | lbs_set_basic_rate_flags(cmd.bss.rates, ratesize); | 260 | lbs_set_basic_rate_flags(cmd.bss.rates, ratesize); |
262 | 261 | ||
263 | cmd.bss.ssparamset.ibssparamset.atimwindow = cpu_to_le16(bss->atimwindow); | 262 | cmd.bss.ibss.atimwindow = bss->atimwindow; |
264 | 263 | ||
265 | if (assoc_req->secinfo.wep_enabled) { | 264 | if (assoc_req->secinfo.wep_enabled) { |
266 | u16 tmp = le16_to_cpu(cmd.bss.capability); | 265 | u16 tmp = le16_to_cpu(cmd.bss.capability); |
@@ -343,14 +342,14 @@ static int lbs_adhoc_start(struct lbs_private *priv, | |||
343 | WARN_ON(!assoc_req->channel); | 342 | WARN_ON(!assoc_req->channel); |
344 | 343 | ||
345 | /* set Physical parameter set */ | 344 | /* set Physical parameter set */ |
346 | cmd.phyparamset.dsparamset.elementid = WLAN_EID_DS_PARAMS; | 345 | cmd.ds.elementid = WLAN_EID_DS_PARAMS; |
347 | cmd.phyparamset.dsparamset.len = 1; | 346 | cmd.ds.len = 1; |
348 | cmd.phyparamset.dsparamset.currentchan = assoc_req->channel; | 347 | cmd.ds.channel = assoc_req->channel; |
349 | 348 | ||
350 | /* set IBSS parameter set */ | 349 | /* set IBSS parameter set */ |
351 | cmd.ssparamset.ibssparamset.elementid = WLAN_EID_IBSS_PARAMS; | 350 | cmd.ibss.elementid = WLAN_EID_IBSS_PARAMS; |
352 | cmd.ssparamset.ibssparamset.len = 2; | 351 | cmd.ibss.len = 2; |
353 | cmd.ssparamset.ibssparamset.atimwindow = 0; | 352 | cmd.ibss.atimwindow = cpu_to_le16(0); |
354 | 353 | ||
355 | /* set capability info */ | 354 | /* set capability info */ |
356 | tmpcap = WLAN_CAPABILITY_IBSS; | 355 | tmpcap = WLAN_CAPABILITY_IBSS; |
@@ -1560,8 +1559,8 @@ int lbs_cmd_80211_associate(struct lbs_private *priv, | |||
1560 | u8 *pos; | 1559 | u8 *pos; |
1561 | u16 tmpcap, tmplen; | 1560 | u16 tmpcap, tmplen; |
1562 | struct mrvlietypes_ssidparamset *ssid; | 1561 | struct mrvlietypes_ssidparamset *ssid; |
1563 | struct mrvlietypes_phyparamset *phy; | 1562 | struct mrvlietypes_dsparamset *ds; |
1564 | struct mrvlietypes_ssparamset *ss; | 1563 | struct mrvlietypes_cfparamset *cf; |
1565 | struct mrvlietypes_ratesparamset *rates; | 1564 | struct mrvlietypes_ratesparamset *rates; |
1566 | struct mrvlietypes_rsnparamset *rsn; | 1565 | struct mrvlietypes_rsnparamset *rsn; |
1567 | 1566 | ||
@@ -1594,20 +1593,18 @@ int lbs_cmd_80211_associate(struct lbs_private *priv, | |||
1594 | memcpy(ssid->ssid, bss->ssid, tmplen); | 1593 | memcpy(ssid->ssid, bss->ssid, tmplen); |
1595 | pos += sizeof(ssid->header) + tmplen; | 1594 | pos += sizeof(ssid->header) + tmplen; |
1596 | 1595 | ||
1597 | phy = (struct mrvlietypes_phyparamset *) pos; | 1596 | ds = (struct mrvlietypes_dsparamset *) pos; |
1598 | phy->header.type = cpu_to_le16(TLV_TYPE_PHY_DS); | 1597 | ds->header.type = cpu_to_le16(TLV_TYPE_PHY_DS); |
1599 | tmplen = sizeof(phy->fh_ds.dsparamset); | 1598 | ds->header.len = cpu_to_le16(1); |
1600 | phy->header.len = cpu_to_le16(tmplen); | 1599 | ds->channel = bss->phy.ds.channel; |
1601 | memcpy(&phy->fh_ds.dsparamset, | 1600 | pos += sizeof(ds->header) + 1; |
1602 | &bss->phyparamset.dsparamset.currentchan, | 1601 | |
1603 | tmplen); | 1602 | cf = (struct mrvlietypes_cfparamset *) pos; |
1604 | pos += sizeof(phy->header) + tmplen; | 1603 | cf->header.type = cpu_to_le16(TLV_TYPE_CF); |
1605 | 1604 | tmplen = sizeof(*cf) - sizeof (cf->header); | |
1606 | ss = (struct mrvlietypes_ssparamset *) pos; | 1605 | cf->header.len = cpu_to_le16(tmplen); |
1607 | ss->header.type = cpu_to_le16(TLV_TYPE_CF); | 1606 | /* IE payload should be zeroed, firmware fills it in for us */ |
1608 | tmplen = sizeof(ss->cf_ibss.cfparamset); | 1607 | pos += sizeof(*cf); |
1609 | ss->header.len = cpu_to_le16(tmplen); | ||
1610 | pos += sizeof(ss->header) + tmplen; | ||
1611 | 1608 | ||
1612 | rates = (struct mrvlietypes_ratesparamset *) pos; | 1609 | rates = (struct mrvlietypes_ratesparamset *) pos; |
1613 | rates->header.type = cpu_to_le16(TLV_TYPE_RATES); | 1610 | rates->header.type = cpu_to_le16(TLV_TYPE_RATES); |
@@ -1643,7 +1640,7 @@ int lbs_cmd_80211_associate(struct lbs_private *priv, | |||
1643 | } | 1640 | } |
1644 | 1641 | ||
1645 | /* update curbssparams */ | 1642 | /* update curbssparams */ |
1646 | priv->curbssparams.channel = bss->phyparamset.dsparamset.currentchan; | 1643 | priv->curbssparams.channel = bss->phy.ds.channel; |
1647 | 1644 | ||
1648 | if (lbs_parse_dnld_countryinfo_11d(priv, bss)) { | 1645 | if (lbs_parse_dnld_countryinfo_11d(priv, bss)) { |
1649 | ret = -1; | 1646 | ret = -1; |
@@ -1669,7 +1666,7 @@ int lbs_ret_80211_associate(struct lbs_private *priv, | |||
1669 | { | 1666 | { |
1670 | int ret = 0; | 1667 | int ret = 0; |
1671 | union iwreq_data wrqu; | 1668 | union iwreq_data wrqu; |
1672 | struct ieeetypes_assocrsp *passocrsp; | 1669 | struct ieee_assoc_response *passocrsp; |
1673 | struct bss_descriptor *bss; | 1670 | struct bss_descriptor *bss; |
1674 | u16 status_code; | 1671 | u16 status_code; |
1675 | 1672 | ||
@@ -1682,7 +1679,7 @@ int lbs_ret_80211_associate(struct lbs_private *priv, | |||
1682 | } | 1679 | } |
1683 | bss = &priv->in_progress_assoc_req->bss; | 1680 | bss = &priv->in_progress_assoc_req->bss; |
1684 | 1681 | ||
1685 | passocrsp = (struct ieeetypes_assocrsp *) &resp->params; | 1682 | passocrsp = (struct ieee_assoc_response *) &resp->params; |
1686 | 1683 | ||
1687 | /* | 1684 | /* |
1688 | * Older FW versions map the IEEE 802.11 Status Code in the association | 1685 | * Older FW versions map the IEEE 802.11 Status Code in the association |
diff --git a/drivers/net/wireless/libertas/dev.h b/drivers/net/wireless/libertas/dev.h index a4455ec7c354..d0de8c70f8c9 100644 --- a/drivers/net/wireless/libertas/dev.h +++ b/drivers/net/wireless/libertas/dev.h | |||
@@ -340,7 +340,7 @@ struct bss_descriptor { | |||
340 | u32 rssi; | 340 | u32 rssi; |
341 | u32 channel; | 341 | u32 channel; |
342 | u16 beaconperiod; | 342 | u16 beaconperiod; |
343 | u32 atimwindow; | 343 | __le16 atimwindow; |
344 | 344 | ||
345 | /* IW_MODE_AUTO, IW_MODE_ADHOC, IW_MODE_INFRA */ | 345 | /* IW_MODE_AUTO, IW_MODE_ADHOC, IW_MODE_INFRA */ |
346 | u8 mode; | 346 | u8 mode; |
@@ -350,8 +350,8 @@ struct bss_descriptor { | |||
350 | 350 | ||
351 | unsigned long last_scanned; | 351 | unsigned long last_scanned; |
352 | 352 | ||
353 | union ieeetypes_phyparamset phyparamset; | 353 | union ieee_phy_param_set phy; |
354 | union IEEEtypes_ssparamset ssparamset; | 354 | union ieee_ss_param_set ss; |
355 | 355 | ||
356 | struct ieeetypes_countryinfofullset countryinfo; | 356 | struct ieeetypes_countryinfofullset countryinfo; |
357 | 357 | ||
diff --git a/drivers/net/wireless/libertas/hostcmd.h b/drivers/net/wireless/libertas/hostcmd.h index 391c54ab2b09..463ff977995c 100644 --- a/drivers/net/wireless/libertas/hostcmd.h +++ b/drivers/net/wireless/libertas/hostcmd.h | |||
@@ -278,7 +278,7 @@ struct cmd_ds_802_11_associate { | |||
278 | } __attribute__ ((packed)); | 278 | } __attribute__ ((packed)); |
279 | 279 | ||
280 | struct cmd_ds_802_11_associate_rsp { | 280 | struct cmd_ds_802_11_associate_rsp { |
281 | struct ieeetypes_assocrsp assocRsp; | 281 | struct ieee_assoc_response response; |
282 | } __attribute__ ((packed)); | 282 | } __attribute__ ((packed)); |
283 | 283 | ||
284 | struct cmd_ds_802_11_set_wep { | 284 | struct cmd_ds_802_11_set_wep { |
@@ -535,9 +535,11 @@ struct cmd_ds_802_11_ad_hoc_start { | |||
535 | u8 bsstype; | 535 | u8 bsstype; |
536 | __le16 beaconperiod; | 536 | __le16 beaconperiod; |
537 | u8 dtimperiod; /* Reserved on v9 and later */ | 537 | u8 dtimperiod; /* Reserved on v9 and later */ |
538 | union IEEEtypes_ssparamset ssparamset; | 538 | struct ieee_ie_ibss_param_set ibss; |
539 | union ieeetypes_phyparamset phyparamset; | 539 | u8 reserved1[4]; |
540 | __le16 probedelay; | 540 | struct ieee_ie_ds_param_set ds; |
541 | u8 reserved2[4]; | ||
542 | __le16 probedelay; /* Reserved on v9 and later */ | ||
541 | __le16 capability; | 543 | __le16 capability; |
542 | u8 rates[MAX_RATES]; | 544 | u8 rates[MAX_RATES]; |
543 | u8 tlv_memory_size_pad[100]; | 545 | u8 tlv_memory_size_pad[100]; |
@@ -558,8 +560,10 @@ struct adhoc_bssdesc { | |||
558 | u8 dtimperiod; | 560 | u8 dtimperiod; |
559 | __le64 timestamp; | 561 | __le64 timestamp; |
560 | __le64 localtime; | 562 | __le64 localtime; |
561 | union ieeetypes_phyparamset phyparamset; | 563 | struct ieee_ie_ds_param_set ds; |
562 | union IEEEtypes_ssparamset ssparamset; | 564 | u8 reserved1[4]; |
565 | struct ieee_ie_ibss_param_set ibss; | ||
566 | u8 reserved2[4]; | ||
563 | __le16 capability; | 567 | __le16 capability; |
564 | u8 rates[MAX_RATES]; | 568 | u8 rates[MAX_RATES]; |
565 | 569 | ||
diff --git a/drivers/net/wireless/libertas/scan.c b/drivers/net/wireless/libertas/scan.c index 8124db36aaff..38b056066e19 100644 --- a/drivers/net/wireless/libertas/scan.c +++ b/drivers/net/wireless/libertas/scan.c | |||
@@ -513,10 +513,10 @@ void lbs_scan_worker(struct work_struct *work) | |||
513 | static int lbs_process_bss(struct bss_descriptor *bss, | 513 | static int lbs_process_bss(struct bss_descriptor *bss, |
514 | uint8_t **pbeaconinfo, int *bytesleft) | 514 | uint8_t **pbeaconinfo, int *bytesleft) |
515 | { | 515 | { |
516 | struct ieeetypes_fhparamset *pFH; | 516 | struct ieee_ie_fh_param_set *fh; |
517 | struct ieeetypes_dsparamset *pDS; | 517 | struct ieee_ie_ds_param_set *ds; |
518 | struct ieeetypes_cfparamset *pCF; | 518 | struct ieee_ie_cf_param_set *cf; |
519 | struct ieeetypes_ibssparamset *pibss; | 519 | struct ieee_ie_ibss_param_set *ibss; |
520 | DECLARE_SSID_BUF(ssid); | 520 | DECLARE_SSID_BUF(ssid); |
521 | struct ieeetypes_countryinfoset *pcountryinfo; | 521 | struct ieeetypes_countryinfoset *pcountryinfo; |
522 | uint8_t *pos, *end, *p; | 522 | uint8_t *pos, *end, *p; |
@@ -616,32 +616,28 @@ static int lbs_process_bss(struct bss_descriptor *bss, | |||
616 | break; | 616 | break; |
617 | 617 | ||
618 | case WLAN_EID_FH_PARAMS: | 618 | case WLAN_EID_FH_PARAMS: |
619 | pFH = (struct ieeetypes_fhparamset *) pos; | 619 | fh = (struct ieee_ie_fh_param_set *) pos; |
620 | memmove(&bss->phyparamset.fhparamset, pFH, | 620 | memcpy(&bss->phy.fh, fh, sizeof(*fh)); |
621 | sizeof(struct ieeetypes_fhparamset)); | ||
622 | lbs_deb_scan("got FH IE\n"); | 621 | lbs_deb_scan("got FH IE\n"); |
623 | break; | 622 | break; |
624 | 623 | ||
625 | case WLAN_EID_DS_PARAMS: | 624 | case WLAN_EID_DS_PARAMS: |
626 | pDS = (struct ieeetypes_dsparamset *) pos; | 625 | ds = (struct ieee_ie_ds_param_set *) pos; |
627 | bss->channel = pDS->currentchan; | 626 | bss->channel = ds->channel; |
628 | memcpy(&bss->phyparamset.dsparamset, pDS, | 627 | memcpy(&bss->phy.ds, ds, sizeof(*ds)); |
629 | sizeof(struct ieeetypes_dsparamset)); | ||
630 | lbs_deb_scan("got DS IE, channel %d\n", bss->channel); | 628 | lbs_deb_scan("got DS IE, channel %d\n", bss->channel); |
631 | break; | 629 | break; |
632 | 630 | ||
633 | case WLAN_EID_CF_PARAMS: | 631 | case WLAN_EID_CF_PARAMS: |
634 | pCF = (struct ieeetypes_cfparamset *) pos; | 632 | cf = (struct ieee_ie_cf_param_set *) pos; |
635 | memcpy(&bss->ssparamset.cfparamset, pCF, | 633 | memcpy(&bss->ss.cf, cf, sizeof(*cf)); |
636 | sizeof(struct ieeetypes_cfparamset)); | ||
637 | lbs_deb_scan("got CF IE\n"); | 634 | lbs_deb_scan("got CF IE\n"); |
638 | break; | 635 | break; |
639 | 636 | ||
640 | case WLAN_EID_IBSS_PARAMS: | 637 | case WLAN_EID_IBSS_PARAMS: |
641 | pibss = (struct ieeetypes_ibssparamset *) pos; | 638 | ibss = (struct ieee_ie_ibss_param_set *) pos; |
642 | bss->atimwindow = le16_to_cpu(pibss->atimwindow); | 639 | bss->atimwindow = ibss->atimwindow; |
643 | memmove(&bss->ssparamset.ibssparamset, pibss, | 640 | memcpy(&bss->ss.ibss, ibss, sizeof(*ibss)); |
644 | sizeof(struct ieeetypes_ibssparamset)); | ||
645 | lbs_deb_scan("got IBSS IE\n"); | 641 | lbs_deb_scan("got IBSS IE\n"); |
646 | break; | 642 | break; |
647 | 643 | ||
diff --git a/drivers/net/wireless/libertas/types.h b/drivers/net/wireless/libertas/types.h index de03b9c9c204..b8d2ce936046 100644 --- a/drivers/net/wireless/libertas/types.h +++ b/drivers/net/wireless/libertas/types.h | |||
@@ -8,7 +8,7 @@ | |||
8 | #include <asm/byteorder.h> | 8 | #include <asm/byteorder.h> |
9 | #include <linux/wireless.h> | 9 | #include <linux/wireless.h> |
10 | 10 | ||
11 | struct ieeetypes_cfparamset { | 11 | struct ieee_ie_cf_param_set { |
12 | u8 elementid; | 12 | u8 elementid; |
13 | u8 len; | 13 | u8 len; |
14 | u8 cfpcnt; | 14 | u8 cfpcnt; |
@@ -18,18 +18,18 @@ struct ieeetypes_cfparamset { | |||
18 | } __attribute__ ((packed)); | 18 | } __attribute__ ((packed)); |
19 | 19 | ||
20 | 20 | ||
21 | struct ieeetypes_ibssparamset { | 21 | struct ieee_ie_ibss_param_set { |
22 | u8 elementid; | 22 | u8 elementid; |
23 | u8 len; | 23 | u8 len; |
24 | __le16 atimwindow; | 24 | __le16 atimwindow; |
25 | } __attribute__ ((packed)); | 25 | } __attribute__ ((packed)); |
26 | 26 | ||
27 | union IEEEtypes_ssparamset { | 27 | union ieee_ss_param_set { |
28 | struct ieeetypes_cfparamset cfparamset; | 28 | struct ieee_ie_cf_param_set cf; |
29 | struct ieeetypes_ibssparamset ibssparamset; | 29 | struct ieee_ie_ibss_param_set ibss; |
30 | } __attribute__ ((packed)); | 30 | } __attribute__ ((packed)); |
31 | 31 | ||
32 | struct ieeetypes_fhparamset { | 32 | struct ieee_ie_fh_param_set { |
33 | u8 elementid; | 33 | u8 elementid; |
34 | u8 len; | 34 | u8 len; |
35 | __le16 dwelltime; | 35 | __le16 dwelltime; |
@@ -38,18 +38,18 @@ struct ieeetypes_fhparamset { | |||
38 | u8 hopindex; | 38 | u8 hopindex; |
39 | } __attribute__ ((packed)); | 39 | } __attribute__ ((packed)); |
40 | 40 | ||
41 | struct ieeetypes_dsparamset { | 41 | struct ieee_ie_ds_param_set { |
42 | u8 elementid; | 42 | u8 elementid; |
43 | u8 len; | 43 | u8 len; |
44 | u8 currentchan; | 44 | u8 channel; |
45 | } __attribute__ ((packed)); | 45 | } __attribute__ ((packed)); |
46 | 46 | ||
47 | union ieeetypes_phyparamset { | 47 | union ieee_phy_param_set { |
48 | struct ieeetypes_fhparamset fhparamset; | 48 | struct ieee_ie_fh_param_set fh; |
49 | struct ieeetypes_dsparamset dsparamset; | 49 | struct ieee_ie_ds_param_set ds; |
50 | } __attribute__ ((packed)); | 50 | } __attribute__ ((packed)); |
51 | 51 | ||
52 | struct ieeetypes_assocrsp { | 52 | struct ieee_assoc_response { |
53 | __le16 capability; | 53 | __le16 capability; |
54 | __le16 statuscode; | 54 | __le16 statuscode; |
55 | __le16 aid; | 55 | __le16 aid; |
@@ -149,42 +149,17 @@ struct mrvlietypes_chanlistparamset { | |||
149 | struct chanscanparamset chanscanparam[1]; | 149 | struct chanscanparamset chanscanparam[1]; |
150 | } __attribute__ ((packed)); | 150 | } __attribute__ ((packed)); |
151 | 151 | ||
152 | struct cfparamset { | 152 | struct mrvlietypes_cfparamset { |
153 | struct mrvlietypesheader header; | ||
153 | u8 cfpcnt; | 154 | u8 cfpcnt; |
154 | u8 cfpperiod; | 155 | u8 cfpperiod; |
155 | __le16 cfpmaxduration; | 156 | __le16 cfpmaxduration; |
156 | __le16 cfpdurationremaining; | 157 | __le16 cfpdurationremaining; |
157 | } __attribute__ ((packed)); | 158 | } __attribute__ ((packed)); |
158 | 159 | ||
159 | struct ibssparamset { | 160 | struct mrvlietypes_dsparamset { |
160 | __le16 atimwindow; | ||
161 | } __attribute__ ((packed)); | ||
162 | |||
163 | struct mrvlietypes_ssparamset { | ||
164 | struct mrvlietypesheader header; | ||
165 | union { | ||
166 | struct cfparamset cfparamset[1]; | ||
167 | struct ibssparamset ibssparamset[1]; | ||
168 | } cf_ibss; | ||
169 | } __attribute__ ((packed)); | ||
170 | |||
171 | struct fhparamset { | ||
172 | __le16 dwelltime; | ||
173 | u8 hopset; | ||
174 | u8 hoppattern; | ||
175 | u8 hopindex; | ||
176 | } __attribute__ ((packed)); | ||
177 | |||
178 | struct dsparamset { | ||
179 | u8 currentchan; | ||
180 | } __attribute__ ((packed)); | ||
181 | |||
182 | struct mrvlietypes_phyparamset { | ||
183 | struct mrvlietypesheader header; | 161 | struct mrvlietypesheader header; |
184 | union { | 162 | u8 channel; |
185 | struct fhparamset fhparamset[1]; | ||
186 | struct dsparamset dsparamset[1]; | ||
187 | } fh_ds; | ||
188 | } __attribute__ ((packed)); | 163 | } __attribute__ ((packed)); |
189 | 164 | ||
190 | struct mrvlietypes_rsnparamset { | 165 | struct mrvlietypes_rsnparamset { |