mirror of https://gitee.com/openkylin/linux.git
net: atlantic: make TCVEC2RING accept nic_cfg
This patch updates TCVEC2RING to accept nic_cfg, which is needed to be able to use it from hw_atl. The name is updated to reflect the changes. Signed-off-by: Mark Starovoytov <mstarovoitov@marvell.com> Signed-off-by: Igor Russkikh <irusskikh@marvell.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
4272ba8b11
commit
b9e989262a
|
@ -254,7 +254,7 @@ static void aq_ethtool_get_strings(struct net_device *ndev,
|
|||
snprintf(p, ETH_GSTRING_LEN,
|
||||
aq_ethtool_queue_stat_names[si],
|
||||
tc_string,
|
||||
AQ_NIC_TCVEC2RING(nic, tc, i));
|
||||
AQ_NIC_CFG_TCVEC2RING(cfg, tc, i));
|
||||
p += ETH_GSTRING_LEN;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -701,15 +701,16 @@ unsigned int aq_nic_map_skb(struct aq_nic_s *self, struct sk_buff *skb,
|
|||
|
||||
int aq_nic_xmit(struct aq_nic_s *self, struct sk_buff *skb)
|
||||
{
|
||||
unsigned int vec = skb->queue_mapping % self->aq_nic_cfg.vecs;
|
||||
unsigned int tc = skb->queue_mapping / self->aq_nic_cfg.vecs;
|
||||
struct aq_nic_cfg_s *cfg = aq_nic_get_cfg(self);
|
||||
unsigned int vec = skb->queue_mapping % cfg->vecs;
|
||||
unsigned int tc = skb->queue_mapping / cfg->vecs;
|
||||
struct aq_ring_s *ring = NULL;
|
||||
unsigned int frags = 0U;
|
||||
int err = NETDEV_TX_OK;
|
||||
|
||||
frags = skb_shinfo(skb)->nr_frags + 1;
|
||||
|
||||
ring = self->aq_ring_tx[AQ_NIC_TCVEC2RING(self, tc, vec)];
|
||||
ring = self->aq_ring_tx[AQ_NIC_CFG_TCVEC2RING(cfg, tc, vec)];
|
||||
|
||||
if (frags > AQ_CFG_SKB_FRAGS_MAX) {
|
||||
dev_kfree_skb_any(skb);
|
||||
|
@ -718,7 +719,7 @@ int aq_nic_xmit(struct aq_nic_s *self, struct sk_buff *skb)
|
|||
|
||||
aq_ring_update_queue_state(ring);
|
||||
|
||||
if (self->aq_nic_cfg.priv_flags & BIT(AQ_HW_LOOPBACK_DMA_NET)) {
|
||||
if (cfg->priv_flags & BIT(AQ_HW_LOOPBACK_DMA_NET)) {
|
||||
err = NETDEV_TX_BUSY;
|
||||
goto err_exit;
|
||||
}
|
||||
|
|
|
@ -81,15 +81,16 @@ struct aq_nic_cfg_s {
|
|||
#define AQ_NIC_WOL_MODES (WAKE_MAGIC |\
|
||||
WAKE_PHY)
|
||||
|
||||
#define AQ_NIC_RING_PER_TC(_NIC_) \
|
||||
(((_NIC_)->aq_nic_cfg.tc_mode == AQ_TC_MODE_4TCS) ? 8 : 4)
|
||||
#define AQ_NIC_CFG_RING_PER_TC(_NIC_CFG_) \
|
||||
(((_NIC_CFG_)->tc_mode == AQ_TC_MODE_4TCS) ? 8 : 4)
|
||||
|
||||
#define AQ_NIC_TCVEC2RING(_NIC_, _TC_, _VEC_) \
|
||||
((_TC_) * AQ_NIC_RING_PER_TC(_NIC_) + (_VEC_))
|
||||
#define AQ_NIC_CFG_TCVEC2RING(_NIC_CFG_, _TC_, _VEC_) \
|
||||
((_TC_) * AQ_NIC_CFG_RING_PER_TC(_NIC_CFG_) + (_VEC_))
|
||||
|
||||
#define AQ_NIC_RING2QMAP(_NIC_, _ID_) \
|
||||
((_ID_) / AQ_NIC_RING_PER_TC(_NIC_) * (_NIC_)->aq_vecs + \
|
||||
((_ID_) % AQ_NIC_RING_PER_TC(_NIC_)))
|
||||
((_ID_) / AQ_NIC_CFG_RING_PER_TC(&(_NIC_)->aq_nic_cfg) * \
|
||||
(_NIC_)->aq_vecs + \
|
||||
((_ID_) % AQ_NIC_CFG_RING_PER_TC(&(_NIC_)->aq_nic_cfg)))
|
||||
|
||||
struct aq_hw_rx_fl2 {
|
||||
struct aq_rx_filter_vlan aq_vlans[AQ_VLAN_MAX_FILTERS];
|
||||
|
|
|
@ -135,7 +135,8 @@ int aq_vec_ring_alloc(struct aq_vec_s *self, struct aq_nic_s *aq_nic,
|
|||
int err = 0;
|
||||
|
||||
for (i = 0; i < aq_nic_cfg->tcs; ++i) {
|
||||
unsigned int idx_ring = AQ_NIC_TCVEC2RING(aq_nic, i, idx);
|
||||
const unsigned int idx_ring = AQ_NIC_CFG_TCVEC2RING(aq_nic_cfg,
|
||||
i, idx);
|
||||
|
||||
ring = aq_ring_tx_alloc(&self->ring[i][AQ_VEC_TX_ID], aq_nic,
|
||||
idx_ring, aq_nic_cfg);
|
||||
|
|
Loading…
Reference in New Issue