aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211
diff options
context:
space:
mode:
authorStephen Hemminger <shemminger@linux-foundation.org>2007-08-24 14:29:34 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2007-10-10 19:49:31 -0400
commit68aae11674b9d6598b660d1148ffba9eef3f895f (patch)
treed5213c5b624e9908b948f2642b7e15721021b4ee /net/mac80211
parent24338793eea9dcc0865826e1115af86a19af8d18 (diff)
[MAC80211]: use internal network device stats
Stats are now available for device usage inside network_device Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org> Acked-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/mac80211')
-rw-r--r--net/mac80211/ieee80211.c26
-rw-r--r--net/mac80211/ieee80211_i.h2
-rw-r--r--net/mac80211/rx.c11
-rw-r--r--net/mac80211/tx.c8
4 files changed, 12 insertions, 35 deletions
diff --git a/net/mac80211/ieee80211.c b/net/mac80211/ieee80211.c
index 0e8a70f408e2..0c1f7b2e157c 100644
--- a/net/mac80211/ieee80211.c
+++ b/net/mac80211/ieee80211.c
@@ -47,13 +47,6 @@ struct ieee80211_tx_status_rtap_hdr {
47 47
48/* common interface routines */ 48/* common interface routines */
49 49
50static struct net_device_stats *ieee80211_get_stats(struct net_device *dev)
51{
52 struct ieee80211_sub_if_data *sdata;
53 sdata = IEEE80211_DEV_TO_SUB_IF(dev);
54 return &(sdata->stats);
55}
56
57static int header_parse_80211(struct sk_buff *skb, unsigned char *haddr) 50static int header_parse_80211(struct sk_buff *skb, unsigned char *haddr)
58{ 51{
59 memcpy(haddr, skb_mac_header(skb) + 10, ETH_ALEN); /* addr2 */ 52 memcpy(haddr, skb_mac_header(skb) + 10, ETH_ALEN); /* addr2 */
@@ -168,11 +161,9 @@ ieee80211_rx_mgmt(struct ieee80211_local *local, struct sk_buff *skb,
168{ 161{
169 struct ieee80211_frame_info *fi; 162 struct ieee80211_frame_info *fi;
170 const size_t hlen = sizeof(struct ieee80211_frame_info); 163 const size_t hlen = sizeof(struct ieee80211_frame_info);
171 struct ieee80211_sub_if_data *sdata; 164 struct net_device *dev = local->apdev;
172 165
173 skb->dev = local->apdev; 166 skb->dev = dev;
174
175 sdata = IEEE80211_DEV_TO_SUB_IF(local->apdev);
176 167
177 if (skb_headroom(skb) < hlen) { 168 if (skb_headroom(skb) < hlen) {
178 I802_DEBUG_INC(local->rx_expand_skb_head); 169 I802_DEBUG_INC(local->rx_expand_skb_head);
@@ -187,8 +178,8 @@ ieee80211_rx_mgmt(struct ieee80211_local *local, struct sk_buff *skb,
187 ieee80211_fill_frame_info(local, fi, status); 178 ieee80211_fill_frame_info(local, fi, status);
188 fi->msg_type = htonl(msg_type); 179 fi->msg_type = htonl(msg_type);
189 180
190 sdata->stats.rx_packets++; 181 dev->stats.rx_packets++;
191 sdata->stats.rx_bytes += skb->len; 182 dev->stats.rx_bytes += skb->len;
192 183
193 skb_set_mac_header(skb, 0); 184 skb_set_mac_header(skb, 0);
194 skb->ip_summed = CHECKSUM_UNNECESSARY; 185 skb->ip_summed = CHECKSUM_UNNECESSARY;
@@ -269,7 +260,6 @@ void ieee80211_if_mgmt_setup(struct net_device *dev)
269 ether_setup(dev); 260 ether_setup(dev);
270 dev->hard_start_xmit = ieee80211_mgmt_start_xmit; 261 dev->hard_start_xmit = ieee80211_mgmt_start_xmit;
271 dev->change_mtu = ieee80211_change_mtu_apdev; 262 dev->change_mtu = ieee80211_change_mtu_apdev;
272 dev->get_stats = ieee80211_get_stats;
273 dev->open = ieee80211_mgmt_open; 263 dev->open = ieee80211_mgmt_open;
274 dev->stop = ieee80211_mgmt_stop; 264 dev->stop = ieee80211_mgmt_stop;
275 dev->type = ARPHRD_IEEE80211_PRISM; 265 dev->type = ARPHRD_IEEE80211_PRISM;
@@ -599,7 +589,6 @@ void ieee80211_if_setup(struct net_device *dev)
599 dev->wireless_handlers = &ieee80211_iw_handler_def; 589 dev->wireless_handlers = &ieee80211_iw_handler_def;
600 dev->set_multicast_list = ieee80211_set_multicast_list; 590 dev->set_multicast_list = ieee80211_set_multicast_list;
601 dev->change_mtu = ieee80211_change_mtu; 591 dev->change_mtu = ieee80211_change_mtu;
602 dev->get_stats = ieee80211_get_stats;
603 dev->open = ieee80211_open; 592 dev->open = ieee80211_open;
604 dev->stop = ieee80211_stop; 593 dev->stop = ieee80211_stop;
605 dev->uninit = ieee80211_if_reinit; 594 dev->uninit = ieee80211_if_reinit;
@@ -1461,13 +1450,6 @@ void ieee80211_free_hw(struct ieee80211_hw *hw)
1461} 1450}
1462EXPORT_SYMBOL(ieee80211_free_hw); 1451EXPORT_SYMBOL(ieee80211_free_hw);
1463 1452
1464struct net_device_stats *ieee80211_dev_stats(struct net_device *dev)
1465{
1466 struct ieee80211_sub_if_data *sdata;
1467 sdata = IEEE80211_DEV_TO_SUB_IF(dev);
1468 return &sdata->stats;
1469}
1470
1471static int __init ieee80211_init(void) 1453static int __init ieee80211_init(void)
1472{ 1454{
1473 struct sk_buff *skb; 1455 struct sk_buff *skb;
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index 0149f9055918..14e8c366af3d 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -301,7 +301,6 @@ struct ieee80211_sub_if_data {
301 301
302 unsigned int flags; 302 unsigned int flags;
303 303
304 struct net_device_stats stats;
305 int drop_unencrypted; 304 int drop_unencrypted;
306 int eapol; /* 0 = process EAPOL frames as normal data frames, 305 int eapol; /* 0 = process EAPOL frames as normal data frames,
307 * 1 = send EAPOL frames through wlan#ap to hostapd 306 * 1 = send EAPOL frames through wlan#ap to hostapd
@@ -723,7 +722,6 @@ void ieee80211_tx_set_iswep(struct ieee80211_txrx_data *tx);
723int ieee80211_if_update_wds(struct net_device *dev, u8 *remote_addr); 722int ieee80211_if_update_wds(struct net_device *dev, u8 *remote_addr);
724void ieee80211_if_setup(struct net_device *dev); 723void ieee80211_if_setup(struct net_device *dev);
725void ieee80211_if_mgmt_setup(struct net_device *dev); 724void ieee80211_if_mgmt_setup(struct net_device *dev);
726struct net_device_stats *ieee80211_dev_stats(struct net_device *dev);
727struct ieee80211_rate *ieee80211_get_rate(struct ieee80211_local *local, 725struct ieee80211_rate *ieee80211_get_rate(struct ieee80211_local *local,
728 int phymode, int hwrate); 726 int phymode, int hwrate);
729void ieee80211_key_threshold_notify(struct net_device *dev, 727void ieee80211_key_threshold_notify(struct net_device *dev,
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 28b8b6af4c42..a5619d1f9a3b 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -137,7 +137,6 @@ ieee80211_rx_monitor(struct net_device *dev, struct sk_buff *skb,
137 struct ieee80211_rx_status *status) 137 struct ieee80211_rx_status *status)
138{ 138{
139 struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr); 139 struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr);
140 struct ieee80211_sub_if_data *sdata;
141 struct ieee80211_rate *rate; 140 struct ieee80211_rate *rate;
142 struct ieee80211_rtap_hdr { 141 struct ieee80211_rtap_hdr {
143 struct ieee80211_radiotap_header hdr; 142 struct ieee80211_radiotap_header hdr;
@@ -150,8 +149,6 @@ ieee80211_rx_monitor(struct net_device *dev, struct sk_buff *skb,
150 149
151 skb->dev = dev; 150 skb->dev = dev;
152 151
153 sdata = IEEE80211_DEV_TO_SUB_IF(dev);
154
155 if (status->flag & RX_FLAG_RADIOTAP) 152 if (status->flag & RX_FLAG_RADIOTAP)
156 goto out; 153 goto out;
157 154
@@ -184,8 +181,8 @@ ieee80211_rx_monitor(struct net_device *dev, struct sk_buff *skb,
184 rthdr->antsignal = status->ssi; 181 rthdr->antsignal = status->ssi;
185 182
186 out: 183 out:
187 sdata->stats.rx_packets++; 184 dev->stats.rx_packets++;
188 sdata->stats.rx_bytes += skb->len; 185 dev->stats.rx_bytes += skb->len;
189 186
190 skb_set_mac_header(skb, 0); 187 skb_set_mac_header(skb, 0);
191 skb->ip_summed = CHECKSUM_UNNECESSARY; 188 skb->ip_summed = CHECKSUM_UNNECESSARY;
@@ -1053,8 +1050,8 @@ ieee80211_rx_h_data(struct ieee80211_txrx_data *rx)
1053 1050
1054 skb2 = NULL; 1051 skb2 = NULL;
1055 1052
1056 sdata->stats.rx_packets++; 1053 dev->stats.rx_packets++;
1057 sdata->stats.rx_bytes += skb->len; 1054 dev->stats.rx_bytes += skb->len;
1058 1055
1059 if (local->bridge_packets && (sdata->type == IEEE80211_IF_TYPE_AP 1056 if (local->bridge_packets && (sdata->type == IEEE80211_IF_TYPE_AP
1060 || sdata->type == IEEE80211_IF_TYPE_VLAN) && 1057 || sdata->type == IEEE80211_IF_TYPE_VLAN) &&
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 1780c24f7957..acfc3054d467 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -1528,8 +1528,8 @@ int ieee80211_subif_start_xmit(struct sk_buff *skb,
1528 pkt_data->flags |= IEEE80211_TXPD_MGMT_IFACE; 1528 pkt_data->flags |= IEEE80211_TXPD_MGMT_IFACE;
1529 1529
1530 skb->dev = local->mdev; 1530 skb->dev = local->mdev;
1531 sdata->stats.tx_packets++; 1531 dev->stats.tx_packets++;
1532 sdata->stats.tx_bytes += skb->len; 1532 dev->stats.tx_bytes += skb->len;
1533 1533
1534 /* Update skb pointers to various headers since this modified frame 1534 /* Update skb pointers to various headers since this modified frame
1535 * is going to go through Linux networking code that may potentially 1535 * is going to go through Linux networking code that may potentially
@@ -1602,8 +1602,8 @@ int ieee80211_mgmt_start_xmit(struct sk_buff *skb, struct net_device *dev)
1602 if (!(fc & IEEE80211_FCTL_PROTECTED)) 1602 if (!(fc & IEEE80211_FCTL_PROTECTED))
1603 pkt_data->flags |= IEEE80211_TXPD_DO_NOT_ENCRYPT; 1603 pkt_data->flags |= IEEE80211_TXPD_DO_NOT_ENCRYPT;
1604 1604
1605 sdata->stats.tx_packets++; 1605 dev->stats.tx_packets++;
1606 sdata->stats.tx_bytes += skb->len; 1606 dev->stats.tx_bytes += skb->len;
1607 1607
1608 dev_queue_xmit(skb); 1608 dev_queue_xmit(skb);
1609 1609