spin_lock_irq(&tp->lock); spin_lock(&tp->tx_lock); 
tg3_full_lock(tp, 0); 
static int tg3_set_settings(struct net_device *dev, struct ethtool_cmd *cmd){	struct tg3 *tp = netdev_priv(dev);  	if (tp->tg3_flags2 & TG3_FLG2_PHY_SERDES) {		/* These are the only valid advertisement bits allowed.  */		if (cmd->autoneg == AUTONEG_ENABLE &&		    (cmd->advertising & ~(ADVERTISED_1000baseT_Half |					  ADVERTISED_1000baseT_Full |					  ADVERTISED_Autoneg |					  ADVERTISED_FIBRE)))			return -EINVAL;	}	spin_lock_irq(&tp->lock);	spin_lock(&tp->tx_lock);	tp->link_config.autoneg = cmd->autoneg;	if (cmd->autoneg == AUTONEG_ENABLE) {		tp->link_config.advertising = cmd->advertising;		tp->link_config.speed = SPEED_INVALID;		tp->link_config.duplex = DUPLEX_INVALID;	} else {		tp->link_config.advertising = 0;		tp->link_config.speed = cmd->speed;		tp->link_config.duplex = cmd->duplex;  	}  	if (netif_running(dev))		tg3_setup_phy(tp, 1);	spin_unlock(&tp->tx_lock);	spin_unlock_irq(&tp->lock);  	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/f47c11eeccc8820010992eb32dbe7370a08f8bd3/tg3.c/buggy/drivers/net/tg3.c