@@ -851,6 +851,8 @@ static int ad_lacpdu_send(struct port *port)
851
851
if (!skb )
852
852
return - ENOMEM ;
853
853
854
+ atomic64_inc (& SLAVE_AD_INFO (slave )-> stats .lacpdu_tx );
855
+
854
856
skb -> dev = slave -> dev ;
855
857
skb_reset_mac_header (skb );
856
858
skb -> network_header = skb -> mac_header + ETH_HLEN ;
@@ -892,6 +894,15 @@ static int ad_marker_send(struct port *port, struct bond_marker *marker)
892
894
if (!skb )
893
895
return - ENOMEM ;
894
896
897
+ switch (marker -> tlv_type ) {
898
+ case AD_MARKER_INFORMATION_SUBTYPE :
899
+ atomic64_inc (& SLAVE_AD_INFO (slave )-> stats .marker_tx );
900
+ break ;
901
+ case AD_MARKER_RESPONSE_SUBTYPE :
902
+ atomic64_inc (& SLAVE_AD_INFO (slave )-> stats .marker_resp_tx );
903
+ break ;
904
+ }
905
+
895
906
skb_reserve (skb , 16 );
896
907
897
908
skb -> dev = slave -> dev ;
@@ -1086,6 +1097,9 @@ static void ad_rx_machine(struct lacpdu *lacpdu, struct port *port)
1086
1097
*/
1087
1098
last_state = port -> sm_rx_state ;
1088
1099
1100
+ if (lacpdu )
1101
+ atomic64_inc (& SLAVE_AD_INFO (port -> slave )-> stats .lacpdu_rx );
1102
+
1089
1103
/* check if state machine should change state */
1090
1104
1091
1105
/* first, check if port was reinitialized */
@@ -1922,6 +1936,8 @@ static void ad_marker_info_received(struct bond_marker *marker_info,
1922
1936
{
1923
1937
struct bond_marker marker ;
1924
1938
1939
+ atomic64_inc (& SLAVE_AD_INFO (port -> slave )-> stats .marker_rx );
1940
+
1925
1941
/* copy the received marker data to the response marker */
1926
1942
memcpy (& marker , marker_info , sizeof (struct bond_marker ));
1927
1943
/* change the marker subtype to marker response */
@@ -1946,6 +1962,8 @@ static void ad_marker_info_received(struct bond_marker *marker_info,
1946
1962
static void ad_marker_response_received (struct bond_marker * marker ,
1947
1963
struct port * port )
1948
1964
{
1965
+ atomic64_inc (& SLAVE_AD_INFO (port -> slave )-> stats .marker_resp_rx );
1966
+
1949
1967
/* DO NOTHING, SINCE WE DECIDED NOT TO IMPLEMENT THIS FEATURE FOR NOW */
1950
1968
}
1951
1969
@@ -2358,6 +2376,7 @@ static int bond_3ad_rx_indication(struct lacpdu *lacpdu, struct slave *slave)
2358
2376
int ret = RX_HANDLER_ANOTHER ;
2359
2377
struct bond_marker * marker ;
2360
2378
struct port * port ;
2379
+ atomic64_t * stat ;
2361
2380
2362
2381
port = & (SLAVE_AD_INFO (slave )-> port );
2363
2382
if (!port -> slave ) {
@@ -2397,7 +2416,12 @@ static int bond_3ad_rx_indication(struct lacpdu *lacpdu, struct slave *slave)
2397
2416
default :
2398
2417
netdev_dbg (slave -> bond -> dev , "Received an unknown Marker subtype on slot %d\n" ,
2399
2418
port -> actor_port_number );
2419
+ stat = & SLAVE_AD_INFO (slave )-> stats .marker_unknown_rx ;
2420
+ atomic64_inc (stat );
2400
2421
}
2422
+ break ;
2423
+ default :
2424
+ atomic64_inc (& SLAVE_AD_INFO (slave )-> stats .lacpdu_unknown_rx );
2401
2425
}
2402
2426
2403
2427
return ret ;
@@ -2635,8 +2659,10 @@ int bond_3ad_lacpdu_recv(const struct sk_buff *skb, struct bonding *bond,
2635
2659
return RX_HANDLER_ANOTHER ;
2636
2660
2637
2661
lacpdu = skb_header_pointer (skb , 0 , sizeof (_lacpdu ), & _lacpdu );
2638
- if (!lacpdu )
2662
+ if (!lacpdu ) {
2663
+ atomic64_inc (& SLAVE_AD_INFO (slave )-> stats .lacpdu_illegal_rx );
2639
2664
return RX_HANDLER_ANOTHER ;
2665
+ }
2640
2666
2641
2667
return bond_3ad_rx_indication (lacpdu , slave );
2642
2668
}
0 commit comments