@@ -3680,60 +3680,6 @@ static inline void rx_process(struct lan78xx_net *dev, struct sk_buff *skb)
36803680 dev -> net -> stats .rx_errors ++ ;
36813681}
36823682
3683- static void rx_complete (struct urb * urb );
3684-
3685- static int rx_submit (struct lan78xx_net * dev , struct sk_buff * skb , gfp_t flags )
3686- {
3687- struct skb_data * entry = (struct skb_data * )skb -> cb ;
3688- size_t size = dev -> rx_urb_size ;
3689- struct urb * urb = entry -> urb ;
3690- unsigned long lockflags ;
3691- int ret = 0 ;
3692-
3693- usb_fill_bulk_urb (urb , dev -> udev , dev -> pipe_in ,
3694- skb -> data , size , rx_complete , skb );
3695-
3696- spin_lock_irqsave (& dev -> rxq .lock , lockflags );
3697-
3698- if (netif_device_present (dev -> net ) &&
3699- netif_running (dev -> net ) &&
3700- !test_bit (EVENT_RX_HALT , & dev -> flags ) &&
3701- !test_bit (EVENT_DEV_ASLEEP , & dev -> flags )) {
3702- ret = usb_submit_urb (urb , flags );
3703- switch (ret ) {
3704- case 0 :
3705- lan78xx_queue_skb (& dev -> rxq , skb , rx_start );
3706- break ;
3707- case - EPIPE :
3708- lan78xx_defer_kevent (dev , EVENT_RX_HALT );
3709- break ;
3710- case - ENODEV :
3711- case - ENOENT :
3712- netif_dbg (dev , ifdown , dev -> net , "device gone\n" );
3713- netif_device_detach (dev -> net );
3714- break ;
3715- case - EHOSTUNREACH :
3716- ret = - ENOLINK ;
3717- tasklet_schedule (& dev -> bh );
3718- break ;
3719- default :
3720- netif_dbg (dev , rx_err , dev -> net ,
3721- "rx submit, %d\n" , ret );
3722- tasklet_schedule (& dev -> bh );
3723- break ;
3724- }
3725- } else {
3726- netif_dbg (dev , ifdown , dev -> net , "rx: stopped\n" );
3727- ret = - ENOLINK ;
3728- }
3729- spin_unlock_irqrestore (& dev -> rxq .lock , lockflags );
3730-
3731- if (ret )
3732- lan78xx_release_rx_buf (dev , skb );
3733-
3734- return ret ;
3735- }
3736-
37373683static void rx_complete (struct urb * urb )
37383684{
37393685 struct sk_buff * skb = (struct sk_buff * )urb -> context ;
@@ -3794,6 +3740,58 @@ static void rx_complete(struct urb *urb)
37943740 state = defer_bh (dev , skb , & dev -> rxq , state );
37953741}
37963742
3743+ static int rx_submit (struct lan78xx_net * dev , struct sk_buff * skb , gfp_t flags )
3744+ {
3745+ struct skb_data * entry = (struct skb_data * )skb -> cb ;
3746+ size_t size = dev -> rx_urb_size ;
3747+ struct urb * urb = entry -> urb ;
3748+ unsigned long lockflags ;
3749+ int ret = 0 ;
3750+
3751+ usb_fill_bulk_urb (urb , dev -> udev , dev -> pipe_in ,
3752+ skb -> data , size , rx_complete , skb );
3753+
3754+ spin_lock_irqsave (& dev -> rxq .lock , lockflags );
3755+
3756+ if (netif_device_present (dev -> net ) &&
3757+ netif_running (dev -> net ) &&
3758+ !test_bit (EVENT_RX_HALT , & dev -> flags ) &&
3759+ !test_bit (EVENT_DEV_ASLEEP , & dev -> flags )) {
3760+ ret = usb_submit_urb (urb , flags );
3761+ switch (ret ) {
3762+ case 0 :
3763+ lan78xx_queue_skb (& dev -> rxq , skb , rx_start );
3764+ break ;
3765+ case - EPIPE :
3766+ lan78xx_defer_kevent (dev , EVENT_RX_HALT );
3767+ break ;
3768+ case - ENODEV :
3769+ case - ENOENT :
3770+ netif_dbg (dev , ifdown , dev -> net , "device gone\n" );
3771+ netif_device_detach (dev -> net );
3772+ break ;
3773+ case - EHOSTUNREACH :
3774+ ret = - ENOLINK ;
3775+ tasklet_schedule (& dev -> bh );
3776+ break ;
3777+ default :
3778+ netif_dbg (dev , rx_err , dev -> net ,
3779+ "rx submit, %d\n" , ret );
3780+ tasklet_schedule (& dev -> bh );
3781+ break ;
3782+ }
3783+ } else {
3784+ netif_dbg (dev , ifdown , dev -> net , "rx: stopped\n" );
3785+ ret = - ENOLINK ;
3786+ }
3787+ spin_unlock_irqrestore (& dev -> rxq .lock , lockflags );
3788+
3789+ if (ret )
3790+ lan78xx_release_rx_buf (dev , skb );
3791+
3792+ return ret ;
3793+ }
3794+
37973795static void lan78xx_rx_urb_submit_all (struct lan78xx_net * dev )
37983796{
37993797 struct sk_buff * rx_buf ;
0 commit comments