diff mbox

[net-next] r8169.c: Force transmission when nic refuse to start.

Message ID 1439539107-13638-1-git-send-email-corcodel.marian@gmail.com
State Changes Requested, archived
Delegated to: David Miller
Headers show

Commit Message

Corcodel Marian Aug. 14, 2015, 7:58 a.m. UTC
Brute force transmission when Rx interrupt exist on
 interface is up.  Guaranteed to start on full duplex and not maximum
 speed.When set  half duplex working same without this patch.
For apply this patch set --whitespace=warn

Signed-off-by: Corcodel Marian <corcodel.marian@gmail.com>

Comments

Francois Romieu Aug. 14, 2015, 7:27 p.m. UTC | #1
Corcodel Marian <corcodel.marian@gmail.com> :
[...]
> diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
> index eb2d2a4..6882eab 100644
> --- a/drivers/net/ethernet/realtek/r8169.c
> +++ b/drivers/net/ethernet/realtek/r8169.c
> @@ -7470,15 +7470,22 @@ static int rtl8169_poll(struct napi_struct *napi, int budget)
>  	u16 enable_mask = RTL_EVENT_NAPI | tp->event_slow;
>  	int work_done= 0;
>  	u16 status;
> +        int tx_force = 1;
>  
>  	status = rtl_get_events(tp);
>  	rtl_ack_events(tp, status & ~tp->event_slow);
> -
> +       if (netif_running(dev)) {
>  	if (status & RTL_EVENT_NAPI_RX)
>  		work_done = rtl_rx(dev, tp, (u32) budget);
> +                
>  
>  	if (status & RTL_EVENT_NAPI_TX)
>  		rtl_tx(dev, tp);
> +         else if (tx_force == 1) {
> +                mdelay(10);
> +                rtl_tx(dev, tp);
> +         }
> +        }

Please try to use TimerInt instead of this ugly hack.
diff mbox

Patch

diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
index eb2d2a4..6882eab 100644
--- a/drivers/net/ethernet/realtek/r8169.c
+++ b/drivers/net/ethernet/realtek/r8169.c
@@ -7470,15 +7470,22 @@  static int rtl8169_poll(struct napi_struct *napi, int budget)
 	u16 enable_mask = RTL_EVENT_NAPI | tp->event_slow;
 	int work_done= 0;
 	u16 status;
+        int tx_force = 1;
 
 	status = rtl_get_events(tp);
 	rtl_ack_events(tp, status & ~tp->event_slow);
-
+       if (netif_running(dev)) {
 	if (status & RTL_EVENT_NAPI_RX)
 		work_done = rtl_rx(dev, tp, (u32) budget);
+                
 
 	if (status & RTL_EVENT_NAPI_TX)
 		rtl_tx(dev, tp);
+         else if (tx_force == 1) {
+                mdelay(10);
+                rtl_tx(dev, tp);
+         }
+        }
 
 	if (status & tp->event_slow) {
 		enable_mask &= ~tp->event_slow;