X-Git-Url: http://git.ozo.com/?a=blobdiff_plain;f=net80211%2Fieee80211.c;h=ea21c5f2af8f53724e9d9586a9442b6d5ac9c29d;hb=530d6494dbcb9cb33bdb65becbf2e2aaf7ee334d;hp=44899fea4252d5cada00febf171cd306009b6a02;hpb=a9427af7b3ab973b0b4dea2aec920ae2890b39ec;p=madwifi%2F.git diff --git a/net80211/ieee80211.c b/net80211/ieee80211.c index 44899fe..ea21c5f 100644 --- a/net80211/ieee80211.c +++ b/net80211/ieee80211.c @@ -400,6 +400,23 @@ ieee80211_ifdetach(struct ieee80211com *ic) } EXPORT_SYMBOL(ieee80211_ifdetach); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29) +static const struct net_device_ops ieee80211_netdev_ops = { + .ndo_get_stats = ieee80211_getstats, + .ndo_open = ieee80211_open, + .ndo_stop = ieee80211_stop, + .ndo_start_xmit = ieee80211_hardstart, + .ndo_set_multicast_list = ieee80211_set_multicast_list, + .ndo_change_mtu = ieee80211_change_mtu, + .ndo_do_ioctl = ieee80211_ioctl, +#if IEEE80211_VLAN_TAG_USED + .ndo_vlan_rx_register = ieee80211_vlan_register, + .ndo_vlan_rx_add_vid = ieee80211_vlan_add_vid, + .ndo_vlan_rx_kill_vid = ieee80211_vlan_kill_vid, +#endif +}; +#endif + int ieee80211_vap_setup(struct ieee80211com *ic, struct net_device *dev, const char *name, int opmode, int flags) @@ -421,12 +438,22 @@ ieee80211_vap_setup(struct ieee80211com *ic, struct net_device *dev, strncpy(dev->name, name, sizeof(dev->name)); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29) dev->get_stats = ieee80211_getstats; dev->open = ieee80211_open; dev->stop = ieee80211_stop; dev->hard_start_xmit = ieee80211_hardstart; dev->set_multicast_list = ieee80211_set_multicast_list; dev->change_mtu = ieee80211_change_mtu; + dev->do_ioctl = ieee80211_ioctl; +#if IEEE80211_VLAN_TAG_USED + dev->vlan_rx_register = ieee80211_vlan_register; + dev->vlan_rx_add_vid = ieee80211_vlan_add_vid; + dev->vlan_rx_kill_vid = ieee80211_vlan_kill_vid; +#endif +#else + dev->netdev_ops = &ieee80211_netdev_ops; +#endif dev->tx_queue_len = 0; /* NB: bypass queuing */ dev->hard_header_len = parent->hard_header_len; /* @@ -689,7 +716,8 @@ ieee80211_find_channel(struct ieee80211com *ic, int freq, int flags) c = &ic->ic_channels[i]; if (c->ic_freq == freq && (flags == 0 || - (c->ic_flags & IEEE80211_CHAN_ALLTURBO) == flags)) + (c->ic_flags & IEEE80211_CHAN_ALLTURBO) == + (flags & IEEE80211_CHAN_ALLTURBO))) return c; } return NULL; @@ -1732,7 +1760,11 @@ ieee80211_set_multicast_list(struct net_device *dev) IEEE80211_UNLOCK_IRQ(ic); /* XXX: Merge multicast list into parent device */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29) parent->set_multicast_list(ic->ic_dev); +#else + parent->netdev_ops->ndo_set_multicast_list(ic->ic_dev); +#endif } void