nfp: pass packet pointer to nfp_net_parse_meta()
Make nfp_net_parse_meta() take a packet pointer and return a drop/no drop decision. Right now it returns the end of metadata and caller compares it to the packet pointer. Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
8fb0d2ced9
commit
572c724518
|
@ -1661,9 +1661,9 @@ nfp_net_set_hash_desc(struct net_device *netdev, struct nfp_meta_parsed *meta,
|
|||
&rx_hash->hash);
|
||||
}
|
||||
|
||||
static void *
|
||||
static bool
|
||||
nfp_net_parse_meta(struct net_device *netdev, struct nfp_meta_parsed *meta,
|
||||
void *data, int meta_len)
|
||||
void *data, void *pkt, int meta_len)
|
||||
{
|
||||
u32 meta_info;
|
||||
|
||||
|
@ -1694,13 +1694,13 @@ nfp_net_parse_meta(struct net_device *netdev, struct nfp_meta_parsed *meta,
|
|||
data += 4;
|
||||
break;
|
||||
default:
|
||||
return NULL;
|
||||
return true;
|
||||
}
|
||||
|
||||
meta_info >>= NFP_NET_META_FIELD_SIZE;
|
||||
}
|
||||
|
||||
return data;
|
||||
return data != pkt;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1885,12 +1885,10 @@ static int nfp_net_rx(struct nfp_net_rx_ring *rx_ring, int budget)
|
|||
nfp_net_set_hash_desc(dp->netdev, &meta,
|
||||
rxbuf->frag + meta_off, rxd);
|
||||
} else if (meta_len) {
|
||||
void *end;
|
||||
|
||||
end = nfp_net_parse_meta(dp->netdev, &meta,
|
||||
rxbuf->frag + meta_off,
|
||||
meta_len);
|
||||
if (unlikely(end != rxbuf->frag + pkt_off)) {
|
||||
if (unlikely(nfp_net_parse_meta(dp->netdev, &meta,
|
||||
rxbuf->frag + meta_off,
|
||||
rxbuf->frag + pkt_off,
|
||||
meta_len))) {
|
||||
nn_dp_warn(dp, "invalid RX packet metadata\n");
|
||||
nfp_net_rx_drop(dp, r_vec, rx_ring, rxbuf,
|
||||
NULL);
|
||||
|
|
Loading…
Reference in New Issue