a hF@sHdgZddlZddlTddlZejZGdddZddZ ie _ dS)ethcardN)*c@s~eZdZddgddgddgddgdd gd d Zd Zd dZddZddZddZddZ ddZ ddZ ddZ ddZ dS) Nettool rii?) di i'autoFcCsb||_|td||j|j|j|jftd||j|j ftd||j |j fdS)Nz1%s: speed %s, full duplex %s, autoneg %s, link %sz"%s: supports: autoneg %s, modes %sz$%s: advertises: autoneg %s, modes %s) _interfaceupdatelogdebugspeed full_duplexautoneglinksupported_autonegsupported_modesadvertised_autonegadvertised_modes)self interfacer7/usr/lib/python3.9/site-packages/tuned/utils/nettool.py__init__s  zNettool.__init__cCs4d|_d|_d|_d|_g|_d|_g|_d|_dS)NrF)rrrrrrrrrrrr _clean_status"szNettool._clean_statuscCs4d}|D]&}||j|d|dr&dnd7}q|S)Nrr)_advertise_values)rZmodesmodemrrr_calculate_mode.s$zNettool._calculate_modecCs<|j|krdS|jsdSdtdd|jd|r.dndgdd kS) NTFrethtool-sronZoff close_fds)rrcallr)renablerrr_set_autonegotiation5s  zNettool._set_autonegotiationcCs.|dsdSdtdd|jdd|gddkS) NTFrr'r(Z advertisez0x%03xr*)r.r,r)rvaluerrr_set_advertise>s zNettool._set_advertisecCs8d}|jD]}|d|kr |d}q |dkr0|SdSdS)Nrr)r)rmaxr$rrr get_max_speedDs  zNettool.get_max_speedcCs4|js |jsdS||jdr,|dSdSdS)NFrT) _disabledrr0r#rr!rrr set_max_speedNs  zNettool.set_max_speedcCs|js |jsdSd}|jD]:}|dkr(q||kr||j|d7}||j|d7}q|||j@}td|j||f||r| dSdSdS)NFrrrz)%s: set_speed(%d) - effective_mode 0x%03xT) r3rr#r&rrrrr0r)rrr$amZeffective_moderrr set_speedYs    zNettool.set_speedc Cs|jr dStd|jgttddd}tddg|jtddd}|d}|d}|d krtd |jtd |j| d d f| d|_dS| t d}t d}d}| d D]H}|drd|dd} | dkrd}nr| dkrd}nd| dkr d}nT| dkrd}nD| dkr,d}n4| dkrs H