Skip to content

Commit

Permalink
cxgb4: Add MPS TCAM refcounting for raw mac filters
Browse files Browse the repository at this point in the history
This patch adds TCAM reference counting
support for raw mac filters.

Signed-off-by: Raju Rangoju <rajur@chelsio.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Raju Rangoju authored and David S. Miller committed Jun 24, 2019
1 parent 28b3870 commit 5fab515
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 0 deletions.
16 changes: 16 additions & 0 deletions drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
Original file line number Diff line number Diff line change
Expand Up @@ -1919,5 +1919,21 @@ int cxgb4_alloc_encap_mac_filt(struct adapter *adap, unsigned int viid,
u8 dip_hit, u8 lookup_type, bool sleep_ok);
int cxgb4_free_encap_mac_filt(struct adapter *adap, unsigned int viid,
int idx, bool sleep_ok);
int cxgb4_free_raw_mac_filt(struct adapter *adap,
unsigned int viid,
const u8 *addr,
const u8 *mask,
unsigned int idx,
u8 lookup_type,
u8 port_id,
bool sleep_ok);
int cxgb4_alloc_raw_mac_filt(struct adapter *adap,
unsigned int viid,
const u8 *addr,
const u8 *mask,
unsigned int idx,
u8 lookup_type,
u8 port_id,
bool sleep_ok);

#endif /* __CXGB4_H__ */
46 changes: 46 additions & 0 deletions drivers/net/ethernet/chelsio/cxgb4/cxgb4_mps.c
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,52 @@ static int cxgb4_mps_ref_inc(struct adapter *adap, const u8 *mac_addr,
return ret;
}

int cxgb4_free_raw_mac_filt(struct adapter *adap,
unsigned int viid,
const u8 *addr,
const u8 *mask,
unsigned int idx,
u8 lookup_type,
u8 port_id,
bool sleep_ok)
{
int ret = 0;

if (!cxgb4_mps_ref_dec(adap, idx))
ret = t4_free_raw_mac_filt(adap, viid, addr,
mask, idx, lookup_type,
port_id, sleep_ok);

return ret;
}

int cxgb4_alloc_raw_mac_filt(struct adapter *adap,
unsigned int viid,
const u8 *addr,
const u8 *mask,
unsigned int idx,
u8 lookup_type,
u8 port_id,
bool sleep_ok)
{
int ret;

ret = t4_alloc_raw_mac_filt(adap, viid, addr,
mask, idx, lookup_type,
port_id, sleep_ok);
if (ret < 0)
return ret;

if (cxgb4_mps_ref_inc(adap, addr, ret, mask)) {
ret = -ENOMEM;
t4_free_raw_mac_filt(adap, viid, addr,
mask, idx, lookup_type,
port_id, sleep_ok);
}

return ret;
}

int cxgb4_free_encap_mac_filt(struct adapter *adap, unsigned int viid,
int idx, bool sleep_ok)
{
Expand Down

0 comments on commit 5fab515

Please sign in to comment.