|
@@ -1094,7 +1094,7 @@ static int be_change_mtu(struct net_device *netdev, int new_mtu)
|
|
|
static int be_vid_config(struct be_adapter *adapter)
|
|
|
{
|
|
|
u16 vids[BE_NUM_VLANS_SUPPORTED];
|
|
|
- u16 num = 0, i;
|
|
|
+ u16 num = 0, i = 0;
|
|
|
int status = 0;
|
|
|
|
|
|
/* No need to further configure vids if in promiscuous mode */
|
|
@@ -1105,9 +1105,8 @@ static int be_vid_config(struct be_adapter *adapter)
|
|
|
goto set_vlan_promisc;
|
|
|
|
|
|
/* Construct VLAN Table to give to HW */
|
|
|
- for (i = 0; i < VLAN_N_VID; i++)
|
|
|
- if (adapter->vlan_tag[i])
|
|
|
- vids[num++] = cpu_to_le16(i);
|
|
|
+ for_each_set_bit(i, adapter->vids, VLAN_N_VID)
|
|
|
+ vids[num++] = cpu_to_le16(i);
|
|
|
|
|
|
status = be_cmd_vlan_config(adapter, adapter->if_handle, vids, num, 0);
|
|
|
|
|
@@ -1155,16 +1154,16 @@ static int be_vlan_add_vid(struct net_device *netdev, __be16 proto, u16 vid)
|
|
|
if (lancer_chip(adapter) && vid == 0)
|
|
|
return status;
|
|
|
|
|
|
- if (adapter->vlan_tag[vid])
|
|
|
+ if (test_bit(vid, adapter->vids))
|
|
|
return status;
|
|
|
|
|
|
- adapter->vlan_tag[vid] = 1;
|
|
|
+ set_bit(vid, adapter->vids);
|
|
|
adapter->vlans_added++;
|
|
|
|
|
|
status = be_vid_config(adapter);
|
|
|
if (status) {
|
|
|
adapter->vlans_added--;
|
|
|
- adapter->vlan_tag[vid] = 0;
|
|
|
+ clear_bit(vid, adapter->vids);
|
|
|
}
|
|
|
|
|
|
return status;
|
|
@@ -1179,12 +1178,12 @@ static int be_vlan_rem_vid(struct net_device *netdev, __be16 proto, u16 vid)
|
|
|
if (lancer_chip(adapter) && vid == 0)
|
|
|
goto ret;
|
|
|
|
|
|
- adapter->vlan_tag[vid] = 0;
|
|
|
+ clear_bit(vid, adapter->vids);
|
|
|
status = be_vid_config(adapter);
|
|
|
if (!status)
|
|
|
adapter->vlans_added--;
|
|
|
else
|
|
|
- adapter->vlan_tag[vid] = 1;
|
|
|
+ set_bit(vid, adapter->vids);
|
|
|
ret:
|
|
|
return status;
|
|
|
}
|
|
@@ -1795,7 +1794,7 @@ static struct be_rx_compl_info *be_rx_compl_get(struct be_rx_obj *rxo)
|
|
|
rxcp->vlan_tag = swab16(rxcp->vlan_tag);
|
|
|
|
|
|
if (adapter->pvid == (rxcp->vlan_tag & VLAN_VID_MASK) &&
|
|
|
- !adapter->vlan_tag[rxcp->vlan_tag])
|
|
|
+ !test_bit(rxcp->vlan_tag, adapter->vids))
|
|
|
rxcp->vlanf = 0;
|
|
|
}
|
|
|
|