Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 299975
b: refs/heads/master
c: 60158e6
h: refs/heads/master
i:
  299973: 375268f
  299971: c0edce4
  299967: 692b179
v: v3
  • Loading branch information
Roland Dreier authored and David S. Miller committed May 1, 2012
1 parent 79222fc commit 269a49b
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 47 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 787cb2a9ebc6148e95b164a2821bb4045de1c7f5
refs/heads/master: 60158e64641fd8c780a6d14de2bf42aabc419916
92 changes: 46 additions & 46 deletions trunk/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1149,6 +1149,48 @@ static int update_tpsram(struct adapter *adap)
return ret;
}

/**
* t3_synchronize_rx - wait for current Rx processing on a port to complete
* @adap: the adapter
* @p: the port
*
* Ensures that current Rx processing on any of the queues associated with
* the given port completes before returning. We do this by acquiring and
* releasing the locks of the response queues associated with the port.
*/
static void t3_synchronize_rx(struct adapter *adap, const struct port_info *p)
{
int i;

for (i = p->first_qset; i < p->first_qset + p->nqsets; i++) {
struct sge_rspq *q = &adap->sge.qs[i].rspq;

spin_lock_irq(&q->lock);
spin_unlock_irq(&q->lock);
}
}

static void cxgb_vlan_mode(struct net_device *dev, netdev_features_t features)
{
struct port_info *pi = netdev_priv(dev);
struct adapter *adapter = pi->adapter;

if (adapter->params.rev > 0) {
t3_set_vlan_accel(adapter, 1 << pi->port_id,
features & NETIF_F_HW_VLAN_RX);
} else {
/* single control for all ports */
unsigned int i, have_vlans = features & NETIF_F_HW_VLAN_RX;

for_each_port(adapter, i)
have_vlans |=
adapter->port[i]->features & NETIF_F_HW_VLAN_RX;

t3_set_vlan_accel(adapter, 1, have_vlans);
}
t3_synchronize_rx(adapter, pi);
}

/**
* cxgb_up - enable the adapter
* @adapter: adapter being enabled
Expand All @@ -1161,7 +1203,7 @@ static int update_tpsram(struct adapter *adap)
*/
static int cxgb_up(struct adapter *adap)
{
int err;
int i, err;

if (!(adap->flags & FULL_INIT_DONE)) {
err = t3_check_fw_version(adap);
Expand Down Expand Up @@ -1198,6 +1240,9 @@ static int cxgb_up(struct adapter *adap)
if (err)
goto out;

for_each_port(adap, i)
cxgb_vlan_mode(adap->port[i], adap->port[i]->features);

setup_rss(adap);
if (!(adap->flags & NAPI_INIT))
init_napi(adap);
Expand Down Expand Up @@ -2508,48 +2553,6 @@ static int cxgb_set_mac_addr(struct net_device *dev, void *p)
return 0;
}

/**
* t3_synchronize_rx - wait for current Rx processing on a port to complete
* @adap: the adapter
* @p: the port
*
* Ensures that current Rx processing on any of the queues associated with
* the given port completes before returning. We do this by acquiring and
* releasing the locks of the response queues associated with the port.
*/
static void t3_synchronize_rx(struct adapter *adap, const struct port_info *p)
{
int i;

for (i = p->first_qset; i < p->first_qset + p->nqsets; i++) {
struct sge_rspq *q = &adap->sge.qs[i].rspq;

spin_lock_irq(&q->lock);
spin_unlock_irq(&q->lock);
}
}

static void cxgb_vlan_mode(struct net_device *dev, netdev_features_t features)
{
struct port_info *pi = netdev_priv(dev);
struct adapter *adapter = pi->adapter;

if (adapter->params.rev > 0) {
t3_set_vlan_accel(adapter, 1 << pi->port_id,
features & NETIF_F_HW_VLAN_RX);
} else {
/* single control for all ports */
unsigned int i, have_vlans = features & NETIF_F_HW_VLAN_RX;

for_each_port(adapter, i)
have_vlans |=
adapter->port[i]->features & NETIF_F_HW_VLAN_RX;

t3_set_vlan_accel(adapter, 1, have_vlans);
}
t3_synchronize_rx(adapter, pi);
}

static netdev_features_t cxgb_fix_features(struct net_device *dev,
netdev_features_t features)
{
Expand Down Expand Up @@ -3353,9 +3356,6 @@ static int __devinit init_one(struct pci_dev *pdev,
err = sysfs_create_group(&adapter->port[0]->dev.kobj,
&cxgb3_attr_group);

for_each_port(adapter, i)
cxgb_vlan_mode(adapter->port[i], adapter->port[i]->features);

print_port_info(adapter, ai);
return 0;

Expand Down

0 comments on commit 269a49b

Please sign in to comment.