28 #include <linux/netdevice.h>
31 #include <linux/if_arp.h>
32 #include <linux/module.h>
33 #include <linux/sched.h>
47 static void irlan_eth_set_multicast_list(
struct net_device *
dev);
50 .ndo_open = irlan_eth_open,
51 .ndo_stop = irlan_eth_close,
52 .ndo_start_xmit = irlan_eth_xmit,
53 .ndo_set_rx_mode = irlan_eth_set_multicast_list,
111 struct irlan_cb *
self = netdev_priv(dev);
116 netif_stop_queue(dev);
119 self->disconnect_reason = 0;
125 !self->tsap_data->connected);
138 struct irlan_cb *
self = netdev_priv(dev);
143 netif_stop_queue(dev);
154 self->client.tx_busy = 0;
168 struct irlan_cb *
self = netdev_priv(dev);
173 if ((skb_headroom(skb) < self->max_header_size) || (skb_shared(skb))) {
209 dev->
stats.tx_dropped++;
211 dev->
stats.tx_packets++;
230 dev->
stats.rx_dropped++;
234 IRDA_DEBUG(0,
"%s() : IrLAN frame too short (%d)\n",
236 dev->
stats.rx_dropped++;
248 dev->
stats.rx_packets++;
284 IRDA_DEBUG(0,
"%s() : flow %s ; running %d\n", __func__,
285 flow ==
FLOW_STOP ?
"FLOW_STOP" :
"FLOW_START",
291 netif_stop_queue(dev);
297 netif_wake_queue(dev);
308 #define HW_MAX_ADDRS 4
309 static void irlan_eth_set_multicast_list(
struct net_device *dev)
311 struct irlan_cb *
self = netdev_priv(dev);
317 IRDA_DEBUG(1,
"%s(), delaying!\n", __func__ );
323 IRDA_WARNING(
"Promiscuous mode not implemented by IrLAN!\n");
328 IRDA_DEBUG(4,
"%s(), Setting multicast filter\n", __func__ );
334 IRDA_DEBUG(4,
"%s(), Setting multicast filter\n", __func__ );
341 IRDA_DEBUG(4,
"%s(), Clearing multicast filter\n", __func__ );