[dpdk-dev] Manual link speed/duplex configuration not working with DPDK

Lu, Wenzhuo wenzhuo.lu at intel.com
Mon Oct 24 02:54:27 CEST 2016


Hi Ananda,

> -----Original Message-----
> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Ananda
> Sathyanarayana
> Sent: Saturday, October 22, 2016 3:27 AM
> To: dev at dpdk.org
> Cc: ananda at versa-networks.com; Vignesh Chinnakkannu
> Subject: [dpdk-dev] Manual link speed/duplex configuration not working with
> DPDK
> 
> Hi All,
> 
> 
> 
> While testing manual link speed/duplex configuration with DPDK 1.7.1, I
> observed the same issues mentioned by the below post
> 
> http://dpdk.org/ml/archives/dev/2015-January/010834.html. I see the same
> issue with 16.04 as well.
Don’t know the history. Seems it’s discussion but not a patch. Guess that's why it’s not accepted.
It looks OK to me. Maybe we can create a patch for it?

> 
> 
> 
> Looks like the above patch is not accepted by the DPDK community yet.  Any
> specific reason ?
> 
> 
> 
> From the code, it looks like, hw->mac.autoneg, variable is used to switch
> between calling either autoneg function or forcing speed/duplex function.
> But this variable is not modified in eth_em_start/eth_igb_start routines (it is
> always set to 1) while forcing the link.
> 
> 
> 
> s32 e1000_setup_copper_link_generic(struct e1000_hw *hw)
> 
> {
> 
>     s32 ret_val;
> 
>     bool link;
> 
> 
> 
>     DEBUGFUNC("e1000_setup_copper_link_generic");
> 
> 
> 
>     if (hw->mac.autoneg) {         <<<<<<<<<<<< always set, is not modified
> in eth_em_start/eth_igb_start
> 
> 
> 
>         /* Setup autoneg and flow control advertisement and perform
> 
>          * autonegotiation.
> 
>          */
> 
>         ret_val = e1000_copper_link_autoneg(hw);
> 
>         if (ret_val)
> 
>             return ret_val;
> 
>     } else {
> 
>         /* PHY will be set to 10H, 10F, 100H or 100F
> 
>          * depending on user settings.
> 
>          */
> 
>         DEBUGOUT("Forcing Speed and Duplex\n");
> 
>         ret_val = hw->phy.ops.force_speed_duplex(hw);
> <<<<<<<<<<<< Not called at all
> 
>         if (ret_val) {
> 
>             DEBUGOUT("Error Forcing Speed and Duplex\n");
> 
>             return ret_val;
> 
>         }
> 
>     }
> 
> 
> 
> }
> 
> 
> 
> 
> 
> Thanks,
> 
> Ananda


More information about the dev mailing list