After seeing the corresponding a-msdu patch here are a few more questions. > +static ieee80211_txrx_result > +ieee80211_rx_h_data(struct ieee80211_txrx_data *rx) > +{ > + struct net_device *dev = rx->dev; > + struct ieee80211_local *local = rx->local; > + u16 fc; > + int err; > + struct sk_buff *skb, *skb2; > + struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); > + > + fc = rx->fc; > + if (unlikely((fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_DATA)) > + return TXRX_CONTINUE; > + > + err = ieee80211_data_to_8023(rx); > + if (unlikely(err)) > + return TXRX_DROP; > + > + if ((ieee80211_drop_802_1x_pae(rx, sizeof(struct ethhdr))) || > + (ieee80211_drop_unencrypted(rx, sizeof(struct ethhdr)))) > + return TXRX_DROP; I like this. > + skb = rx->skb; > + skb->dev = dev; > skb2 = NULL; > > dev->stats.rx_packets++; Ok so the stuff that comes after this until the ned of the function is responsible for delivering the packet. Maybe that should be split out from the function too into something like ieee80211_deliver_skb()? In the A-MSDU code you've had to basically copy all this code into the loop as far as I can tell, something which I'd like to avoid very much. johannes
Attachment:
signature.asc
Description: This is a digitally signed message part