Ticket #417: madwifi-parent.2.diff
| File madwifi-parent.2.diff, 3.6 kB (added by mentor, 6 years ago) |
|---|
-
net80211/ieee80211_input.c
old new 53 53 #include "if_athproto.h" 54 54 55 55 #include <net80211/ieee80211_var.h> 56 #include <net80211/ieee80211_proto.h> 56 57 57 58 #ifdef IEEE80211_DEBUG 58 59 /* … … 3317 3318 vap->iv_set_tim(ni, 0); 3318 3319 } 3319 3320 M_PWR_SAV_SET(skb); /* bypass PS handling */ 3320 skb->dev = vap->iv_dev; /* XXX needed? */3321 (void) dev_queue_xmit(skb); /* resubmit*/3321 3322 ieee80211_parent_queue_xmit(skb); /* Submit to parent device, including updating stats */ 3322 3323 } 3323 3324 3324 3325 #ifdef ATH_SUPERG_FF -
net80211/ieee80211_output.c
old new 252 252 "%s: discard, classification failure", __func__); 253 253 goto bad; 254 254 } 255 256 cb->ni = ni; 257 255 258 /* power-save checks */ 256 259 if (WME_UAPSD_AC_CAN_TRIGGER(skb->priority, ni)) { 257 260 /* U-APSD power save queue */ 258 261 /* XXXAPSD: assuming triggerable means deliverable */ 259 262 M_FLAG_SET(skb, M_UAPSD); 260 } else if ((ni->ni_flags & IEEE80211_NODE_PWR_MGT) && !M_PWR_SAV_GET(skb)) {263 } else if ((ni->ni_flags & IEEE80211_NODE_PWR_MGT)) { 261 264 /* 262 265 * Station in power save mode; stick the frame 263 266 * on the sta's power save queue and continue. … … 266 269 ieee80211_pwrsave(ni, skb); 267 goto reclaim;270 return 0; 268 271 } 269 M_FLAG_KEEP_ONLY(skb, M_UAPSD | M_PWR_SAV);270 cb->ni = ni;271 272 272 vap->iv_devstats.tx_packets++;273 vap->iv_devstats.tx_bytes += skb->len;274 ic->ic_lastdata = jiffies;275 276 skb->dev = parent;277 273 #ifdef ATH_SUPERG_XR 278 274 /* 279 275 * broadcast/multicast packets need to be sent on XR vap in addition to … … 293 289 } 294 290 } 295 291 #endif 296 (void) dev_queue_xmit(skb);292 ieee80211_parent_queue_xmit(skb); 297 293 return 0; 298 294 bad: 299 295 if (skb != NULL) … … 304 300 return 0; 305 301 } 306 302 303 void ieee80211_parent_queue_xmit(struct sk_buff *skb) { 304 struct ieee80211vap *vap = skb->dev->priv; 305 306 vap->iv_devstats.tx_packets++; 307 vap->iv_devstats.tx_bytes += skb->len; 308 vap->iv_ic.ic_lastdata = jiffies; 309 310 // Dispatch the packet to the parent device 311 skb->dev = vap->iv_ic->ic_dev; 312 (void) dev_queue_xmit(skb); 313 } 314 307 315 /* 308 316 * Set the direction field and address fields of an outgoing 309 317 * non-QoS frame. Note this should be called early on in -
net80211/ieee80211_power.c
old new 48 48 #include "if_media.h" 49 49 50 50 #include <net80211/ieee80211_var.h> 51 #include <net80211/ieee80211_proto.h> 51 52 52 53 static void ieee80211_set_tim(struct ieee80211_node *ni, int set); 53 54 … … 313 314 skb->dev = vap->iv_xrvap->iv_dev; 314 315 else 315 316 skb->dev = vap->iv_dev; /* XXX? unnecessary */ 316 #else317 skb->dev = vap->iv_dev; /* XXX? unnecessary */318 317 #endif 319 dev_queue_xmit(skb); 318 319 ieee80211_parent_queue_xmit(skb); 320 320 } 321 321 vap->iv_set_tim(ni, 0); 322 322 } -
net80211/ieee80211_proto.h
old new 72 72 int, int, u_int32_t); 73 73 void ieee80211_sta_pwrsave(struct ieee80211vap *, int); 74 74 int ieee80211_hardstart(struct sk_buff *, struct net_device *); 75 void ieee80211_parent_queue_xmit(struct sk_buff *); 75 76 int ieee80211_send_nulldata(struct ieee80211_node *); 76 77 int ieee80211_send_qosnulldata(struct ieee80211_node *, int); 77 78 int ieee80211_send_mgmt(struct ieee80211_node *, int, int);
