Commit 0988d269 authored by Jiri Pirko's avatar Jiri Pirko Committed by David S. Miller

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: default avatarJiri Pirko <jpirko@redhat.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e4a474f8
...@@ -67,32 +67,6 @@ ...@@ -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); ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment