ethdev: use constants for link duplex
[dpdk.git] / drivers / net / ixgbe / ixgbe_rxtx.c
index ffb4070..b018ba7 100644 (file)
@@ -109,7 +109,7 @@ rte_rxmbuf_alloc(struct rte_mempool *mp)
  */
 #define rte_ixgbe_prefetch(p)   rte_prefetch0(p)
 #else
-#define rte_ixgbe_prefetch(p)   do {} while(0)
+#define rte_ixgbe_prefetch(p)   do {} while (0)
 #endif
 
 /*********************************************************************
@@ -941,6 +941,8 @@ end_of_tx:
 #define IXGBE_PACKET_TYPE_MAX               0X80
 #define IXGBE_PACKET_TYPE_MASK              0X7F
 #define IXGBE_PACKET_TYPE_SHIFT             0X04
+
+/* @note: fix ixgbe_dev_supported_ptypes_get() if any change here. */
 static inline uint32_t
 ixgbe_rxd_pkt_info_to_pkt_type(uint16_t pkt_info)
 {
@@ -1298,7 +1300,7 @@ rx_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
 }
 
 /* split requests into chunks of size RTE_PMD_IXGBE_RX_MAX_BURST */
-static uint16_t
+uint16_t
 ixgbe_recv_pkts_bulk_alloc(void *rx_queue, struct rte_mbuf **rx_pkts,
                           uint16_t nb_pkts)
 {
@@ -1614,7 +1616,7 @@ ixgbe_recv_pkts_lro(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts,
                struct ixgbe_rx_entry *rxe;
                struct ixgbe_scattered_rx_entry *sc_entry;
                struct ixgbe_scattered_rx_entry *next_sc_entry;
-               struct ixgbe_rx_entry *next_rxe;
+               struct ixgbe_rx_entry *next_rxe = NULL;
                struct rte_mbuf *first_seg;
                struct rte_mbuf *rxm;
                struct rte_mbuf *nmb;
@@ -1791,7 +1793,7 @@ next_desc:
                 * the pointer to the first mbuf at the NEXTP entry in the
                 * sw_sc_ring and continue to parse the RX ring.
                 */
-               if (!eop) {
+               if (!eop && next_rxe) {
                        rxm->next = next_rxe->mbuf;
                        next_sc_entry->fbuf = first_seg;
                        goto next_desc;
@@ -2154,7 +2156,8 @@ ixgbe_dev_tx_queue_setup(struct rte_eth_dev *dev,
        if (hw->mac.type == ixgbe_mac_82599_vf ||
            hw->mac.type == ixgbe_mac_X540_vf ||
            hw->mac.type == ixgbe_mac_X550_vf ||
-           hw->mac.type == ixgbe_mac_X550EM_x_vf)
+           hw->mac.type == ixgbe_mac_X550EM_x_vf ||
+           hw->mac.type == ixgbe_mac_X550EM_a_vf)
                txq->tdt_reg_addr = IXGBE_PCI_REG_ADDR(hw, IXGBE_VFTDT(queue_idx));
        else
                txq->tdt_reg_addr = IXGBE_PCI_REG_ADDR(hw, IXGBE_TDT(txq->reg_idx));
@@ -2447,7 +2450,8 @@ ixgbe_dev_rx_queue_setup(struct rte_eth_dev *dev,
        if (hw->mac.type == ixgbe_mac_82599_vf ||
            hw->mac.type == ixgbe_mac_X540_vf ||
            hw->mac.type == ixgbe_mac_X550_vf ||
-           hw->mac.type == ixgbe_mac_X550EM_x_vf) {
+           hw->mac.type == ixgbe_mac_X550EM_x_vf ||
+           hw->mac.type == ixgbe_mac_X550EM_a_vf) {
                rxq->rdt_reg_addr =
                        IXGBE_PCI_REG_ADDR(hw, IXGBE_VFRDT(queue_idx));
                rxq->rdh_reg_addr =
@@ -2903,13 +2907,14 @@ ixgbe_vmdq_dcb_configure(struct rte_eth_dev *dev)
        switch (hw->mac.type) {
        case ixgbe_mac_X550:
        case ixgbe_mac_X550EM_x:
+       case ixgbe_mac_X550EM_a:
                pbsize = (uint16_t)(X550_RX_BUFFER_SIZE / nb_tcs);
                break;
        default:
                pbsize = (uint16_t)(NIC_RX_BUFFER_SIZE / nb_tcs);
                break;
        }
-       for (i = 0 ; i < nb_tcs; i++) {
+       for (i = 0; i < nb_tcs; i++) {
                uint32_t rxpbsize = IXGBE_READ_REG(hw, IXGBE_RXPBSIZE(i));
                rxpbsize &= (~(0x3FF << IXGBE_RXPBSIZE_SHIFT));
                /* clear 10 bits. */
@@ -2955,7 +2960,7 @@ ixgbe_vmdq_dcb_configure(struct rte_eth_dev *dev)
 
        /* VLNCTRL: enable vlan filtering and allow all vlan tags through */
        vlanctrl = IXGBE_READ_REG(hw, IXGBE_VLNCTRL);
-       vlanctrl |= IXGBE_VLNCTRL_VFE ; /* enable vlan filters */
+       vlanctrl |= IXGBE_VLNCTRL_VFE; /* enable vlan filters */
        IXGBE_WRITE_REG(hw, IXGBE_VLNCTRL, vlanctrl);
 
        /* VFTA - enable all vlan filters */
@@ -3212,7 +3217,7 @@ ixgbe_dcb_rx_hw_config(struct ixgbe_hw *hw,
 
        /* VLNCTRL: enable vlan filtering and allow all vlan tags through */
        vlanctrl = IXGBE_READ_REG(hw, IXGBE_VLNCTRL);
-       vlanctrl |= IXGBE_VLNCTRL_VFE ; /* enable vlan filters */
+       vlanctrl |= IXGBE_VLNCTRL_VFE; /* enable vlan filters */
        IXGBE_WRITE_REG(hw, IXGBE_VLNCTRL, vlanctrl);
 
        /* VFTA - enable all vlan filters */
@@ -3242,6 +3247,7 @@ ixgbe_dcb_hw_arbite_rx_config(struct ixgbe_hw *hw, uint16_t *refill,
        case ixgbe_mac_X540:
        case ixgbe_mac_X550:
        case ixgbe_mac_X550EM_x:
+       case ixgbe_mac_X550EM_a:
                ixgbe_dcb_config_rx_arbiter_82599(hw, refill, max, bwg_id,
                                                  tsa, map);
                break;
@@ -3263,6 +3269,7 @@ ixgbe_dcb_hw_arbite_tx_config(struct ixgbe_hw *hw, uint16_t *refill, uint16_t *m
        case ixgbe_mac_X540:
        case ixgbe_mac_X550:
        case ixgbe_mac_X550EM_x:
+       case ixgbe_mac_X550EM_a:
                ixgbe_dcb_config_tx_desc_arbiter_82599(hw, refill, max, bwg_id,tsa);
                ixgbe_dcb_config_tx_data_arbiter_82599(hw, refill, max, bwg_id,tsa, map);
                break;
@@ -3352,7 +3359,7 @@ ixgbe_dcb_hw_configure(struct rte_eth_dev *dev,
        nb_tcs = dcb_config->num_tcs.pfc_tcs;
        /* Unpack map */
        ixgbe_dcb_unpack_map_cee(dcb_config, IXGBE_DCB_RX_CONFIG, map);
-       if(nb_tcs == ETH_4_TCS) {
+       if (nb_tcs == ETH_4_TCS) {
                /* Avoid un-configured priority mapping to TC0 */
                uint8_t j = 4;
                uint8_t mask = 0xFF;
@@ -3381,6 +3388,7 @@ ixgbe_dcb_hw_configure(struct rte_eth_dev *dev,
        switch (hw->mac.type) {
        case ixgbe_mac_X550:
        case ixgbe_mac_X550EM_x:
+       case ixgbe_mac_X550EM_a:
                rx_buffer_size = X550_RX_BUFFER_SIZE;
                break;
        default:
@@ -3388,11 +3396,11 @@ ixgbe_dcb_hw_configure(struct rte_eth_dev *dev,
                break;
        }
 
-       if(config_dcb_rx) {
+       if (config_dcb_rx) {
                /* Set RX buffer size */
                pbsize = (uint16_t)(rx_buffer_size / nb_tcs);
                uint32_t rxpbsize = pbsize << IXGBE_RXPBSIZE_SHIFT;
-               for (i = 0 ; i < nb_tcs; i++) {
+               for (i = 0; i < nb_tcs; i++) {
                        IXGBE_WRITE_REG(hw, IXGBE_RXPBSIZE(i), rxpbsize);
                }
                /* zero alloc all unused TCs */
@@ -3400,7 +3408,7 @@ ixgbe_dcb_hw_configure(struct rte_eth_dev *dev,
                        IXGBE_WRITE_REG(hw, IXGBE_RXPBSIZE(i), 0);
                }
        }
-       if(config_dcb_tx) {
+       if (config_dcb_tx) {
                /* Only support an equally distributed Tx packet buffer strategy. */
                uint32_t txpktsize = IXGBE_TXPBSIZE_MAX / nb_tcs;
                uint32_t txpbthresh = (txpktsize / DCB_TX_PB) - IXGBE_TXPKT_SIZE_MAX;
@@ -3421,7 +3429,7 @@ ixgbe_dcb_hw_configure(struct rte_eth_dev *dev,
        ixgbe_dcb_calculate_tc_credits_cee(hw, dcb_config,max_frame,
                                IXGBE_DCB_RX_CONFIG);
 
-       if(config_dcb_rx) {
+       if (config_dcb_rx) {
                /* Unpack CEE standard containers */
                ixgbe_dcb_unpack_refill_cee(dcb_config, IXGBE_DCB_RX_CONFIG, refill);
                ixgbe_dcb_unpack_max_cee(dcb_config, max);
@@ -3431,7 +3439,7 @@ ixgbe_dcb_hw_configure(struct rte_eth_dev *dev,
                ixgbe_dcb_hw_arbite_rx_config(hw,refill,max,bwgid,tsa,map);
        }
 
-       if(config_dcb_tx) {
+       if (config_dcb_tx) {
                /* Unpack CEE standard containers */
                ixgbe_dcb_unpack_refill_cee(dcb_config, IXGBE_DCB_TX_CONFIG, refill);
                ixgbe_dcb_unpack_max_cee(dcb_config, max);
@@ -3445,7 +3453,7 @@ ixgbe_dcb_hw_configure(struct rte_eth_dev *dev,
        ixgbe_dcb_config_tc_stats_82599(hw, dcb_config);
 
        /* Check if the PFC is supported */
-       if(dev->data->dev_conf.dcb_capability_en & ETH_DCB_PFC_SUPPORT) {
+       if (dev->data->dev_conf.dcb_capability_en & ETH_DCB_PFC_SUPPORT) {
                pbsize = (uint16_t)(rx_buffer_size / nb_tcs);
                for (i = 0; i < nb_tcs; i++) {
                        /*
@@ -3459,7 +3467,7 @@ ixgbe_dcb_hw_configure(struct rte_eth_dev *dev,
                        tc->pfc = ixgbe_dcb_pfc_enabled;
                }
                ixgbe_dcb_unpack_pfc_cee(dcb_config, map, &pfc_en);
-               if(dcb_config->num_tcs.pfc_tcs == ETH_4_TCS)
+               if (dcb_config->num_tcs.pfc_tcs == ETH_4_TCS)
                        pfc_en &= 0x0F;
                ret = ixgbe_dcb_config_pfc(hw, pfc_en, map);
        }
@@ -3534,7 +3542,7 @@ ixgbe_vmdq_rx_hw_configure(struct rte_eth_dev *dev)
 
        /* VLNCTRL: enable vlan filtering and allow all vlan tags through */
        vlanctrl = IXGBE_READ_REG(hw, IXGBE_VLNCTRL);
-       vlanctrl |= IXGBE_VLNCTRL_VFE ; /* enable vlan filters */
+       vlanctrl |= IXGBE_VLNCTRL_VFE; /* enable vlan filters */
        IXGBE_WRITE_REG(hw, IXGBE_VLNCTRL, vlanctrl);
 
        /* VFTA - enable all vlan filters */
@@ -4403,6 +4411,7 @@ ixgbe_dev_tx_init(struct rte_eth_dev *dev)
                        case ixgbe_mac_X540:
                        case ixgbe_mac_X550:
                        case ixgbe_mac_X550EM_x:
+                       case ixgbe_mac_X550EM_a:
                        default:
                                txctrl = IXGBE_READ_REG(hw,
                                                IXGBE_DCA_TXCTRL_82599(txq->reg_idx));