cxgb3: convert to use netdev_for_each_addr
Removed whole t3_rx_mode structure and appropriate helpers cause they are no longer needed. Signed-off-by: Jiri Pirko <jpirko@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
e4a474f82d
commit
0988d26978
@ -67,32 +67,6 @@
|
|||||||
/* Additional NETIF_MSG_* categories */
|
/* Additional NETIF_MSG_* categories */
|
||||||
#define NETIF_MSG_MMIO 0x8000000
|
#define NETIF_MSG_MMIO 0x8000000
|
||||||
|
|
||||||
struct t3_rx_mode {
|
|
||||||
struct net_device *dev;
|
|
||||||
struct dev_mc_list *mclist;
|
|
||||||
unsigned int idx;
|
|
||||||
};
|
|
||||||
|
|
||||||
static inline void init_rx_mode(struct t3_rx_mode *p, struct net_device *dev,
|
|
||||||
struct dev_mc_list *mclist)
|
|
||||||
{
|
|
||||||
p->dev = dev;
|
|
||||||
p->mclist = mclist;
|
|
||||||
p->idx = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline u8 *t3_get_next_mcaddr(struct t3_rx_mode *rm)
|
|
||||||
{
|
|
||||||
u8 *addr = NULL;
|
|
||||||
|
|
||||||
if (rm->mclist && rm->idx < rm->dev->mc_count) {
|
|
||||||
addr = rm->mclist->dmi_addr;
|
|
||||||
rm->mclist = rm->mclist->next;
|
|
||||||
rm->idx++;
|
|
||||||
}
|
|
||||||
return addr;
|
|
||||||
}
|
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
MAX_NPORTS = 2, /* max # of ports */
|
MAX_NPORTS = 2, /* max # of ports */
|
||||||
MAX_FRAME_SIZE = 10240, /* max MAC frame size, including header + FCS */
|
MAX_FRAME_SIZE = 10240, /* max MAC frame size, including header + FCS */
|
||||||
@ -746,7 +720,7 @@ void t3_mac_enable_exact_filters(struct cmac *mac);
|
|||||||
int t3_mac_enable(struct cmac *mac, int which);
|
int t3_mac_enable(struct cmac *mac, int which);
|
||||||
int t3_mac_disable(struct cmac *mac, int which);
|
int t3_mac_disable(struct cmac *mac, int which);
|
||||||
int t3_mac_set_mtu(struct cmac *mac, unsigned int mtu);
|
int t3_mac_set_mtu(struct cmac *mac, unsigned int mtu);
|
||||||
int t3_mac_set_rx_mode(struct cmac *mac, struct t3_rx_mode *rm);
|
int t3_mac_set_rx_mode(struct cmac *mac, struct net_device *dev);
|
||||||
int t3_mac_set_address(struct cmac *mac, unsigned int idx, u8 addr[6]);
|
int t3_mac_set_address(struct cmac *mac, unsigned int idx, u8 addr[6]);
|
||||||
int t3_mac_set_num_ucast(struct cmac *mac, int n);
|
int t3_mac_set_num_ucast(struct cmac *mac, int n);
|
||||||
const struct mac_stats *t3_mac_update_stats(struct cmac *mac);
|
const struct mac_stats *t3_mac_update_stats(struct cmac *mac);
|
||||||
|
@ -324,11 +324,9 @@ void t3_os_phymod_changed(struct adapter *adap, int port_id)
|
|||||||
|
|
||||||
static void cxgb_set_rxmode(struct net_device *dev)
|
static void cxgb_set_rxmode(struct net_device *dev)
|
||||||
{
|
{
|
||||||
struct t3_rx_mode rm;
|
|
||||||
struct port_info *pi = netdev_priv(dev);
|
struct port_info *pi = netdev_priv(dev);
|
||||||
|
|
||||||
init_rx_mode(&rm, dev, dev->mc_list);
|
t3_mac_set_rx_mode(&pi->mac, dev);
|
||||||
t3_mac_set_rx_mode(&pi->mac, &rm);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -339,17 +337,15 @@ static void cxgb_set_rxmode(struct net_device *dev)
|
|||||||
*/
|
*/
|
||||||
static void link_start(struct net_device *dev)
|
static void link_start(struct net_device *dev)
|
||||||
{
|
{
|
||||||
struct t3_rx_mode rm;
|
|
||||||
struct port_info *pi = netdev_priv(dev);
|
struct port_info *pi = netdev_priv(dev);
|
||||||
struct cmac *mac = &pi->mac;
|
struct cmac *mac = &pi->mac;
|
||||||
|
|
||||||
init_rx_mode(&rm, dev, dev->mc_list);
|
|
||||||
t3_mac_reset(mac);
|
t3_mac_reset(mac);
|
||||||
t3_mac_set_num_ucast(mac, MAX_MAC_IDX);
|
t3_mac_set_num_ucast(mac, MAX_MAC_IDX);
|
||||||
t3_mac_set_mtu(mac, dev->mtu);
|
t3_mac_set_mtu(mac, dev->mtu);
|
||||||
t3_mac_set_address(mac, LAN_MAC_IDX, dev->dev_addr);
|
t3_mac_set_address(mac, LAN_MAC_IDX, dev->dev_addr);
|
||||||
t3_mac_set_address(mac, SAN_MAC_IDX, pi->iscsic.mac_addr);
|
t3_mac_set_address(mac, SAN_MAC_IDX, pi->iscsic.mac_addr);
|
||||||
t3_mac_set_rx_mode(mac, &rm);
|
t3_mac_set_rx_mode(mac, dev);
|
||||||
t3_link_start(&pi->phy, mac, &pi->link_config);
|
t3_link_start(&pi->phy, mac, &pi->link_config);
|
||||||
t3_mac_enable(mac, MAC_DIRECTION_RX | MAC_DIRECTION_TX);
|
t3_mac_enable(mac, MAC_DIRECTION_RX | MAC_DIRECTION_TX);
|
||||||
}
|
}
|
||||||
|
@ -297,29 +297,30 @@ static int hash_hw_addr(const u8 * addr)
|
|||||||
return hash;
|
return hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
int t3_mac_set_rx_mode(struct cmac *mac, struct t3_rx_mode *rm)
|
int t3_mac_set_rx_mode(struct cmac *mac, struct net_device *dev)
|
||||||
{
|
{
|
||||||
u32 val, hash_lo, hash_hi;
|
u32 val, hash_lo, hash_hi;
|
||||||
struct adapter *adap = mac->adapter;
|
struct adapter *adap = mac->adapter;
|
||||||
unsigned int oft = mac->offset;
|
unsigned int oft = mac->offset;
|
||||||
|
|
||||||
val = t3_read_reg(adap, A_XGM_RX_CFG + oft) & ~F_COPYALLFRAMES;
|
val = t3_read_reg(adap, A_XGM_RX_CFG + oft) & ~F_COPYALLFRAMES;
|
||||||
if (rm->dev->flags & IFF_PROMISC)
|
if (dev->flags & IFF_PROMISC)
|
||||||
val |= F_COPYALLFRAMES;
|
val |= F_COPYALLFRAMES;
|
||||||
t3_write_reg(adap, A_XGM_RX_CFG + oft, val);
|
t3_write_reg(adap, A_XGM_RX_CFG + oft, val);
|
||||||
|
|
||||||
if (rm->dev->flags & IFF_ALLMULTI)
|
if (dev->flags & IFF_ALLMULTI)
|
||||||
hash_lo = hash_hi = 0xffffffff;
|
hash_lo = hash_hi = 0xffffffff;
|
||||||
else {
|
else {
|
||||||
u8 *addr;
|
struct dev_mc_list *dmi;
|
||||||
int exact_addr_idx = mac->nucast;
|
int exact_addr_idx = mac->nucast;
|
||||||
|
|
||||||
hash_lo = hash_hi = 0;
|
hash_lo = hash_hi = 0;
|
||||||
while ((addr = t3_get_next_mcaddr(rm)))
|
netdev_for_each_mc_addr(dmi, dev)
|
||||||
if (exact_addr_idx < EXACT_ADDR_FILTERS)
|
if (exact_addr_idx < EXACT_ADDR_FILTERS)
|
||||||
set_addr_filter(mac, exact_addr_idx++, addr);
|
set_addr_filter(mac, exact_addr_idx++,
|
||||||
|
dmi->dmi_addr);
|
||||||
else {
|
else {
|
||||||
int hash = hash_hw_addr(addr);
|
int hash = hash_hw_addr(dmi->dmi_addr);
|
||||||
|
|
||||||
if (hash < 32)
|
if (hash < 32)
|
||||||
hash_lo |= (1 << hash);
|
hash_lo |= (1 << hash);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user