@@ -2543,86 +2543,31 @@ static void rtl8169_init_ring_indexes(struct rtl8169_private *tp)
25432543 tp -> dirty_tx = tp -> cur_tx = tp -> cur_rx = 0 ;
25442544}
25452545
2546- static void r8168c_hw_jumbo_enable (struct rtl8169_private * tp )
2547- {
2548- RTL_W8 (tp , Config3 , RTL_R8 (tp , Config3 ) | Jumbo_En0 );
2549- RTL_W8 (tp , Config4 , RTL_R8 (tp , Config4 ) | Jumbo_En1 );
2550- }
2551-
2552- static void r8168c_hw_jumbo_disable (struct rtl8169_private * tp )
2553- {
2554- RTL_W8 (tp , Config3 , RTL_R8 (tp , Config3 ) & ~Jumbo_En0 );
2555- RTL_W8 (tp , Config4 , RTL_R8 (tp , Config4 ) & ~Jumbo_En1 );
2556- }
2557-
2558- static void r8168dp_hw_jumbo_enable (struct rtl8169_private * tp )
2559- {
2560- RTL_W8 (tp , Config3 , RTL_R8 (tp , Config3 ) | Jumbo_En0 );
2561- }
2562-
2563- static void r8168dp_hw_jumbo_disable (struct rtl8169_private * tp )
2564- {
2565- RTL_W8 (tp , Config3 , RTL_R8 (tp , Config3 ) & ~Jumbo_En0 );
2566- }
2567-
2568- static void r8168e_hw_jumbo_enable (struct rtl8169_private * tp )
2569- {
2570- RTL_W8 (tp , MaxTxPacketSize , 0x24 );
2571- RTL_W8 (tp , Config3 , RTL_R8 (tp , Config3 ) | Jumbo_En0 );
2572- RTL_W8 (tp , Config4 , RTL_R8 (tp , Config4 ) | 0x01 );
2573- }
2574-
2575- static void r8168e_hw_jumbo_disable (struct rtl8169_private * tp )
2576- {
2577- RTL_W8 (tp , MaxTxPacketSize , 0x3f );
2578- RTL_W8 (tp , Config3 , RTL_R8 (tp , Config3 ) & ~Jumbo_En0 );
2579- RTL_W8 (tp , Config4 , RTL_R8 (tp , Config4 ) & ~0x01 );
2580- }
2581-
2582- static void r8168b_1_hw_jumbo_enable (struct rtl8169_private * tp )
2583- {
2584- RTL_W8 (tp , Config4 , RTL_R8 (tp , Config4 ) | (1 << 0 ));
2585- }
2586-
2587- static void r8168b_1_hw_jumbo_disable (struct rtl8169_private * tp )
2588- {
2589- RTL_W8 (tp , Config4 , RTL_R8 (tp , Config4 ) & ~(1 << 0 ));
2590- }
2591-
25922546static void rtl_jumbo_config (struct rtl8169_private * tp )
25932547{
25942548 bool jumbo = tp -> dev -> mtu > ETH_DATA_LEN ;
25952549 int readrq = 4096 ;
25962550
2551+ if (jumbo && tp -> mac_version >= RTL_GIGA_MAC_VER_17 &&
2552+ tp -> mac_version <= RTL_GIGA_MAC_VER_26 )
2553+ readrq = 512 ;
2554+
25972555 rtl_unlock_config_regs (tp );
25982556 switch (tp -> mac_version ) {
25992557 case RTL_GIGA_MAC_VER_17 :
2600- if (jumbo ) {
2601- readrq = 512 ;
2602- r8168b_1_hw_jumbo_enable (tp );
2603- } else {
2604- r8168b_1_hw_jumbo_disable (tp );
2605- }
2558+ r8169_mod_reg8_cond (tp , Config4 , BIT (0 ), jumbo );
26062559 break ;
26072560 case RTL_GIGA_MAC_VER_18 ... RTL_GIGA_MAC_VER_26 :
2608- if (jumbo ) {
2609- readrq = 512 ;
2610- r8168c_hw_jumbo_enable (tp );
2611- } else {
2612- r8168c_hw_jumbo_disable (tp );
2613- }
2561+ r8169_mod_reg8_cond (tp , Config3 , Jumbo_En0 , jumbo );
2562+ r8169_mod_reg8_cond (tp , Config4 , Jumbo_En1 , jumbo );
26142563 break ;
26152564 case RTL_GIGA_MAC_VER_28 :
2616- if (jumbo )
2617- r8168dp_hw_jumbo_enable (tp );
2618- else
2619- r8168dp_hw_jumbo_disable (tp );
2565+ r8169_mod_reg8_cond (tp , Config3 , Jumbo_En0 , jumbo );
26202566 break ;
26212567 case RTL_GIGA_MAC_VER_31 ... RTL_GIGA_MAC_VER_33 :
2622- if (jumbo )
2623- r8168e_hw_jumbo_enable (tp );
2624- else
2625- r8168e_hw_jumbo_disable (tp );
2568+ RTL_W8 (tp , MaxTxPacketSize , jumbo ? 0x24 : 0x3f );
2569+ r8169_mod_reg8_cond (tp , Config3 , Jumbo_En0 , jumbo );
2570+ r8169_mod_reg8_cond (tp , Config4 , BIT (0 ), jumbo );
26262571 break ;
26272572 default :
26282573 break ;
0 commit comments