aboutsummaryrefslogtreecommitdiffstats
path: root/net/wireless/nl80211.c
diff options
context:
space:
mode:
authorZhao, Gang <gamerh2o@gmail.com>2014-04-21 00:53:03 -0400
committerJohannes Berg <johannes.berg@intel.com>2014-04-25 11:33:04 -0400
commitf26cbf401be935eec13da6fca7088b50d797d78b (patch)
treede83a716467102d1b674805ad94879a779c1683f /net/wireless/nl80211.c
parent1b8ec87aa077c527c9e3525e16098ca7efbc853d (diff)
cfg80211: change wiphy_to_dev function name
Name wiphy_to_rdev is more accurate to describe what the function does, i.e., return a pointer pointing to struct cfg80211_registered_device. Signed-off-by: Zhao, Gang <gamerh2o@gmail.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/wireless/nl80211.c')
-rw-r--r--net/wireless/nl80211.c64
1 files changed, 32 insertions, 32 deletions
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 9edbb5f7b1bb..6550e20c8e49 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -168,8 +168,8 @@ __cfg80211_rdev_from_attrs(struct net *netns, struct nlattr **attrs)
168 netdev = __dev_get_by_index(netns, ifindex); 168 netdev = __dev_get_by_index(netns, ifindex);
169 if (netdev) { 169 if (netdev) {
170 if (netdev->ieee80211_ptr) 170 if (netdev->ieee80211_ptr)
171 tmp = wiphy_to_dev( 171 tmp = wiphy_to_rdev(
172 netdev->ieee80211_ptr->wiphy); 172 netdev->ieee80211_ptr->wiphy);
173 else 173 else
174 tmp = NULL; 174 tmp = NULL;
175 175
@@ -485,7 +485,7 @@ static int nl80211_prepare_wdev_dump(struct sk_buff *skb,
485 err = PTR_ERR(*wdev); 485 err = PTR_ERR(*wdev);
486 goto out_unlock; 486 goto out_unlock;
487 } 487 }
488 *rdev = wiphy_to_dev((*wdev)->wiphy); 488 *rdev = wiphy_to_rdev((*wdev)->wiphy);
489 /* 0 is the first index - add 1 to parse only once */ 489 /* 0 is the first index - add 1 to parse only once */
490 cb->args[0] = (*rdev)->wiphy_idx + 1; 490 cb->args[0] = (*rdev)->wiphy_idx + 1;
491 cb->args[1] = (*wdev)->identifier; 491 cb->args[1] = (*wdev)->identifier;
@@ -498,7 +498,7 @@ static int nl80211_prepare_wdev_dump(struct sk_buff *skb,
498 err = -ENODEV; 498 err = -ENODEV;
499 goto out_unlock; 499 goto out_unlock;
500 } 500 }
501 *rdev = wiphy_to_dev(wiphy); 501 *rdev = wiphy_to_rdev(wiphy);
502 *wdev = NULL; 502 *wdev = NULL;
503 503
504 list_for_each_entry(tmp, &(*rdev)->wdev_list, list) { 504 list_for_each_entry(tmp, &(*rdev)->wdev_list, list) {
@@ -1691,7 +1691,7 @@ static int nl80211_dump_wiphy_parse(struct sk_buff *skb,
1691 if (!netdev) 1691 if (!netdev)
1692 return -ENODEV; 1692 return -ENODEV;
1693 if (netdev->ieee80211_ptr) { 1693 if (netdev->ieee80211_ptr) {
1694 rdev = wiphy_to_dev( 1694 rdev = wiphy_to_rdev(
1695 netdev->ieee80211_ptr->wiphy); 1695 netdev->ieee80211_ptr->wiphy);
1696 state->filter_wiphy = rdev->wiphy_idx; 1696 state->filter_wiphy = rdev->wiphy_idx;
1697 } 1697 }
@@ -2020,7 +2020,7 @@ static int nl80211_set_wiphy(struct sk_buff *skb, struct genl_info *info)
2020 2020
2021 netdev = __dev_get_by_index(genl_info_net(info), ifindex); 2021 netdev = __dev_get_by_index(genl_info_net(info), ifindex);
2022 if (netdev && netdev->ieee80211_ptr) 2022 if (netdev && netdev->ieee80211_ptr)
2023 rdev = wiphy_to_dev(netdev->ieee80211_ptr->wiphy); 2023 rdev = wiphy_to_rdev(netdev->ieee80211_ptr->wiphy);
2024 else 2024 else
2025 netdev = NULL; 2025 netdev = NULL;
2026 } 2026 }
@@ -2236,7 +2236,7 @@ static int nl80211_set_wiphy(struct sk_buff *skb, struct genl_info *info)
2236static inline u64 wdev_id(struct wireless_dev *wdev) 2236static inline u64 wdev_id(struct wireless_dev *wdev)
2237{ 2237{
2238 return (u64)wdev->identifier | 2238 return (u64)wdev->identifier |
2239 ((u64)wiphy_to_dev(wdev->wiphy)->wiphy_idx << 32); 2239 ((u64)wiphy_to_rdev(wdev->wiphy)->wiphy_idx << 32);
2240} 2240}
2241 2241
2242static int nl80211_send_chandef(struct sk_buff *msg, 2242static int nl80211_send_chandef(struct sk_buff *msg,
@@ -6867,7 +6867,7 @@ struct sk_buff *__cfg80211_alloc_event_skb(struct wiphy *wiphy,
6867 int vendor_event_idx, 6867 int vendor_event_idx,
6868 int approxlen, gfp_t gfp) 6868 int approxlen, gfp_t gfp)
6869{ 6869{
6870 struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy); 6870 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
6871 const struct nl80211_vendor_cmd_info *info; 6871 const struct nl80211_vendor_cmd_info *info;
6872 6872
6873 switch (cmd) { 6873 switch (cmd) {
@@ -9179,7 +9179,7 @@ struct sk_buff *__cfg80211_alloc_reply_skb(struct wiphy *wiphy,
9179 enum nl80211_attrs attr, 9179 enum nl80211_attrs attr,
9180 int approxlen) 9180 int approxlen)
9181{ 9181{
9182 struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy); 9182 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
9183 9183
9184 if (WARN_ON(!rdev->cur_cmd_info)) 9184 if (WARN_ON(!rdev->cur_cmd_info))
9185 return NULL; 9185 return NULL;
@@ -9303,7 +9303,7 @@ static int nl80211_pre_doit(const struct genl_ops *ops, struct sk_buff *skb,
9303 } 9303 }
9304 9304
9305 dev = wdev->netdev; 9305 dev = wdev->netdev;
9306 rdev = wiphy_to_dev(wdev->wiphy); 9306 rdev = wiphy_to_rdev(wdev->wiphy);
9307 9307
9308 if (ops->internal_flags & NL80211_FLAG_NEED_NETDEV) { 9308 if (ops->internal_flags & NL80211_FLAG_NEED_NETDEV) {
9309 if (!dev) { 9309 if (!dev) {
@@ -10332,7 +10332,7 @@ void cfg80211_rx_unprot_mlme_mgmt(struct net_device *dev, const u8 *buf,
10332{ 10332{
10333 struct wireless_dev *wdev = dev->ieee80211_ptr; 10333 struct wireless_dev *wdev = dev->ieee80211_ptr;
10334 struct wiphy *wiphy = wdev->wiphy; 10334 struct wiphy *wiphy = wdev->wiphy;
10335 struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy); 10335 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
10336 const struct ieee80211_mgmt *mgmt = (void *)buf; 10336 const struct ieee80211_mgmt *mgmt = (void *)buf;
10337 u32 cmd; 10337 u32 cmd;
10338 10338
@@ -10554,7 +10554,7 @@ void cfg80211_notify_new_peer_candidate(struct net_device *dev, const u8 *addr,
10554 const u8* ie, u8 ie_len, gfp_t gfp) 10554 const u8* ie, u8 ie_len, gfp_t gfp)
10555{ 10555{
10556 struct wireless_dev *wdev = dev->ieee80211_ptr; 10556 struct wireless_dev *wdev = dev->ieee80211_ptr;
10557 struct cfg80211_registered_device *rdev = wiphy_to_dev(wdev->wiphy); 10557 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
10558 struct sk_buff *msg; 10558 struct sk_buff *msg;
10559 void *hdr; 10559 void *hdr;
10560 10560
@@ -10734,7 +10734,7 @@ void cfg80211_ready_on_channel(struct wireless_dev *wdev, u64 cookie,
10734 unsigned int duration, gfp_t gfp) 10734 unsigned int duration, gfp_t gfp)
10735{ 10735{
10736 struct wiphy *wiphy = wdev->wiphy; 10736 struct wiphy *wiphy = wdev->wiphy;
10737 struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy); 10737 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
10738 10738
10739 trace_cfg80211_ready_on_channel(wdev, cookie, chan, duration); 10739 trace_cfg80211_ready_on_channel(wdev, cookie, chan, duration);
10740 nl80211_send_remain_on_chan_event(NL80211_CMD_REMAIN_ON_CHANNEL, 10740 nl80211_send_remain_on_chan_event(NL80211_CMD_REMAIN_ON_CHANNEL,
@@ -10748,7 +10748,7 @@ void cfg80211_remain_on_channel_expired(struct wireless_dev *wdev, u64 cookie,
10748 gfp_t gfp) 10748 gfp_t gfp)
10749{ 10749{
10750 struct wiphy *wiphy = wdev->wiphy; 10750 struct wiphy *wiphy = wdev->wiphy;
10751 struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy); 10751 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
10752 10752
10753 trace_cfg80211_ready_on_channel_expired(wdev, cookie, chan); 10753 trace_cfg80211_ready_on_channel_expired(wdev, cookie, chan);
10754 nl80211_send_remain_on_chan_event(NL80211_CMD_CANCEL_REMAIN_ON_CHANNEL, 10754 nl80211_send_remain_on_chan_event(NL80211_CMD_CANCEL_REMAIN_ON_CHANNEL,
@@ -10760,7 +10760,7 @@ void cfg80211_new_sta(struct net_device *dev, const u8 *mac_addr,
10760 struct station_info *sinfo, gfp_t gfp) 10760 struct station_info *sinfo, gfp_t gfp)
10761{ 10761{
10762 struct wiphy *wiphy = dev->ieee80211_ptr->wiphy; 10762 struct wiphy *wiphy = dev->ieee80211_ptr->wiphy;
10763 struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy); 10763 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
10764 struct sk_buff *msg; 10764 struct sk_buff *msg;
10765 10765
10766 trace_cfg80211_new_sta(dev, mac_addr, sinfo); 10766 trace_cfg80211_new_sta(dev, mac_addr, sinfo);
@@ -10783,7 +10783,7 @@ EXPORT_SYMBOL(cfg80211_new_sta);
10783void cfg80211_del_sta(struct net_device *dev, const u8 *mac_addr, gfp_t gfp) 10783void cfg80211_del_sta(struct net_device *dev, const u8 *mac_addr, gfp_t gfp)
10784{ 10784{
10785 struct wiphy *wiphy = dev->ieee80211_ptr->wiphy; 10785 struct wiphy *wiphy = dev->ieee80211_ptr->wiphy;
10786 struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy); 10786 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
10787 struct sk_buff *msg; 10787 struct sk_buff *msg;
10788 void *hdr; 10788 void *hdr;
10789 10789
@@ -10820,7 +10820,7 @@ void cfg80211_conn_failed(struct net_device *dev, const u8 *mac_addr,
10820 gfp_t gfp) 10820 gfp_t gfp)
10821{ 10821{
10822 struct wiphy *wiphy = dev->ieee80211_ptr->wiphy; 10822 struct wiphy *wiphy = dev->ieee80211_ptr->wiphy;
10823 struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy); 10823 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
10824 struct sk_buff *msg; 10824 struct sk_buff *msg;
10825 void *hdr; 10825 void *hdr;
10826 10826
@@ -10855,7 +10855,7 @@ static bool __nl80211_unexpected_frame(struct net_device *dev, u8 cmd,
10855 const u8 *addr, gfp_t gfp) 10855 const u8 *addr, gfp_t gfp)
10856{ 10856{
10857 struct wireless_dev *wdev = dev->ieee80211_ptr; 10857 struct wireless_dev *wdev = dev->ieee80211_ptr;
10858 struct cfg80211_registered_device *rdev = wiphy_to_dev(wdev->wiphy); 10858 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
10859 struct sk_buff *msg; 10859 struct sk_buff *msg;
10860 void *hdr; 10860 void *hdr;
10861 u32 nlportid = ACCESS_ONCE(wdev->ap_unexpected_nlportid); 10861 u32 nlportid = ACCESS_ONCE(wdev->ap_unexpected_nlportid);
@@ -10975,7 +10975,7 @@ void cfg80211_mgmt_tx_status(struct wireless_dev *wdev, u64 cookie,
10975 const u8 *buf, size_t len, bool ack, gfp_t gfp) 10975 const u8 *buf, size_t len, bool ack, gfp_t gfp)
10976{ 10976{
10977 struct wiphy *wiphy = wdev->wiphy; 10977 struct wiphy *wiphy = wdev->wiphy;
10978 struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy); 10978 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
10979 struct net_device *netdev = wdev->netdev; 10979 struct net_device *netdev = wdev->netdev;
10980 struct sk_buff *msg; 10980 struct sk_buff *msg;
10981 void *hdr; 10981 void *hdr;
@@ -11019,7 +11019,7 @@ void cfg80211_cqm_rssi_notify(struct net_device *dev,
11019{ 11019{
11020 struct wireless_dev *wdev = dev->ieee80211_ptr; 11020 struct wireless_dev *wdev = dev->ieee80211_ptr;
11021 struct wiphy *wiphy = wdev->wiphy; 11021 struct wiphy *wiphy = wdev->wiphy;
11022 struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy); 11022 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
11023 struct sk_buff *msg; 11023 struct sk_buff *msg;
11024 struct nlattr *pinfoattr; 11024 struct nlattr *pinfoattr;
11025 void *hdr; 11025 void *hdr;
@@ -11111,7 +11111,7 @@ void cfg80211_gtk_rekey_notify(struct net_device *dev, const u8 *bssid,
11111{ 11111{
11112 struct wireless_dev *wdev = dev->ieee80211_ptr; 11112 struct wireless_dev *wdev = dev->ieee80211_ptr;
11113 struct wiphy *wiphy = wdev->wiphy; 11113 struct wiphy *wiphy = wdev->wiphy;
11114 struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy); 11114 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
11115 11115
11116 trace_cfg80211_gtk_rekey_notify(dev, bssid); 11116 trace_cfg80211_gtk_rekey_notify(dev, bssid);
11117 nl80211_gtk_rekey_notify(rdev, dev, bssid, replay_ctr, gfp); 11117 nl80211_gtk_rekey_notify(rdev, dev, bssid, replay_ctr, gfp);
@@ -11169,7 +11169,7 @@ void cfg80211_pmksa_candidate_notify(struct net_device *dev, int index,
11169{ 11169{
11170 struct wireless_dev *wdev = dev->ieee80211_ptr; 11170 struct wireless_dev *wdev = dev->ieee80211_ptr;
11171 struct wiphy *wiphy = wdev->wiphy; 11171 struct wiphy *wiphy = wdev->wiphy;
11172 struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy); 11172 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
11173 11173
11174 trace_cfg80211_pmksa_candidate_notify(dev, index, bssid, preauth); 11174 trace_cfg80211_pmksa_candidate_notify(dev, index, bssid, preauth);
11175 nl80211_pmksa_candidate_notify(rdev, dev, index, bssid, preauth, gfp); 11175 nl80211_pmksa_candidate_notify(rdev, dev, index, bssid, preauth, gfp);
@@ -11216,7 +11216,7 @@ void cfg80211_ch_switch_notify(struct net_device *dev,
11216{ 11216{
11217 struct wireless_dev *wdev = dev->ieee80211_ptr; 11217 struct wireless_dev *wdev = dev->ieee80211_ptr;
11218 struct wiphy *wiphy = wdev->wiphy; 11218 struct wiphy *wiphy = wdev->wiphy;
11219 struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy); 11219 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
11220 11220
11221 ASSERT_WDEV_LOCK(wdev); 11221 ASSERT_WDEV_LOCK(wdev);
11222 11222
@@ -11240,7 +11240,7 @@ void cfg80211_cqm_txe_notify(struct net_device *dev,
11240{ 11240{
11241 struct wireless_dev *wdev = dev->ieee80211_ptr; 11241 struct wireless_dev *wdev = dev->ieee80211_ptr;
11242 struct wiphy *wiphy = wdev->wiphy; 11242 struct wiphy *wiphy = wdev->wiphy;
11243 struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy); 11243 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
11244 struct sk_buff *msg; 11244 struct sk_buff *msg;
11245 struct nlattr *pinfoattr; 11245 struct nlattr *pinfoattr;
11246 void *hdr; 11246 void *hdr;
@@ -11340,7 +11340,7 @@ void cfg80211_cqm_pktloss_notify(struct net_device *dev,
11340{ 11340{
11341 struct wireless_dev *wdev = dev->ieee80211_ptr; 11341 struct wireless_dev *wdev = dev->ieee80211_ptr;
11342 struct wiphy *wiphy = wdev->wiphy; 11342 struct wiphy *wiphy = wdev->wiphy;
11343 struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy); 11343 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
11344 struct sk_buff *msg; 11344 struct sk_buff *msg;
11345 struct nlattr *pinfoattr; 11345 struct nlattr *pinfoattr;
11346 void *hdr; 11346 void *hdr;
@@ -11387,7 +11387,7 @@ void cfg80211_probe_status(struct net_device *dev, const u8 *addr,
11387 u64 cookie, bool acked, gfp_t gfp) 11387 u64 cookie, bool acked, gfp_t gfp)
11388{ 11388{
11389 struct wireless_dev *wdev = dev->ieee80211_ptr; 11389 struct wireless_dev *wdev = dev->ieee80211_ptr;
11390 struct cfg80211_registered_device *rdev = wiphy_to_dev(wdev->wiphy); 11390 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
11391 struct sk_buff *msg; 11391 struct sk_buff *msg;
11392 void *hdr; 11392 void *hdr;
11393 11393
@@ -11427,7 +11427,7 @@ void cfg80211_report_obss_beacon(struct wiphy *wiphy,
11427 const u8 *frame, size_t len, 11427 const u8 *frame, size_t len,
11428 int freq, int sig_dbm) 11428 int freq, int sig_dbm)
11429{ 11429{
11430 struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy); 11430 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
11431 struct sk_buff *msg; 11431 struct sk_buff *msg;
11432 void *hdr; 11432 void *hdr;
11433 struct cfg80211_beacon_registration *reg; 11433 struct cfg80211_beacon_registration *reg;
@@ -11474,7 +11474,7 @@ void cfg80211_report_wowlan_wakeup(struct wireless_dev *wdev,
11474 struct cfg80211_wowlan_wakeup *wakeup, 11474 struct cfg80211_wowlan_wakeup *wakeup,
11475 gfp_t gfp) 11475 gfp_t gfp)
11476{ 11476{
11477 struct cfg80211_registered_device *rdev = wiphy_to_dev(wdev->wiphy); 11477 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
11478 struct sk_buff *msg; 11478 struct sk_buff *msg;
11479 void *hdr; 11479 void *hdr;
11480 int size = 200; 11480 int size = 200;
@@ -11584,7 +11584,7 @@ void cfg80211_tdls_oper_request(struct net_device *dev, const u8 *peer,
11584 u16 reason_code, gfp_t gfp) 11584 u16 reason_code, gfp_t gfp)
11585{ 11585{
11586 struct wireless_dev *wdev = dev->ieee80211_ptr; 11586 struct wireless_dev *wdev = dev->ieee80211_ptr;
11587 struct cfg80211_registered_device *rdev = wiphy_to_dev(wdev->wiphy); 11587 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
11588 struct sk_buff *msg; 11588 struct sk_buff *msg;
11589 void *hdr; 11589 void *hdr;
11590 11590
@@ -11683,7 +11683,7 @@ void cfg80211_ft_event(struct net_device *netdev,
11683 struct cfg80211_ft_event_params *ft_event) 11683 struct cfg80211_ft_event_params *ft_event)
11684{ 11684{
11685 struct wiphy *wiphy = netdev->ieee80211_ptr->wiphy; 11685 struct wiphy *wiphy = netdev->ieee80211_ptr->wiphy;
11686 struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy); 11686 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
11687 struct sk_buff *msg; 11687 struct sk_buff *msg;
11688 void *hdr; 11688 void *hdr;
11689 11689
@@ -11730,7 +11730,7 @@ void cfg80211_crit_proto_stopped(struct wireless_dev *wdev, gfp_t gfp)
11730 void *hdr; 11730 void *hdr;
11731 u32 nlportid; 11731 u32 nlportid;
11732 11732
11733 rdev = wiphy_to_dev(wdev->wiphy); 11733 rdev = wiphy_to_rdev(wdev->wiphy);
11734 if (!rdev->crit_proto_nlportid) 11734 if (!rdev->crit_proto_nlportid)
11735 return; 11735 return;
11736 11736
@@ -11765,7 +11765,7 @@ EXPORT_SYMBOL(cfg80211_crit_proto_stopped);
11765void nl80211_send_ap_stopped(struct wireless_dev *wdev) 11765void nl80211_send_ap_stopped(struct wireless_dev *wdev)
11766{ 11766{
11767 struct wiphy *wiphy = wdev->wiphy; 11767 struct wiphy *wiphy = wdev->wiphy;
11768 struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy); 11768 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
11769 struct sk_buff *msg; 11769 struct sk_buff *msg;
11770 void *hdr; 11770 void *hdr;
11771 11771